UA3F/openwrt/files/ua3f.init

77 lines
2.6 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# shellcheck disable=SC2034,SC3043
USE_PROCD=1
START=99
NAME="ua3f"
PROG="/usr/bin/$NAME"
start_service() {
config_load "$NAME"
local enabled
config_get_bool enabled "enabled" "enabled" "0"
[ "$enabled" -eq "1" ] || return 0
local server_mode port bind ua log_level ua_regex partial_replace
local rewrite_mode rewrite_rules
local set_ttl set_ipid del_tcpts set_tcp_init_window
config_get server_mode "main" "server_mode" "TPROXY"
config_get port "main" "port" "1080"
config_get bind "main" "bind" "127.0.0.1"
config_get ua "main" "ua" "FFF"
config_get ua_regex "main" "ua_regex" ""
config_get_bool partial_replace "main" "partial_replace" 0
config_get log_level "main" "log_level" "WARN"
config_get rewrite_mode "main" "rewrite_mode" "GLOBAL"
config_get rewrite_rules "main" "rewrite_rules" ""
config_get_bool set_ttl "main" "set_ttl" 0
config_get_bool set_ipid "main" "set_ipid" 0
config_get_bool del_tcpts "main" "del_tcpts" 0
config_get_bool set_tcp_init_window "main" "set_tcp_init_window" 0
local desync_enabled desync_ct_bytes desync_ct_packets
config_get_bool desync_enabled "main" "desync_enabled" 0
if [ "$desync_enabled" -eq "1" ]; then
config_get desync_ct_bytes "main" "desync_ct_bytes" "1500"
config_get desync_ct_packets "main" "desync_ct_packets" "8"
fi
procd_open_instance "$NAME"
procd_set_param command "$PROG"
procd_append_param command -m "$server_mode"
procd_append_param command -p "$port"
procd_append_param command -b "$bind"
procd_append_param command -f "$ua"
procd_append_param command -r "$ua_regex"
procd_append_param command -l "$log_level"
procd_append_param command -x "$rewrite_mode"
procd_append_param command -z "$rewrite_rules"
[ "$partial_replace" = "1" ] && procd_append_param command -s
procd_append_param env UA3F_TTL="$set_ttl"
procd_append_param env UA3F_IPID="$set_ipid"
procd_append_param env UA3F_TCPTS="$del_tcpts"
procd_append_param env UA3F_TCP_INIT_WINDOW="$set_tcp_init_window"
procd_append_param env UA3F_DESYNC="$desync_enabled"
procd_append_param env UA3F_DESYNC_BYTES="$desync_ct_bytes"
procd_append_param env UA3F_DESYNC_PACKETS="$desync_ct_packets"
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param limits nproc="unlimited" as="unlimited" memlock="unlimited" nofile="65535 65535"
procd_set_param pidfile "/var/run/$NAME.pid"
procd_close_instance
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "$NAME"
}