packages/net/microsocks/files/microsocks.init
2024-10-18 11:49:34 +08:00

75 lines
2.0 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
USE_PROCD=1
START=95
CONF="microsocks"
start_service() {
config_load "$CONF"
local _enabled
config_get_bool _enabled "config" "enabled" "0"
[ "$_enabled" -eq "1" ] || return 1
local _port _listenip _bindaddr
local _user _password
local _auth_once _internet_access
local _quiet
config_get _port "config" "port"
config_get _listenip "config" "listenip"
config_get _bindaddr "config" "bindaddr"
config_get _user "config" "user"
config_get _password "config" "password"
config_get_bool _auth_once "config" "auth_once" 0
config_get_bool _internet_access "config" "internet_access" 0
config_get_bool _quiet "config" "quiet" 0
procd_open_instance "$CONF"
procd_set_param command /usr/bin/microsocks
[ -z "$_port" ] || procd_append_param command -p "${_port}"
[ -z "$_listenip" ] || procd_append_param command -i "${_listenip}"
[ -z "$_bindaddr" ] || procd_append_param command -b "${_bindaddr}"
[ -z "$_user" ] || procd_append_param command -u "${_user}"
[ -z "$_password" ] || procd_append_param command -P "${_password}"
[ "$_auth_once" -eq "0" ] || procd_append_param command -1
[ "$_quiet" -eq "0" ] || procd_append_param command -q
procd_set_param limits core="unlimited"
procd_set_param limits nofile="1000000 1000000"
procd_set_param respawn
procd_set_param stderr 1
# TODO: Make it dependable on some verbose/debug config setting?
# procd_set_param stdout 1
[ "$_internet_access" -eq "0" ] || {
procd_open_data
json_add_array firewall
json_add_object ""
json_add_string type rule
json_add_string name "Allow-access-microsocks-at-$_port"
json_add_string src "*"
json_add_string dest_port "$_port"
json_add_string proto tcp
json_add_string target ACCEPT
json_close_object
json_close_array
procd_close_data
}
procd_close_instance
}
service_started() {
procd_set_config_changed firewall
}
service_stopped() {
procd_set_config_changed firewall
}
service_triggers() {
procd_add_reload_trigger "$CONF"
}