op-packages/vlmcsd/files/vlmcsd.init
github-actions[bot] 32600acc60 🌴 Sync 2026-03-05 23:51:42
2026-03-05 23:51:42 +08:00

76 lines
1.9 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
DNSMASQ_UCI_CONFIG="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')"
if [ -f "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG" ];then
DNSMASQ_VLMCSD="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG")/dnsmasq-vlmcsd.conf"
else
DNSMASQ_VLMCSD="/tmp/dnsmasq.d/dnsmasq-vlmcsd.conf"
fi
start_service() {
local enabled auto_activate internet_access
config_load "vlmcsd"
config_get_bool enabled "config" "enabled" "0"
config_get_bool auto_activate "config" "auto_activate" "0"
config_get_bool internet_access "config" "internet_access" "0"
[ "$enabled" -eq "1" ] || return 1
if [ "$auto_activate" -eq "1" ];then
hostname="$(uci get system.@system[0].hostname)"
echo "srv-host=_vlmcs._tcp,$hostname,1688,0,100" > "$DNSMASQ_VLMCSD"
/etc/init.d/dnsmasq restart 2>"/dev/null"
fi
procd_open_instance "vlmcsd"
procd_set_param command /usr/bin/vlmcsd
procd_append_param command -D
procd_append_param command -i "/etc/vlmcsd.ini"
procd_append_param command -l syslog
procd_append_param command -L "0.0.0.0:1688"
procd_append_param command -L "[::]:1688"
procd_set_param file "/etc/vlmcsd.ini"
procd_set_param respawn
procd_set_param user vlmcsd
procd_set_param group vlmcsd
procd_add_jail vlmcsd ronly log
procd_add_jail_mount "/etc/vlmcsd.ini"
if [ "$internet_access" -eq "1" ];then
procd_open_data
json_add_array firewall
json_add_object ""
json_add_string type rule
json_add_string name "Allow-vlmcsd-tcp"
json_add_string proto "tcp"
json_add_string src "*"
json_add_string dest_port "1688"
json_add_string target "ACCEPT"
json_close_object
json_close_array
procd_close_data
fi
procd_close_instance
}
stop_service() {
rm -f "$DNSMASQ_VLMCSD"
/etc/init.d/dnsmasq restart 2>"/dev/null"
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger vlmcsd
}