#!/bin/sh

LOGFILE=${1:-/etc/syslog.conf}
CONFFILE=${2:-/etc/sysconfig/log.conf}
TMPFILE=`mktemp /tmp/syslog.XXXXXX` || exit 1

while read line; do
	case "$line" in
		"["*"]"*)
			group="${line#*\[}"
			group="${group%%\]*}"
			group=root_`echo $group | sed -e 's/\./_/g'`
			;;
		\#*)
			;;
		*=*)
			eval ${group}_${line}
			;;
	esac
done < $CONFFILE

echo '# An autogenerated default syslog.conf.' >> $TMPFILE

if [ "$root_Log_System_Informational" != off ]; then
	echo >> $TMPFILE
	echo '*.info;*.!warning;authpriv.none;kern.none			|/var/log/info_log_pipe' >> $TMPFILE
	echo '*.info;*.!warning;mail.none;authpriv.none;kern.none	|/var/log/info_mld_pipe' >> $TMPFILE
fi

if [ "$root_Log_System_Warning" != off ]; then
	echo >> $TMPFILE
	echo '*.=warning;authpriv.none;kern.none			|/var/log/warning_log_pipe' >> $TMPFILE
	echo '*.=warning;mail.none;authpriv.none;kern.none		|/var/log/warning_mld_pipe' >> $TMPFILE
fi

if [ "$root_Log_System_Critical" != off ]; then
	echo >> $TMPFILE
	echo '*.err;authpriv.none					|/var/log/crit_log_pipe' >> $TMPFILE
	echo '*.err;mail.none;authpriv.none				|/var/log/crit_mld_pipe' >> $TMPFILE
fi

echo >> $TMPFILE

if [ "$root_Log_Access_Informational" = on ]; then
	echo 'authpriv.notice;authpriv.!warning			|/var/log/authpriv_info_log_pipe' >> $TMPFILE
	echo 'authpriv.notice;authpriv.!warning			|/var/log/info_mld_pipe' >> $TMPFILE
elif [ "$root_Log_Access_Informational" = detailed ]; then
	echo 'authpriv.info;authpriv.!warning				|/var/log/authpriv_info_log_pipe' >> $TMPFILE
	echo 'authpriv.info;authpriv.!warning				|/var/log/info_mld_pipe' >> $TMPFILE
fi

if [ "$root_Log_Access_Warning" = on ]; then
	echo 'authpriv.err;authpriv.!crit				|/var/log/authpriv_warn_log_pipe' >> $TMPFILE
	echo 'authpriv.err;authpriv.!crit				|/var/log/warning_mld_pipe' >> $TMPFILE
elif [ "$root_Log_Access_Warning" = detailed ]; then
	echo 'authpriv.warning;kern.=warning;authpriv.!crit		|/var/log/authpriv_warn_log_pipe' >> $TMPFILE
	echo 'authpriv.warning;authpriv.!crit				|/var/log/warning_mld_pipe' >> $TMPFILE
	if [ -e /etc/conf.d/iptables ]; then
		if [ "$(pidof parhand)" ]; then
			parhandclient --nolog set root.Network.Filter.Log.Enabled 				yes || logger "Failed to enable iptables log"
		else
			sed -i -re 's/^([[:space:]]*IPTABLES_LOG_ENABLED=)"*[^"]+"*/\1yes/' 				/etc/conf.d/iptables
		fi
	fi
fi

if [ "$root_Log_Access_Critical" = on ]; then
	echo 'authpriv.alert						|/var/log/authpriv_crit_log_pipe' >> $TMPFILE
	echo 'authpriv.alert						|/var/log/crit_mld_pipe' >> $TMPFILE
elif [ "$root_Log_Access_Critical" = detailed ]; then
	echo 'authpriv.crit						|/var/log/authpriv_crit_log_pipe' >> $TMPFILE
	echo 'authpriv.crit						|/var/log/crit_mld_pipe' >> $TMPFILE
fi

echo >> $TMPFILE
echo '#kern.debug						/var/log/kern_logs' >> $TMPFILE
echo '*.debug;authpriv.none;kern.none				/dev/console' >> $TMPFILE

# Append any local additions to syslog.conf.
if [ -d /etc/syslog.addons ]; then
	for file in /etc/syslog.addons/*.conf; do
		cat $file >> $TMPFILE
	done
fi

# Update /etc/syslog.conf and restart syslogd if the configuration has changed.
if ! cmp -s $LOGFILE $TMPFILE 2>/dev/null; then
	cp -f $TMPFILE $LOGFILE
	chmod 644 $LOGFILE

	if [ "$LOGFILE" = "/etc/syslog.conf" ]; then
		p=$(pidof syslogd) && kill -HUP $p
		p=$(pidof boa) && kill -HUP $p
	fi
fi

rm -f $TMPFILE

exit 0
