Skip to content

Commit

Permalink
syslog: T6858: bugfix remote syslog using TCP
Browse files Browse the repository at this point in the history
Commit 042be39 ("syslog: T5367: add format option to include timezone in
message") added an invalid, outer if-statement when rendering the rsyslog
configuration option for TCP.

Remote hosts only got added when the format option "octet-counting" was defined
in addition to the TCP protocol. This has been fix and now TCP transport is
decoupled from octet-counting mode.
  • Loading branch information
c-po committed Nov 7, 2024
1 parent 12f9bdf commit 9ba81b2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
2 changes: 0 additions & 2 deletions data/templates/rsyslog/rsyslog.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,7 @@ $outchannel {{ file_name }},/var/log/user/{{ file_name }},{{ file_options.archiv
{% endfor %}
{% endif %}
{% if host_options.protocol is vyos_defined('tcp') %}
{% if host_options.format.octet_counted is vyos_defined %}
{{ tmp | join(';') }} @@{{ '(o)' if host_options.format.octet_counted is vyos_defined }}{{ host_name | bracketize_ipv6 }}:{{ host_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if host_options.format.include_timezone is vyos_defined }}
{% endif %}
{% else %}
{{ tmp | join(';') }} @{{ host_name | bracketize_ipv6 }}:{{ host_options.port }}{{ ';RSYSLOG_SyslogProtocol23Format' if host_options.format.include_timezone is vyos_defined }}
{% endif %}
Expand Down
24 changes: 24 additions & 0 deletions smoketest/scripts/cli/test_system_syslog.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

from vyos.utils.file import read_file
from vyos.utils.process import process_named_running
from vyos.xml_ref import default_value

PROCESS_NAME = 'rsyslogd'
RSYSLOG_CONF = '/etc/rsyslog.d/00-vyos.conf'
Expand Down Expand Up @@ -102,6 +103,29 @@ def test_syslog_global(self):
# Check for running process
self.assertTrue(process_named_running(PROCESS_NAME))

def test_syslog_remote(self):
rhost = '169.254.0.1'
default_port = default_value(base_path + ['host', rhost, 'port'])

self.cli_set(base_path + ['global', 'facility', 'all', 'level', 'info'])
self.cli_set(base_path + ['global', 'facility', 'local7', 'level', 'debug'])
self.cli_set(base_path + ['host', rhost, 'facility', 'all', 'level', 'all'])
self.cli_set(base_path + ['host', rhost, 'protocol', 'tcp'])

self.cli_commit()

config = read_file(RSYSLOG_CONF)
self.assertIn(f'*.* @@{rhost}:{default_port}', config)

# Change default port and enable "octet-counting" mode
port = '10514'
self.cli_set(base_path + ['host', rhost, 'port', port])
self.cli_set(base_path + ['host', rhost, 'format', 'octet-counted'])
self.cli_commit()

config = read_file(RSYSLOG_CONF)
self.assertIn(f'*.* @@(o){rhost}:{port}', config)


if __name__ == '__main__':
unittest.main(verbosity=2)

0 comments on commit 9ba81b2

Please sign in to comment.