96 lines
2.8 KiB
Bash
96 lines
2.8 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=99
|
|
USE_PROCD=1
|
|
PROG=/usr/bin/bandix
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "bandix"
|
|
}
|
|
|
|
reload_service() {
|
|
restart
|
|
}
|
|
|
|
start_service() {
|
|
local iface
|
|
local port
|
|
local data_dir
|
|
local log_level
|
|
local traffic_enabled
|
|
local traffic_retention_seconds
|
|
local traffic_flush_interval_seconds
|
|
local traffic_persist_history
|
|
local connections_enabled
|
|
local dns_enabled
|
|
local dns_max_records
|
|
|
|
# 这个逻辑在每次服务启动时执行,确保备份配置始终正确
|
|
if [ -f /etc/sysupgrade.conf ]; then
|
|
# 添加数据目录到备份列表
|
|
if ! grep -q "^/usr/share/bandix$" /etc/sysupgrade.conf; then
|
|
echo "/usr/share/bandix" >> /etc/sysupgrade.conf
|
|
fi
|
|
# 添加配置文件到备份列表
|
|
if ! grep -q "^/etc/config/bandix$" /etc/sysupgrade.conf; then
|
|
echo "/etc/config/bandix" >> /etc/sysupgrade.conf
|
|
fi
|
|
fi
|
|
|
|
config_load 'bandix'
|
|
config_get iface 'general' 'iface'
|
|
config_get port 'general' 'port'
|
|
config_get data_dir 'general' 'data_dir'
|
|
config_get log_level 'general' 'log_level'
|
|
config_get_bool traffic_enabled 'traffic' 'enabled'
|
|
config_get traffic_retention_seconds 'traffic' 'traffic_retention_seconds'
|
|
config_get traffic_flush_interval_seconds 'traffic' 'traffic_flush_interval_seconds'
|
|
config_get_bool traffic_persist_history 'traffic' 'traffic_persist_history'
|
|
config_get_bool connections_enabled 'connections' 'enabled'
|
|
config_get_bool dns_enabled 'dns' 'enabled'
|
|
config_get dns_max_records 'dns' 'dns_max_records'
|
|
|
|
[ "$connections_enabled" != 1 ] && [ "$traffic_enabled" != 1 ] && [ "$dns_enabled" != 1 ] && return 1
|
|
|
|
# 构建基础命令行参数
|
|
local args="--iface $iface --port $port --data-dir $data_dir"
|
|
if [ -n "$log_level" ]; then
|
|
args="$args --log-level $log_level"
|
|
fi
|
|
|
|
# 添加流量监控相关参数
|
|
if [ "$traffic_enabled" -eq 1 ]; then
|
|
args="$args --enable-traffic"
|
|
fi
|
|
if [ -n "$traffic_retention_seconds" ]; then
|
|
args="$args --traffic-retention-seconds $traffic_retention_seconds"
|
|
fi
|
|
if [ -n "$traffic_flush_interval_seconds" ]; then
|
|
args="$args --traffic-flush-interval-seconds $traffic_flush_interval_seconds"
|
|
fi
|
|
if [ "$traffic_persist_history" -eq 1 ]; then
|
|
args="$args --traffic-persist-history"
|
|
fi
|
|
|
|
# 添加连接统计监控参数
|
|
if [ "$connections_enabled" -eq 1 ]; then
|
|
args="$args --enable-connection"
|
|
fi
|
|
|
|
# 添加 DNS 监控参数
|
|
if [ "$dns_enabled" -eq 1 ]; then
|
|
args="$args --enable-dns"
|
|
fi
|
|
if [ -n "$dns_max_records" ]; then
|
|
args="$args --dns-max-records $dns_max_records"
|
|
fi
|
|
|
|
procd_open_instance bandix
|
|
procd_set_param command $PROG $args
|
|
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-10} ${respawn_retry:-10}
|
|
procd_set_param stderr 1
|
|
procd_set_param stdout 1
|
|
procd_set_param pidfile /var/run/bandix.pid
|
|
procd_close_instance
|
|
}
|