114 lines
2.7 KiB
Bash
114 lines
2.7 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2014 OpenWrt.org
|
|
|
|
# shellcheck disable=SC3043
|
|
# shellcheck disable=SC2034
|
|
# shellcheck disable=SC3037
|
|
# shellcheck disable=SC2154
|
|
# shellcheck disable=SC2129
|
|
|
|
START=20
|
|
|
|
USE_PROCD=1
|
|
|
|
UCI_CONF="rsyslog"
|
|
CONFIG_FILE="/var/etc/rsyslog.conf"
|
|
BASE_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
|
|
|
|
mkdir -p "$(dirname ${CONFIG_FILE})"
|
|
# shellcheck disable=SC2188
|
|
> ${CONFIG_FILE}
|
|
echo "include(file=\"${BASE_CONFIG_FILE}\" mode=\"optional\")" >> ${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 -f ${CONFIG_FILE} -n
|
|
procd_close_instance
|
|
}
|
|
|
|
|
|
service_triggers()
|
|
{
|
|
procd_add_reload_trigger ${UCI_CONF}
|
|
}
|