OpenWrt uses logd by default which doesn't write to files. CrowdSec file-based acquisition needs /var/log/messages to exist. Changes: - Init script: setup_syslog() configures log_file before each start - Defaults script: setup_syslog_file() configures at install time - openwrt-syslog.yaml: Remove non-existent /var/log/syslog reference The init script sets: uci set system.@system[0].log_file='/var/log/messages' uci set system.@system[0].log_size='512' Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
71 lines
1.7 KiB
Bash
Executable File
71 lines
1.7 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2021-2022 Gerald Kerma <gandalf@gk2.net>
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
NAME=crowdsec
|
|
PROG=/usr/bin/crowdsec
|
|
CONFIG=/etc/crowdsec/config.yaml
|
|
RUNCONFDIR=/srv/crowdsec/data
|
|
VARCONFIGDIR=/var/etc/crowdsec
|
|
VARCONFIG=/var/etc/crowdsec/config.yaml
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger crowdsec
|
|
}
|
|
|
|
setup_syslog() {
|
|
# CrowdSec needs log files to exist for acquisition
|
|
# OpenWrt uses logd by default which doesn't write to files
|
|
# Enable file logging so CrowdSec can read from /var/log/messages
|
|
|
|
local log_file
|
|
log_file=$(uci -q get system.@system[0].log_file)
|
|
|
|
if [ -z "$log_file" ]; then
|
|
logger -t crowdsec "Enabling syslog file logging for CrowdSec acquisition"
|
|
uci set system.@system[0].log_file='/var/log/messages'
|
|
uci set system.@system[0].log_size='512'
|
|
uci commit system
|
|
/etc/init.d/log restart
|
|
# Wait for log file to be created
|
|
sleep 2
|
|
fi
|
|
|
|
# Ensure log file exists
|
|
if [ ! -f /var/log/messages ]; then
|
|
touch /var/log/messages
|
|
chmod 644 /var/log/messages
|
|
fi
|
|
}
|
|
|
|
init_config() {
|
|
config_load crowdsec
|
|
config_get data_dir crowdsec data_dir "${RUNCONFDIR}"
|
|
config_get db_path crowdsec db_path "${RUNCONFDIR}/crowdsec.db"
|
|
|
|
# Create tmp dir & permissions if needed
|
|
if [ ! -d "${VARCONFIGDIR}" ]; then
|
|
mkdir -m 0755 -p "${VARCONFIGDIR}"
|
|
fi;
|
|
|
|
cp $CONFIG $VARCONFIG
|
|
|
|
sed -i "s,^\(\s*data_dir\s*:\s*\).*\$,\1$data_dir," $VARCONFIG
|
|
sed -i "s,^\(\s*db_path\s*:\s*\).*\$,\1$db_path," $VARCONFIG
|
|
|
|
# Create data dir & permissions if needed
|
|
if [ ! -d "${RUNCONFDIR}" ]; then
|
|
mkdir -m 0755 -p "${RUNCONFDIR}"
|
|
fi;
|
|
}
|
|
|
|
start_service() {
|
|
setup_syslog
|
|
init_config
|
|
|
|
procd_open_instance
|
|
procd_set_param command "$PROG" -c "$VARCONFIG"
|
|
procd_close_instance
|
|
}
|