mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-29 18:01:55 +08:00
161 lines
5.0 KiB
Bash
161 lines
5.0 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 tc_order
|
|
local tc_backend
|
|
local tc_priority
|
|
local netlink_priority
|
|
local tcx_anchor_ingress_id
|
|
local tcx_anchor_egress_id
|
|
local traffic_enabled
|
|
local traffic_realtime_window
|
|
local traffic_flush_interval
|
|
local traffic_enable_storage
|
|
local traffic_export_url
|
|
local traffic_event_url
|
|
local traffic_additional_subnets
|
|
local traffic_exclude_iface_device
|
|
local traffic_neighbor_flush_enable
|
|
local traffic_neighbor_flush_interval
|
|
local connections_enabled
|
|
local dns_enabled
|
|
local dns_max_records
|
|
local dns_enable_storage
|
|
local dns_flush_interval
|
|
|
|
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 tc_order 'general' 'tc_order'
|
|
config_get tc_backend 'general' 'tc_backend'
|
|
config_get tc_priority 'general' 'tc_priority'
|
|
config_get netlink_priority 'general' 'netlink_priority'
|
|
config_get tcx_anchor_ingress_id 'general' 'tcx_anchor_ingress_id'
|
|
config_get tcx_anchor_egress_id 'general' 'tcx_anchor_egress_id'
|
|
config_get_bool traffic_enabled 'traffic' 'enabled'
|
|
config_get traffic_realtime_window 'traffic' 'traffic_realtime_window'
|
|
config_get traffic_flush_interval 'traffic' 'traffic_flush_interval'
|
|
config_get_bool traffic_enable_storage 'traffic' 'traffic_enable_storage'
|
|
config_get traffic_export_url 'traffic' 'traffic_export_url'
|
|
config_get traffic_event_url 'traffic' 'traffic_event_url'
|
|
config_get traffic_additional_subnets 'traffic' 'traffic_additional_subnets'
|
|
config_get_bool traffic_exclude_iface_device 'traffic' 'traffic_exclude_iface_device' '0'
|
|
config_get_bool traffic_neighbor_flush_enable 'traffic' 'traffic_neighbor_flush_enable' '0'
|
|
config_get traffic_neighbor_flush_interval 'traffic' 'traffic_neighbor_flush_interval' '600'
|
|
config_get_bool connections_enabled 'connections' 'enabled'
|
|
config_get_bool dns_enabled 'dns' 'enabled'
|
|
config_get dns_max_records 'dns' 'dns_max_records'
|
|
config_get_bool dns_enable_storage 'dns' 'dns_enable_storage'
|
|
config_get dns_flush_interval 'dns' 'dns_flush_interval'
|
|
|
|
|
|
[ "$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 [ -z "$tc_order" ]; then
|
|
case "$tc_priority" in
|
|
1) tc_order="first" ;;
|
|
65535) tc_order="last" ;;
|
|
*) tc_order="default" ;;
|
|
esac
|
|
fi
|
|
[ -z "$tc_order" ] && tc_order="default"
|
|
if [ -n "$tc_order" ]; then
|
|
args="$args --tc-order $tc_order"
|
|
fi
|
|
[ -z "$tc_backend" ] && tc_backend="auto"
|
|
if [ -n "$tc_backend" ]; then
|
|
args="$args --tc-backend $tc_backend"
|
|
fi
|
|
if [ -n "$netlink_priority" ]; then
|
|
args="$args --netlink-priority $netlink_priority"
|
|
fi
|
|
if [ -n "$tcx_anchor_ingress_id" ]; then
|
|
args="$args --tcx-anchor-ingress-id $tcx_anchor_ingress_id"
|
|
fi
|
|
if [ -n "$tcx_anchor_egress_id" ]; then
|
|
args="$args --tcx-anchor-egress-id $tcx_anchor_egress_id"
|
|
fi
|
|
|
|
# 添加流量监控相关参数
|
|
if [ "$traffic_enabled" -eq 1 ]; then
|
|
args="$args --enable-traffic"
|
|
fi
|
|
if [ -n "$traffic_realtime_window" ]; then
|
|
args="$args --traffic-realtime-window $traffic_realtime_window"
|
|
fi
|
|
if [ -n "$traffic_flush_interval" ]; then
|
|
args="$args --traffic-flush-interval $traffic_flush_interval"
|
|
fi
|
|
if [ "$traffic_enable_storage" -eq 1 ]; then
|
|
args="$args --traffic-enable-storage"
|
|
fi
|
|
if [ -n "$traffic_export_url" ]; then
|
|
args="$args --traffic-export-url $traffic_export_url"
|
|
fi
|
|
if [ -n "$traffic_event_url" ]; then
|
|
args="$args --traffic-event-url $traffic_event_url"
|
|
fi
|
|
if [ -n "$traffic_additional_subnets" ]; then
|
|
args="$args --traffic-additional-subnets $traffic_additional_subnets"
|
|
fi
|
|
if [ "$traffic_exclude_iface_device" -eq 1 ]; then
|
|
args="$args --traffic-exclude-iface-device"
|
|
fi
|
|
if [ "$traffic_neighbor_flush_enable" -eq 1 ]; then
|
|
args="$args --traffic-neighbor-flush-enable"
|
|
fi
|
|
if [ -n "$traffic_neighbor_flush_interval" ]; then
|
|
args="$args --traffic-neighbor-flush-interval $traffic_neighbor_flush_interval"
|
|
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
|
|
if [ "$dns_enable_storage" -eq 1 ]; then
|
|
args="$args --dns-enable-storage"
|
|
fi
|
|
if [ -n "$dns_flush_interval" ]; then
|
|
args="$args --dns-flush-interval $dns_flush_interval"
|
|
fi
|
|
|
|
procd_open_instance bandix
|
|
procd_set_param command $PROG $args
|
|
procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-60} ${respawn_retry:-3}
|
|
procd_set_param stderr 1
|
|
procd_set_param stdout 1
|
|
procd_set_param pidfile /var/run/bandix.pid
|
|
procd_close_instance
|
|
}
|