local func
for func in "$@"; do
- if ! "$func"; then
- return 1
- fi
+ "$func" || return 1
done
}
ss_mkjson_server_conf || return 1
[ "$disable_sni" = 0 ] && disable_sni=false || disable_sni=true
cat <<-EOF
- ${q}disable_sni${q}: $disable_sni,
+ "disable_sni": $disable_sni,
EOF
}
procd_set_param file "$confjson"
procd_set_param respawn
procd_close_instance
- ss_rules_cb "$cfg"
+ ss_rules_cb
fi
}
local bin="$ss_bindir/ss-rules"
local cfgtype
local local_port_tcp local_port_udp
+ local args
[ -x "$bin" ] || return 1
config_get cfgtype "$cfg" TYPE
eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
[ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1
ss_redir_servers="$(echo "$ss_redir_servers" | tr ' ' '\n' | sort -u)"
+ [ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst"
"$bin" \
-s "$ss_redir_servers" \
--src-checkdst "$src_ips_checkdst" \
--ifnames "$ifnames" \
--ipt-extra "$ipt_args" \
+ $args \
|| "$bin" -f
}
start_service() {
- local cfgtype="$1"
+ local cfgtype
mkdir -p "$ss_confdir"
config_load shadowsocks-libev
'disabled:bool:0' \
'redir_tcp:uci("shadowsocks-libev", "@ss_redir")' \
'redir_udp:uci("shadowsocks-libev", "@ss_redir")' \
- 'src_ips_bypass:list(or(ip4addr,cidr4))' \
- 'src_ips_forward:list(or(ip4addr,cidr4))' \
- 'src_ips_checkdst:list(or(ip4addr,cidr4))' \
+ 'src_ips_bypass:or(ip4addr,cidr4)' \
+ 'src_ips_forward:or(ip4addr,cidr4)' \
+ 'src_ips_checkdst:or(ip4addr,cidr4)' \
'dst_ips_bypass_file:file' \
- 'dst_ips_bypass:list(or(ip4addr,cidr4))' \
+ 'dst_ips_bypass:or(ip4addr,cidr4)' \
'dst_ips_forward_file:file' \
- 'dst_ips_forward:list(or(ip4addr,cidr4))' \
+ 'dst_ips_forward:or(ip4addr,cidr4)' \
'src_default:or("bypass", "forward", "checkdst"):checkdst' \
'dst_default:or("bypass", "forward"):bypass' \
'local_default:or("bypass", "forward", "checkdst"):bypass' \
- 'ifnames:list(maxlength(15))' \
+ 'dst_forward_recentrst:bool:0' \
+ 'ifnames:maxlength(15)' \
'ipt_args:string'
}