summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohit Mehta <mohit.mehta@vyatta.com>2008-10-10 22:27:30 -0700
committerMohit Mehta <mohit.mehta@vyatta.com>2008-10-10 22:27:30 -0700
commit0a60c68af7028fe58c3ece088c85fd3a04eb9a1f (patch)
treed6189083c3ea5814e208dffa20d381f2917ca4af
parent499afdae260c9ac3f179f3fc204308eb2d57b796 (diff)
downloadvyatta-cfg-system-0a60c68af7028fe58c3ece088c85fd3a04eb9a1f.tar.gz
vyatta-cfg-system-0a60c68af7028fe58c3ece088c85fd3a04eb9a1f.zip
Fix Bug 3751 configuring multiple global syslog facilities overwrites previous ones in /etc/syslog.conf
- multiple nodes configured under 'system syslog global' are appended to syslog.conf - default '*.notice -/var/log/messages' is removed from syslog.conf if any node is configured under 'system syslog global' and is put back when nothing configured under 'system syslog global' - syslog process only restarted once after making all changes in config - added commit checks at 'system syslog <>' level nodes to specify facility
-rwxr-xr-xscripts/system/vyatta_update_syslog.pl6
-rw-r--r--templates/system/syslog/console/node.def1
-rw-r--r--templates/system/syslog/file/node.def2
-rw-r--r--templates/system/syslog/global/facility/node.def6
-rw-r--r--templates/system/syslog/global/node.def1
-rw-r--r--templates/system/syslog/host/node.def1
-rw-r--r--templates/system/syslog/node.def14
-rw-r--r--templates/system/syslog/user/node.def1
8 files changed, 19 insertions, 13 deletions
diff --git a/scripts/system/vyatta_update_syslog.pl b/scripts/system/vyatta_update_syslog.pl
index a55fe615..e6a381f7 100755
--- a/scripts/system/vyatta_update_syslog.pl
+++ b/scripts/system/vyatta_update_syslog.pl
@@ -42,10 +42,4 @@ if ($update_line ne "") {
}
close OUT;
-sleep 1;
-if (system("/usr/sbin/invoke-rc.d sysklogd restart")) {
- exit 5;
-}
-
exit 0;
-
diff --git a/templates/system/syslog/console/node.def b/templates/system/syslog/console/node.def
index ec620885..7252ad79 100644
--- a/templates/system/syslog/console/node.def
+++ b/templates/system/syslog/console/node.def
@@ -1 +1,2 @@
help: Set console logging
+commit:expression: $VAR(./facility/@@) != ""; "Atleast one facility must be configured to log messages to $VAR(.)"
diff --git a/templates/system/syslog/file/node.def b/templates/system/syslog/file/node.def
index e2c7759f..a1ac1c4d 100644
--- a/templates/system/syslog/file/node.def
+++ b/templates/system/syslog/file/node.def
@@ -2,4 +2,4 @@ tag:
type: txt
help: Set the name of syslog file to save log messages to
syntax:expression: pattern $VAR(@) "^[-a-zA-Z0-9_.]+$" ; "invalid file name $VAR(@)"
-commit:expression: $VAR(./facility/) != "" || $VAR(./archive/) != ""; "Must specify either facility or archive for syslog file"
+commit:expression: $VAR(./@/facility/@@) != ""; "Atleast one facility must be configured to log messages to file $VAR(./@)"
diff --git a/templates/system/syslog/global/facility/node.def b/templates/system/syslog/global/facility/node.def
index cff98650..8133aebf 100644
--- a/templates/system/syslog/global/facility/node.def
+++ b/templates/system/syslog/global/facility/node.def
@@ -4,12 +4,12 @@ help: Set facility for system logging
syntax:expression: $VAR(@) in "auth", "authpriv", "cron", "daemon", "kern", "lpr", "mail", "mark", "news", "security", "syslog", "user", "uucp", "local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7", "all"; "\"$VAR(@)\" is not a valid logging facility"
update:expression: "sudo sh -c \"LVL=`echo -n $VAR(level/@) | tr '[a-z]' '[A-Z]'` && \
FAC='$VAR(@)' ; if [ x\\$FAC == xall ]; then FAC='*'; fi && \
-/opt/vyatta/sbin/vyatta_update_syslog.pl '' '\\/var\\/log\\/messages' \
- \\\"\\$FAC.\\$LVL\t/var/log/messages \n\\\"\" "
+/opt/vyatta/sbin/vyatta_update_syslog.pl \\\"\\$FAC\\.\\\" '\\/var\\/log\\/messages' \
+ \\\"\\$FAC.\\$LVL\t-/var/log/messages \n\\\"\" "
delete:expression: "sudo sh -c \"FAC='$VAR(@)' ; \
if [ x\\$FAC == xall ]; then FAC='*'; fi && \
/opt/vyatta/sbin/vyatta_update_syslog.pl \
- '' '\\/var\\/log\\/messages' '*.warning\t/var/log/messages \n'\" "
+ \\\"\\$FAC\\.\\\" '\\/var\\/log\\/messages' ''\" "
comp_help:Available logging facilities:
all All facilities excluding "mark"
auth Authentication and authorization
diff --git a/templates/system/syslog/global/node.def b/templates/system/syslog/global/node.def
index 175d85e1..e5c441a8 100644
--- a/templates/system/syslog/global/node.def
+++ b/templates/system/syslog/global/node.def
@@ -1 +1,2 @@
help: Set system logging
+commit:expression: $VAR(./facility/) != "" || $VAR(./archive/) != ""; "Must specify either facility or archive for syslog file"
diff --git a/templates/system/syslog/host/node.def b/templates/system/syslog/host/node.def
index 0e757cbc..255fc37b 100644
--- a/templates/system/syslog/host/node.def
+++ b/templates/system/syslog/host/node.def
@@ -1,3 +1,4 @@
tag:
type: txt
help: Set IP address or hostname of remote syslog server
+commit:expression: $VAR(./@/facility/@@) != ""; "Atleast one facility must be configured to log messages to host $VAR(./@)"
diff --git a/templates/system/syslog/node.def b/templates/system/syslog/node.def
index 72a82d78..7fd911f7 100644
--- a/templates/system/syslog/node.def
+++ b/templates/system/syslog/node.def
@@ -1,3 +1,11 @@
-help: Set syslog daemon
-delete:expression: "sudo sh -c \"/opt/vyatta/sbin/vyatta_update_syslog.pl \
-'' '\\/var\\/log\\/messages' '*.warning\t/var/log/messages \n'\" "
+help: Configure syslog daemon
+end: if [ -n "$VAR(./global/facility/@@)" ]; then
+ # remove the default config for global messages
+ sudo sh -c "sed -i '/\*\.notice[[:space:]]*-\/var\/log\/messages/d' /etc/syslog.conf"
+ else
+ # if not already there then write the default config for global messages
+ if ! grep -q "\*\.notice[[:space:]]*-/var/log/messages" /etc/syslog.conf; then
+ sudo sh -c "echo \"*.notice -/var/log/messages\" >> /etc/syslog.conf"
+ fi
+ fi
+ sudo /usr/sbin/invoke-rc.d sysklogd restart
diff --git a/templates/system/syslog/user/node.def b/templates/system/syslog/user/node.def
index a432f326..eabd7f8f 100644
--- a/templates/system/syslog/user/node.def
+++ b/templates/system/syslog/user/node.def
@@ -1,5 +1,6 @@
tag:
type: txt
help: Set logging to specific user's terminal
+commit:expression: $VAR(./@/facility/@@) != ""; "Atleast one facility must be configured to log messages to user $VAR(./@)"
comp_help: Possible completions:
<username> Send log messages to this user's terminal