On 18/11/2020 11:46, Michael Schaller wrote:
Michael, a syslog URI sounds like a good idea to me.

I'm not aware of any RFC other than
https://tools.ietf.org/html/draft-lear-ietf-syslog-uri-00, which
proposes a rather odd URI syntax IMHO.
Others seem to use URIs like `[tcp/udp]://host:port` or they have
their own schemes.
I personally find a standard URI more idiomatic and it looks like this
could be nicely handled by `uribase`, which is currently an open iPXE
pull request: https://github.com/ipxe/ipxe/pull/114

URI examples:
* 
https://www.netiq.com/documentation/securelogin-88/installation_guide/data/b1hxlq7p.html
* 
https://docs.newrelic.com/docs/logs/enable-log-management-new-relic/enable-log-monitoring-new-relic/forward-your-logs-using-infrastructure-agent

Custom schemes examples:
* 
https://www.grandmetric.com/knowledge-base/design_and_configure/syslog-configure-syslog-server-logging-cisco/
* https://www.debian.org/releases/buster/amd64/ch05s03.en.html#installer-args

Thank you for doing the research.

We do already have support for `[tcp/udp]://host:port` as a URI syntax in iPXE so this could be a good minimal-code-size approach, given that there seems to be no globally agreed standard to which to conform.

We would still need to support the existing ${syslog} setting as an IPv4 address (and only an IPv4 address), to maintain backwards compatibility and to allow for the syslog server to be set via DHCP option 7.

This suggests defining a new setting e.g. ${sysloguri} or ${loguri} and updating apply_syslog_settings() to something like:

- if ${sysloguri} is defined, then use that

- else if ${syslog6} is defined, then use that

- else if ${syslog} is defined, then use that

- use xfer_open_uri_string() or xfer_open_socket() as applicable for the choice taken

Given that a TCP connection (unlike UDP) can be closed by the remote end, it may also be worth separating out the xfer_open_*() logic and allowing the connection to be reopened if needed.

It may then be worth defining a syslogs:// URI opener (for syslog-over-TCP+TLS as already supported in syslogs.c), and potentially consolidating some of the logic between syslog.c and syslogs.c, while ensuring that the TLS stack doesn't get dragged in to builds that don't explicitly request it.

Please don't dive in to implement it yet, but does that sound sensible?

Thanks,

Michael
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to