Skip to content

Commit

Permalink
add gluon-logging package
Browse files Browse the repository at this point in the history
Allows reconfigurtion of remote syslog from within site.conf.

Conflicts with the gluon-web-logging package as user made changes
will be overwritten, because this package will reconfigure the syslog
destination on every upgrade.

Resolves freifunk-gluon#1845
  • Loading branch information
mweinelt committed Apr 29, 2020
1 parent b181803 commit 9b19883
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
package/gluon-ebtables-limit-arp
package/gluon-ebtables-source-filter
package/gluon-hoodselector
package/gluon-logging
package/gluon-mesh-batman-adv
package/gluon-mesh-wireless-sae
package/gluon-radv-filterd
Expand Down
37 changes: 37 additions & 0 deletions docs/package/gluon-logging.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
gluon-logging
=============

The *gluon-logging* package allows to configure a remote syslog server that
will receive the systems log output that is also visible when calling ``logread``
from a terminal.

It supports both IPv4 and IPv6 endpoints over UDP and TCP.

Note: The syslog mechanism is incapable of providing a complete log as network
access is required to send out log messages and ``logd`` does not buffer and resend
older log messages even though they might be available in ``logread``.

This package conflicts with ``gluon-web-logging`` as it will overwrite the
user-given syslog server on every upgrade.

site.conf
---------

syslog.ip : required
- Destination address of the remote syslog server

syslog.port : optional
- Destination port of the remote syslog server
- Defaults to 514

syslog.proto : optional
- Protocol to transport syslog frames in, can be either ``tcp`` or ``udp``
- Defaults to UDP

Example::

syslog = {
ip = "2001:db8::1",
port = 514,
proto = "udp",
},
15 changes: 15 additions & 0 deletions package/gluon-logging/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=gluon-logging
PKG_VERSION:=1

include ../gluon.mk

define Package/gluon-logging
TITLE:=Configure remote syslog from site.conf
DEPENDS:=+gluon-core
CONFLICTS:=gluon-web-logging
endef

$(eval $(call BuildPackageGluon,gluon-logging))

3 changes: 3 additions & 0 deletions package/gluon-logging/check_site.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
need_string({'syslog', 'ip'}, true)
need_number_range({'syslog', 'port'}, 1, 65535, false)
need_one_of({'syslog', 'proto'}, {'tcp', 'udp'}, false)
19 changes: 19 additions & 0 deletions package/gluon-logging/luasrc/lib/gluon/upgrade/040-syslog
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/lua
local site = require('gluon.site')
local uci = require('simple-uci').cursor()

local system = uci:get_first('system', 'system')

if not site.syslog.ip() then
uci:delete('system', system, 'log_remote')
uci:delete('system', system, 'log_ip')
uci:delete('system', system, 'log_port')
uci:delete('system', system, 'log_proto')
else
uci:set('system', system, 'log_remote', 1)
uci:set('system', system, 'log_ip', site.syslog.ip())
uci:set('system', system, 'log_port', site.syslog.port(514))
uci:set('system', system, 'log_proto', site.syslog.proto('udp'))
end

uci:save('system')

0 comments on commit 9b19883

Please sign in to comment.