Files

70 lines
1.4 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# Copyright (C) 2021 Tianling Shen <cnsztl@immortalwrt.org>
USE_PROCD=1
START=99
CONF="uugamebooster"
PROG="/usr/bin/uugamebooster"
UU_CONF="/usr/share/uugamebooster/uu.conf"
firewall_rule() {
json_add_object ""
json_add_string type rule
json_add_string src '*'
[ "$1" = forward ] && json_add_string dest '*'
json_add_string device tun163
json_add_string direction "$2"
json_add_string proto all
json_add_string target ACCEPT
json_close_object
}
start_service() {
config_load "$CONF"
local enabled
config_get_bool enabled "config" "enabled" "0"
[ "$enabled" -eq "1" ] || return 1
procd_open_instance "$CONF"
procd_set_param command "$PROG" "$UU_CONF"
procd_set_param limits core="unlimited"
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
# UU's own nftables ACCEPT rules cannot bypass fw4's later base chains.
# Publish tunnel rules through procd so fw4 owns their full lifecycle.
if [ -x /sbin/fw4 ]; then
procd_open_data
json_add_array firewall
firewall_rule input in
firewall_rule forward in
firewall_rule forward out
json_close_array
procd_close_data
fi
procd_close_instance
}
service_started() {
[ ! -x /sbin/fw4 ] || procd_set_config_changed firewall
}
service_stopped() {
[ ! -x /sbin/fw4 ] || procd_set_config_changed firewall
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "$CONF"
}