#!/bin/sh
#
#syslogd options
# -m MIN          Minutes between MARK lines (default=20, 0=off)
# -n              Run as a foreground process
# -O FILE         Use an alternate log file (default=/var/log/messages)
# -S              Make logging output smaller.
# -s SIZE         Max size (KB) before rotate (default=200KB, 0=off)
# -b NUM          Number of rotated logs to keep (default=1, max=99, 0=purge)
# -R HOST[:PORT]  Log to IP or hostname on PORT (default PORT=514/UDP)
# -L              Log locally and via network logging (default is network only)
# -C [size(KiB)]  Log to a circular buffer (read the buffer using logread)
. /etc/functions.sh
. /lib/config/uci.sh
uci_load "syslogd"

#set defualt values to be used if missing
DEFAULT_log_mark=0
DEFAULT_log_size=16
DEFAULT_log_type="circular"
DEFAULT_log_ipaddr=""
DEFAULT_log_port=514
DEFAULT_log_file="/var/log/messages"

# retrieve uci values
syslog_ip="$CONFIG_general_ipaddr"
syslog_port="$CONFIG_general_port"
syslog_size="$CONFIG_general_size"
syslog_type="$CONFIG_general_type"
syslog_mark="$CONFIG_general_mark"
syslog_file="$CONFIG_general_file"

# verify values
[ $syslog_type = "circular" ] 2>>/dev/null || [ $syslog_type = "file" ] 2>>/dev/null || syslog_type=$DEFAULT_log_type
[ $syslog_size -gt 0 ] 2>>/dev/null || syslog_size=$DEFAULT_log_size
if [ -f "/bin/ipcalc.sh" ]; then
eval $(ipcalc.sh "$syslog_ip")
else
eval $(ipcalc "$syslog_ip")
fi
[ $syslog_ip = "$IP" ] 2>>/dev/null || syslog_ip=$DEFAULT_log_ipaddr
[ -z $syslog_port ] 2>>/dev/null || [ $syslog_port -lt 0 ] 2>>/dev/null || [ $syslog_port -gt 65535 ] 2>>/dev/null && syslog_port=$DEFAULT_log_port
[ $syslog_mark -gt 0 ] 2>>/dev/null || syslog_mark=$DEFAULT_log_mark
#TODO: should test it is a valid writable file
[ -z $syslog_file ] 2>>/dev/null && syslog_file=$DEFAULT_log_file

# build command syslog command line
if [ "$syslog_type" = "circular" ] ; then
	SYSLOG_CMD="-C$syslog_size -m $syslog_mark ${syslog_ip:+-L -R $syslog_ip:$syslog_port}"
else	SYSLOG_CMD="-s $syslog_size -O $syslog_file -m $syslog_mark ${syslog_ip:+-L -R $syslog_ip:$syslog_port}"
fi

# start syslogd
/sbin/syslogd $SYSLOG_CMD
