mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Fix omr-bypass and some IPv6 support on shadowsocks
This commit is contained in:
parent
46903d6b6a
commit
c912740c2b
2 changed files with 39 additions and 28 deletions
|
@ -406,7 +406,7 @@ start_service() {
|
||||||
config_foreach _bypass_proto dpis
|
config_foreach _bypass_proto dpis
|
||||||
|
|
||||||
[ -z "$RELOAD" ] && /etc/init.d/dnsmasq restart
|
[ -z "$RELOAD" ] && /etc/init.d/dnsmasq restart
|
||||||
[ -n "$RELOAD" ] && /etc/init.d/dnsmasq restart
|
[ -n "$RELOAD" ] && /etc/init.d/dnsmasq reload
|
||||||
logger -t "omr-bypass" "OMR-ByPass is running"
|
logger -t "omr-bypass" "OMR-ByPass is running"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -130,11 +130,13 @@ ss_rules_cb() {
|
||||||
config_get cfgserver "$cfg" server
|
config_get cfgserver "$cfg" server
|
||||||
config_get server "$cfgserver" server
|
config_get server "$cfgserver" server
|
||||||
ss_redir_servers="$ss_redir_servers $server"
|
ss_redir_servers="$ss_redir_servers $server"
|
||||||
if [ "$mode" = tcp_only -o "$mode" = "tcp_and_udp" ]; then
|
if [ "$mode" = "tcp_only" -o "$mode" = "tcp_and_udp" ]; then
|
||||||
eval "ss_rules_redir_tcp_$cfg=$local_port"
|
eval "ss_rules_redir_tcp_$cfg=$local_port"
|
||||||
|
eval "ss_rules6_redir_tcp_$cfg=$local_port"
|
||||||
fi
|
fi
|
||||||
if [ "$mode" = udp_only -o "$mode" = "tcp_and_udp" ]; then
|
if [ "$mode" = "udp_only" -o "$mode" = "tcp_and_udp" ]; then
|
||||||
eval "ss_rules_redir_udp_$cfg=$local_port"
|
eval "ss_rules_redir_udp_$cfg=$local_port"
|
||||||
|
eval "ss_rules6_redir_udp_$cfg=$local_port"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -161,8 +163,22 @@ ss_rules() {
|
||||||
|
|
||||||
eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp"
|
eval local_port_tcp="\$ss_rules_redir_tcp_$redir_tcp"
|
||||||
eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
|
eval local_port_udp="\$ss_rules_redir_udp_$redir_udp"
|
||||||
|
eval local_port_tcp6="\$ss_rules6_redir_tcp_$redir_tcp"
|
||||||
|
eval local_port_udp6="\$ss_rules6_redir_udp_$redir_udp"
|
||||||
[ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1
|
[ -n "$local_port_tcp" -o -n "$local_port_udp" ] || return 1
|
||||||
ss_redir_servers="$(echo "$ss_redir_servers" | tr ' ' '\n' | sort -u)"
|
ss_redir_servers4="$(echo "$ss_redir_servers" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
|
||||||
|
ss_redir_servers6="$(echo "$ss_redir_servers" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
|
#ss_redir_servers="$(echo "$ss_redir_servers" | tr ' ' '\n' | sort -u)"
|
||||||
|
dst_ips_bypass4="$(echo "$dst_ips_bypass" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
|
||||||
|
dst_ips_forward4="$(echo "$dst_ips_forward" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
|
||||||
|
src_ips_bypass4="$(echo "$src_ips_bypass" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
|
||||||
|
src_ips_forward4="$(echo "$src_ips_forward" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
|
||||||
|
src_ips_checkdst4="$(echo "$src_ips_checkdst" | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort -u)"
|
||||||
|
dst_ips_bypass6="$(echo "$dst_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
|
dst_ips_forward6="$(echo "$dst_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
|
src_ips_bypass6="$(echo "$src_ips_bypass" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
|
src_ips_forward6="$(echo "$src_ips_forward" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
|
src_ips_checkdst6="$(echo "$src_ips_checkdst" | grep -o '\([0-9a-fA-F]\{0,4\}:\)\{1,7\}[0-9a-fA-F]\{0,4\}' | sort -u)"
|
||||||
[ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst"
|
[ "$dst_forward_recentrst" = 0 ] || args="$args --dst-forward-recentrst"
|
||||||
|
|
||||||
ss_rules_call
|
ss_rules_call
|
||||||
|
@ -171,7 +187,7 @@ ss_rules() {
|
||||||
|
|
||||||
ss_rules_call() {
|
ss_rules_call() {
|
||||||
"$bin" "$@" \
|
"$bin" "$@" \
|
||||||
-s "$ss_redir_servers" \
|
-s "$ss_redir_servers4" \
|
||||||
-l "$local_port_tcp" \
|
-l "$local_port_tcp" \
|
||||||
-L "$local_port_udp" \
|
-L "$local_port_udp" \
|
||||||
--src-default "$src_default" \
|
--src-default "$src_default" \
|
||||||
|
@ -179,11 +195,11 @@ ss_rules_call() {
|
||||||
--local-default "$local_default" \
|
--local-default "$local_default" \
|
||||||
--dst-bypass-file "$dst_ips_bypass_file" \
|
--dst-bypass-file "$dst_ips_bypass_file" \
|
||||||
--dst-forward-file "$dst_ips_forward_file" \
|
--dst-forward-file "$dst_ips_forward_file" \
|
||||||
--dst-bypass "$dst_ips_bypass" \
|
--dst-bypass "$dst_ips_bypass4" \
|
||||||
--dst-forward "$dst_ips_forward" \
|
--dst-forward "$dst_ips_forward4" \
|
||||||
--src-bypass "$src_ips_bypass" \
|
--src-bypass "$src_ips_bypass4" \
|
||||||
--src-forward "$src_ips_forward" \
|
--src-forward "$src_ips_forward4" \
|
||||||
--src-checkdst "$src_ips_checkdst" \
|
--src-checkdst "$src_ips_checkdst4" \
|
||||||
--ifnames "$ifnames" \
|
--ifnames "$ifnames" \
|
||||||
--ipt-extra "$ipt_args" \
|
--ipt-extra "$ipt_args" \
|
||||||
$args \
|
$args \
|
||||||
|
@ -192,19 +208,19 @@ ss_rules_call() {
|
||||||
|
|
||||||
ss_rules_call6() {
|
ss_rules_call6() {
|
||||||
"$bin6" "$@" \
|
"$bin6" "$@" \
|
||||||
-s "$ss_redir_servers" \
|
-s "$ss_redir_servers6" \
|
||||||
-l "$local_port_tcp" \
|
-l "$local_port_tcp6" \
|
||||||
-L "$local_port_udp" \
|
-L "$local_port_udp6" \
|
||||||
--src-default "$src_default" \
|
--src-default "$src_default" \
|
||||||
--dst-default "$dst_default" \
|
--dst-default "$dst_default" \
|
||||||
--local-default "$local_default" \
|
--local-default "$local_default" \
|
||||||
--dst-bypass-file "$dst_ips_bypass_file" \
|
--dst-bypass-file "$dst_ips_bypass_file" \
|
||||||
--dst-forward-file "$dst_ips_forward_file" \
|
--dst-forward-file "$dst_ips_forward_file" \
|
||||||
--dst-bypass "$dst_ips_bypass" \
|
--dst-bypass "$dst_ips_bypass6" \
|
||||||
--dst-forward "$dst_ips_forward" \
|
--dst-forward "$dst_ips_forward6" \
|
||||||
--src-bypass "$src_ips_bypass" \
|
--src-bypass "$src_ips_bypass6" \
|
||||||
--src-forward "$src_ips_forward" \
|
--src-forward "$src_ips_forward6" \
|
||||||
--src-checkdst "$src_ips_checkdst" \
|
--src-checkdst "$src_ips_checkdst6" \
|
||||||
--ifnames "$ifnames" \
|
--ifnames "$ifnames" \
|
||||||
--ipt-extra "$ipt_args" \
|
--ipt-extra "$ipt_args" \
|
||||||
$args \
|
$args \
|
||||||
|
@ -219,18 +235,13 @@ start_service() {
|
||||||
for cfgtype in ss_local ss_redir ss_server ss_tunnel; do
|
for cfgtype in ss_local ss_redir ss_server ss_tunnel; do
|
||||||
config_foreach ss_xxx "$cfgtype" "$cfgtype"
|
config_foreach ss_xxx "$cfgtype" "$cfgtype"
|
||||||
done
|
done
|
||||||
ss_rules
|
# Add rule to match traffic marked by firewall for bypass
|
||||||
|
ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1
|
||||||
|
rules_up
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_service() {
|
stop_service() {
|
||||||
local bin="$ss_bindir/ss-rules"
|
rules_down
|
||||||
[ -x "$bin" ] && {
|
|
||||||
"$bin" -f
|
|
||||||
}
|
|
||||||
local bin6="$ss_bindir/ss-rules6"
|
|
||||||
[ -x "$bin6" ] && {
|
|
||||||
"$bin6" -f
|
|
||||||
}
|
|
||||||
rm -rf "$ss_confdir"
|
rm -rf "$ss_confdir"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +279,7 @@ rules_down() {
|
||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers() {
|
||||||
procd_add_reload_interface_trigger wan
|
procd_add_reload_interface_trigger wan*
|
||||||
procd_add_reload_trigger shadowsocks-libev
|
procd_add_reload_trigger shadowsocks-libev
|
||||||
procd_open_validate
|
procd_open_validate
|
||||||
validate_server_section
|
validate_server_section
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue