Skip to content

Commit

Permalink
systools: add ipv6 enabling script
Browse files Browse the repository at this point in the history
  • Loading branch information
jjm2473 committed Dec 15, 2023
1 parent bb9b741 commit 35a6d9c
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 3 deletions.
2 changes: 1 addition & 1 deletion applications/luci-app-systools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

include $(TOPDIR)/rules.mk

PKG_VERSION:=1.0.4-20230718
PKG_VERSION:=1.0.5-20231215
PKG_RELEASE:=

LUCI_TITLE:=LuCI support for SysTools
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,11 @@ function main_container(data, extra)
required = true,
title = "可执行操作",
type = "string",
enum = {"turn_off_ipv6", "reset_rom_pkgs", "qb_reset_password", "disk_power_mode", "speedtest", "openssl-aes256gcm", "openssl-chacha20-poly1305", "istore-reinstall", "disable-wandrop"},
enum = {"turn_off_ipv6", "full_ipv6", "half_ipv6", "reset_rom_pkgs", "qb_reset_password", "disk_power_mode", "speedtest", "openssl-aes256gcm", "openssl-chacha20-poly1305", "istore-reinstall", "disable-wandrop"},
enumNames = {
lng.translate("Turn off IPv6"),
lng.translate("Full IPv6"),
lng.translate("Half IPv6 (Only Router)"),
lng.translate("Reset rom pkgs"),
lng.translate("Reset qBittorrent Password"),
lng.translate("HDD hibernation Status"),
Expand Down
6 changes: 6 additions & 0 deletions applications/luci-app-systools/po/zh-cn/systools.po
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ msgstr "修复系统软件"
msgid "Turn off IPv6"
msgstr "关闭 IPv6"

msgid "Full IPv6"
msgstr "开启 IPv6"

msgid "Half IPv6 (Only Router)"
msgstr "半 IPv6(仅路由器)"

msgid "Reset qBittorrent Password"
msgstr "重置 qBittorrent 密码"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,18 @@ usage() {
echo "usage: $0 sub-command"
echo "where sub-command is one of:"
echo " turn_off_ipv6 Disable IPv6"
echo " full_ipv6 Full IPv6"
echo " half_ipv6 Half IPv6 (Only Router)"
echo " reset_rom_pkgs Reset pkgs from rom"
echo " qb_reset_password Reset qBitorent password"
echo " disk_power_mode Show disk power status"
echo " speedtest Start a speedtest"
}

case ${ACTION} in
"turn_off_ipv6")
"turn_off_ipv6"|\
"full_ipv6"|\
"half_ipv6")
bash "/usr/share/systools/${ACTION}.run"
;;
"reset_rom_pkgs")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/bin/sh

ipv6_disable_lan_server() {
uci -q batch <<-EOF >/dev/null
del dhcp.lan.ra
del dhcp.lan.ra_slaac
del dhcp.lan.ra_flags
del dhcp.lan.dhcpv6
del dhcp.lan.ndp
EOF
}

ipv6_dns_on() {
uci -q delete 'dhcp.@dnsmasq[0].filter_aaaa'
}

ipv6_relay_mode() {
uci -q batch <<-EOF >/dev/null
del network.wan6.auto
set dhcp.wan6=dhcp
set dhcp.wan6.interface='wan6'
set dhcp.wan6.ignore='1'
set dhcp.wan6.master='1'
set dhcp.wan6.ra='relay'
set dhcp.wan6.dhcpv6='relay'
set dhcp.wan6.ndp='relay'
set dhcp.lan.ra='relay'
del dhcp.lan.ra_slaac
del dhcp.lan.ra_flags
set dhcp.lan.dhcpv6='relay'
set dhcp.lan.ndp='relay'
EOF
ipv6_dns_on
}

ipv6_pppoe_mode() {
ipv6_disable_lan_server
ipv6_dns_on
}

is_lan_gateway() {
[ "$(uci -q get network.lan.defaultroute)" = "0" ] && return 1
[ "$(uci -q get network.lan.proto)" = "dhcp" ] && return 0
[ "$(uci -q get network.lan.proto)" = "static" ] || return 1
[ -n "$(uci -q get network.lan.gateway)" ]
}

is_wan_pppoe() {
[ "$(uci -q get network.wan.proto)" = "pppoe" ]
}

if is_lan_gateway; then
echo "Single-Port Router (LAN Gateway) mode"
ipv6_pppoe_mode
elif is_wan_pppoe; then
echo "PPPoE mode"
ipv6_pppoe_mode
uci -q delete network.wan.ipv6
else
echo "DHCP-Client mode"
ipv6_relay_mode
fi

uci -q batch <<-EOF >/dev/null
commit dhcp
commit network
EOF

/etc/init.d/odhcpd reload
/etc/init.d/dnsmasq reload
/etc/init.d/network reload

echo "Done"
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/sh

ipv6_dns_on() {
uci -q delete 'dhcp.@dnsmasq[0].filter_aaaa'
}

ipv6_half_mode() {
uci -q batch <<-EOF >/dev/null
del network.wan.ipv6
del network.wan6.auto
del dhcp.wan6
set dhcp.lan.ra='relay'
del dhcp.lan.ra_slaac
del dhcp.lan.ra_flags
set dhcp.lan.dhcpv6='relay'
set dhcp.lan.ndp='relay'
EOF
ipv6_dns_on
}

ipv6_half_mode

uci -q batch <<-EOF >/dev/null
commit dhcp
commit network
EOF

/etc/init.d/odhcpd reload
/etc/init.d/dnsmasq reload
/etc/init.d/network reload

echo "Done"

0 comments on commit 35a6d9c

Please sign in to comment.