summaryrefslogtreecommitdiffstats
path: root/modules.d/98syslog/rsyslogd-start.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
commit9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch)
tree2efb72864cc69e174c9c5ee33efb88a5f1553b48 /modules.d/98syslog/rsyslogd-start.sh
parentInitial commit. (diff)
downloaddracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz
dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules.d/98syslog/rsyslogd-start.sh')
-rwxr-xr-xmodules.d/98syslog/rsyslogd-start.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/modules.d/98syslog/rsyslogd-start.sh b/modules.d/98syslog/rsyslogd-start.sh
new file mode 100755
index 0000000..d404e51
--- /dev/null
+++ b/modules.d/98syslog/rsyslogd-start.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# Triggered by initqueue/online and starts rsyslogd with bootparameters
+
+type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
+
+# prevent starting again if already running
+if [ -f /var/run/syslogd.pid ]; then
+ read -r pid < /var/run/syslogd.pid
+ kill -0 "$pid" && exit 0
+fi
+
+rsyslog_config() {
+ local server="$1"
+ shift
+ local syslog_template="$1"
+ shift
+ local filters="$*"
+ local filter=
+
+ cat "$syslog_template"
+
+ (
+ # disable shell expansion / globbing
+ # since filters contain such characters
+ set -f
+ for filter in $filters; do
+ echo "${filter} @${server}"
+ done
+ )
+ #echo "*.* /tmp/syslog"
+}
+
+[ -f /tmp/syslog.type ] && read -r type < /tmp/syslog.type
+[ -f /tmp/syslog.server ] && read -r server < /tmp/syslog.server
+[ -f /tmp/syslog.filters ] && read -r filters < /tmp/syslog.filters
+[ -z "$filters" ] && filters="kern.*"
+[ -f /tmp/syslog.conf ] && read -r conf < /tmp/syslog.conf
+[ -z "$conf" ] && conf="/etc/rsyslog.conf" && echo "$conf" > /tmp/syslog.conf
+
+if [ "$type" = "rsyslogd" ]; then
+ template=/etc/templates/rsyslog.conf
+ if [ -n "$server" ]; then
+ rsyslog_config "$server" "$template" "$filters" > $conf
+ rsyslogd -c3
+ fi
+fi