#!/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" }