1
0
mirror of https://git.openwrt.org/feed/packages.git synced 2024-06-13 10:59:13 +02:00
openwrt-packages/admin/rsyslog/files/rsyslog.init
Giacomo Sanchietti 443bc5720e rsyslog: add uci support
Signed-off-by: Giacomo Sanchietti <giacomo.sanchietti@nethesis.it>
2022-07-07 10:34:58 -07:00

105 lines
2.5 KiB
Bash

#!/bin/sh /etc/rc.common
# Copyright (C) 2014 OpenWrt.org
START=20
USE_PROCD=1
UCI_CONF="rsyslog"
CONFIG_FILE="/etc/rsyslog.conf"
modules=""
selectors=""
forwarders=""
handle_selector() {
local config="$1"
local src
local dst
config_get src ${config} source
config_get dst ${config} destination
if [ ${src} != "" ] && [ "$dst" != "" ]; then
selectors="${selectors}\n${src}\t${dst}\n"
fi
}
handle_forwarder() {
local config="$1"
local src
local target
local protocol
local port
local rfc
local opts
config_get src ${config} source
config_get target ${config} target
config_get protocol ${config} protocol "udp"
config_get port ${config} port "514"
config_get rfc ${config} rfc "3164"
if [ "$rfc" == "5424" ]; then
opts='Template="RSYSLOG_SyslogProtocol23Format" TCP_Framing="octet-counted"'
fi
if [ ${src} != "" ] && [ "${target}" != "" ]; then
action="action(type=\"omfwd\" target=\"$target\" port=\"$port\" protocol=\"$protocol\" $opts action.resumeRetryCount=\"100\" queue.type=\"linkedList\" queue.size=\"10000\")"
forwarders="${forwarders}\n${src}\t${action}\n"
fi
}
expand_config() {
local input_t=""
local input_u=""
config_load ${UCI_CONF}
config_list_foreach syslog modules handle_module
config_get_bool tcp_input syslog tcp_input
if [ ${tcp_input} -eq 1 ]; then
modules="${modules} imtcp"
config_get tcp_port syslog tcp_input_port
input_t="input(type=\"imtcp\" port=\"${tcp_port}\")"
fi
config_get_bool udp_input syslog udp_input
if [ ${udp_input} -eq 1 ]; then
modules="${modules} imudp"
config_get udp_port syslog udp_input_port
input_u="input(type=\"imudp\" port=\"${udp_port}\")"
fi
config_get template syslog default_template
config_foreach handle_selector selector
config_foreach handle_forwarder forwarder
> ${CONFIG_FILE}
for m in ${modules}; do
echo "module(load=\"${m}\")" >> ${CONFIG_FILE}
done
echo ${input_t} >> ${CONFIG_FILE}
echo ${input_u} >> ${CONFIG_FILE}
echo "\$ActionFileDefaultTemplate ${template}" >> ${CONFIG_FILE}
echo -e ${selectors} >> ${CONFIG_FILE}
echo -e ${forwarders} >> ${CONFIG_FILE}
}
handle_module() {
local module="$1"
modules="${modules} $module"
}
start_service() {
expand_config
procd_open_instance
procd_set_param command /usr/sbin/rsyslogd -n
procd_close_instance
}
service_triggers()
{
procd_add_reload_trigger ${UCI_CONF}
}