luci-app-ssr-plus: sync upstream

last commit: 8c362ba2cd
This commit is contained in:
gitea-action 2024-10-30 21:11:53 +08:00
parent 570e37cd3c
commit f0fe5f830b
10 changed files with 572 additions and 198 deletions

View File

@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-ssr-plus PKG_NAME:=luci-app-ssr-plus
PKG_VERSION:=188 PKG_VERSION:=188
PKG_RELEASE:=7 PKG_RELEASE:=9
PKG_CONFIG_DEPENDS:= \ PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_NONE_V2RAY \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_NONE_V2RAY \

View File

@ -70,6 +70,10 @@ o.default = "https://fastly.jsdelivr.net/gh/QiuSimons/Netflix_IP/NF_only.txt"
o.description = translate("Customize Netflix IP Url") o.description = translate("Customize Netflix IP Url")
o:depends("netflix_enable", "1") o:depends("netflix_enable", "1")
o = s:option(Flag, "apple_optimization", translate("Apple domains optimization"), translate("For Apple domains equipped with Chinese mainland CDN, always responsive to Chinese CDN IP addresses"))
o.rmempty = false
o.default = "1"
o = s:option(Flag, "adblock", translate("Enable adblock")) o = s:option(Flag, "adblock", translate("Enable adblock"))
o.rmempty = false o.rmempty = false
@ -103,4 +107,78 @@ o.datatype = "port"
o.default = 1080 o.default = 1080
o.rmempty = false o.rmempty = false
-- [[ fragmen Settings ]]--
if is_finded("xray") then
s = m:section(TypedSection, "global_xray_fragment", translate("Xray Fragment Settings"))
s.anonymous = true
o = s:option(Flag, "fragment", translate("Fragment"), translate("TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists."))
o.default = 0
o = s:option(ListValue, "fragment_packets", translate("Fragment Packets"), translate("\"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation."))
o.default = "tlshello"
o:value("tlshello", "tlshello")
o:value("1-2", "1-2")
o:value("1-3", "1-3")
o:value("1-5", "1-5")
o:depends("fragment", true)
o = s:option(Value, "fragment_length", translate("Fragment Length"), translate("Fragmented packet length (byte)"))
o.default = "100-200"
o:depends("fragment", true)
o = s:option(Value, "fragment_interval", translate("Fragment Interval"), translate("Fragmentation interval (ms)"))
o.default = "10-20"
o:depends("fragment", true)
o = s:option(Flag, "noise", translate("Noise"), translate("UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions."))
o.default = 0
s = m:section(TypedSection, "xray_noise_packets", translate("Xray Noise Packets"))
s.description = translate(
"<font style='color:red'>" .. translate("To send noise packets, select \"Noise\" in Xray Settings.") .. "</font>" ..
"<br/><font><b>" .. translate("For specific usage, see: ") .. "</b></font>" ..
"<a href='https://xtls.github.io/config/outbounds/freedom.html' target='_blank'>" ..
"<font style='color:green'><b>" .. translate("Click to the page") .. "</b></font></a>")
s.template = "cbi/tblsection"
s.sortable = true
s.anonymous = true
s.addremove = true
s.remove = function(self, section)
for k, v in pairs(self.children) do
v.rmempty = true
v.validate = nil
end
TypedSection.remove(self, section)
end
o = s:option(Flag, "enabled", translate("Enable"))
o.default = 1
o.rmempty = false
o = s:option(ListValue, "type", translate("Type"))
o.default = "base64"
o:value("rand", "rand")
o:value("str", "str")
o:value("base64", "base64")
o = s:option(Value, "domainStrategy", translate("Domain Strategy"))
o.default = "UseIP"
o:value("AsIs", "AsIs")
o:value("UseIP", "UseIP")
o:value("UseIPv4", "UseIPv4")
o:value("ForceIP", "ForceIP")
o:value("ForceIPv4", "ForceIPv4")
o.rmempty = false
o = s:option(Value, "packet", translate("Packet"))
o.datatype = "minlength(1)"
o.rmempty = false
o = s:option(Value, "delay", translate("Delay (ms)"))
o.datatype = "or(uinteger,portrange)"
o.rmempty = false
end
return m return m

View File

@ -927,7 +927,6 @@ if is_finded("xray") then
o:value(v, translate(v)) o:value(v, translate(v))
end end
o.rmempty = true o.rmempty = true
o:depends("xtls", true)
o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "tcp", tls = true}) o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "tcp", tls = true})
o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "tcp", reality = true}) o:depends({type = "v2ray", v2ray_protocol = "vless", transport = "tcp", reality = true})

View File

@ -209,7 +209,6 @@ msgstr "QUIC 连接接收窗口"
msgid "QUIC stream receive window" msgid "QUIC stream receive window"
msgstr "QUIC 流接收窗口" msgstr "QUIC 流接收窗口"
msgid "Lazy Start" msgid "Lazy Start"
msgstr "延迟启动" msgstr "延迟启动"
@ -459,6 +458,12 @@ msgstr "切换检查超时时间(秒)"
msgid "Check Try Count" msgid "Check Try Count"
msgstr "切换检查重试次数" msgstr "切换检查重试次数"
msgid "Apple domains optimization"
msgstr "Apple 域名解析优化"
msgid "For Apple domains equipped with Chinese mainland CDN, always responsive to Chinese CDN IP addresses"
msgstr "配备中国大陆 CDN 的 Apple 域名,始终应答中国大陆 CDN 地址"
msgid "Enable adblock" msgid "Enable adblock"
msgstr "启用广告屏蔽" msgstr "启用广告屏蔽"
@ -816,6 +821,63 @@ msgstr "本机服务端"
msgid "Global SOCKS5 Proxy Server" msgid "Global SOCKS5 Proxy Server"
msgstr "SOCKS5 代理服务端(全局)" msgstr "SOCKS5 代理服务端(全局)"
msgid "Xray Fragment Settings"
msgstr "Xray 分片设置"
msgid "Fragment"
msgstr "分片"
msgid "TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists."
msgstr "TCP 分片,在某些情况下可以欺骗审查系统,比如绕过 SNI 黑名单。"
msgid "Fragment Packets"
msgstr "分片方式"
msgid "\"1-3\" is for segmentation at TCP layer, applying to the beginning 1 to 3 data writes by the client. \"tlshello\" is for TLS client hello packet fragmentation."
msgstr "\"1-3\" 是 TCP 的流切片,应用于客户端第 1 至第 3 次写数据。\"tlshello\" 是 TLS 握手包切片。"
msgid "Fragment Length"
msgstr "分片包长"
msgid "Fragmented packet length (byte)"
msgstr "分片包长 (byte)"
msgid "Fragment Interval"
msgstr "分片间隔"
msgid "Fragmentation interval (ms)"
msgstr "分片间隔ms"
msgid "Noise"
msgstr "噪声"
msgid "UDP noise, Under some circumstances it can bypass some UDP based protocol restrictions."
msgstr "UDP 噪声,在某些情况下可以绕过一些针对 UDP 协议的限制。"
msgid "To send noise packets, select \"Noise\" in Xray Settings."
msgstr "在 Xray 设置中勾选 “噪声” 以发送噪声包。"
msgid "For specific usage, see: "
msgstr "具体使用方法参见:"
msgid "Click to the page"
msgstr "点击前往"
msgid "Xray Noise Packets"
msgstr "Xray 噪声数据包"
msgid "Type"
msgstr "类型"
msgid "Domain Strategy"
msgstr "域名解析策略"
msgid "Packet"
msgstr "数据包"
msgid "Delay (ms)"
msgstr "延迟ms"
msgid "warning! Please do not reuse the port!" msgid "warning! Please do not reuse the port!"
msgstr "警告!请不要重复使用端口!" msgstr "警告!请不要重复使用端口!"

View File

@ -17,7 +17,14 @@ LOCK_FILE=/var/lock/ssrplus.lock
LOG_FILE=/var/log/ssrplus.log LOG_FILE=/var/log/ssrplus.log
TMP_PATH=/var/etc/ssrplus TMP_PATH=/var/etc/ssrplus
TMP_BIN_PATH=$TMP_PATH/bin TMP_BIN_PATH=$TMP_PATH/bin
TMP_DNSMASQ_PATH=/tmp/dnsmasq.d/dnsmasq-ssrplus.d # Get the default DNSMasq config ID from the UCI configuration
DEFAULT_DNSMASQ_CFGID=$(uci show dhcp.@dnsmasq[0] | awk -F '.' '{print $2}' | awk -F '=' '{print $1}' | head -1)
# Locate the dnsmasq.conf file that contains the conf-dir option
DNSMASQ_CONF_PATH=$(grep -l "^conf-dir=" "/tmp/etc/dnsmasq.conf.${DEFAULT_DNSMASQ_CFGID}")
# Extract the directory path from the conf-dir line
DNSMASQ_CONF_DIR=$(grep '^conf-dir=' "$DNSMASQ_CONF_PATH" | cut -d'=' -f2 | head -n 1)
# Check if a conf-dir value was found and set variables accordingly
TMP_DNSMASQ_PATH=${DNSMASQ_CONF_DIR%*/}/dnsmasq-ssrplus.d
chain_config_file= #generate shadowtls chain proxy config file chain_config_file= #generate shadowtls chain proxy config file
tcp_config_file= tcp_config_file=
@ -220,6 +227,12 @@ start_dns() {
fi fi
fi fi
fi fi
if [ "$(uci_get_by_type global apple_optimization 1)" == "1" ]; then
echolog "Apple 域名中国大陆 CDN 的 优化规则正在加载。"
cp -f /etc/ssrplus/applechina.conf $TMP_DNSMASQ_PATH/
echolog "Apple 域名中国大陆 CDN 的 优化规则加载完毕。"
fi
} }
gen_service_file() { #1-server.type 2-cfgname 3-file_path gen_service_file() { #1-server.type 2-cfgname 3-file_path
@ -390,7 +403,7 @@ start_udp() {
;; ;;
v2ray) v2ray)
gen_config_file $UDP_RELAY_SERVER $type 2 $tmp_udp_port gen_config_file $UDP_RELAY_SERVER $type 2 $tmp_udp_port
ln_start_bin $(first_type xray v2ray) v2ray run -config $udp_config_file ln_start_bin $(first_type xray v2ray) v2ray run -c $udp_config_file
echolog "UDP TPROXY Relay:$($(first_type "xray" "v2ray") version | head -1) Started!" echolog "UDP TPROXY Relay:$($(first_type "xray" "v2ray") version | head -1) Started!"
;; ;;
trojan) #client trojan) #client
@ -472,7 +485,7 @@ start_shunt() {
v2ray) v2ray)
local tmp_port=${tmp_local_port:-$tmp_shunt_local_port} local tmp_port=${tmp_local_port:-$tmp_shunt_local_port}
gen_config_file $SHUNT_SERVER $type 3 $tmp_shunt_port $tmp_port gen_config_file $SHUNT_SERVER $type 3 $tmp_shunt_port $tmp_port
ln_start_bin $(first_type xray v2ray) v2ray run -config $shunt_config_file ln_start_bin $(first_type xray v2ray) v2ray run -c $shunt_config_file
ln_start_bin $(first_type dns2socks) dns2socks 127.0.0.1:$tmp_port 8.8.8.8:53 127.0.0.1:$tmp_shunt_dns_port -q ln_start_bin $(first_type dns2socks) dns2socks 127.0.0.1:$tmp_port 8.8.8.8:53 127.0.0.1:$tmp_shunt_dns_port -q
echolog "shunt:$($(first_type xray v2ray) version | head -1) Started!" echolog "shunt:$($(first_type xray v2ray) version | head -1) Started!"
;; ;;
@ -592,7 +605,7 @@ start_local() {
v2ray) v2ray)
if [ "$_local" == "2" ]; then if [ "$_local" == "2" ]; then
gen_config_file $LOCAL_SERVER $type 4 0 $local_port gen_config_file $LOCAL_SERVER $type 4 0 $local_port
ln_start_bin $(first_type xray v2ray) v2ray run -config $local_config_file ln_start_bin $(first_type xray v2ray) v2ray run -c $local_config_file
fi fi
echolog "Global_Socks5:$($(first_type "xray" "v2ray") version | head -1) Started!" echolog "Global_Socks5:$($(first_type "xray" "v2ray") version | head -1) Started!"
;; ;;
@ -687,7 +700,7 @@ Start_Run() {
;; ;;
v2ray) v2ray)
gen_config_file $GLOBAL_SERVER $type 1 $tcp_port $socks_port gen_config_file $GLOBAL_SERVER $type 1 $tcp_port $socks_port
ln_start_bin $(first_type xray v2ray) v2ray run -config $tcp_config_file ln_start_bin $(first_type xray v2ray) v2ray run -c $tcp_config_file
echolog "Main node:$($(first_type xray v2ray) version | head -1) Started!" echolog "Main node:$($(first_type xray v2ray) version | head -1) Started!"
;; ;;
trojan) trojan)
@ -989,8 +1002,8 @@ start_rules() {
start() { start() {
set_lock set_lock
echolog "----------start------------" echolog "----------start------------"
mkdir -p /var/run /var/lock /var/log /tmp/dnsmasq.d $TMP_BIN_PATH $TMP_DNSMASQ_PATH mkdir -p /var/run /var/lock /var/log $DNSMASQ_CONF_DIR $TMP_BIN_PATH $TMP_DNSMASQ_PATH
echo "conf-dir=${TMP_DNSMASQ_PATH}" >"/tmp/dnsmasq.d/dnsmasq-ssrplus.conf" echo "conf-dir=${TMP_DNSMASQ_PATH}" >"$DNSMASQ_CONF_DIR/dnsmasq-ssrplus.conf"
if load_config; then if load_config; then
Start_Run Start_Run
start_rules start_rules
@ -1023,7 +1036,7 @@ start() {
boot() { boot() {
echolog "boot" echolog "boot"
mkdir -p /var/run /var/lock /var/log /tmp/dnsmasq.d $TMP_BIN_PATH $TMP_DNSMASQ_PATH mkdir -p /var/run /var/lock /var/log $DNSMASQ_CONF_DIR $TMP_BIN_PATH $TMP_DNSMASQ_PATH
start start
} }
@ -1055,8 +1068,8 @@ stop() {
uci -q del "dhcp.@dnsmasq[0]._unused_ssrp_changed" uci -q del "dhcp.@dnsmasq[0]._unused_ssrp_changed"
uci -q commit "dhcp" uci -q commit "dhcp"
fi fi
if [ -f "/tmp/dnsmasq.d/dnsmasq-ssrplus.conf" ]; then if [ -f "$DNSMASQ_CONF_DIR/dnsmasq-ssrplus.conf" ]; then
rm -rf /tmp/dnsmasq.d/dnsmasq-ssrplus.conf $TMP_DNSMASQ_PATH $TMP_PATH/*-ssr-*.json $TMP_PATH/ssr-server*.json rm -rf $DNSMASQ_CONF_DIR/dnsmasq-ssrplus.conf $TMP_DNSMASQ_PATH $TMP_PATH/*-ssr-*.json $TMP_PATH/ssr-server*.json
/etc/init.d/dnsmasq restart >/dev/null 2>&1 /etc/init.d/dnsmasq restart >/dev/null 2>&1
fi fi
uci -q delete firewall.shadowsocksr_server uci -q delete firewall.shadowsocksr_server
@ -1114,6 +1127,9 @@ reset() {
set shadowsocksr.@socks5_proxy[0].local_port='1080' set shadowsocksr.@socks5_proxy[0].local_port='1080'
add shadowsocksr server_global add shadowsocksr server_global
set shadowsocksr.@server_global[0].enable_server='0' set shadowsocksr.@server_global[0].enable_server='0'
add shadowsocksr global_xray_fragment
set shadowsocksr.@global_xray_fragment[0].fragment='0'
set shadowsocksr.@global_xray_fragment[0].noise='0'
commit shadowsocksr commit shadowsocksr
EOF EOF
unset_lock unset_lock

View File

@ -0,0 +1,173 @@
server=/a1.mzstatic.com/114.114.114.114
server=/a2.mzstatic.com/114.114.114.114
server=/a3.mzstatic.com/114.114.114.114
server=/a4.mzstatic.com/114.114.114.114
server=/a5.mzstatic.com/114.114.114.114
server=/adcdownload.apple.com.akadns.net/114.114.114.114
server=/adcdownload.apple.com/114.114.114.114
server=/amp-api-updates.apps.apple.com/114.114.114.114
server=/amp-api.media.apple.com/114.114.114.114
server=/api-p-ap-c.smoot.apple.com/114.114.114.114
server=/api-p-ap-d.smoot.apple.com/114.114.114.114
server=/api-p-ap-e.smoot.apple.com/114.114.114.114
server=/app-site-association.cdn-apple.com/114.114.114.114
server=/appldnld.apple.com/114.114.114.114
server=/appldnld.g.aaplimg.com/114.114.114.114
server=/appleid.cdn-apple.com/114.114.114.114
server=/apps.apple.com/114.114.114.114
server=/apps.mzstatic.com/114.114.114.114
server=/bag-cdn.itunes-apple.com.akadns.net/114.114.114.114
server=/cdn-cn1.apple-mapkit.com/114.114.114.114
server=/cdn-cn2.apple-mapkit.com/114.114.114.114
server=/cdn-cn3.apple-mapkit.com/114.114.114.114
server=/cdn-cn4.apple-mapkit.com/114.114.114.114
server=/cdn.apple-mapkit.com/114.114.114.114
server=/cdn1.apple-mapkit.com/114.114.114.114
server=/cdn2.apple-mapkit.com/114.114.114.114
server=/cdn3.apple-mapkit.com/114.114.114.114
server=/cdn4.apple-mapkit.com/114.114.114.114
server=/cds-cdn.v.aaplimg.com/114.114.114.114
server=/cds.apple.com.akadns.net/114.114.114.114
server=/cds.apple.com/114.114.114.114
server=/cdsassets.apple.com/114.114.114.114
server=/cl1-cdn.origin-apple.com.akadns.net/114.114.114.114
server=/cl1.apple.com/114.114.114.114
server=/cl2-cn.apple.com/114.114.114.114
server=/cl2.apple.com/114.114.114.114
server=/cl3-cdn.origin-apple.com.akadns.net/114.114.114.114
server=/cl3.apple.com/114.114.114.114
server=/cl4-cdn.origin-apple.com.akadns.net/114.114.114.114
server=/cl4-cn.apple.com/114.114.114.114
server=/cl4.apple.com/114.114.114.114
server=/cl5-cdn.origin-apple.com.akadns.net/114.114.114.114
server=/cl5.apple.com/114.114.114.114
server=/clientflow.apple.com.akadns.net/114.114.114.114
server=/clientflow.apple.com/114.114.114.114
server=/cn-smp-paymentservices.apple.com/114.114.114.114
server=/configuration.apple.com.akadns.net/114.114.114.114
server=/configuration.apple.com/114.114.114.114
server=/crl.apple.com/114.114.114.114
server=/cstat.apple.com/114.114.114.114
server=/cstat.cdn-apple.com/114.114.114.114
server=/dd-cdn.origin-apple.com.akadns.net/114.114.114.114
server=/dejavu.apple.com/114.114.114.114
server=/devstreaming-cdn.apple.com/114.114.114.114
server=/download.developer.apple.com/114.114.114.114
server=/experiments.apple.com/114.114.114.114
server=/gs-loc-cn.apple.com/114.114.114.114
server=/gs-loc.apple.com/114.114.114.114
server=/gsp10-ssl-cn.ls.apple.com/114.114.114.114
server=/gsp12-cn.ls.apple.com/114.114.114.114
server=/gsp13-cn.ls.apple.com/114.114.114.114
server=/gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net/114.114.114.114
server=/gsp4-cn.ls.apple.com.edgekey.net/114.114.114.114
server=/gsp4-cn.ls.apple.com/114.114.114.114
server=/gsp5-cn.ls.apple.com/114.114.114.114
server=/gsp85-cn-ssl.ls.apple.com/114.114.114.114
server=/gspe19-2-cn-ssl.ls-apple.com.akadns.net/114.114.114.114
server=/gspe19-2-cn-ssl.ls.apple.com/114.114.114.114
server=/gspe19-cn-ssl.ls.apple.com/114.114.114.114
server=/gspe19-cn.ls-apple.com.akadns.net/114.114.114.114
server=/gspe19-cn.ls.apple.com/114.114.114.114
server=/gspe21-ssl.ls.apple.com/114.114.114.114
server=/gspe21.ls.apple.com/114.114.114.114
server=/gspe35-ssl.ls.apple.com/114.114.114.114
server=/gspe79-cn-ssl.ls.apple.com/114.114.114.114
server=/guzzoni-apple-com.v.aaplimg.com/114.114.114.114
server=/guzzoni.apple.com/114.114.114.114
server=/guzzoni.smoot.apple.com/114.114.114.114
server=/iadsdk.apple.com/114.114.114.114
server=/icloud-cdn.icloud.com.akadns.net/114.114.114.114
server=/icloud.cdn-apple.com/114.114.114.114
server=/images.apple.com.akadns.net/114.114.114.114
server=/images.apple.com.edgekey.net.globalredir.akadns.net/114.114.114.114
server=/images.apple.com/114.114.114.114
server=/init-kt.apple.com/114.114.114.114
server=/init-p01md-lb.push-apple.com.akadns.net/114.114.114.114
server=/init-p01md.apple.com/114.114.114.114
server=/init-p01st-lb.push-apple.com.akadns.net/114.114.114.114
server=/init-p01st.push.apple.com/114.114.114.114
server=/init-s01st-lb.push-apple.com.akadns.net/114.114.114.114
server=/init-s01st.push.apple.com/114.114.114.114
server=/init.ess.apple.com/114.114.114.114
server=/iosapps.itunes.g.aaplimg.com/114.114.114.114
server=/ipcdn.apple.com/114.114.114.114
server=/iphone-ld.apple.com/114.114.114.114
server=/iphone-ld.origin-apple.com.akadns.net/114.114.114.114
server=/is-ssl.mzstatic.com-cn-lb.itunes-apple.com.akadns.net/114.114.114.114
server=/is1-ssl.mzstatic.com/114.114.114.114
server=/is1.mzstatic.com/114.114.114.114
server=/is2-ssl.mzstatic.com/114.114.114.114
server=/is2.mzstatic.com/114.114.114.114
server=/is3-ssl.mzstatic.com/114.114.114.114
server=/is3.mzstatic.com/114.114.114.114
server=/is4-ssl.mzstatic.com/114.114.114.114
server=/is4.mzstatic.com/114.114.114.114
server=/is5-ssl.mzstatic.com/114.114.114.114
server=/is5.mzstatic.com/114.114.114.114
server=/itunes-apple.com.akadns.net/114.114.114.114
server=/itunes.apple.com/114.114.114.114
server=/itunesconnect.apple.com/114.114.114.114
server=/mesu-cdn.apple.com.akadns.net/114.114.114.114
server=/mesu-china.apple.com.akadns.net/114.114.114.114
server=/mesu.apple.com/114.114.114.114
server=/ml.cdn-apple.com/114.114.114.114
server=/music.apple.com/114.114.114.114
server=/ocsp-lb.apple.com.akadns.net/114.114.114.114
server=/ocsp.apple.com/114.114.114.114
server=/ocsp2-lb.apple.com.akadns.net/114.114.114.114
server=/ocsp2.apple.com/114.114.114.114
server=/oscdn.apple.com/114.114.114.114
server=/oscdn.origin-apple.com.akadns.net/114.114.114.114
server=/osxapps.itunes.g.aaplimg.com/114.114.114.114
server=/pancake.apple.com/114.114.114.114
server=/pancake.cdn-apple.com.akadns.net/114.114.114.114
server=/pba0.apple.com/114.114.114.114
server=/probe.siri.apple.com/114.114.114.114
server=/prod-support.apple-support.akadns.net/114.114.114.114
server=/publicassets.cdn-apple.com/114.114.114.114
server=/reserve-prime.apple.com/114.114.114.114
server=/s.mzstatic.com/114.114.114.114
server=/seed-sequoia.siri.apple.com/114.114.114.114
server=/seed-swallow.siri.apple.com/114.114.114.114
server=/seed.siri.apple.com/114.114.114.114
server=/sequoia.apple.com/114.114.114.114
server=/sh-pod2-smp-device.apple.com/114.114.114.114
server=/shazam-insights.cdn-apple.com/114.114.114.114
server=/smp-device-content.apple.com/114.114.114.114
server=/static.gc.apple.com/114.114.114.114
server=/stocks-sparkline-lb.apple.com.akadns.net/114.114.114.114
server=/stocks-sparkline.apple.com/114.114.114.114
server=/store.apple.com.edgekey.net.globalredir.akadns.net/114.114.114.114
server=/store.apple.com.edgekey.net/114.114.114.114
server=/store.apple.com/114.114.114.114
server=/store.storeimages.apple.com.akadns.net/114.114.114.114
server=/store.storeimages.cdn-apple.com/114.114.114.114
server=/support-china.apple-support.akadns.net/114.114.114.114
server=/support.apple.com/114.114.114.114
server=/swallow-apple-com.v.aaplimg.com/114.114.114.114
server=/swallow.apple.com/114.114.114.114
server=/swcatalog-cdn.apple.com.akadns.net/114.114.114.114
server=/swcatalog.apple.com/114.114.114.114
server=/swcdn.apple.com/114.114.114.114
server=/swcdn.g.aaplimg.com/114.114.114.114
server=/swdist.apple.com.akadns.net/114.114.114.114
server=/swdist.apple.com/114.114.114.114
server=/swscan-cdn.apple.com.akadns.net/114.114.114.114
server=/swscan.apple.com/114.114.114.114
server=/sylvan.apple.com/114.114.114.114
server=/tj-pod1-smp-device.apple.com/114.114.114.114
server=/updates-http.cdn-apple.com.akadns.net/114.114.114.114
server=/updates-http.cdn-apple.com/114.114.114.114
server=/updates.cdn-apple.com/114.114.114.114
server=/valid.apple.com/114.114.114.114
server=/valid.origin-apple.com.akadns.net/114.114.114.114
server=/weather-data.apple.com.akadns.net/114.114.114.114
server=/weather-data.apple.com/114.114.114.114
server=/weather-map.apple.com/114.114.114.114
server=/weather-map2.apple.com/114.114.114.114
server=/weatherkit.apple.com/114.114.114.114
server=/www.apple.com.edgekey.net.globalredir.akadns.net/114.114.114.114
server=/www.apple.com.edgekey.net/114.114.114.114
server=/www.apple.com/114.114.114.114
server=/xp.apple.com/114.114.114.114

View File

@ -12,6 +12,8 @@ local chain = arg[5] or "0"
local chain_local_port = string.split(chain, "/")[2] or "0" local chain_local_port = string.split(chain, "/")[2] or "0"
local server = ucursor:get_all("shadowsocksr", server_section) local server = ucursor:get_all("shadowsocksr", server_section)
local xray_fragment = ucursor:get_all("shadowsocksr", "@global_xray_fragment[0]") or {}
local xray_noise = ucursor:get_all("shadowsocksr", "@xray_noise_packets[0]") or {}
local outbound_settings = nil local outbound_settings = nil
function vmess_vless() function vmess_vless()
@ -77,7 +79,7 @@ function wireguard()
allowedIPs = (server.allowedips) or nil, allowedIPs = (server.allowedips) or nil,
} }
}, },
kernelMode = (server.kernelmode == "1") and true or false, noKernelTun = (server.kernelmode == "1") and true or false,
reserved = {server.reserved} or nil, reserved = {server.reserved} or nil,
mtu = tonumber(server.mtu) mtu = tonumber(server.mtu)
} }
@ -124,8 +126,17 @@ local Xray = {
-- error = "/var/ssrplus.log", -- error = "/var/ssrplus.log",
loglevel = "warning" loglevel = "warning"
}, },
-- 初始化 inbounds 表
inbounds = {},
-- 初始化 outbounds 表
outbounds = {},
}
-- 传入连接 -- 传入连接
inbound = (local_port ~= "0") and { -- 添加 dokodemo-door 配置,如果 local_port 不为 0
if local_port ~= "0" then
table.insert(Xray.inbounds, {
-- listening -- listening
port = tonumber(local_port), port = tonumber(local_port),
protocol = "dokodemo-door", protocol = "dokodemo-door",
@ -133,6 +144,7 @@ local Xray = {
sniffing = { sniffing = {
enabled = true, enabled = true,
destOverride = {"http", "tls", "quic"}, destOverride = {"http", "tls", "quic"},
metadataOnly = false,
domainsExcluded = { domainsExcluded = {
"courier.push.apple.com", "courier.push.apple.com",
"rbsxbxp-mim.vivox.com", "rbsxbxp-mim.vivox.com",
@ -161,25 +173,30 @@ local Xray = {
"dlg.io.mi.com" "dlg.io.mi.com"
} }
} }
} or nil, })
end
-- 开启 socks 代理 -- 开启 socks 代理
inboundDetour = (proto:find("tcp") and socks_port ~= "0") and { -- 检查是否启用 socks 代理
{ if proto:find("tcp") and socks_port ~= "0" then
table.insert(Xray.inbounds, {
-- socks -- socks
protocol = "socks", protocol = "socks",
port = tonumber(socks_port), port = tonumber(socks_port),
settings = {auth = "noauth", udp = true} settings = {auth = "noauth", udp = true}
} })
} or nil, end
-- 传出连接 -- 传出连接
outbound = { Xray.outbounds = {
{
protocol = server.v2ray_protocol, protocol = server.v2ray_protocol,
settings = outbound_settings, settings = outbound_settings,
-- 底层传输配置 -- 底层传输配置
streamSettings = (server.v2ray_protocol ~= "wireguard") and { streamSettings = (server.v2ray_protocol ~= "wireguard") and {
network = server.transport or "tcp", network = server.transport or "tcp",
security = (server.xtls == '1') and "xtls" or (server.tls == '1') and "tls" or (server.reality == '1') and "reality" or nil, security = (server.xtls == '1') and "xtls" or (server.tls == '1') and "tls" or (server.reality == '1') and "reality" or nil,
tlsSettings = (server.tls == '1') and (server.tls_host or server.fingerprint) and { tlsSettings = (server.tls == '1') and {
-- tls -- tls
alpn = server.tls_alpn, alpn = server.tls_alpn,
fingerprint = server.fingerprint, fingerprint = server.fingerprint,
@ -244,7 +261,7 @@ local Xray = {
splithttpSettings = (server.transport == "splithttp") and { splithttpSettings = (server.transport == "splithttp") and {
-- splithttp -- splithttp
host = (server.splithttp_host or server.tls_host) or nil, host = (server.splithttp_host or server.tls_host) or nil,
path = server.splithttp_path or "" path = server.splithttp_path or "/"
} or nil, } or nil,
httpSettings = (server.transport == "h2") and { httpSettings = (server.transport == "h2") and {
-- h2 -- h2
@ -271,7 +288,8 @@ local Xray = {
sockopt = { sockopt = {
tcpMptcp = (server.mptcp == "1") and true or false, -- MPTCP tcpMptcp = (server.mptcp == "1") and true or false, -- MPTCP
tcpNoDelay = (server.mptcp == "1") and true or false, -- MPTCP tcpNoDelay = (server.mptcp == "1") and true or false, -- MPTCP
tcpcongestion = server.custom_tcpcongestion -- 连接服务器节点的 TCP 拥塞控制算法 tcpcongestion = server.custom_tcpcongestion, -- 连接服务器节点的 TCP 拥塞控制算法
dialerProxy = (xray_fragment.fragment == "1" or xray_fragment.noise == "1") and "dialerproxy" or nil
} }
} or nil, } or nil,
mux = (server.v2ray_protocol ~= "wireguard") and { mux = (server.v2ray_protocol ~= "wireguard") and {
@ -283,6 +301,35 @@ local Xray = {
} or nil } or nil
} }
} }
-- 添加带有 fragment 设置的 dialerproxy 配置
if xray_fragment.fragment ~= "0" or (xray_fragment.noise ~= "0" and xray_noise.enabled ~= "0") then
table.insert(Xray.outbounds, {
protocol = "freedom",
tag = "dialerproxy",
settings = {
domainStrategy = (xray_fragment.noise == "1" and xray_noise.enabled == "1") and xray_noise.domainStrategy,
fragment = (xray_fragment.fragment == "1") and {
packets = (xray_fragment.fragment_packets ~= "") and xray_fragment.fragment_packets or nil,
length = (xray_fragment.fragment_length ~= "") and xray_fragment.fragment_length or nil,
interval = (xray_fragment.fragment_interval ~= "") and xray_fragment.fragment_interval or nil
} or nil,
noises = (xray_fragment.noise == "1" and xray_noise.enabled == "1") and {
{
type = xray_noise.type,
packet = xray_noise.packet,
delay = xray_noise.delay:find("-") and xray_noise.delay or tonumber(xray_noise.delay)
}
} or nil
},
streamSettings = {
sockopt = {
tcpNoDelay = true
}
}
})
end
local cipher = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA" local cipher = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA"
local cipher13 = "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384" local cipher13 = "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384"
local trojan = { local trojan = {

View File

@ -362,10 +362,9 @@ local function processData(szType, content)
result.vmess_id = url.user result.vmess_id = url.user
result.vless_encryption = params.encryption or "none" result.vless_encryption = params.encryption or "none"
result.transport = params.type or "tcp" result.transport = params.type or "tcp"
result.tls = (params.security == "tls") and "1" or "0" result.tls = (params.security == "tls" or params.security == "xtls") and "1" or "0"
result.tls_host = params.sni result.tls_host = params.sni
result.xtls = (params.security == "xtls") and "1" or nil result.tls_flow = (params.security == "tls" or params.security == "reality") and params.flow or nil
result.tls_flow = (result.tls == "1" or result.xtls == "1" or result.reality == "1") and params.flow or nil
result.fingerprint = params.fp result.fingerprint = params.fp
result.reality = (params.security == "reality") and "1" or "0" result.reality = (params.security == "reality") and "1" or "0"
result.reality_publickey = params.pbk and UrlDecode(params.pbk) or nil result.reality_publickey = params.pbk and UrlDecode(params.pbk) or nil

View File

@ -9,7 +9,7 @@ require "luci.model.uci"
local icount = 0 local icount = 0
local args = arg[1] local args = arg[1]
local uci = luci.model.uci.cursor() local uci = luci.model.uci.cursor()
local TMP_DNSMASQ_PATH = "/tmp/dnsmasq.d/dnsmasq-ssrplus.d" local TMP_DNSMASQ_PATH = "${DNSMASQ_CONF_DIR%*/}/dnsmasq-ssrplus.d"
local TMP_PATH = "/var/etc/ssrplus" local TMP_PATH = "/var/etc/ssrplus"
-- match comments/title/whitelist/ip address/excluded_domain -- match comments/title/whitelist/ip address/excluded_domain
local comment_pattern = "^[!\\[@]+" local comment_pattern = "^[!\\[@]+"

View File

@ -1,5 +1,5 @@
diff --git a/luci-app-ssr-plus/Makefile b/luci-app-ssr-plus/Makefile diff --git a/luci-app-ssr-plus/Makefile b/luci-app-ssr-plus/Makefile
index d07f167..b2af119 100644 index 644ac0a..9d8a0b3 100644
--- a/luci-app-ssr-plus/Makefile --- a/luci-app-ssr-plus/Makefile
+++ b/luci-app-ssr-plus/Makefile +++ b/luci-app-ssr-plus/Makefile
@@ -9,10 +9,9 @@ PKG_CONFIG_DEPENDS:= \ @@ -9,10 +9,9 @@ PKG_CONFIG_DEPENDS:= \
@ -134,7 +134,7 @@ index 8ceaba7..f381a54 100644
page.acl_depends = { "luci-app-ssr-plus" } page.acl_depends = { "luci-app-ssr-plus" }
entry({"admin", "services", "shadowsocksr", "client"}, cbi("shadowsocksr/client"), _("SSR Client"), 10).leaf = true entry({"admin", "services", "shadowsocksr", "client"}, cbi("shadowsocksr/client"), _("SSR Client"), 10).leaf = true
diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua
index 0f8cd03..00ef47d 100644 index 2f56e90..9157953 100644
--- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua --- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua
+++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua
@@ -70,45 +70,6 @@ o.default = "https://fastly.jsdelivr.net/gh/QiuSimons/Netflix_IP/NF_only.txt" @@ -70,45 +70,6 @@ o.default = "https://fastly.jsdelivr.net/gh/QiuSimons/Netflix_IP/NF_only.txt"
@ -180,11 +180,11 @@ index 0f8cd03..00ef47d 100644
-o.rmempty = false -o.rmempty = false
-o.default = "0" -o.default = "0"
- -
o = s:option(Flag, "adblock", translate("Enable adblock")) o = s:option(Flag, "apple_optimization", translate("Apple domains optimization"), translate("For Apple domains equipped with Chinese mainland CDN, always responsive to Chinese CDN IP addresses"))
o.rmempty = false o.rmempty = false
o.default = "1"
diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua
index 3b91739..b24183e 100644 index 26de9ba..b24183e 100644
--- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua --- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua
+++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua +++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua
@@ -10,7 +10,7 @@ local function is_finded(e) @@ -10,7 +10,7 @@ local function is_finded(e)
@ -232,7 +232,7 @@ index 3b91739..b24183e 100644
-o = s:option(Flag, "mosdns_ipv6", translate("Disable IPv6 in MOSDNS query mode")) -o = s:option(Flag, "mosdns_ipv6", translate("Disable IPv6 in MOSDNS query mode"))
-o:depends("pdnsd_enable", "3") -o:depends("pdnsd_enable", "3")
-o.rmempty = false -o.rmempty = false
-o.default = "0" -o.default = "1"
- -
if is_finded("chinadns-ng") then if is_finded("chinadns-ng") then
o = s:option(Value, "chinadns_forward", translate("Domestic DNS Server")) o = s:option(Value, "chinadns_forward", translate("Domestic DNS Server"))
@ -430,10 +430,10 @@ index 7603d8c..7f841fa 100644
} }
} }
diff --git a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po diff --git a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po
index 8184bee..60ac526 100644 index da30ffc..f97309b 100644
--- a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po --- a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po
+++ b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po +++ b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po
@@ -552,27 +552,6 @@ msgstr "使用 DNS2TCP 查询" @@ -557,27 +557,6 @@ msgstr "使用 DNS2TCP 查询"
msgid "Use DNS2SOCKS query and cache" msgid "Use DNS2SOCKS query and cache"
msgstr "使用 DNS2SOCKS 查询并缓存" msgstr "使用 DNS2SOCKS 查询并缓存"
@ -462,10 +462,10 @@ index 8184bee..60ac526 100644
msgstr "DNS 服务器 IP:Port" msgstr "DNS 服务器 IP:Port"
diff --git a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr diff --git a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
index b1570aa..ec19a6f 100755 index 00e0448..9af87f1 100755
--- a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr --- a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
+++ b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr +++ b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
@@ -178,23 +178,17 @@ ln_start_bin() { @@ -185,23 +185,17 @@ ln_start_bin() {
${file_func:-echolog " - ${ln_name}"} "$@" >/dev/null 2>&1 & ${file_func:-echolog " - ${ln_name}"} "$@" >/dev/null 2>&1 &
} }
@ -494,7 +494,7 @@ index b1570aa..ec19a6f 100755
case "$ssrplus_dns" in case "$ssrplus_dns" in
1) 1)
ln_start_bin $(first_type dns2tcp) dns2tcp -L 127.0.0.1#$dns_port -R ${dnsserver/:/#} ln_start_bin $(first_type dns2tcp) dns2tcp -L 127.0.0.1#$dns_port -R ${dnsserver/:/#}
@@ -205,26 +199,6 @@ start_dns() { @@ -212,26 +206,6 @@ start_dns() {
ln_start_bin $(first_type dns2socks) dns2socks 127.0.0.1:$tmp_dns_port $dnsserver 127.0.0.1:$dns_port -q ln_start_bin $(first_type dns2socks) dns2socks 127.0.0.1:$tmp_dns_port $dnsserver 127.0.0.1:$dns_port -q
pdnsd_enable_flag=2 pdnsd_enable_flag=2
;; ;;
@ -521,7 +521,7 @@ index b1570aa..ec19a6f 100755
esac esac
if [ "$run_mode" = "router" ]; then if [ "$run_mode" = "router" ]; then
@@ -479,33 +453,6 @@ start_udp() { @@ -492,33 +466,6 @@ start_udp() {
esac esac
} }
@ -555,7 +555,7 @@ index b1570aa..ec19a6f 100755
start_shunt() { start_shunt() {
local type=$(uci_get_by_name $SHUNT_SERVER type) local type=$(uci_get_by_name $SHUNT_SERVER type)
case "$type" in case "$type" in
@@ -519,14 +466,14 @@ start_shunt() { @@ -532,14 +479,14 @@ start_shunt() {
local tmp_port=$tmp_shunt_local_port local tmp_port=$tmp_shunt_local_port
ln_start_bin $(first_type ${type}local ${type}-local) ${type}-local -c $shunt_dns_config_file ln_start_bin $(first_type ${type}local ${type}-local) ${type}-local -c $shunt_dns_config_file
fi fi
@ -566,13 +566,13 @@ index b1570aa..ec19a6f 100755
v2ray) v2ray)
local tmp_port=${tmp_local_port:-$tmp_shunt_local_port} local tmp_port=${tmp_local_port:-$tmp_shunt_local_port}
gen_config_file $SHUNT_SERVER $type 3 $tmp_shunt_port $tmp_port gen_config_file $SHUNT_SERVER $type 3 $tmp_shunt_port $tmp_port
ln_start_bin $(first_type xray v2ray) v2ray run -config $shunt_config_file ln_start_bin $(first_type xray v2ray) v2ray run -c $shunt_config_file
- shunt_dns_command - shunt_dns_command
+ ln_start_bin $(first_type dns2socks) dns2socks 127.0.0.1:$tmp_port 8.8.8.8:53 127.0.0.1:$tmp_shunt_dns_port -q + ln_start_bin $(first_type dns2socks) dns2socks 127.0.0.1:$tmp_port 8.8.8.8:53 127.0.0.1:$tmp_shunt_dns_port -q
echolog "shunt:$($(first_type xray v2ray) version | head -1) Started!" echolog "shunt:$($(first_type xray v2ray) version | head -1) Started!"
;; ;;
trojan) trojan)
@@ -538,7 +485,7 @@ start_shunt() { @@ -551,7 +498,7 @@ start_shunt() {
local tmp_port=$tmp_shunt_local_port local tmp_port=$tmp_shunt_local_port
ln_start_bin $(first_type trojan) $type --config $shunt_dns_config_file ln_start_bin $(first_type trojan) $type --config $shunt_dns_config_file
fi fi
@ -581,7 +581,7 @@ index b1570aa..ec19a6f 100755
echolog "shunt:$($(first_type trojan) --version 2>&1 | head -1) Started!" echolog "shunt:$($(first_type trojan) --version 2>&1 | head -1) Started!"
;; ;;
naiveproxy) naiveproxy)
@@ -550,7 +497,7 @@ start_shunt() { @@ -563,7 +510,7 @@ start_shunt() {
local tmp_port=$tmp_shunt_local_port local tmp_port=$tmp_shunt_local_port
ln_start_bin $(first_type naive) naive --config $shunt_dns_config_file ln_start_bin $(first_type naive) naive --config $shunt_dns_config_file
fi fi
@ -590,7 +590,7 @@ index b1570aa..ec19a6f 100755
echolog "shunt:$($(first_type "naive") --version 2>&1 | head -1) Started!" echolog "shunt:$($(first_type "naive") --version 2>&1 | head -1) Started!"
redir_udp=0 redir_udp=0
;; ;;
@@ -563,7 +510,7 @@ start_shunt() { @@ -576,7 +523,7 @@ start_shunt() {
gen_config_file $SHUNT_SERVER $type 3 $tmp_shunt_port $tmp_port gen_config_file $SHUNT_SERVER $type 3 $tmp_shunt_port $tmp_port
fi fi
ln_start_bin $(first_type hysteria) hysteria client --config $shunt_config_file ln_start_bin $(first_type hysteria) hysteria client --config $shunt_config_file
@ -599,7 +599,7 @@ index b1570aa..ec19a6f 100755
echolog "shunt:$($(first_type hysteria) version | grep Version | awk '{print "Hysteria2: " $2}') Started!" echolog "shunt:$($(first_type hysteria) version | grep Version | awk '{print "Hysteria2: " $2}') Started!"
;; ;;
tuic) tuic)
@@ -575,7 +522,7 @@ start_shunt() { @@ -588,7 +535,7 @@ start_shunt() {
[ -n "$tmp_local_port" ] && tmp_port=$tmp_local_port || tmp_port=$tmp_shunt_local_port [ -n "$tmp_local_port" ] && tmp_port=$tmp_local_port || tmp_port=$tmp_shunt_local_port
gen_config_file $SHUNT_SERVER $type 3 $tmp_port # make a tuic socks :304 gen_config_file $SHUNT_SERVER $type 3 $tmp_port # make a tuic socks :304
ln_start_bin $(first_type tuic-client) tuic-client --config $shunt_dns_config_file ln_start_bin $(first_type tuic-client) tuic-client --config $shunt_dns_config_file
@ -608,7 +608,7 @@ index b1570aa..ec19a6f 100755
echolog "Netflix Separated Shunt Server:tuic-client $($(first_type tuic-client) --version) Started!" echolog "Netflix Separated Shunt Server:tuic-client $($(first_type tuic-client) --version) Started!"
# FIXME: ipt2socks cannot handle udp reply from tuic # FIXME: ipt2socks cannot handle udp reply from tuic
#redir_udp=0 #redir_udp=0
@@ -585,7 +532,7 @@ start_shunt() { @@ -598,7 +545,7 @@ start_shunt() {
gen_config_file $SHUNT_SERVER $type 3 "10${tmp_shunt_port}" $tmp_port chain/$tmp_shunt_port #make a redir:303 and a socks:304 gen_config_file $SHUNT_SERVER $type 3 "10${tmp_shunt_port}" $tmp_port chain/$tmp_shunt_port #make a redir:303 and a socks:304
#echo "debug \$tmp_port=$tmp_port, \$tmp_shunt_port=${tmp_shunt_port}, \$tmp_shunt_local_port=$tmp_shunt_local_port" #echo "debug \$tmp_port=$tmp_port, \$tmp_shunt_port=${tmp_shunt_port}, \$tmp_shunt_local_port=$tmp_shunt_local_port"
ln_start_bin $(first_type shadow-tls) shadow-tls config --config $chain_config_file ln_start_bin $(first_type shadow-tls) shadow-tls config --config $chain_config_file
@ -617,7 +617,7 @@ index b1570aa..ec19a6f 100755
local chain_type=$(uci_get_by_name $SHUNT_SERVER chain_type) local chain_type=$(uci_get_by_name $SHUNT_SERVER chain_type)
case ${chain_type} in case ${chain_type} in
vmess) vmess)
@@ -611,7 +558,7 @@ start_shunt() { @@ -624,7 +571,7 @@ start_shunt() {
# local tmp_port=$tmp_shunt_local_port # local tmp_port=$tmp_shunt_local_port
# ln_start_bin $(first_type microsocks) microsocks -i 127.0.0.1 -p $tmp_port shunt-dns-ssr-plus # ln_start_bin $(first_type microsocks) microsocks -i 127.0.0.1 -p $tmp_port shunt-dns-ssr-plus
# fi # fi
@ -626,7 +626,7 @@ index b1570aa..ec19a6f 100755
# echolog "shunt:$type REDIRECT/TPROXY Started!" # echolog "shunt:$type REDIRECT/TPROXY Started!"
# ;; # ;;
*) *)
@@ -623,7 +570,7 @@ start_shunt() { @@ -636,7 +583,7 @@ start_shunt() {
local tmp_port=$tmp_shunt_local_port local tmp_port=$tmp_shunt_local_port
ln_start_bin $(first_type microsocks) microsocks -i 127.0.0.1 -p $tmp_port shunt-dns-ssr-plus ln_start_bin $(first_type microsocks) microsocks -i 127.0.0.1 -p $tmp_port shunt-dns-ssr-plus
fi fi
@ -635,7 +635,7 @@ index b1570aa..ec19a6f 100755
echolog "shunt:$type REDIRECT/TPROXY Started!" echolog "shunt:$type REDIRECT/TPROXY Started!"
;; ;;
esac esac
@@ -922,11 +869,6 @@ start_server() { @@ -935,11 +882,6 @@ start_server() {
server_service() { server_service() {
[ "$(uci_get_by_name $1 enable 0)" == "0" ] && return 1 [ "$(uci_get_by_name $1 enable 0)" == "0" ] && return 1
let server_count=server_count+1 let server_count=server_count+1
@ -647,7 +647,7 @@ index b1570aa..ec19a6f 100755
local type=$(uci_get_by_name $1 type) local type=$(uci_get_by_name $1 type)
case "$type" in case "$type" in
ss | ssr) ss | ssr)
@@ -940,32 +882,23 @@ start_server() { @@ -953,32 +895,23 @@ start_server() {
echolog "Server:Socks5 Server$server_count Started!" echolog "Server:Socks5 Server$server_count Started!"
;; ;;
esac esac
@ -692,7 +692,7 @@ index b1570aa..ec19a6f 100755
return 0 return 0
} }
@@ -1098,12 +1031,6 @@ stop() { @@ -1111,12 +1044,6 @@ stop() {
unlock unlock
set_lock set_lock
/usr/bin/ssr-rules -f /usr/bin/ssr-rules -f
@ -705,7 +705,7 @@ index b1570aa..ec19a6f 100755
if [ -z "$switch_server" ]; then if [ -z "$switch_server" ]; then
$PS -w | grep -v "grep" | grep ssr-switch | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & $PS -w | grep -v "grep" | grep ssr-switch | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 &
rm -f /var/lock/ssr-switch.lock rm -f /var/lock/ssr-switch.lock
@@ -1114,7 +1041,7 @@ stop() { @@ -1127,7 +1054,7 @@ stop() {
( \ ( \
# Graceful kill first, so programs have the chance to stop its subprocesses # Graceful kill first, so programs have the chance to stop its subprocesses
$PS -w | grep -v "grep" | grep "$TMP_PATH" | awk '{print $1}' | xargs kill >/dev/null 2>&1 ; \ $PS -w | grep -v "grep" | grep "$TMP_PATH" | awk '{print $1}' | xargs kill >/dev/null 2>&1 ; \
@ -714,8 +714,8 @@ index b1570aa..ec19a6f 100755
# Force kill hanged programs # Force kill hanged programs
$PS -w | grep -v "grep" | grep "$TMP_PATH" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 ; \ $PS -w | grep -v "grep" | grep "$TMP_PATH" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 ; \
) )
@@ -1132,6 +1059,9 @@ stop() { @@ -1145,6 +1072,9 @@ stop() {
rm -rf /tmp/dnsmasq.d/dnsmasq-ssrplus.conf $TMP_DNSMASQ_PATH $TMP_PATH/*-ssr-*.json $TMP_PATH/ssr-server*.json rm -rf $DNSMASQ_CONF_DIR/dnsmasq-ssrplus.conf $TMP_DNSMASQ_PATH $TMP_PATH/*-ssr-*.json $TMP_PATH/ssr-server*.json
/etc/init.d/dnsmasq restart >/dev/null 2>&1 /etc/init.d/dnsmasq restart >/dev/null 2>&1
fi fi
+ uci -q delete firewall.shadowsocksr_server + uci -q delete firewall.shadowsocksr_server
@ -724,7 +724,7 @@ index b1570aa..ec19a6f 100755
del_cron del_cron
unset_lock unset_lock
} }
@@ -1158,7 +1088,6 @@ reset() { @@ -1171,7 +1101,6 @@ reset() {
set shadowsocksr.@global[0].switch_timeout='5' set shadowsocksr.@global[0].switch_timeout='5'
set shadowsocksr.@global[0].switch_try_count='3' set shadowsocksr.@global[0].switch_try_count='3'
# set shadowsocksr.@global[0].default_packet_encoding='xudp' # set shadowsocksr.@global[0].default_packet_encoding='xudp'