mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-02-15 03:51:51 +00:00
87 lines
2.2 KiB
Bash
Executable file
87 lines
2.2 KiB
Bash
Executable file
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
|
|
# shellcheck disable=SC2039
|
|
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :
|
|
|
|
# shellcheck disable=SC2034
|
|
{
|
|
START=99
|
|
STOP=10
|
|
USE_PROCD=1
|
|
}
|
|
|
|
set_shadowsocks_address() {
|
|
uci -q set shadowsocks-libev.$1.local_address="$2"
|
|
}
|
|
|
|
set_ipv6_state() {
|
|
local disable_ipv6="$(uci -q get openmptcprouter.settings.disable_ipv6)"
|
|
[ -z "$disable_ipv6" ] && disable_ipv6="1"
|
|
sysctl -qw net.ipv6.conf.all.disable_ipv6=$disable_ipv6
|
|
sed -i "s:^net.ipv6.conf.all.disable_ipv6=[0-9]*:net.ipv6.conf.all.disable_ipv6=$disable_ipv6:" /etc/sysctl.d/zzz_openmptcprouter.conf
|
|
|
|
uci -q batch <<-EOF >/dev/null
|
|
set firewall.@defaults[0].disable_ipv6=$disable_ipv6
|
|
commit firewall
|
|
EOF
|
|
|
|
if [ "$disable_ipv6" == "1" ]; then
|
|
logger -t "omr-6in4" "Disable IPv6"
|
|
uci -q batch <<-EOF >/dev/null
|
|
set dhcp.lan.ra_default="0"
|
|
set network.lan.ipv6="0"
|
|
delete network.lan.ipv6
|
|
delete dhcp.lan.dhcpv6
|
|
delete dhcp.lan.ra
|
|
delete dhcp.lan.ra_default
|
|
delete dhcp.lan.ra_management
|
|
delete dhcp.lan.ra_preference
|
|
EOF
|
|
config_load shadowsocks-libev
|
|
config_foreach set_shadowsocks_address ss_redir "0.0.0.0"
|
|
else
|
|
logger -t "omr-6in4" "Enable IPv6"
|
|
uci -q batch <<-EOF >/dev/null
|
|
set dhcp.lan.dhcpv6="server"
|
|
set dhcp.lan.ra="server"
|
|
set dhcp.lan.ra_default="1"
|
|
set dhcp.lan.ra_preference="high"
|
|
set dhcp.lan.ra_management="1"
|
|
set network.lan.ipv6="1"
|
|
set network.lan.delegate="0"
|
|
EOF
|
|
config_load shadowsocks-libev
|
|
config_foreach set_shadowsocks_address ss_redir "::"
|
|
fi
|
|
uci -q batch <<-EOF >/dev/null
|
|
commit network
|
|
commit dhcp
|
|
commit shadowsocks-libev
|
|
EOF
|
|
}
|
|
|
|
|
|
start_service() {
|
|
[ "$(uci -q get openmptcprouter.settings.disable_ipv6)" != "$(sysctl -n net.ipv6.conf.all.disable_ipv6)" ] && set_ipv6_state
|
|
[ "$(uci -q get openmptcprouter.settings.disable_ipv6)" = "1" ] && {
|
|
ifdown omr6in4
|
|
return
|
|
}
|
|
ifup omr6in4
|
|
procd_open_instance
|
|
# shellcheck disable=SC2086
|
|
procd_set_param command /bin/omr-6in4
|
|
procd_set_param limits nofile="51200 51200"
|
|
procd_set_param respawn 0 10 0
|
|
procd_set_param stderr 1
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_interface_trigger "omrvpn"
|
|
}
|
|
|
|
reload_service() {
|
|
stop
|
|
start
|
|
}
|