NewUse a8d8450230
Update zapret.init
add automatic lan name detection
2024-10-04 11:48:54 +03:00

113 lines
2.4 KiB
Bash

#!/bin/sh /etc/rc.common
. /lib/functions/network.sh
USE_PROCD=1
# after network
START=21
CONFIGURATION=zapret
PIDDIR=/var/run
load_fw_rules()
{
for fp in $3
do
json_add_object ""
json_add_string type redirect
json_add_string name "Transparent Proxy Redirect port $fp"
json_add_string src lan
json_add_string proto tcp
json_add_string dest_port "$1"
json_add_string src_dip "!$2"
json_add_string dest_ip "$2"
json_add_string src_dport "$fp"
json_add_string dest lan
json_close_object
done
if [ "$4" = "1" ]; then
json_add_object ""
json_add_string type rule
json_add_string name "deny quic traffic"
json_add_string src lan
json_add_string proto udp
json_add_string dest_port "443"
json_add_string dest wan
json_add_string target "REJECT"
json_close_object
fi
}
start_service()
{
echo "Starting Zapret service"
config_load "$CONFIGURATION"
local opts
local pid
local lanaddr
local lport
local fports
local blockq
local ifname
config_get opts tpws opts
config_get pid tpws pid "tpws.pid"
config_get lport tpws port "8088"
config_get fports tpws forward_ports "80 443"
config_get_bool blockq tpws block_quic 0
config_load "network"
config_get lanaddr lan ipaddr
procd_open_instance
procd_set_param command "/usr/bin/tpws"
procd_append_param command "--port=$lport"
procd_append_param command "--user=nobody"
procd_append_param command "--bind-addr=$lanaddr"
procd_append_param command "--bind-wait-ifup=30"
procd_append_param command "--bind-wait-ip=10"
procd_append_param command "$opts"
procd_set_param pidfile "$PIDDIR/$pid"
network_get_device ifname lan
procd_set_param netdev "$ifname"
procd_open_data
json_add_array firewall
load_fw_rules "$lport" "$lanaddr" "$fports" "$blockq"
json_close_array
procd_close_data
procd_close_instance
}
stop_service()
{
# this procedure is called from stop()
# stop() already stop daemons
procd_set_config_changed firewall
echo "STOP Zapret service"
}
service_triggers()
{
procd_add_reload_trigger "zapret"
}
reload_service()
{
echo "Restarting service"
stop
start
}
service_started()
{
procd_set_config_changed firewall
}