Files
webgui/plugins/dynamix/scripts/rsyslog_config

68 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
CONF=/boot/config/rsyslog.conf
ETC=/etc/rsyslog.conf
# read settings
source /boot/config/rsyslog.cfg
# read $var
source /var/local/emhttp/var.ini
[[ $fsState == Started ]] || h='#'
# create local ruleset
if ! grep -q '^\$RuleSet local$' $ETC; then
sed -ri '/^# limetech - everything goes to syslog.$/a$RuleSet local' $ETC
sed -ri '/^#?\*\.\* @@?.*:[0-9]+$/a$DefaultRuleset local' $ETC
fi
# local syslog server
if [[ -n $local_server ]]; then
if ! grep -q '^\$RuleSet remote$' $ETC; then
sed -ri '$a\$RuleSet remote\n\$FileOwner nobody\n\$FileGroup users\n$FileCreateMode 0644\n*.* ?remote' $ETC
fi
# enable/disable local logging
sed -ri "s/^#?(\*\.\* \?remote)$/$h\1/" $ETC
if [[ $server_protocol == tcp || $server_protocol == both ]]; then
sed -ri '/^\$InputTCPServerBindRuleset remote$/d;/^\$InputTCPServerRun [0-9]+$/d;s/^#?(\$ModLoad imtcp)/\1/' $ETC
sed -ri "\$a\\\$InputTCPServerBindRuleset remote\n\\\$InputTCPServerRun ${server_port:-514}" $ETC
[[ $server_protocol == tcp ]] && sed -ri 's/^(\$ModLoad imudp)/#\1/;/^\$InputUDPServerBindRuleset remote$/d;/^\$UDPServerRun [0-9]+$/d' $ETC
fi
if [[ $server_protocol == udp || $server_protocol == both ]]; then
sed -ri '/^\$InputUDPServerBindRuleset remote$/d;/^\$UDPServerRun [0-9]+$/d;s/^#?(\$ModLoad imudp)/\1/' $ETC
sed -ri "\$a\\\$InputUDPServerBindRuleset remote\n\\\$UDPServerRun ${server_port:-514}" $ETC
[[ $server_protocol == udp ]] && sed -ri 's/^(\$ModLoad imtcp)/#\1/;/^\$InputTCPServerBindRuleset remote$/d;/^\$InputTCPServerRun [0-9]+$/d' $ETC
fi
sed -ri "/^\\\$template remote,.*$/d;/^#\\\$UDPServerRun [0-9]+.*$/a\\\$template remote,\"${server_folder:-/mnt/user/system}/syslog-%FROMHOST-IP%.log\"" $ETC
else
sed -ri '/^\$RuleSet remote$/d;/^\$FileOwner nobody$/d;/^\$FileGroup users$/d;/^\$FileCreateMode 0644$/d;/^\*\.\* \?remote$/d;/^\$template remote,".*"$/d;/^\$Input(TCP|UDP)ServerBindRuleset remote$/d;/^\$(InputTCP|UDP)ServerRun [0-9]+$/d;s/^#?\$(ModLoad imtcp|ModLoad imudp)/#\$\1/' $ETC
fi
# remote syslog server
if [[ -n $remote_server ]]; then
[[ $remote_protocol == udp ]] && com='@' || com='@@'
sed -ri "s/^#?(\*\.\*) @@?.*:[0-9]+$/\1 $com$remote_server:${remote_port:-514}/" $ETC
else
sed -ri 's/^#?(\*\.\* @@?.*:[0-9]+)$/#\1/' $ETC
fi
# mirror syslog to flash
if [[ -n $syslog_flash ]]; then
if ! grep -q '^\$template flash,' $ETC; then
sed -ri '/^#\$UDPServerRun [0-9]+.*$/a$template flash,"/boot/logs/syslog"' $ETC
sed -ri '/^\*\.debug .*syslog$/a*.debug ?flash' $ETC
fi
else
sed -ri '/^\$template flash,"\/boot\/logs\/syslog"$/d;/^\*\.debug \?flash/d' $ETC
fi
# copy conf to flash (read settings on reboot)
todos <$ETC >$CONF
# keep local logging disabled at startup
# disk mount and disk unmount events are used to start/stop logging
sed -ri 's/^(\*\.\* \?remote)/#\1/' $CONF
# update syslog daemon
/etc/rc.d/rc.rsyslogd restart &> /dev/null