Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F117520838
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
54 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/interface-definitions/syslog.xml b/interface-definitions/syslog.xml
index 1b119bfcc..e462412d9 100644
--- a/interface-definitions/syslog.xml
+++ b/interface-definitions/syslog.xml
@@ -1,936 +1,949 @@
<?xml version="1.0"?>
<interfaceDefinition>
<node name="system">
<children>
<node name="syslog" owner="${vyos_conf_scripts_dir}/syslog.py">
<properties>
<help>System logging</help>
<priority>400</priority>
</properties>
<children>
<tagNode name="user">
<properties>
- <help>Logging to specific user's terminal</help>
+ <help>Logging to specific terminal of given user</help>
<constraint>
- <regex>^[a-z_][a-z0-9_-]{1,31}[$]?</regex>
+ <regex>[a-z_][a-z0-9_-]{1,31}[$]?</regex>
</constraint>
<constraintErrorMessage>illegal characters in user</constraintErrorMessage>
<valueHelp>
<format>username</format>
<description>user login name</description>
</valueHelp>
</properties>
<children>
<tagNode name="facility">
<properties>
<help>Facility for logging</help>
<completionHelp>
<list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
</completionHelp>
<constraint>
<regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
</constraint>
<constraintErrorMessage>Invalid facility type</constraintErrorMessage>
<valueHelp>
<format>all</format>
<description>All facilities excluding "mark"</description>
</valueHelp>
<valueHelp>
<format>auth</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>authpriv</format>
<description>Non-system authorization</description>
</valueHelp>
<valueHelp>
<format>cron</format>
<description>Cron daemon</description>
</valueHelp>
<valueHelp>
<format>daemon</format>
<description>System daemons</description>
</valueHelp>
<valueHelp>
<format>kern</format>
<description>Kernel</description>
</valueHelp>
<valueHelp>
<format>lpr</format>
<description>Line printer spooler</description>
</valueHelp>
<valueHelp>
<format>mail</format>
<description>Mail subsystem</description>
</valueHelp>
<valueHelp>
<format>mark</format>
<description>Timestamp</description>
</valueHelp>
<valueHelp>
<format>news</format>
<description>USENET subsystem</description>
</valueHelp>
<valueHelp>
<format>protocols</format>
<description>depricated will be set to local7</description>
</valueHelp>
<valueHelp>
<format>security</format>
<description>depricated will be set to auth</description>
</valueHelp>
<valueHelp>
<format>syslog</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>user</format>
<description>Application processes</description>
</valueHelp>
<valueHelp>
<format>uucp</format>
<description>UUCP subsystem</description>
</valueHelp>
<valueHelp>
<format>local0</format>
<description>Local facility 0</description>
</valueHelp>
<valueHelp>
<format>local1</format>
<description>Local facility 1</description>
</valueHelp>
<valueHelp>
<format>local2</format>
<description>Local facility 2</description>
</valueHelp>
<valueHelp>
<format>local3</format>
<description>Local facility 3</description>
</valueHelp>
<valueHelp>
<format>local4</format>
<description>Local facility 4</description>
</valueHelp>
<valueHelp>
<format>local5</format>
<description>Local facility 5</description>
</valueHelp>
<valueHelp>
<format>local6</format>
<description>Local facility 6</description>
</valueHelp>
<valueHelp>
<format>local7</format>
<description>Local facility 7</description>
</valueHelp>
</properties>
<children>
<leafNode name="level">
<properties>
<help>Logging level</help>
<completionHelp>
<list>emerg alert crit err warning notice info debug all</list>
</completionHelp>
<constraint>
<regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
</constraint>
<constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
<valueHelp>
<format>emerg</format>
<description>Emergency messages</description>
</valueHelp>
<valueHelp>
<format>alert</format>
<description>Urgent messages</description>
</valueHelp>
<valueHelp>
<format>crit</format>
<description>Critical messages</description>
</valueHelp>
<valueHelp>
<format>err</format>
<description>Error messages</description>
</valueHelp>
<valueHelp>
<format>warning</format>
<description>Warning messages</description>
</valueHelp>
<valueHelp>
<format>notice</format>
<description>Messages for further investigation</description>
</valueHelp>
<valueHelp>
<format>info</format>
<description>Informational messages</description>
</valueHelp>
<valueHelp>
<format>debug</format>
<description>Debug messages</description>
</valueHelp>
<valueHelp>
<format>all</format>
<description>Log everything</description>
</valueHelp>
</properties>
</leafNode>
</children>
</tagNode>
</children>
</tagNode>
<tagNode name="host">
<properties>
<help>Logging to a remote host</help>
<constraint>
<validator name="ip-address"/>
<validator name="fqdn"/>
</constraint>
- <constraintErrorMessage>Invalid host FQDN or IP address</constraintErrorMessage>
+ <constraintErrorMessage>Invalid host (FQDN or IP address)</constraintErrorMessage>
<valueHelp>
<format>ipv4</format>
<description>Remote syslog server IPv4 address</description>
</valueHelp>
<valueHelp>
<format>hostname</format>
<description>Remote syslog server FQDN</description>
</valueHelp>
</properties>
<children>
+ <leafNode name="port">
+ <properties>
+ <help>Destination port</help>
+ <valueHelp>
+ <format>1-65535</format>
+ <description>Destination port</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-65535"/>
+ </constraint>
+ <constraintErrorMessage>Invalid destination port value</constraintErrorMessage>
+ </properties>
+ </leafNode>
<tagNode name="facility">
<properties>
<help>Facility for logging</help>
<completionHelp>
<list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
</completionHelp>
<constraint>
<regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
</constraint>
<constraintErrorMessage>Invalid facility type</constraintErrorMessage>
<valueHelp>
<format>all</format>
<description>All facilities excluding "mark"</description>
</valueHelp>
<valueHelp>
<format>auth</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>authpriv</format>
<description>Non-system authorization</description>
</valueHelp>
<valueHelp>
<format>cron</format>
<description>Cron daemon</description>
</valueHelp>
<valueHelp>
<format>daemon</format>
<description>System daemons</description>
</valueHelp>
<valueHelp>
<format>kern</format>
<description>Kernel</description>
</valueHelp>
<valueHelp>
<format>lpr</format>
<description>Line printer spooler</description>
</valueHelp>
<valueHelp>
<format>mail</format>
<description>Mail subsystem</description>
</valueHelp>
<valueHelp>
<format>mark</format>
<description>Timestamp</description>
</valueHelp>
<valueHelp>
<format>news</format>
<description>USENET subsystem</description>
</valueHelp>
<valueHelp>
<format>protocols</format>
<description>depricated will be set to local7</description>
</valueHelp>
<valueHelp>
<format>security</format>
<description>depricated will be set to auth</description>
</valueHelp>
<valueHelp>
<format>syslog</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>user</format>
<description>Application processes</description>
</valueHelp>
<valueHelp>
<format>uucp</format>
<description>UUCP subsystem</description>
</valueHelp>
<valueHelp>
<format>local0</format>
<description>Local facility 0</description>
</valueHelp>
<valueHelp>
<format>local1</format>
<description>Local facility 1</description>
</valueHelp>
<valueHelp>
<format>local2</format>
<description>Local facility 2</description>
</valueHelp>
<valueHelp>
<format>local3</format>
<description>Local facility 3</description>
</valueHelp>
<valueHelp>
<format>local4</format>
<description>Local facility 4</description>
</valueHelp>
<valueHelp>
<format>local5</format>
<description>Local facility 5</description>
</valueHelp>
<valueHelp>
<format>local6</format>
<description>Local facility 6</description>
</valueHelp>
<valueHelp>
<format>local7</format>
<description>Local facility 7</description>
</valueHelp>
</properties>
<children>
<leafNode name="protocol">
<properties>
<help>syslog communication protocol</help>
<valueHelp>
<format>udp</format>
<description>send log messages to remote syslog server over udp</description>
</valueHelp>
<valueHelp>
<format>tcp</format>
- <description>send log messages to remote syslog server over tdp</description>
+ <description>send log messages to remote syslog server over tcp</description>
</valueHelp>
<completionHelp>
<list>udp tcp</list>
</completionHelp>
<constraint>
<regex>(udp|tcp)</regex>
</constraint>
<constraintErrorMessage>invalid protocol name</constraintErrorMessage>
</properties>
</leafNode>
<leafNode name="level">
<properties>
<help>Logging level</help>
<completionHelp>
<list>emerg alert crit err warning notice info debug all</list>
</completionHelp>
<constraint>
<regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
</constraint>
<constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
<valueHelp>
<format>emerg</format>
<description>Emergency messages</description>
</valueHelp>
<valueHelp>
<format>alert</format>
<description>Urgent messages</description>
</valueHelp>
<valueHelp>
<format>crit</format>
<description>Critical messages</description>
</valueHelp>
<valueHelp>
<format>err</format>
<description>Error messages</description>
</valueHelp>
<valueHelp>
<format>warning</format>
<description>Warning messages</description>
</valueHelp>
<valueHelp>
<format>notice</format>
<description>Messages for further investigation</description>
</valueHelp>
<valueHelp>
<format>info</format>
<description>Informational messages</description>
</valueHelp>
<valueHelp>
<format>debug</format>
<description>Debug messages</description>
</valueHelp>
<valueHelp>
<format>all</format>
<description>Log everything</description>
</valueHelp>
</properties>
</leafNode>
</children>
</tagNode>
</children>
</tagNode>
<node name="global">
<properties>
<help>Logging to system standard location</help>
</properties>
<children>
<node name="archive">
<properties>
<help>Log file size and rotation characteristics</help>
</properties>
<children>
<leafNode name="file">
<properties>
<help>Number of saved files (default is 5)</help>
<constraint>
- <regex>^[0-9]+</regex>
+ <regex>[0-9]+</regex>
</constraint>
<constraintErrorMessage>illegal characters in number of files</constraintErrorMessage>
</properties>
</leafNode>
<leafNode name="size">
<properties>
<help>Size of log files (in kbytes, default is 256)</help>
<constraint>
- <regex>^[0-9]+</regex>
+ <regex>[0-9]+</regex>
</constraint>
<constraintErrorMessage>illegal characters in size</constraintErrorMessage>
</properties>
</leafNode>
</children>
</node>
<tagNode name="facility">
<properties>
<help>Facility for logging</help>
<completionHelp>
<list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
</completionHelp>
<constraint>
<regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
</constraint>
<constraintErrorMessage>Invalid facility type</constraintErrorMessage>
<valueHelp>
<format>all</format>
<description>All facilities excluding "mark"</description>
</valueHelp>
<valueHelp>
<format>auth</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>authpriv</format>
<description>Non-system authorization</description>
</valueHelp>
<valueHelp>
<format>cron</format>
<description>Cron daemon</description>
</valueHelp>
<valueHelp>
<format>daemon</format>
<description>System daemons</description>
</valueHelp>
<valueHelp>
<format>kern</format>
<description>Kernel</description>
</valueHelp>
<valueHelp>
<format>lpr</format>
<description>Line printer spooler</description>
</valueHelp>
<valueHelp>
<format>mail</format>
<description>Mail subsystem</description>
</valueHelp>
<valueHelp>
<format>mark</format>
<description>Timestamp</description>
</valueHelp>
<valueHelp>
<format>news</format>
<description>USENET subsystem</description>
</valueHelp>
<valueHelp>
<format>protocols</format>
<description>depricated will be set to local7</description>
</valueHelp>
<valueHelp>
<format>security</format>
<description>depricated will be set to auth</description>
</valueHelp>
<valueHelp>
<format>syslog</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>user</format>
<description>Application processes</description>
</valueHelp>
<valueHelp>
<format>uucp</format>
<description>UUCP subsystem</description>
</valueHelp>
<valueHelp>
<format>local0</format>
<description>Local facility 0</description>
</valueHelp>
<valueHelp>
<format>local1</format>
<description>Local facility 1</description>
</valueHelp>
<valueHelp>
<format>local2</format>
<description>Local facility 2</description>
</valueHelp>
<valueHelp>
<format>local3</format>
<description>Local facility 3</description>
</valueHelp>
<valueHelp>
<format>local4</format>
<description>Local facility 4</description>
</valueHelp>
<valueHelp>
<format>local5</format>
<description>Local facility 5</description>
</valueHelp>
<valueHelp>
<format>local6</format>
<description>Local facility 6</description>
</valueHelp>
<valueHelp>
<format>local7</format>
<description>Local facility 7</description>
</valueHelp>
</properties>
<children>
<leafNode name="level">
<properties>
<help>Logging level</help>
<completionHelp>
<list>emerg alert crit err warning notice info debug all</list>
</completionHelp>
<constraint>
<regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
</constraint>
<constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
<valueHelp>
<format>emerg</format>
<description>Emergency messages</description>
</valueHelp>
<valueHelp>
<format>alert</format>
<description>Urgent messages</description>
</valueHelp>
<valueHelp>
<format>crit</format>
<description>Critical messages</description>
</valueHelp>
<valueHelp>
<format>err</format>
<description>Error messages</description>
</valueHelp>
<valueHelp>
<format>warning</format>
<description>Warning messages</description>
</valueHelp>
<valueHelp>
<format>notice</format>
<description>Messages for further investigation</description>
</valueHelp>
<valueHelp>
<format>info</format>
<description>Informational messages</description>
</valueHelp>
<valueHelp>
<format>debug</format>
<description>Debug messages</description>
</valueHelp>
<valueHelp>
<format>all</format>
<description>Log everything</description>
</valueHelp>
</properties>
</leafNode>
</children>
</tagNode>
<node name="marker">
<properties>
<help>mark messages sent to syslog</help>
</properties>
<children>
<leafNode name="interval">
<properties>
<help>time interval how often a mark message is being sent in seconds (default: 1200)</help>
<constraint>
<validator name="numeric" argument="--positive"/>
</constraint>
</properties>
</leafNode>
</children>
</node>
<leafNode name ="preserve-fqdn">
<properties>
<help>uses FQDN for logging</help>
<valueless />
</properties>
</leafNode>
</children>
</node>
<tagNode name="file">
<properties>
<help>Logging to a file</help>
<constraint>
- <regex>^[a-zA-Z0-9\-_.]{1,255}</regex>
+ <regex>[a-zA-Z0-9\-_.]{1,255}</regex>
</constraint>
<constraintErrorMessage>illegal characters in filename or filename longer than 255 characters</constraintErrorMessage>
</properties>
<children>
<node name="archive">
<properties>
<help>Log file size and rotation characteristics</help>
</properties>
<children>
<leafNode name="file">
<properties>
<help>Number of saved files (default is 5)</help>
<constraint>
- <regex>^[0-9]+</regex>
+ <regex>[0-9]+</regex>
</constraint>
<constraintErrorMessage>illegal characters in number of files</constraintErrorMessage>
</properties>
</leafNode>
<leafNode name="size">
<properties>
<help>Size of log files (in kbytes, default is 256)</help>
<constraint>
- <regex>^[0-9]+</regex>
+ <regex>[0-9]+</regex>
</constraint>
<constraintErrorMessage>illegal characters in size</constraintErrorMessage>
</properties>
</leafNode>
</children>
</node>
<tagNode name="facility">
<properties>
<help>Facility for logging</help>
<completionHelp>
<list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
</completionHelp>
<constraint>
<regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
</constraint>
<constraintErrorMessage>Invalid facility type</constraintErrorMessage>
<valueHelp>
<format>all</format>
<description>All facilities excluding "mark"</description>
</valueHelp>
<valueHelp>
<format>auth</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>authpriv</format>
<description>Non-system authorization</description>
</valueHelp>
<valueHelp>
<format>cron</format>
<description>Cron daemon</description>
</valueHelp>
<valueHelp>
<format>daemon</format>
<description>System daemons</description>
</valueHelp>
<valueHelp>
<format>kern</format>
<description>Kernel</description>
</valueHelp>
<valueHelp>
<format>lpr</format>
<description>Line printer spooler</description>
</valueHelp>
<valueHelp>
<format>mail</format>
<description>Mail subsystem</description>
</valueHelp>
<valueHelp>
<format>mark</format>
<description>Timestamp</description>
</valueHelp>
<valueHelp>
<format>news</format>
<description>USENET subsystem</description>
</valueHelp>
<valueHelp>
<format>protocols</format>
<description>depricated will be set to local7</description>
</valueHelp>
<valueHelp>
<format>security</format>
<description>depricated will be set to auth</description>
</valueHelp>
<valueHelp>
<format>syslog</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>user</format>
<description>Application processes</description>
</valueHelp>
<valueHelp>
<format>uucp</format>
<description>UUCP subsystem</description>
</valueHelp>
<valueHelp>
<format>local0</format>
<description>Local facility 0</description>
</valueHelp>
<valueHelp>
<format>local1</format>
<description>Local facility 1</description>
</valueHelp>
<valueHelp>
<format>local2</format>
<description>Local facility 2</description>
</valueHelp>
<valueHelp>
<format>local3</format>
<description>Local facility 3</description>
</valueHelp>
<valueHelp>
<format>local4</format>
<description>Local facility 4</description>
</valueHelp>
<valueHelp>
<format>local5</format>
<description>Local facility 5</description>
</valueHelp>
<valueHelp>
<format>local6</format>
<description>Local facility 6</description>
</valueHelp>
<valueHelp>
<format>local7</format>
<description>Local facility 7</description>
</valueHelp>
</properties>
<children>
<leafNode name="level">
<properties>
<help>Logging level</help>
<completionHelp>
<list>emerg alert crit err warning notice info debug all</list>
</completionHelp>
<constraint>
<regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
</constraint>
<constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
<valueHelp>
<format>emerg</format>
<description>Emergency messages</description>
</valueHelp>
<valueHelp>
<format>alert</format>
<description>Urgent messages</description>
</valueHelp>
<valueHelp>
<format>crit</format>
<description>Critical messages</description>
</valueHelp>
<valueHelp>
<format>err</format>
<description>Error messages</description>
</valueHelp>
<valueHelp>
<format>warning</format>
<description>Warning messages</description>
</valueHelp>
<valueHelp>
<format>notice</format>
<description>Messages for further investigation</description>
</valueHelp>
<valueHelp>
<format>info</format>
<description>Informational messages</description>
</valueHelp>
<valueHelp>
<format>debug</format>
<description>Debug messages</description>
</valueHelp>
<valueHelp>
<format>all</format>
<description>Log everything</description>
</valueHelp>
</properties>
</leafNode>
</children>
</tagNode>
</children>
</tagNode>
<node name="console">
<properties>
<help>logging to serial console</help>
</properties>
<children>
<tagNode name="facility">
<properties>
<help>Facility for logging</help>
<completionHelp>
<list>auth authpriv cron daemon kern lpr mail mark news protocols security syslog user uucp local0 local1 local2 local3 local4 local5 local6 local7 all</list>
</completionHelp>
<constraint>
<regex>(auth|authpriv|cron|daemon|kern|lpr|mail|mark|news|protocols|security|syslog|user|uucp|local0|local1|local2|local3|local4|local5|local6|local7|all)</regex>
</constraint>
<constraintErrorMessage>Invalid facility type</constraintErrorMessage>
<valueHelp>
<format>all</format>
<description>All facilities excluding "mark"</description>
</valueHelp>
<valueHelp>
<format>auth</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>authpriv</format>
<description>Non-system authorization</description>
</valueHelp>
<valueHelp>
<format>cron</format>
<description>Cron daemon</description>
</valueHelp>
<valueHelp>
<format>daemon</format>
<description>System daemons</description>
</valueHelp>
<valueHelp>
<format>kern</format>
<description>Kernel</description>
</valueHelp>
<valueHelp>
<format>lpr</format>
<description>Line printer spooler</description>
</valueHelp>
<valueHelp>
<format>mail</format>
<description>Mail subsystem</description>
</valueHelp>
<valueHelp>
<format>mark</format>
<description>Timestamp</description>
</valueHelp>
<valueHelp>
<format>news</format>
<description>USENET subsystem</description>
</valueHelp>
<valueHelp>
<format>protocols</format>
<description>depricated will be set to local7</description>
</valueHelp>
<valueHelp>
<format>security</format>
<description>depricated will be set to auth</description>
</valueHelp>
<valueHelp>
<format>syslog</format>
<description>Authentication and authorization</description>
</valueHelp>
<valueHelp>
<format>user</format>
<description>Application processes</description>
</valueHelp>
<valueHelp>
<format>uucp</format>
<description>UUCP subsystem</description>
</valueHelp>
<valueHelp>
<format>local0</format>
<description>Local facility 0</description>
</valueHelp>
<valueHelp>
<format>local1</format>
<description>Local facility 1</description>
</valueHelp>
<valueHelp>
<format>local2</format>
<description>Local facility 2</description>
</valueHelp>
<valueHelp>
<format>local3</format>
<description>Local facility 3</description>
</valueHelp>
<valueHelp>
<format>local4</format>
<description>Local facility 4</description>
</valueHelp>
<valueHelp>
<format>local5</format>
<description>Local facility 5</description>
</valueHelp>
<valueHelp>
<format>local6</format>
<description>Local facility 6</description>
</valueHelp>
<valueHelp>
<format>local7</format>
<description>Local facility 7</description>
</valueHelp>
</properties>
<children>
<leafNode name="level">
<properties>
<help>Logging level</help>
<completionHelp>
<list>emerg alert crit err warning notice info debug all</list>
</completionHelp>
<constraint>
<regex>(emerg|alert|crit|err|warning|notice|info|debug|all)</regex>
</constraint>
<constraintErrorMessage>Invalid loglevel</constraintErrorMessage>
<valueHelp>
<format>emerg</format>
<description>Emergency messages</description>
</valueHelp>
<valueHelp>
<format>alert</format>
<description>Urgent messages</description>
</valueHelp>
<valueHelp>
<format>crit</format>
<description>Critical messages</description>
</valueHelp>
<valueHelp>
<format>err</format>
<description>Error messages</description>
</valueHelp>
<valueHelp>
<format>warning</format>
<description>Warning messages</description>
</valueHelp>
<valueHelp>
<format>notice</format>
<description>Messages for further investigation</description>
</valueHelp>
<valueHelp>
<format>info</format>
<description>Informational messages</description>
</valueHelp>
<valueHelp>
<format>debug</format>
<description>Debug messages</description>
</valueHelp>
<valueHelp>
<format>all</format>
<description>Log everything</description>
</valueHelp>
</properties>
</leafNode>
</children>
</tagNode>
</children>
</node>
</children>
</node>
</children>
</node>
</interfaceDefinition>
diff --git a/src/conf_mode/syslog.py b/src/conf_mode/syslog.py
index c4f3d2c9c..b3876164c 100755
--- a/src/conf_mode/syslog.py
+++ b/src/conf_mode/syslog.py
@@ -1,320 +1,331 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2018 VyOS maintainers and contributors
+# Copyright (C) 2018-2020 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-#
-import sys
+
import os
import re
import jinja2
+from sys import exit
from vyos.config import Config
from vyos import ConfigError
# config templates
# /etc/rsyslog.d/vyos-rsyslog.conf ###
configs = '''
## generated by syslog.py ##
## file based logging
{% if files['global']['marker'] -%}
$ModLoad immark
{% if files['global']['marker-interval'] %}
$MarkMessagePeriod {{files['global']['marker-interval']}}
{% endif %}
{% endif -%}
{% if files['global']['preserver_fqdn'] -%}
$PreserveFQDN on
{% endif -%}
{% for file in files %}
$outchannel {{file}},{{files[file]['log-file']}},{{files[file]['max-size']}},{{files[file]['action-on-max-size']}}
{{files[file]['selectors']}} :omfile:${{file}}
{% endfor %}
{% if console %}
## console logging
{% for con in console %}
{{console[con]['selectors']}} /dev/console
{% endfor %}
{% endif %}
{% if hosts %}
## remote logging
{% for host in hosts %}
{% if hosts[host]['proto'] == 'tcp' %}
+{% if hosts[host]['port'] %}
+{{hosts[host]['selectors']}} @@{{host}}:{{hosts[host]['port']}}
+{% else %}
{{hosts[host]['selectors']}} @@{{host}}
+{% endif %}
+{% else %}
+{% if hosts[host]['port'] %}
+{{hosts[host]['selectors']}} @{{host}}:{{hosts[host]['port']}}
{% else %}
{{hosts[host]['selectors']}} @{{host}}
{% endif %}
+{% endif %}
{% endfor %}
{% endif %}
{% if user %}
{% for u in user %}
{{user[u]['selectors']}} :omusrmsg:{{u}}
{% endfor %}
{% endif %}
'''
logrotate_configs = '''
{% for file in files %}
{{files[file]['log-file']}} {
missingok
notifempty
create
rotate {{files[file]['max-files']}}
size={{files[file]['max-size']//1024}}k
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
{% endfor %}
'''
# config templates end
def get_config():
c = Config()
if not c.exists('system syslog'):
return None
c.set_level('system syslog')
config_data = {
'files': {},
'console': {},
'hosts': {},
'user': {}
}
#
# /etc/rsyslog.d/vyos-rsyslog.conf
# 'set system syslog global'
#
config_data['files'].update(
{
'global': {
'log-file': '/var/log/messages',
'max-size': 262144,
'action-on-max-size': '/usr/sbin/logrotate /etc/logrotate.d/vyos-rsyslog',
'selectors': '*.notice;local7.debug',
'max-files': '5',
'preserver_fqdn': False
}
}
)
if c.exists('global marker'):
config_data['files']['global']['marker'] = True
if c.exists('global marker interval'):
config_data['files']['global'][
'marker-interval'] = c.return_value('global marker interval')
if c.exists('global facility'):
config_data['files']['global'][
'selectors'] = generate_selectors(c, 'global facility')
if c.exists('global archive size'):
config_data['files']['global']['max-size'] = int(
c.return_value('global archive size')) * 1024
if c.exists('global archive file'):
config_data['files']['global'][
'max-files'] = c.return_value('global archive file')
if c.exists('global preserve-fqdn'):
config_data['files']['global']['preserver_fqdn'] = True
#
# set system syslog file
#
if c.exists('file'):
filenames = c.list_nodes('file')
for filename in filenames:
config_data['files'].update(
{
filename: {
'log-file': '/var/log/user/' + filename,
'max-files': '5',
'action-on-max-size': '/usr/sbin/logrotate /etc/logrotate.d/' + filename,
'selectors': '*.err',
'max-size': 262144
}
}
)
if c.exists('file ' + filename + ' facility'):
config_data['files'][filename]['selectors'] = generate_selectors(
c, 'file ' + filename + ' facility')
if c.exists('file ' + filename + ' archive size'):
config_data['files'][filename]['max-size'] = int(
c.return_value('file ' + filename + ' archive size')) * 1024
if c.exists('file ' + filename + ' archive files'):
config_data['files'][filename]['max-files'] = c.return_value(
'file ' + filename + ' archive files')
# set system syslog console
if c.exists('console'):
config_data['console'] = {
'/dev/console': {
'selectors': '*.err'
}
}
for f in c.list_nodes('console facility'):
if c.exists('console facility ' + f + ' level'):
config_data['console'] = {
'/dev/console': {
'selectors': generate_selectors(c, 'console facility')
}
}
# set system syslog host
if c.exists('host'):
- proto = 'udp'
rhosts = c.list_nodes('host')
for rhost in rhosts:
for fac in c.list_nodes('host ' + rhost + ' facility'):
if c.exists('host ' + rhost + ' facility ' + fac + ' protocol'):
proto = c.return_value(
'host ' + rhost + ' facility ' + fac + ' protocol')
+ else:
+ proto = 'udp'
config_data['hosts'].update(
{
rhost: {
'selectors': generate_selectors(c, 'host ' + rhost + ' facility'),
'proto': proto
}
}
)
+ if c.exists('host ' + rhost + ' port'):
+ config_data['hosts'][rhost][
+ 'port'] = c.return_value('host ' + rhost + ' port')
# set system syslog user
if c.exists('user'):
usrs = c.list_nodes('user')
for usr in usrs:
config_data['user'].update(
{
usr: {
'selectors': generate_selectors(c, 'user ' + usr + ' facility')
}
}
)
return config_data
def generate_selectors(c, config_node):
# protocols and security are being mapped here
# for backward compatibility with old configs
# security and protocol mappings can be removed later
- if c.is_tag(config_node):
- nodes = c.list_nodes(config_node)
- selectors = ""
- for node in nodes:
- lvl = c.return_value(config_node + ' ' + node + ' level')
- if lvl == None:
- lvl = "err"
- if lvl == 'all':
- lvl = '*'
- if node == 'all' and node != nodes[-1]:
- selectors += "*." + lvl + ";"
- elif node == 'all':
- selectors += "*." + lvl
- elif node != nodes[-1]:
- if node == 'protocols':
- node = 'local7'
- if node == 'security':
- node = 'auth'
- selectors += node + "." + lvl + ";"
- else:
- if node == 'protocols':
- node = 'local7'
- if node == 'security':
- node = 'auth'
- selectors += node + "." + lvl
- return selectors
+ nodes = c.list_nodes(config_node)
+ selectors = ""
+ for node in nodes:
+ lvl = c.return_value(config_node + ' ' + node + ' level')
+ if lvl == None:
+ lvl = "err"
+ if lvl == 'all':
+ lvl = '*'
+ if node == 'all' and node != nodes[-1]:
+ selectors += "*." + lvl + ";"
+ elif node == 'all':
+ selectors += "*." + lvl
+ elif node != nodes[-1]:
+ if node == 'protocols':
+ node = 'local7'
+ if node == 'security':
+ node = 'auth'
+ selectors += node + "." + lvl + ";"
+ else:
+ if node == 'protocols':
+ node = 'local7'
+ if node == 'security':
+ node = 'auth'
+ selectors += node + "." + lvl
+ return selectors
def generate(c):
if c == None:
return None
tmpl = jinja2.Template(configs, trim_blocks=True)
config_text = tmpl.render(c)
with open('/etc/rsyslog.d/vyos-rsyslog.conf', 'w') as f:
f.write(config_text)
# eventually write for each file its own logrotate file, since size is
# defined it shouldn't matter
tmpl = jinja2.Template(logrotate_configs, trim_blocks=True)
config_text = tmpl.render(c)
with open('/etc/logrotate.d/vyos-rsyslog', 'w') as f:
f.write(config_text)
def verify(c):
if c == None:
return None
- #
+
+ # may be obsolete
# /etc/rsyslog.conf is generated somewhere and copied over the original (exists in /opt/vyatta/etc/rsyslog.conf)
# it interferes with the global logging, to make sure we are using a single base, template is enforced here
#
if not os.path.islink('/etc/rsyslog.conf'):
os.remove('/etc/rsyslog.conf')
os.symlink(
'/usr/share/vyos/templates/rsyslog/rsyslog.conf', '/etc/rsyslog.conf')
# /var/log/vyos-rsyslog were the old files, we may want to clean those up, but currently there
# is a chance that someone still needs it, so I don't automatically remove
# them
+ #
if c == None:
return None
fac = [
'*', 'auth', 'authpriv', 'cron', 'daemon', 'kern', 'lpr', 'mail', 'mark', 'news', 'protocols', 'security',
'syslog', 'user', 'uucp', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7']
lvl = ['emerg', 'alert', 'crit', 'err',
'warning', 'notice', 'info', 'debug', '*']
for conf in c:
if c[conf]:
for item in c[conf]:
for s in c[conf][item]['selectors'].split(";"):
f = re.sub("\..*$", "", s)
if f not in fac:
- print (c[conf])
raise ConfigError(
'Invalid facility ' + s + ' set in ' + conf + ' ' + item)
l = re.sub("^.+\.", "", s)
if l not in lvl:
raise ConfigError(
'Invalid logging level ' + s + ' set in ' + conf + ' ' + item)
def apply(c):
if not c and os.path.exists('/var/run/rsyslogd.pid'):
os.system("sudo systemctl stop syslog.socket")
os.system("sudo systemctl stop rsyslog")
else:
if not os.path.exists('/var/run/rsyslogd.pid'):
os.system("sudo systemctl start rsyslog >/dev/null")
else:
os.system("sudo systemctl restart rsyslog >/dev/null")
if __name__ == '__main__':
try:
c = get_config()
verify(c)
generate(c)
apply(c)
except ConfigError as e:
print(e)
- sys.exit(1)
+ exit(1)
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Sep 26, 12:31 PM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4285144
Default Alt Text
(54 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment