From 43107110a5d75bbbbb2be356944788870e3a99e5 Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Wed, 9 Oct 2024 11:08:54 +0200 Subject: [PATCH] Add keep alive support to Shadowsocks-Rust init and interface --- .../htdocs/luci-static/resources/shadowsocks-rust.js | 3 +++ .../files/etc/uci-defaults/1930-omr-shadowsocks | 9 +++++++++ shadowsocks-rust/files/shadowsocks-rust.config | 7 +++++-- shadowsocks-rust/files/shadowsocks-rust.init-nft | 2 ++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js b/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js index 0e4c4e071..4e6d12605 100644 --- a/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js +++ b/luci-app-shadowsocks-rust/htdocs/luci-static/resources/shadowsocks-rust.js @@ -28,6 +28,7 @@ var names_options_common = [ 'mode', 'mtu', 'timeout', + 'keep_alive', 'user', 'mptcp', ]; @@ -157,6 +158,8 @@ return L.Class.extend({ o.datatype = 'uinteger'; o = s.taboption(tab, form.Value, 'timeout', _('Timeout (sec)')); o.datatype = 'uinteger'; + o = s.taboption(tab, form.Value, 'keep_alive', _('Keep Alive (sec)')); + o.datatype = 'uinteger'; s.taboption(tab, form.Value, 'user', _('Run as')); s.taboption(tab, form.Flag, 'verbose', _('Verbose')); diff --git a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks index 7ddcc4e57..1c339219b 100755 --- a/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks +++ b/openmptcprouter/files/etc/uci-defaults/1930-omr-shadowsocks @@ -116,6 +116,15 @@ if [ "$(uci -q get shadowsocks-libev.sss1)" = "" ]; then commit shadowsocks-libev EOF fi +if [ -z "$(uci -q get shadowsocks-rust.hi1.keep_alive)" ]; then + uci -q batch <<-EOF > /dev/null + set shadowsocks-rust.hi1.keep_alive=15 + set shadowsocks-rust.hi1.no_delay=1 + set shadowsocks-rust.hi2.keep_alive=15 + set shadowsocks-rust.hi2.no_delay=1 + commit shadowsocks-rust + EOF +fi rm -f /tmp/luci-indexcache exit 0 diff --git a/shadowsocks-rust/files/shadowsocks-rust.config b/shadowsocks-rust/files/shadowsocks-rust.config index 47a10cfc4..c12db84c6 100644 --- a/shadowsocks-rust/files/shadowsocks-rust.config +++ b/shadowsocks-rust/files/shadowsocks-rust.config @@ -4,13 +4,14 @@ config ss_redir hi1 option local_port '1100' option mode 'tcp_and_udp' option timeout '1000' + option keep_alive '15' option fast_open 0 option verbose 0 option syslog 1 option reuse_port 0 option mptcp 1 option ipv6_first 1 - option no_delay 0 + option no_delay 1 config ss_redir hi2 option server 'sss1' @@ -18,13 +19,14 @@ config ss_redir hi2 option local_port '1101' option mode 'tcp_and_udp' option timeout '1000' + option keep_alive '15' option fast_open 0 option verbose 0 option syslog 1 option reuse_port 0 option mptcp 1 option ipv6_first 1 - option no_delay 0 + option no_delay 1 config ss_rules 'ss_rules' option disabled 0 @@ -63,6 +65,7 @@ config ss_local 'tracker_sss0' option local_port '1111' option mode 'tcp_and_udp' option timeout '600' + option keep_alive '15' option fast_open '0' option syslog '0' option reuse_port '1' diff --git a/shadowsocks-rust/files/shadowsocks-rust.init-nft b/shadowsocks-rust/files/shadowsocks-rust.init-nft index 34b761aef..9add4eddd 100755 --- a/shadowsocks-rust/files/shadowsocks-rust.init-nft +++ b/shadowsocks-rust/files/shadowsocks-rust.init-nft @@ -87,6 +87,7 @@ ss_xxx() { [ -z "$mode" ] || json_add_string mode "$mode" [ -z "$mtu" ] || json_add_int mtu "$mtu" [ -z "$timeout" ] || json_add_int timeout "$timeout" + [ -z "$keep_alive" ] || json_add_int keep_alive "$keep_alive" [ -z "$user" ] || json_add_string user "$user" [ -z "$acl" ] || json_add_string acl "$acl" json_dump -i >"$confjson" @@ -369,6 +370,7 @@ validate_common_options_() { 'mode:or("tcp_only", "udp_only", "tcp_and_udp"):tcp_only' \ 'mtu:uinteger' \ 'timeout:uinteger' \ + 'keep_alive:uinteger' \ 'user:string' }