update 2025-03-21 09:39:42
This commit is contained in:
parent
22499dcff6
commit
3661f7612a
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=easytier
|
||||
PKG_VERSION:=2.2.2
|
||||
PKG_VERSION:=2.2.4
|
||||
|
||||
ifeq ($(ARCH),mipsel)
|
||||
APP_ARCH:=mipsel
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_VERSION:=2.2.2
|
||||
PKG_VERSION:=2.2.4
|
||||
PKG_RELEASE:=
|
||||
|
||||
LUCI_TITLE:=LuCI support for EasyTier
|
||||
|
@ -27,6 +27,16 @@ if [ -f /etc/easytier/config.toml ] ; then
|
|||
echo "不重启设备之前再次安装luci-app-easytier 配置不丢失,不用重新配置"
|
||||
mv -f /etc/easytier/config.toml /tmp/config_backup.toml
|
||||
fi
|
||||
if [ -f /etc/easytier/et.db ] ; then
|
||||
echo "备份easytier数据库/etc/easytier/et.db到/tmp/et_backup.db"
|
||||
echo "不重启设备之前再次安装luci-app-easytier 配置不丢失,不用重新配置"
|
||||
mv -f /etc/easytier/et.db /tmp/et_backup.db
|
||||
fi
|
||||
if [ -f /etc/easytier/et_machine_id ] ; then
|
||||
echo "备份easytier UUID /etc/easytier/et_machine_id到/tmp/et_machine_id_backup"
|
||||
echo "不重启设备之前再次安装luci-app-easytier UUID不丢失,不用重新配置"
|
||||
mv -f /etc/easytier/et_machine_id /tmp/et_machine_id_backup
|
||||
fi
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/postinst
|
||||
|
@ -42,6 +52,16 @@ if [ -f /tmp/config_backup.toml ] ; then
|
|||
mv -f /tmp/config_backup.toml /etc/easytier/config.toml
|
||||
echo "请前往 VPN - EasyTier 界面进行重启插件"
|
||||
fi
|
||||
if [ -f /tmp/et_backup.db ] ; then
|
||||
echo "发现easytier备份数据库/tmp/et_backup.db,开始恢复到/etc/easytier/et.db"
|
||||
mv -f /tmp/et_backup.db /etc/easytier/et.db
|
||||
echo "请前往 VPN - EasyTier 界面进行重启插件"
|
||||
fi
|
||||
if [ -f /tmp/et_machine_id_backup ] ; then
|
||||
echo "发现easytier备份UUID /tmp/et_machine_id_backup,开始恢复到/etc/easytier/et.db"
|
||||
mv -f /tmp/et_machine_id_backup /etc/easytier/et_machine_id
|
||||
echo "请前往 VPN - EasyTier 界面进行重启插件"
|
||||
fi
|
||||
endef
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
|
|
@ -8,9 +8,12 @@ function index()
|
|||
|
||||
entry({"admin", "vpn", "easytier"}, alias("admin", "vpn", "easytier", "easytier"),_("EasyTier"), 46).dependent = true
|
||||
entry({"admin", "vpn", "easytier", "easytier"}, cbi("easytier"),_("EasyTier"), 47).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "easytier_log"}, form("easytier_log"),_("日志"), 48).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "easytier_log"}, form("easytier_log"),_("core日志"), 48).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "get_log"}, call("get_log")).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "clear_log"}, call("clear_log")).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "easytierweb_log"}, form("easytierweb_log"),_("web日志"), 49).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "get_wlog"}, call("get_wlog")).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "clear_wlog"}, call("clear_wlog")).leaf = true
|
||||
entry({"admin", "vpn", "easytier", "status"}, call("act_status")).leaf = true
|
||||
end
|
||||
|
||||
|
@ -18,29 +21,56 @@ function act_status()
|
|||
local e = {}
|
||||
local sys = require "luci.sys"
|
||||
e.crunning = luci.sys.call("pgrep easytier-core >/dev/null") == 0
|
||||
e.wrunning = luci.sys.call("pgrep easytier-web >/dev/null") == 0
|
||||
|
||||
local tagfile = io.open("/tmp/easytier_time", "r")
|
||||
if tagfile then
|
||||
local tagcontent = tagfile:read("*all")
|
||||
tagfile:close()
|
||||
if tagcontent and tagcontent ~= "" then
|
||||
os.execute("start_time=$(cat /tmp/easytier_time) && time=$(($(date +%s)-start_time)) && day=$((time/86400)) && [ $day -eq 0 ] && day='' || day=${day}天 && time=$(date -u -d @${time} +'%H小时%M分%S秒') && echo $day $time > /tmp/command_easytier 2>&1")
|
||||
local command_output_file = io.open("/tmp/command_easytier", "r")
|
||||
if command_output_file then
|
||||
e.etsta = command_output_file:read("*all")
|
||||
command_output_file:close()
|
||||
end
|
||||
end
|
||||
local tagcontent = tagfile:read("*all")
|
||||
tagfile:close()
|
||||
if tagcontent and tagcontent ~= "" then
|
||||
os.execute("start_time=$(cat /tmp/easytier_time) && time=$(($(date +%s)-start_time)) && day=$((time/86400)) && [ $day -eq 0 ] && day='' || day=${day}天 && time=$(date -u -d @${time} +'%H小时%M分%S秒') && echo $day $time > /tmp/command_easytier 2>&1")
|
||||
local command_output_file = io.open("/tmp/command_easytier", "r")
|
||||
if command_output_file then
|
||||
e.etsta = command_output_file:read("*all")
|
||||
command_output_file:close()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local command2 = io.popen('test ! -z "`pidof easytier-core`" && (top -b -n1 | grep -E "$(pidof easytier-core)" 2>/dev/null | grep -v grep | awk \'{for (i=1;i<=NF;i++) {if ($i ~ /easytier-core/) break; else cpu=i}} END {print $cpu}\')')
|
||||
e.etcpu = command2:read("*all")
|
||||
command2:close()
|
||||
|
||||
local command3 = io.popen("test ! -z `pidof easytier-core` && (cat /proc/$(pidof easytier-core | awk '{print $NF}')/status | grep -w VmRSS | awk '{printf \"%.2f MB\", $2/1024}')")
|
||||
e.etram = command3:read("*all")
|
||||
command3:close()
|
||||
|
||||
local wtagfile = io.open("/tmp/easytierweb_time", "r")
|
||||
if wtagfile then
|
||||
local wtagcontent = wtagfile:read("*all")
|
||||
wtagfile:close()
|
||||
if wtagcontent and wtagcontent ~= "" then
|
||||
os.execute("start_time=$(cat /tmp/easytierweb_time) && time=$(($(date +%s)-start_time)) && day=$((time/86400)) && [ $day -eq 0 ] && day='' || day=${day}天 && time=$(date -u -d @${time} +'%H小时%M分%S秒') && echo $day $time > /tmp/command_easytierweb 2>&1")
|
||||
local wcommand_output_file = io.open("/tmp/command_easytierweb", "r")
|
||||
if wcommand_output_file then
|
||||
e.etwebsta = wcommand_output_file:read("*all")
|
||||
wcommand_output_file:close()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local command4 = io.popen('test ! -z "`pidof easytier-web`" && (top -b -n1 | grep -E "$(pidof easytier-web)" 2>/dev/null | grep -v grep | awk \'{for (i=1;i<=NF;i++) {if ($i ~ /easytier-web/) break; else cpu=i}} END {print $cpu}\')')
|
||||
e.etwebcpu = command4:read("*all")
|
||||
command4:close()
|
||||
|
||||
local command5 = io.popen("test ! -z `pidof easytier-web` && (cat /proc/$(pidof easytier-web | awk '{print $NF}')/status | grep -w VmRSS | awk '{printf \"%.2f MB\", $2/1024}')")
|
||||
e.etwebram = command5:read("*all")
|
||||
command5:close()
|
||||
|
||||
local command8 = io.popen("([ -s /tmp/easytiernew.tag ] && cat /tmp/easytiernew.tag ) || ( curl -L -k -s --connect-timeout 3 --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' https://api.github.com/repos/EasyTier/EasyTier/releases/latest | grep tag_name | sed 's/[^0-9.]*//g' >/tmp/easytiernew.tag && cat /tmp/easytiernew.tag )")
|
||||
e.etnewtag = command8:read("*all")
|
||||
command8:close()
|
||||
|
||||
local command9 = io.popen("([ -s /tmp/easytier.tag ] && cat /tmp/easytier.tag ) || ( echo `$(uci -q get easytier.@easytier[0].easytierbin) -V | sed 's/^[^0-9]*//'` > /tmp/easytier.tag && cat /tmp/easytier.tag && [ ! -s /tmp/easytier.tag ] && echo '?' >> /tmp/easytier.tag && cat /tmp/easytier.tag )")
|
||||
e.ettag = command9:read("*all")
|
||||
command9:close()
|
||||
|
@ -64,6 +94,17 @@ function clear_log()
|
|||
luci.sys.call("echo '' >/tmp/easytier.log")
|
||||
end
|
||||
|
||||
function get_wlog()
|
||||
local log = ""
|
||||
local files = {"/tmp/easytierweb.log"}
|
||||
for i, file in ipairs(files) do
|
||||
if luci.sys.call("[ -f '" .. file .. "' ]") == 0 then
|
||||
log = log .. luci.sys.exec("cat " .. file)
|
||||
end
|
||||
end
|
||||
luci.http.write(log)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function clear_wlog()
|
||||
luci.sys.call("echo '' >/tmp/easytierweb.log")
|
||||
end
|
||||
|
|
|
@ -4,9 +4,9 @@ local nixio = require "nixio"
|
|||
m = Map("easytier")
|
||||
m.description = translate('一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。 项目地址:<a href="https://github.com/EasyTier/EasyTier">github.com/EasyTier/EasyTier</a> <a href="http://easytier.cn">官网文档</a> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=jhP2Z4UsEZ8wvfGPLrs0VwLKn_uz0Q_p&authKey=OGKSQLfg61YPCpVQuvx%2BxE7hUKBVBEVi9PljrDKbHlle6xqOXx8sOwPPTncMambK&noverify=0&group_code=949700262">QQ群</a> <a href="https://doc.oee.icu">菜鸟教程</a>')
|
||||
|
||||
-- easytier
|
||||
m:section(SimpleSection).template = "easytier/easytier_status"
|
||||
|
||||
-- easytier-core
|
||||
s=m:section(TypedSection, "easytier", translate("EasyTier配置"))
|
||||
s.addremove=false
|
||||
s.anonymous=true
|
||||
|
@ -28,14 +28,14 @@ btncq.write = function()
|
|||
end
|
||||
|
||||
etcmd = s:taboption("general",ListValue, "etcmd", translate("启动方式"),
|
||||
translate("默认使用命令行方式启动,也可以使用配置文件启动或<a href='https://easytier.cn/web'>WEB网页配置</a><br>切换启动方式后将以指定的方式启动,请谨慎选择"))
|
||||
translate("官方Web控制台:<a href='https://easytier.cn/web'>easytier.cn/web</a><br>官方配置文件生成器:<a href='https://easytier.cn/web/index.html#/config_generator'>easytier.cn/web/index.html#/config_generator</a><br>注意配置RPC端口为15888"))
|
||||
etcmd.default = "etcmd"
|
||||
etcmd:value("etcmd",translate("命令行"))
|
||||
etcmd:value("config",translate("配置文件"))
|
||||
etcmd:value("web",translate("WEB配置"))
|
||||
etcmd:value("web",translate("Web配置"))
|
||||
|
||||
et_config = s:taboption("general",TextValue, "et_config", translate("配置文件"),
|
||||
translate("配置文件在/etc/easytier/config.toml<br>命令行的启动参数和此配置文件的参数并不同步,请自行修改<br>配置文件介绍:<a href='https://easytier.rs/guide/network/config-file.html'>点此查看</a>"))
|
||||
translate("配置文件在/etc/easytier/config.toml<br>命令行的启动参数和此配置文件的参数不会同步<br>注意填写tun网卡名和端口用以自动防火墙放行"))
|
||||
et_config.rows = 18
|
||||
et_config.wrap = "off"
|
||||
et_config:depends("etcmd", "config")
|
||||
|
@ -53,8 +53,8 @@ et_config.write = function(self, section, value)
|
|||
nixio.fs.writefile(file, value:gsub("\r\n", "\n"))
|
||||
end
|
||||
|
||||
web_config = s:taboption("general", Value, "web_config", translate("WEB服务器地址"),
|
||||
translate("WEB配置服务器地址。(-w 参数)<br>自建WEB服务器 输入格式:udp://服务器地址:22020/账户名<br>官方WEB服务器 输入格式:账户名 <br>官方WEB服务器配置:<a href='https://easytier.cn/web'>点此</a>"))
|
||||
web_config = s:taboption("general", Value, "web_config", translate("Web服务器地址"),
|
||||
translate("Web配置服务器地址。(-w 参数)<br>自建Web服务器 输入格式:udp://服务器地址:22020/账户名<br>官方Web服务器 输入格式:账户名 <br>官方Web控制台:<a href='https://easytier.cn/web'>easytier.cn/web</a>"))
|
||||
web_config.placeholder = "admin"
|
||||
web_config:depends("etcmd", "web")
|
||||
|
||||
|
@ -63,9 +63,10 @@ network_name = s:taboption("general", Value, "network_name", translate("网络
|
|||
network_name.password = true
|
||||
network_name.placeholder = "test"
|
||||
network_name:depends("etcmd", "etcmd")
|
||||
network_name:depends("etcmd", "web")
|
||||
|
||||
network_secret = s:taboption("general", Value, "network_secret", translate("网络密钥"),
|
||||
translate("用于验证此节点是否属于 VPN 网络的网络密钥(--network-secret 参数)"))
|
||||
translate("网络密钥,用于验证此节点是否属于 VPN 网络(--network-secret 参数)"))
|
||||
network_secret.password = true
|
||||
network_secret.placeholder = "test"
|
||||
network_secret:depends("etcmd", "etcmd")
|
||||
|
@ -83,10 +84,9 @@ ipaddr:depends("etcmd", "etcmd")
|
|||
peeradd = s:taboption("general",DynamicList, "peeradd", translate("对等节点"),
|
||||
translate("初始连接的对等节点,和下方参数作用一样 (-p 参数)<br>公共服务器可用状态查询:<a href='https://easytier.gd.nkbpal.cn/status/easytier' target='_blank'>点此查询</a>"))
|
||||
peeradd.placeholder = "tcp://public.easytier.top:11010"
|
||||
peeradd:value("tcp://public.easytier.top:11010", translate("官方公共服务器-广东河源-tcp://public.easytier.top:11010"))
|
||||
peeradd:value("tcp://43.136.45.249:11010", translate("广州V4-tcp://43.136.45.249:11010"))
|
||||
peeradd:value("tcp://public.easytier.top:11010", translate("官方服务器-广东河源-tcp://public.easytier.top:11010"))
|
||||
peeradd:value("tcp://turn.hb.629957.xyz:11010", translate("湖北十堰电信V4-tcp://turn.hb.629957.xyz:11010"))
|
||||
peeradd:value("tcp://et.ie12vps.xyz:11010", translate("南京V4/V6-tcp://et.ie12vps.xyz:11010"))
|
||||
peeradd:value("tcp://minebg.top:11010", translate("广州V4-tcp://minebg.top:11010"))
|
||||
peeradd:value("tcp://ah.nkbpal.cn:11010", translate("安徽电信V4-tcp://ah.nkbpal.cn:11010"))
|
||||
peeradd:value("udp://ah.nkbpal.cn:11010", translate("安徽电信V4-udp://ah.nkbpal.cn:11010"))
|
||||
peeradd:value("wss://ah.nkbpal.cn:11012", translate("安徽电信V4-wss://ah.nkbpal.cn:11012"))
|
||||
|
@ -109,7 +109,7 @@ external_node = s:taboption("general", Value, "external_node", translate("共享
|
|||
translate("使用公共共享节点来发现对等节点,和上方参数作用一样 (-e 参数)"))
|
||||
external_node.default = ""
|
||||
external_node.placeholder = "tcp://public.easytier.top:11010"
|
||||
external_node:value("tcp://public.easytier.top:11010", translate("官方公共服务器-广东河源-tcp://public.easytier.top:11010"))
|
||||
external_node:value("tcp://public.easytier.top:11010", translate("官方服务器-广东河源-tcp://public.easytier.top:11010"))
|
||||
external_node:depends("etcmd", "etcmd")
|
||||
|
||||
proxy_network = s:taboption("general",DynamicList, "proxy_network", translate("子网代理"),
|
||||
|
@ -121,8 +121,9 @@ mapped_listeners = s:taboption("privacy",DynamicList, "mapped_listeners", transl
|
|||
mapped_listeners:depends("listenermode", "ON")
|
||||
|
||||
rpc_portal = s:taboption("privacy", Value, "rpc_portal", translate("门户地址端口"),
|
||||
translate("用于管理的 RPC 门户地址。0 表示随机端口,12345 表示监听本地主机的 12345 端口,0.0.0.0:12345 表示在所有接口上监听 12345 端口。默认值为 0,首选 15888 (-r 参数)"))
|
||||
translate("用于管理的 RPC 门户地址。0 表示随机端口,12345 表示监听本地主机的 12345 端口,0.0.0.0:12345 表示在所有接口上监听 12345 端口。<br>默认值为 0,建议选 15888 防止无法获取状态信息 (-r 参数)"))
|
||||
rpc_portal.placeholder = "15888"
|
||||
rpc_portal.default = "15888"
|
||||
rpc_portal.datatype = "range(1,65535)"
|
||||
rpc_portal:depends("etcmd", "etcmd")
|
||||
|
||||
|
@ -134,33 +135,33 @@ listenermode.default = "OFF"
|
|||
listenermode:depends("etcmd", "etcmd")
|
||||
|
||||
listener6 = s:taboption("general",Flag, "listener6", translate("同时监听IPV6"),
|
||||
translate("默认只监听IPV4,对等节点只能使用IPV4连接,启用后将同时监听IPV6,例如 -l tcp://[::]:11010"))
|
||||
translate("默认只监听IPV4,对等节点只能使用IPV4连接,启用后将同时监听IPV6端口"))
|
||||
listener6:depends("listenermode", "ON")
|
||||
listener6:depends("etcmd", "etcmd")
|
||||
|
||||
tcp_port = s:taboption("general",Value, "tcp_port", translate("tcp/udp端口"),
|
||||
translate("tcp/udp协议,端口号:11010,表示 tcp/udp 将在 11010 上监听 <br>如果是WEB配置请填写和WEB配置一样的监听端口用于防火墙放行"))
|
||||
translate("tcp/udp协议,端口号:11010,表示 tcp/udp 将在 11010 上监听 <br>如果是配置文件Web配置请填写一样的监听端口用于防火墙放行"))
|
||||
tcp_port.datatype = "range(1,65535)"
|
||||
tcp_port.default = "11010"
|
||||
tcp_port:depends("listenermode", "ON")
|
||||
tcp_port:depends("etcmd", "web")
|
||||
|
||||
ws_port = s:taboption("general",Value, "ws_port", translate("ws端口"),
|
||||
translate("ws协议,端口号:11011,表示 ws 将在 11011 上监听 <br>如果是WEB配置请填写和WEB配置一样的监听端口用于防火墙放行"))
|
||||
translate("ws协议,端口号:11011,表示 ws 将在 11011 上监听 <br>如果是配置文件Web配置请填写一样的监听端口用于防火墙放行"))
|
||||
ws_port.datatype = "range(1,65535)"
|
||||
ws_port.default = "11011"
|
||||
ws_port:depends("listenermode", "ON")
|
||||
ws_port:depends("etcmd", "web")
|
||||
|
||||
wss_port = s:taboption("general",Value, "wss_port", translate("wss端口"),
|
||||
translate("wss协议,端口号:11012,表示 wss 将在 11012 上监听 <br>如果是WEB配置请填写和WEB配置一样的监听端口用于防火墙放行"))
|
||||
translate("wss协议,端口号:11012,表示 wss 将在 11012 上监听 <br>如果是配置文件Web配置请填写一样的监听端口用于防火墙放行"))
|
||||
wss_port.datatype = "range(1,65535)"
|
||||
wss_port.default = "11012"
|
||||
wss_port:depends("listenermode", "ON")
|
||||
wss_port:depends("etcmd", "web")
|
||||
|
||||
wg_port = s:taboption("general",Value, "wg_port", translate("wg端口"),
|
||||
translate("wireguard协议,端口号:11011,表示 wg 将在 11011 上监听 <br>如果是WEB配置请填写和WEB配置一样的监听端口用于防火墙放行"))
|
||||
translate("wireguard协议,端口号:11011,表示 wg 将在 11011 上监听 <br>如果是配置文件Web配置请填写一样的监听端口用于防火墙放行"))
|
||||
wg_port.datatype = "range(1,65535)"
|
||||
wg_port.placeholder = "11011"
|
||||
wg_port:depends("listenermode", "ON")
|
||||
|
@ -179,9 +180,10 @@ desvice_name.default = device_name
|
|||
desvice_name:depends("etcmd", "etcmd")
|
||||
|
||||
instance_name = s:taboption("privacy",Value, "instance_name", translate("实例名称"),
|
||||
translate("用于在同一台机器中标识此 VPN 节点的实例名称 (--instance-name 参数)"))
|
||||
translate("用于在同一台机器中标识此 VPN 节点的实例名称,启用日志需要填写,web配置时填一样的instance_name名称 (-m 参数)"))
|
||||
instance_name.placeholder = "default"
|
||||
instance_name:depends("etcmd", "etcmd")
|
||||
instance_name:depends("etcmd", "web")
|
||||
|
||||
vpn_portal = s:taboption("privacy",Value, "vpn_portal", translate("VPN门户URL"),
|
||||
translate("定义 VPN 门户的 URL,允许其他 VPN 客户端连接。<br> 示例:wg://0.0.0.0:11011/10.14.14.0/24,表示 VPN 门户是一个在 vpn.example.com:11010 上监听的 WireGuard 服务器,并且 VPN 客户端位于 10.14.14.0/24 网络中(--vpn-portal 参数)"))
|
||||
|
@ -242,14 +244,16 @@ exit_nodes:depends("etcmd", "etcmd")
|
|||
|
||||
smoltcp = s:taboption("privacy",Flag, "smoltcp", translate("使用用户态协议栈"),
|
||||
translate("为子网代理启用smoltcp堆栈(--use-smoltcp 参数)"))
|
||||
smoltcp.rmempty = false
|
||||
smoltcp:depends("etcmd", "etcmd")
|
||||
|
||||
no_tun = s:taboption("privacy",Flag, "no_tun", translate("无tun模式"),
|
||||
translate("不创建TUN设备,可以使用子网代理访问节点( --no-tun 参数)"))
|
||||
no_tun.rmempty = false
|
||||
no_tun:depends("etcmd", "etcmd")
|
||||
|
||||
proxy_forward = s:taboption("privacy",Flag, "proxy_forward", translate("禁用内置NAT"),
|
||||
translate("通过系统内核转发子网代理数据包,禁用内置NAT( --proxy-forward-by-system 参数)"))
|
||||
proxy_forward:depends("etcmd", "etcmd")
|
||||
|
||||
manual_routes = s:taboption("privacy",DynamicList, "manual_routes", translate("路由CIDR"),
|
||||
translate("手动分配路由CIDR,将禁用子网代理和从对等节点传播的wireguard路由。(--manual-routes 参数)"))
|
||||
manual_routes.placeholder = "192.168.0.0/16"
|
||||
|
@ -257,7 +261,6 @@ manual_routes:depends("etcmd", "etcmd")
|
|||
|
||||
relay_network = s:taboption("privacy",Flag, "relay_network", translate("转发白名单网络的流量"),
|
||||
translate("仅转发白名单网络的流量,默认允许所有网络"))
|
||||
relay_network.rmempty = false
|
||||
relay_network:depends("etcmd", "etcmd")
|
||||
|
||||
whitelist = s:taboption("privacy",DynamicList, "whitelist", translate("白名单网络"),
|
||||
|
@ -272,45 +275,37 @@ socks_port:depends("etcmd", "etcmd")
|
|||
|
||||
disable_p2p = s:taboption("privacy",Flag, "disable_p2p", translate("禁用P2P"),
|
||||
translate("禁用P2P通信,只通过-p指定的节点转发数据包 ( --disable-p2p 参数)"))
|
||||
disable_p2p.rmempty = false
|
||||
disable_p2p:depends("etcmd", "etcmd")
|
||||
|
||||
disable_udp = s:taboption("privacy",Flag, "disable_udp", translate("禁用UDP"),
|
||||
translate("禁用UDP打洞功能( --disable-udp-hole-punching 参数)"))
|
||||
disable_udp.rmempty = false
|
||||
disable_udp:depends("etcmd", "etcmd")
|
||||
|
||||
relay_all = s:taboption("privacy",Flag, "relay_all", translate("允许转发"),
|
||||
translate("转发所有对等节点的RPC数据包,即使对等节点不在转发网络白名单中。<br>这可以帮助白名单外网络中的对等节点建立P2P连接。( -relay-all-peer-rpc 参数)"))
|
||||
relay_all.rmempty = false
|
||||
relay_all:depends("etcmd", "etcmd")
|
||||
|
||||
bind_device = s:taboption("privacy",Flag, "bind_device", translate("仅使用物理网卡"),
|
||||
translate("将连接器的套接字绑定到物理设备以避免路由问题。<br>比如子网代理网段与某节点的网段冲突,绑定物理设备后可以与该节点正常通信。( --bind-device 参数)"))
|
||||
bind_device.rmempty = false
|
||||
bind_device.default = "1"
|
||||
bind_device.default = "0"
|
||||
bind_device:depends("etcmd", "etcmd")
|
||||
|
||||
kcp_proxy = s:taboption("privacy",Flag, "kcp_proxy", translate("启用KCP代理"),
|
||||
translate("将TCP流量转为 KCP 流量,降低传输延迟,提升传输速度。<br>KCP 代理功能需要虚拟网内所有节点的 EasyTier 版本在 v2.2.0 以上。( --enable-kcp-proxy 参数)"))
|
||||
kcp_proxy.rmempty = false
|
||||
kcp_proxy:depends("etcmd", "etcmd")
|
||||
|
||||
kcp_input = s:taboption("privacy",Flag, "kcp_input", translate("禁用KCP输入"),
|
||||
translate("不允许其他节点使用 KCP 代理 TCP 流到此节点。<br>开启 KCP 代理的节点访问此节点时,依然使用原始。( --disable-kcp-input 参数)"))
|
||||
kcp_input.rmempty = false
|
||||
kcp_input:depends("etcmd", "etcmd")
|
||||
|
||||
log = s:taboption("general",ListValue, "log", translate("程序日志"),
|
||||
translate("运行日志在/tmp/easytier.log,可在上方日志查看<br>若启动失败,请前往 状态- 系统日志 查看具体启动失败日志<br>详细程度:警告<信息<调试<跟踪"))
|
||||
log.default = "info"
|
||||
log.default = "off"
|
||||
log:value("off",translate("关闭"))
|
||||
log:value("warn",translate("警告"))
|
||||
log:value("info",translate("信息"))
|
||||
log:value("debug",translate("调试"))
|
||||
log:value("trace",translate("跟踪"))
|
||||
log:depends("etcmd", "etcmd")
|
||||
log:depends("etcmd", "config")
|
||||
|
||||
et_forward = s:taboption("privacy",MultiValue, "et_forward", translate("访问控制"),
|
||||
translate("设置不同网络区域之间的流量允许规则"))
|
||||
|
@ -513,7 +508,7 @@ end
|
|||
|
||||
btnrm = s:taboption("infos", Button, "btnrm")
|
||||
btnrm.inputtitle = translate("检测更新")
|
||||
btnrm.description = translate("点击按钮开始检测更新,刷新上方状态栏显示")
|
||||
btnrm.description = translate("点击按钮开始检测更新,刷新上方状态栏版本显示")
|
||||
btnrm.inputstyle = "apply"
|
||||
btnrm.write = function()
|
||||
os.execute("rm -rf /tmp/easytier*.tag /tmp/easytier*.newtag /tmp/easytier-core_*")
|
||||
|
@ -523,6 +518,12 @@ end
|
|||
easytierbin = s:taboption("upload", Value, "easytierbin", translate("easytier-core程序路径"),
|
||||
translate("自定义easytier-core的存放路径,确保填写完整的路径及名称,若指定的路径可用空间不足将会自动移至/tmp/easytier-core"))
|
||||
easytierbin.placeholder = "/usr/bin/easytier-core"
|
||||
easytierbin.default = "/usr/bin/easytier-core"
|
||||
|
||||
webbin = s:taboption("upload", Value, "webbin", translate("easytier-web程序路径"),
|
||||
translate("自定义easytier-web的存放路径,确保填写完整的路径及名称,然后上传安装程序"))
|
||||
webbin.placeholder = "/usr/bin/easytier-web"
|
||||
webbin.default = "/usr/bin/easytier-web"
|
||||
|
||||
local upload = s:taboption("upload", FileUpload, "upload_file")
|
||||
upload.optional = true
|
||||
|
@ -561,12 +562,16 @@ http.setfilehandler(
|
|||
local extracted_dir = "/tmp/easytier-linux-*/"
|
||||
os.execute("mv " .. extracted_dir .. "easytier-cli /tmp/easytier-cli")
|
||||
os.execute("mv " .. extracted_dir .. "easytier-core /tmp/easytier-core")
|
||||
os.execute("mv " .. extracted_dir .. "easytier-core /tmp/easytier-web")
|
||||
if nixio.fs.access("/tmp/easytier-cli") then
|
||||
um.value = um.value .. "\n" .. translate("-程序/tmp/easytier-cli上传成功,重启一次插件才生效")
|
||||
end
|
||||
if nixio.fs.access("/tmp/easytier-core") then
|
||||
um.value = um.value .. "\n" .. translate("-程序/tmp/easytier-core上传成功,重启一次插件才生效")
|
||||
end
|
||||
if nixio.fs.access("/tmp/easytier-web") then
|
||||
um.value = um.value .. "\n" .. translate("-程序/tmp/easytier-web上传成功,重启一次插件才生效")
|
||||
end
|
||||
end
|
||||
if string.sub(meta.file, -7) == ".tar.gz" then
|
||||
local file_path = dir .. meta.file
|
||||
|
@ -574,15 +579,20 @@ http.setfilehandler(
|
|||
local extracted_dir = "/tmp/easytier-linux-*/"
|
||||
os.execute("mv " .. extracted_dir .. "easytier-cli /tmp/easytier-cli")
|
||||
os.execute("mv " .. extracted_dir .. "easytier-core /tmp/easytier-core")
|
||||
os.execute("mv " .. extracted_dir .. "easytier-core /tmp/easytier-web")
|
||||
if nixio.fs.access("/tmp/easytier-cli") then
|
||||
um.value = um.value .. "\n" .. translate("-程序/tmp/easytier-cli上传成功,重启一次插件才生效")
|
||||
end
|
||||
if nixio.fs.access("/tmp/easytier-core") then
|
||||
um.value = um.value .. "\n" .. translate("-程序/tmp/easytier-core上传成功,重启一次插件才生效")
|
||||
end
|
||||
if nixio.fs.access("/tmp/easytier-web") then
|
||||
um.value = um.value .. "\n" .. translate("-程序/tmp/easytier-web上传成功,重启一次插件才生效")
|
||||
end
|
||||
end
|
||||
os.execute("chmod +x /tmp/easytier-core")
|
||||
os.execute("chmod +x /tmp/easytier-cli")
|
||||
os.execute("chmod +x /tmp/easytier-cli")
|
||||
os.execute("chmod +x /tmp/easytier-web")
|
||||
end
|
||||
end
|
||||
)
|
||||
|
@ -590,4 +600,57 @@ if luci.http.formvalue("upload") then
|
|||
local f = luci.http.formvalue("ulfile")
|
||||
end
|
||||
|
||||
-- easytier-web
|
||||
s=m:section(TypedSection, "easytierweb", translate("自建Web服务器"))
|
||||
s.addremove=false
|
||||
s.anonymous=true
|
||||
|
||||
switch = s:option(Flag, "enabled", translate("Enable"))
|
||||
switch.rmempty = false
|
||||
|
||||
btncq = s:option(Button, "btncq", translate("重启"))
|
||||
btncq.inputtitle = translate("重启")
|
||||
btncq.description = translate("在没有修改参数的情况下快速重新启动一次")
|
||||
btncq.inputstyle = "apply"
|
||||
btncq:depends("enabled", "1")
|
||||
btncq.write = function()
|
||||
luci.sys.call("/etc/init.d/easytier restart >/dev/null 2>&1 &") -- 执行重启命令
|
||||
end
|
||||
|
||||
db_path = s:option(Value, "db_path", translate("数据库文件路径"),
|
||||
translate(" sqlite3 数据库文件路径, 用于保存所有数据。( -d 参数)"))
|
||||
db_path.default = "/etc/easytier/et.db"
|
||||
db_path:depends("enabled", "1")
|
||||
|
||||
web_protocol = s:option(ListValue, "web_protocol", translate("监听协议"),
|
||||
translate("配置服务器的监听协议,用于被 easytier-core 连接。( -p 参数)"))
|
||||
web_protocol.default = "udp"
|
||||
web_protocol:value("udp",translate("UDP"))
|
||||
web_protocol:value("tcp",translate("TCP"))
|
||||
web_protocol:depends("enabled", "1")
|
||||
|
||||
web_port = s:option(Value, "web_port", translate("服务端口"),
|
||||
translate("配置服务器的监听端口,用于被 easytier-core 连接。( -c 参数)"))
|
||||
web_port.datatype = "range(1,65535)"
|
||||
web_port.placeholder = "22020"
|
||||
web_port.default = "22020"
|
||||
web_port:depends("enabled", "1")
|
||||
|
||||
api_port = s:option(Value, "api_port", translate("API端口"),
|
||||
translate("restful 服务器的监听端口,作为 ApiHost 并被 web 前端使用。( -a 参数)"))
|
||||
api_port.datatype = "range(1,65535)"
|
||||
api_port.placeholder = "11211"
|
||||
api_port.default = "11211"
|
||||
api_port:depends("enabled", "1")
|
||||
|
||||
weblog = s:option(ListValue, "weblog", translate("程序日志"),
|
||||
translate("运行日志在/tmp/easytierweb.log,可在上方日志查看<br>若启动失败,请前往 状态- 系统日志 查看具体启动失败日志<br>详细程度:警告<信息<调试<跟踪"))
|
||||
weblog.default = "off"
|
||||
weblog:value("off",translate("关闭"))
|
||||
weblog:value("warn",translate("警告"))
|
||||
weblog:value("info",translate("信息"))
|
||||
weblog:value("debug",translate("调试"))
|
||||
weblog:value("trace",translate("跟踪"))
|
||||
weblog:depends("enabled", "1")
|
||||
|
||||
return m
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
f = SimpleForm("easytier")
|
||||
f.reset = false
|
||||
f.submit = false
|
||||
f:append(Template("easytier/easytierweb_log"))
|
||||
return f
|
|
@ -1,16 +1,27 @@
|
|||
|
||||
<%
|
||||
local uci = require 'luci.model.uci'.cursor()
|
||||
protocol="http://"
|
||||
%>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[vpn]], [[easytier]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var st = document.getElementById('easytier_status');
|
||||
if (data && st) {
|
||||
var clientStatus = data.crunning ? "<span style='color:green;'> 运行中</span><img src='https://www.right.com.cn/forum/data/attachment/album/202401/30/081238k459q2d5klacs8rk.gif' width='30px' alt=''>" : "<span style='color:red;'> 未运行</span>";
|
||||
var etstaContent = data.crunning ? "已运行:" + "<span style='color:#DA70D6;'>" + data.etsta + "</span>" : "";
|
||||
var etcpuContent = data.crunning ? "<br>" + "CPU占用:" + "<span style='color:#6A5ACD;'>" + data.etcpu + "</span>" : "";
|
||||
var etstaContent = data.crunning ? "已运行:" + "<span style='color:#DA70D6;'>" + data.etsta + "</span>" : "";
|
||||
var etcpuContent = data.crunning ? "<br>" + " CPU占用:" + "<span style='color:#6A5ACD;'>" + data.etcpu + "</span>" : "";
|
||||
var etramContent = data.crunning ? " " + " 内存占用:" + "<span style='color:#0000CD;'>" + data.etram + "</span>" : "";
|
||||
var ettagContent = data.crunning ? "<br>" + "当前版本:" + "<span style='color:#CD853F;'>" + data.ettag + "</span>" : "";
|
||||
var ettagContent = data.crunning ? "<br>" + " 当前版本:" + "<span style='color:#CD853F;'>" + data.ettag + "</span>" : "";
|
||||
var etnewtagContent = data.crunning ? " " + " 最新版本:" + "<span style='color:#FFA500;'>" + data.etnewtag + "</span>" : "";
|
||||
st.innerHTML = "<em><b>easytier-core " + clientStatus + etstaContent + etcpuContent + etramContent + ettagContent + etnewtagContent + "</b></em>";
|
||||
|
||||
var webStatus = data.wrunning ? "<span style='color:green;'> 运行中</span><img src='https://www.right.com.cn/forum/data/attachment/album/202401/30/081238k459q2d5klacs8rk.gif' width='30px' alt=''>" : "<span style='color:red;'> 未运行</span>";
|
||||
var etwebstaContent = data.wrunning ? "已运行:" + "<span style='color:#DA70D6;'>" + data.etwebsta + "</span>" : "";
|
||||
var etwebcpuContent = data.wrunning ? "<br>" + " CPU占用:" + "<span style='color:#6A5ACD;'>" + data.etwebcpu + "</span>" : "";
|
||||
var etwebramContent = data.wrunning ? " " + " 内存占用:" + "<span style='color:#0000CD;'>" + data.etwebram + "</span>" : "";
|
||||
var etwtagContent = data.wrunning ? "<br>" + " 当前版本:" + "<span style='color:#CD853F;'>" + data.ettag + "</span>" : "";
|
||||
var etwnewtagContent = data.wrunning ? " " + " 最新版本:" + "<span style='color:#FFA500;'>" + data.etnewtag + "</span>" : "";
|
||||
var etwebContent = " " + "<input class=\"cbi-button cbi-button-reload mar-10\" type=\"button\" value=\" <%:Web 控制台%> \" onclick=\"window.open('<%=protocol%>" + window.location.hostname + "/" + "et.html" + "')\"/>";
|
||||
st.innerHTML = "<em><b>easytier-core " + clientStatus + etstaContent + etcpuContent + etramContent + ettagContent + etnewtagContent + "</b></em><br><br><em><b>easytier-web " + webStatus + etwebstaContent + etwebcpuContent + etwebramContent + etwtagContent + etwnewtagContent + etwebContent + "</b></em>";
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<%
|
||||
local dsp = require "luci.dispatcher"
|
||||
-%>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
function clearlog(btn) {
|
||||
XHR.get('<%=dsp.build_url("admin/vpn/easytier/clear_wlog")%>', null,
|
||||
function(x, data) {
|
||||
if(x && x.status == 200) {
|
||||
var log_textarea = document.getElementById('log_textarea');
|
||||
log_textarea.innerHTML = "";
|
||||
log_textarea.scrollTop = log_textarea.scrollHeight;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
XHR.poll(2, '<%=dsp.build_url("admin/vpn/easytier/get_wlog")%>', null,
|
||||
function(x, data) {
|
||||
if(x && x.status == 200 && document.getElementById("checkbox1").checked == true) {
|
||||
var log_textarea = document.getElementById('log_textarea');
|
||||
log_textarea.innerHTML = x.responseText;
|
||||
log_textarea.scrollTop = log_textarea.scrollHeight;
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]>
|
||||
</script>
|
||||
<fieldset class="cbi-section" id="_log_fieldset">
|
||||
<input type="checkbox" id="checkbox1" style="vertical-align:middle;height: auto;"checked><%:自动刷新%></input>
|
||||
<input class="cbi-button cbi-input-remove" type="button" onclick="clearlog()" value="<%:清除日志%>" />
|
||||
<textarea id="log_textarea" class="cbi-input-textarea" style="width: 100%;margin-top: 10px;" data-update="change" rows="30" wrap="off" readonly="readonly"></textarea>
|
||||
</fieldset>
|
|
@ -2,3 +2,6 @@
|
|||
config easytier
|
||||
option enabled '0'
|
||||
option easytierbin '/usr/bin/easytier-core'
|
||||
|
||||
config easytierweb
|
||||
option enabled '0'
|
||||
|
|
|
@ -92,7 +92,7 @@ check_bin() {
|
|||
tag="$( curl -k --connect-timeout 3 --user-agent "$user_agent" https://api.github.com/repos/EasyTier/EasyTier/releases/latest 2>&1 | grep 'tag_name' | cut -d\" -f4 )"
|
||||
[ -z "$tag" ] && tag="$( curl -Lk --connect-timeout 3 --user-agent "$user_agent" -s https://api.github.com/repos/EasyTier/EasyTier/releases/latest 2>&1 | grep 'tag_name' | cut -d\" -f4 )"
|
||||
fi
|
||||
[ -z "$tag"] && tag=v2.1.1
|
||||
[ -z "$tag"] && tag=v2.2.4
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 未找到程序 $easytierbin 开始在线下载${tag},下载较慢耐心等候" >>/tmp/easytier.log
|
||||
mkdir -p "$path"
|
||||
for proxy in $proxys ; do
|
||||
|
@ -267,6 +267,7 @@ get_etconfig() {
|
|||
bind_device="$(uci -q get easytier.@easytier[0].bind_device || echo 1)"
|
||||
kcp_proxy="$(uci -q get easytier.@easytier[0].kcp_proxy || echo 0)"
|
||||
kcp_input="$(uci -q get easytier.@easytier[0].kcp_input || echo 0)"
|
||||
proxy_forward="$(uci -q get easytier.@easytier[0].proxy_forward || echo 0)"
|
||||
}
|
||||
|
||||
set_firewall() {
|
||||
|
@ -378,7 +379,6 @@ set_firewall() {
|
|||
}
|
||||
|
||||
start_et() {
|
||||
[ "$(uci -q get easytier.@easytier[0].enabled)" = "1" ] || return 1
|
||||
easytierbin="$(uci -q get easytier.@easytier[0].easytierbin)"
|
||||
[ -z "$easytierbin" ] && easytierbin="/usr/bin/easytier-core" && uci -q set easytier.@easytier[0].easytierbin=/usr/bin/easytier-core
|
||||
etcmd="$(uci -q get easytier.@easytier[0].etcmd)"
|
||||
|
@ -390,127 +390,133 @@ start_et() {
|
|||
ver="$($easytierbin -V | awk {'print $2'} | tr -d '~')"
|
||||
[ ! -z "$ver" ] && echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : ${easytierbin}当前版本号-${ver} " >>/tmp/easytier.log
|
||||
pgrep -f easytier_check | xargs kill -9 >/dev/null 2>&1
|
||||
pgrep -f easytier_checklog | xargs kill -9 >/dev/null 2>&1
|
||||
|
||||
ps | grep 'easytier-core' | grep -v grep | awk '{print $1}' | xargs kill >/dev/null 2>&1
|
||||
ps | grep 'easytier-core' | grep -v grep | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1
|
||||
if [ "$etcmd" = "config" ] ; then
|
||||
check_config
|
||||
else
|
||||
get_etconfig
|
||||
procd_open_instance
|
||||
procd_set_param command "$easytierbin"
|
||||
if [ "$etcmd" = "etcmd" ] ; then
|
||||
[ -z "$network_name" ] || procd_append_param command --network-name "$network_name"
|
||||
[ -z "$network_secret" ] || procd_append_param command --network-secret "$network_secret"
|
||||
[ -z "$ipaddr" ] || procd_append_param command -i "$ipaddr"
|
||||
[ "$ip_dhcp" = "0" ] || procd_append_param command -d
|
||||
if [ ! -z "$peeradd" ] ; then
|
||||
if [[ "$(grep "list peeradd" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command -p "$peeradd"
|
||||
else
|
||||
for peeraddr in $(cat /etc/config/easytier | grep 'list peeradd' | awk -F 'list peeradd' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command -p "$peeraddr"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$proxy_network" ] ; then
|
||||
if [[ "$(grep "list proxy_network" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command -n "$proxy_network"
|
||||
else
|
||||
for proxy_networks in $(cat /etc/config/easytier | grep 'list proxy_network' | awk -F 'list proxy_network' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command -n "$proxy_networks"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$exit_nodes" ] ; then
|
||||
if [[ "$(grep "list exit_nodes" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --exit-nodes "$exit_nodes"
|
||||
else
|
||||
for exit_nodeadds in $(cat /etc/config/easytier | grep 'list exit_nodes' | awk -F 'list exit_nodes' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --exit-nodes "$exit_nodeadds"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$manual_routes" ] ; then
|
||||
if [[ "$(grep "list manual_routes" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --manual-routes "$manual_routes"
|
||||
else
|
||||
for manual_routeadds in $(cat /etc/config/easytier | grep 'list manual_routes' | awk -F 'list manual_routes' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --manual-routes "$manual_routeadds"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$whitelist" ] ; then
|
||||
if [[ "$(grep "list whitelist" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --relay-network-whitelist "$whitelist"
|
||||
else
|
||||
for whitelists in $(cat /etc/config/easytier | grep 'list whitelist' | awk -F 'list whitelist' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --relay-network-whitelist "$whitelists"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$mapped_listeners" ] ; then
|
||||
if [[ "$(grep "list mapped_listeners" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --mapped-listeners "$mapped_listeners"
|
||||
else
|
||||
for mapped_listener in $(cat /etc/config/easytier | grep 'list mapped_listeners' | awk -F 'list whitelist' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --mapped-listeners "$mapped_listener"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
[ -z "$rpc_portal" ] || procd_append_param command -r "$rpc_portal"
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "tcp:$tcp_port"
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "udp:$tcp_port"
|
||||
[ -z "$ws_port" ] || procd_append_param command -l "ws:$ws_port"
|
||||
[ -z "$wss_port" ] || procd_append_param command -l "wss:$wss_port"
|
||||
[ -z "$wg_port" ] || procd_append_param command -l "wg:$wg_port"
|
||||
if [ "$listener6" = "1" ] ; then
|
||||
if [ -z "$tcp_port" ] && [ -z "$ws_port" ] && [ -z "$wss_port" ] && [ -z "$wg_port" ] ; then
|
||||
tcp_port="11010"
|
||||
ws_port="11011"
|
||||
wss_port="11012"
|
||||
wg_port="11011"
|
||||
fi
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "tcp://[::]:$tcp_port"
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "udp://[::]:$tcp_port"
|
||||
[ -z "$ws_port" ] || procd_append_param command -l "ws://[::]:$ws_port"
|
||||
[ -z "$wss_port" ] || procd_append_param command -l "wss://[::]:$wss_port"
|
||||
[ -z "$wg_port" ] || procd_append_param command -l "wg://[::]:$wg_port"
|
||||
fi
|
||||
[ -z "$external_node" ] || procd_append_param command -e "$external_node"
|
||||
[ "$listenermode" = "ON" ] || procd_append_param command --no-listener
|
||||
[ -z "$desvice_name" ] || procd_append_param command --hostname "$desvice_name"
|
||||
[ -z "$instance_name" ] || procd_append_param command -m "$instance_name"
|
||||
[ -z "$vpn_portal" ] || procd_append_param command --vpn-portal "$vpn_portal"
|
||||
[ -z "$mtu" ] || procd_append_param command --mtu "$mtu"
|
||||
[ "$default_protocol" = "-" ] || procd_append_param command --default-protocol "$default_protocol"
|
||||
[ -z "$tunname" ] || procd_append_param command --dev-name "$tunname"
|
||||
[ "$disable_encryption" = "0" ] || procd_append_param command -u
|
||||
[ "$multi_thread" = "0" ] || procd_append_param command --multi-thread
|
||||
[ "$no_tun" = "0" ] || procd_append_param command --no-tun
|
||||
[ "$smoltcp" = "0" ] || procd_append_param command --use-smoltcp
|
||||
[ "$disable_ipv6" = "0" ] || procd_append_param command --disable-ipv6
|
||||
[ "$latency_first" = "0" ] || procd_append_param command --latency-first
|
||||
[ "$exit_node" = "0" ] || procd_append_param command --enable-exit-node
|
||||
[ "$log" = "off" ] || procd_append_param command --file-log-level "$log"
|
||||
[ "$log" = "off" ] || procd_append_param command --file-log-dir "/tmp"
|
||||
[ "$log" = "off" ] && procd_append_param command --file-log-level "off"
|
||||
[ "$disable_p2p" = "0" ] || procd_append_param command --disable-p2p
|
||||
[ "$disable_udp" = "0" ] || procd_append_param command --disable-udp-hole-punching
|
||||
[ "$relay_all" = "0" ] || procd_append_param command --relay-all-peer-rpc
|
||||
[ -z "$socks_port" ] || procd_append_param command --socks5 "$socks_port"
|
||||
[ "$comp" = "none" ] || procd_append_param command --compression "$comp"
|
||||
[ "$bind_device" = "0" ] || procd_append_param command --bind-device true
|
||||
[ "$bind_device" = "1" ] || procd_append_param command --bind-device false
|
||||
[ "$kcp_proxy" = "0" ] || procd_append_param command --enable-kcp-proxy
|
||||
[ "$kcp_input" = "0" ] || procd_append_param command --disable-kcp-input
|
||||
fi
|
||||
if [ "$etcmd" = "web" ] ; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 运行 ${easytierbin} -w ${web_config}" >>/tmp/easytier.log
|
||||
[ -z "$web_config" ] || procd_append_param command -w "$web_config"
|
||||
fi
|
||||
if [ "$etcmd" = "config" ] ; then
|
||||
check_config
|
||||
else
|
||||
get_etconfig
|
||||
procd_open_instance "easytier_core"
|
||||
procd_set_param command "$easytierbin"
|
||||
if [ "$etcmd" = "etcmd" ] ; then
|
||||
[ -z "$network_name" ] || procd_append_param command --network-name "$network_name"
|
||||
[ -z "$network_secret" ] || procd_append_param command --network-secret "$network_secret"
|
||||
[ -z "$ipaddr" ] || procd_append_param command -i "$ipaddr"
|
||||
[ "$ip_dhcp" = "0" ] || procd_append_param command -d
|
||||
if [ ! -z "$peeradd" ] ; then
|
||||
if [[ "$(grep "list peeradd" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command -p "$peeradd"
|
||||
else
|
||||
for peeraddr in $(cat /etc/config/easytier | grep 'list peeradd' | awk -F 'list peeradd' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command -p "$peeraddr"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$proxy_network" ] ; then
|
||||
if [[ "$(grep "list proxy_network" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command -n "$proxy_network"
|
||||
else
|
||||
for proxy_networks in $(cat /etc/config/easytier | grep 'list proxy_network' | awk -F 'list proxy_network' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command -n "$proxy_networks"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$exit_nodes" ] ; then
|
||||
if [[ "$(grep "list exit_nodes" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --exit-nodes "$exit_nodes"
|
||||
else
|
||||
for exit_nodeadds in $(cat /etc/config/easytier | grep 'list exit_nodes' | awk -F 'list exit_nodes' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --exit-nodes "$exit_nodeadds"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$manual_routes" ] ; then
|
||||
if [[ "$(grep "list manual_routes" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --manual-routes "$manual_routes"
|
||||
else
|
||||
for manual_routeadds in $(cat /etc/config/easytier | grep 'list manual_routes' | awk -F 'list manual_routes' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --manual-routes "$manual_routeadds"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$whitelist" ] ; then
|
||||
if [[ "$(grep "list whitelist" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --relay-network-whitelist "$whitelist"
|
||||
else
|
||||
for whitelists in $(cat /etc/config/easytier | grep 'list whitelist' | awk -F 'list whitelist' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --relay-network-whitelist "$whitelists"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$mapped_listeners" ] ; then
|
||||
if [[ "$(grep "list mapped_listeners" /etc/config/easytier | awk '{print $3}' | wc -l ) " -eq 1 ]]; then
|
||||
procd_append_param command --mapped-listeners "$mapped_listeners"
|
||||
else
|
||||
for mapped_listener in $(cat /etc/config/easytier | grep 'list mapped_listeners' | awk -F 'list whitelist' '{print $2}' | sed "s/'/\n/g" | tr -d " ' "); do
|
||||
procd_append_param command --mapped-listeners "$mapped_listener"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
[ -z "$rpc_portal" ] || procd_append_param command -r "$rpc_portal"
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "tcp:$tcp_port"
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "udp:$tcp_port"
|
||||
[ -z "$ws_port" ] || procd_append_param command -l "ws:$ws_port"
|
||||
[ -z "$wss_port" ] || procd_append_param command -l "wss:$wss_port"
|
||||
[ -z "$wg_port" ] || procd_append_param command -l "wg:$wg_port"
|
||||
if [ "$listener6" = "1" ] ; then
|
||||
if [ -z "$tcp_port" ] && [ -z "$ws_port" ] && [ -z "$wss_port" ] && [ -z "$wg_port" ] ; then
|
||||
tcp_port="11010"
|
||||
ws_port="11011"
|
||||
wss_port="11012"
|
||||
wg_port="11011"
|
||||
fi
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "tcp://[::]:$tcp_port"
|
||||
[ -z "$tcp_port" ] || procd_append_param command -l "udp://[::]:$tcp_port"
|
||||
[ -z "$ws_port" ] || procd_append_param command -l "ws://[::]:$ws_port"
|
||||
[ -z "$wss_port" ] || procd_append_param command -l "wss://[::]:$wss_port"
|
||||
[ -z "$wg_port" ] || procd_append_param command -l "wg://[::]:$wg_port"
|
||||
fi
|
||||
[ -z "$external_node" ] || procd_append_param command -e "$external_node"
|
||||
[ "$listenermode" = "ON" ] || procd_append_param command --no-listener
|
||||
[ -z "$desvice_name" ] || procd_append_param command --hostname "$desvice_name"
|
||||
[ -z "$instance_name" ] || procd_append_param command -m "$instance_name"
|
||||
[ -z "$vpn_portal" ] || procd_append_param command --vpn-portal "$vpn_portal"
|
||||
[ -z "$mtu" ] || procd_append_param command --mtu "$mtu"
|
||||
[ "$default_protocol" = "-" ] || procd_append_param command --default-protocol "$default_protocol"
|
||||
[ -z "$tunname" ] || procd_append_param command --dev-name "$tunname"
|
||||
[ "$disable_encryption" = "0" ] || procd_append_param command -u
|
||||
[ "$multi_thread" = "0" ] || procd_append_param command --multi-thread
|
||||
[ "$no_tun" = "0" ] || procd_append_param command --no-tun
|
||||
[ "$smoltcp" = "0" ] || procd_append_param command --use-smoltcp
|
||||
[ "$disable_ipv6" = "0" ] || procd_append_param command --disable-ipv6
|
||||
[ "$latency_first" = "0" ] || procd_append_param command --latency-first
|
||||
[ "$exit_node" = "0" ] || procd_append_param command --enable-exit-node
|
||||
[ "$log" = "off" ] || procd_append_param command --file-log-level "$log"
|
||||
[ "$log" = "off" ] || procd_append_param command --file-log-dir "/tmp"
|
||||
[ "$log" = "off" ] && procd_append_param command --file-log-level "off"
|
||||
[ "$disable_p2p" = "0" ] || procd_append_param command --disable-p2p
|
||||
[ "$disable_udp" = "0" ] || procd_append_param command --disable-udp-hole-punching
|
||||
[ "$relay_all" = "0" ] || procd_append_param command --relay-all-peer-rpc
|
||||
[ -z "$socks_port" ] || procd_append_param command --socks5 "$socks_port"
|
||||
[ "$comp" = "none" ] || procd_append_param command --compression "$comp"
|
||||
[ "$bind_device" = "0" ] || procd_append_param command --bind-device true
|
||||
[ "$bind_device" = "1" ] || procd_append_param command --bind-device false
|
||||
[ "$kcp_proxy" = "0" ] || procd_append_param command --enable-kcp-proxy
|
||||
[ "$kcp_input" = "0" ] || procd_append_param command --disable-kcp-input
|
||||
[ "$proxy_forward" = "0" ] || procd_append_param command --proxy-forward-by-system
|
||||
fi
|
||||
if [ "$etcmd" = "web" ] ; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 运行 ${easytierbin} -w ${web_config}" >>/tmp/easytier.log
|
||||
[ -f /etc/easytier/et_machine_id ] || touch /etc/easytier/et_machine_id
|
||||
idpath=$(dirname "$easytierbin")
|
||||
[ -f "${idpath}/et_machine_id" ] || ln -sf /etc/easytier/et_machine_id ${idpath}/et_machine_id
|
||||
[ -z "$web_config" ] || procd_append_param command -w "$web_config"
|
||||
[ "$log" = "off" ] || procd_append_param command --file-log-level "$log"
|
||||
[ "$log" = "off" ] || procd_append_param command --file-log-dir "/tmp"
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
[ ! -z "$instance_name" ] && ln -sf /tmp/easytier-${instance_name}.${date_time}.log /tmp/easytier.log
|
||||
|
||||
procd_set_param limits core="unlimited"
|
||||
|
@ -532,13 +538,13 @@ start_et() {
|
|||
uci set firewall.easytier_socks5.enabled="1"
|
||||
fi
|
||||
if [ "$listenermode" = "ON" ] || [ "$etcmd" = "web" ] ; then
|
||||
if [ -z "$tcp_port" ] && [ -z "$ws_port" ] && [ -z "$wss_port" ] && [ -z "$wg_port" ] ; then
|
||||
tcp_port="11010"
|
||||
ws_port="11011"
|
||||
wss_port="11012"
|
||||
wg_port="11011"
|
||||
fi
|
||||
set_firewall
|
||||
if [ -z "$tcp_port" ] && [ -z "$ws_port" ] && [ -z "$wss_port" ] && [ -z "$wg_port" ] ; then
|
||||
tcp_port="11010"
|
||||
ws_port="11011"
|
||||
wss_port="11012"
|
||||
wg_port="11011"
|
||||
fi
|
||||
set_firewall
|
||||
fi
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 重载防火墙和网络配置...会出现短暂断网现象... " >>/tmp/easytier.log
|
||||
[ -n "$(uci changes network)" ] && uci commit network && /etc/init.d/network reload >/dev/null 2>&1
|
||||
|
@ -546,6 +552,12 @@ start_et() {
|
|||
[ -z "$proxy_network" ] || sysctl -w net.ipv4.ip_forward=1 >/dev/null 2>&1
|
||||
[ ! -z "$checkip" ] && check
|
||||
echo `date +%s` > /tmp/easytier_time
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 启动完成,若启动失败,请前往 状态 - 系统日志 找到easytier相关的字眼查看启动失败的原因 " >>/tmp/easytier.log
|
||||
}
|
||||
|
||||
start_log() {
|
||||
if [ "$(uci -q get easytier.@easytierweb[0].enabled)" = "1" ] || [ "$(uci -q get easytier.@easytier[0].enabled)" = "1" ] ; then
|
||||
pgrep -f easytier_checklog | xargs kill -9 >/dev/null 2>&1
|
||||
echo "" >/tmp/easytier_checklog
|
||||
|
||||
cat > /tmp/easytier_checklog<<'EOF'
|
||||
|
@ -555,7 +567,10 @@ while true; do
|
|||
|
||||
sleep 120
|
||||
if [ "$(find /tmp -type f -name "easytier-*.*.log" -size +2000k -exec sh -c 'echo -n > {}; echo found' \;)" = "found" ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 日志文件超过2M 清空... " >/tmp/easytier.log
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : core日志文件超过2M 清空... " >/tmp/easytier.log
|
||||
fi
|
||||
if [ "$(find /tmp -type f -name "easytier.*.log" -size +2000k -exec sh -c 'echo -n > {}; echo found' \;)" = "found" ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : web日志文件超过2M 清空... " >/tmp/easytierweb.log
|
||||
fi
|
||||
done
|
||||
EOF
|
||||
|
@ -564,25 +579,85 @@ EOF
|
|||
procd_set_param respawn
|
||||
procd_set_param command /tmp/easytier_checklog
|
||||
procd_close_instance
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 启动完成,若启动失败,请前往 状态 - 系统日志 找到easytier相关的字眼查看启动失败的原因 " >>/tmp/easytier.log
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
start_web() {
|
||||
webbin="$(uci -q get easytier.@easytier[0].webbin)"
|
||||
if [ -f "$webbin" ] ; then
|
||||
[ ! -x "$webbin" ] && chmod +x "$webbin"
|
||||
fi
|
||||
if [ ! -f "$webbin" ] || [ "$($webbin -h 2>&1 | wc -l)" -lt 3 ] ; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 未找到${webbin}程序或程序不适配当前架构,请上传安装后再启动! " >>/tmp/easytierweb.log
|
||||
return 1
|
||||
fi
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 开始启动${webbin} " >>/tmp/easytierweb.log
|
||||
db_path="$(uci -q get easytier.@easytierweb[0].db_path)"
|
||||
web_protocol="$(uci -q get easytier.@easytierweb[0].web_protocol)"
|
||||
web_port="$(uci -q get easytier.@easytierweb[0].web_port)"
|
||||
api_port="$(uci -q get easytier.@easytierweb[0].api_port)"
|
||||
weblog="$(uci -q get easytier.@easytierweb[0].weblog)"
|
||||
procd_open_instance "easytier_web"
|
||||
procd_set_param command "$webbin"
|
||||
[ -z "$db_path" ] || procd_append_param command -d "$db_path"
|
||||
[ -z "$web_protocol" ] || procd_append_param command -p "$web_protocol"
|
||||
[ -z "$web_port" ] || procd_append_param command -c "$web_port"
|
||||
[ -z "$api_port" ] || procd_append_param command -a "$api_port"
|
||||
if [ "$weblog" != "off" ] ; then
|
||||
procd_append_param command --file-log-dir /tmp
|
||||
procd_append_param command --file-log-level "$weblog"
|
||||
fi
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_set_param respawn
|
||||
procd_close_instance
|
||||
if [ ! -z "$web_port" ] ; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 添加防火墙规则 easytier_web 放行服务端口 ${web_port} " >>/tmp/easytier.log
|
||||
uci -q delete firewall.easytier_webserver
|
||||
uci set firewall.easytier_webserver=rule
|
||||
uci set firewall.easytier_webserver.name="easytier_webserver"
|
||||
uci set firewall.easytier_webserver.target="ACCEPT"
|
||||
uci set firewall.easytier_webserver.src="wan"
|
||||
uci set firewall.easytier_webserver.proto="all"
|
||||
uci set firewall.easytier_webserver.dest_port="$web_port"
|
||||
uci set firewall.easytier_webserver.enabled="1"
|
||||
fi
|
||||
if [ ! -z "$api_port" ] ; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 添加防火墙规则 easytier_web 放行API端口 ${api_port} " >>/tmp/easytier.log
|
||||
uci -q delete firewall.easytier_webapi
|
||||
uci set firewall.easytier_webapi=rule
|
||||
uci set firewall.easytier_webapi.name="easytier_webapi"
|
||||
uci set firewall.easytier_webapi.target="ACCEPT"
|
||||
uci set firewall.easytier_webapi.src="wan"
|
||||
uci set firewall.easytier_webapi.proto="all"
|
||||
uci set firewall.easytier_webapi.dest_port="$api_port"
|
||||
uci set firewall.easytier_webapi.enabled="1"
|
||||
fi
|
||||
echo `date +%s` > /tmp/easytierweb_time
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 启动完成,若启动失败,请前往 状态 - 系统日志 找到easytier相关的字眼查看启动失败的原因 " >>/tmp/easytierweb.log
|
||||
}
|
||||
|
||||
start_service() {
|
||||
echo "start.."
|
||||
date_time=$(TZ='Asia/Shanghai' date +'%Y-%m-%d')
|
||||
ecmd=$(uci -q get easytier.@easytier[0].etcmd)
|
||||
if [ "$ecmd" = "etcmd" ] ; then
|
||||
if [ "$ecmd" = "etcmd" ] || [ "$ecmd" = "web" ] ; then
|
||||
ins_name=$(uci -q get easytier.@easytier[0].instance_name)
|
||||
else
|
||||
else
|
||||
ins_name=$(cat /etc/easytier/config.toml | grep "instance_name =" | awk '{print $3}'| tr -d '" ')
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$ins_name" ] ; then
|
||||
touch /tmp/easytier-${ins_name}.${date_time}.log
|
||||
ln -sf /tmp/easytier-${ins_name}.${date_time}.log /tmp/easytier.log
|
||||
else
|
||||
touch /tmp/easytier-default.${date_time}.log
|
||||
ln -sf /tmp/easytier-default.${date_time}.log /tmp/easytier.log
|
||||
fi
|
||||
fi
|
||||
touch /tmp/easytier.${date_time}.log
|
||||
ln -sf /tmp/easytier.${date_time}.log /tmp/easytierweb.log
|
||||
cputype=$(uname -ms | tr ' ' '_' | tr '[A-Z]' '[a-z]')
|
||||
[ -n "$(echo $cputype | grep -E "linux.*armv.*")" ] && cpucore="arm"
|
||||
[ -n "$(echo $cputype | grep -E "linux.*armv7.*")" ] && [ -n "$(cat /proc/cpuinfo | grep vfp)" ] && cpucore="armv7"
|
||||
|
@ -594,43 +669,65 @@ start_service() {
|
|||
[ "$mipstype" = "0" ] && cpucore="mips" || cpucore="mipsel"
|
||||
fi
|
||||
echo "" >/tmp/easytier.log
|
||||
echo "" >/tmp/easytierweb.log
|
||||
#test -z "`opkg list-installed|grep curl`" && echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 缺少curl插件" >/tmp/easytier.log
|
||||
[ ! -s /usr/lib/opkg/info/unzip.list ] && echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 缺少unzip插件" >/tmp/easytier.log
|
||||
start_et easytier
|
||||
[ "$(uci -q get easytier.@easytier[0].enabled)" = "1" ] && start_et easytier
|
||||
if [ -z "$(uci -q get easytier.@easytierweb[0].enabled)" ] ; then
|
||||
echo "config easytierweb" >>/etc/config/easytier
|
||||
echo " option enabled '0'" >>/etc/config/easytier
|
||||
fi
|
||||
[ "$(uci -q get easytier.@easytierweb[0].enabled)" = "1" ] && start_web
|
||||
start_log
|
||||
if curl -Lks -o /tmp/easytier_web.html https://easytier.cn/web || \
|
||||
curl -Lk -o /tmp/easytier_web.html https://easytier.cn/web/index.html || \
|
||||
wget --no-check-certificate -q -O /tmp/easytier_web.html https://easytier.cn/web || \
|
||||
wget --no-check-certificate -q -O /tmp/easytier_web.html https://easytier.cn/web/index.html; then
|
||||
[ ! -L /www/et.html ] && ln -sf /tmp/easytier_web.html /www/et.html
|
||||
fi
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
echo "stop.."
|
||||
[ "$(uci -q get easytier.@easytier[0].enabled)" = "0" ] || return 0
|
||||
pgrep -f easytier_check | xargs kill -9 >/dev/null 2>&1
|
||||
pgrep -f easytier_checklog | xargs kill -9 >/dev/null 2>&1
|
||||
ps | grep 'easytier-core' | grep -v grep | awk '{print $1}' | xargs kill >/dev/null 2>&1
|
||||
ps | grep 'easytier-core' | grep -v grep | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1
|
||||
uci -q delete network.EasyTier >/dev/null 2>&1
|
||||
uci -q delete firewall.easytierzone >/dev/null 2>&1
|
||||
uci -q delete firewall.easytierfwlan >/dev/null 2>&1
|
||||
uci -q delete firewall.easytierfwwan >/dev/null 2>&1
|
||||
uci -q delete firewall.lanfweasytier >/dev/null 2>&1
|
||||
uci -q delete firewall.wanfweasytier >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_udp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_tcp_udp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_wss >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_ws >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_wg >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_wireguard >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_socks5 >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6tcp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6udp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6ws >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6wss >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6wg >/dev/null 2>&1
|
||||
[ -n "$(uci changes network)" ] && uci commit network && /etc/init.d/network reload >/dev/null 2>&1
|
||||
[ -n "$(uci changes firewall)" ] && uci commit firewall && /etc/init.d/firewall reload >/dev/null 2>&1
|
||||
rm -rf /tmp/easytier-cli_peer /tmp/easytier-cli_connector /tmp/easytier-cli_stun /tmp/easytier-cli_route >/dev/null 2>&1
|
||||
rm -rf /tmp/easytier-cli_peer-center /tmp/easytier-cli_vpn-portal /tmp/easytier_cmd /tmp/easytier-cli_node >/dev/null 2>&1
|
||||
rm -rf /tmp/easytier-*.* /tmp/easytier.log >/dev/null 2>&1
|
||||
rm -rf /tmp/easytiernew.tag /tmp/easytier.tag >/dev/null 2>&1
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : 停止运行" >>/tmp/easytier.log
|
||||
if [ "$(uci -q get easytier.@easytier[0].enabled)" = "0" ] ; then
|
||||
pgrep -f easytier_check | xargs kill -9 >/dev/null 2>&1
|
||||
ps | grep 'easytier-core' | grep -v grep | awk '{print $1}' | xargs kill >/dev/null 2>&1
|
||||
ps | grep 'easytier-core' | grep -v grep | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1
|
||||
uci -q delete network.EasyTier >/dev/null 2>&1
|
||||
uci -q delete firewall.easytierzone >/dev/null 2>&1
|
||||
uci -q delete firewall.easytierfwlan >/dev/null 2>&1
|
||||
uci -q delete firewall.easytierfwwan >/dev/null 2>&1
|
||||
uci -q delete firewall.lanfweasytier >/dev/null 2>&1
|
||||
uci -q delete firewall.wanfweasytier >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_udp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_tcp_udp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_wss >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_ws >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_wg >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_wireguard >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_socks5 >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6tcp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6udp >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6ws >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6wss >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_v6wg >/dev/null 2>&1
|
||||
[ -n "$(uci changes network)" ] && uci commit network && /etc/init.d/network reload >/dev/null 2>&1
|
||||
[ -n "$(uci changes firewall)" ] && uci commit firewall && /etc/init.d/firewall reload >/dev/null 2>&1
|
||||
rm -rf /tmp/easytier-cli_peer /tmp/easytier-cli_connector /tmp/easytier-cli_stun /tmp/easytier-cli_route >/dev/null 2>&1
|
||||
rm -rf /tmp/easytier-cli_peer-center /tmp/easytier-cli_vpn-portal /tmp/easytier_cmd /tmp/easytier-cli_node >/dev/null 2>&1
|
||||
rm -rf /tmp/easytier-*.* /tmp/easytier.log >/dev/null 2>&1
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') easytier : easytier-core 停止运行" >>/tmp/easytier.log
|
||||
fi
|
||||
if [ "$(uci -q get easytier.@easytierweb[0].enabled)" = "0" ] ; then
|
||||
ps | grep 'easytier-web' | grep -v grep | awk '{print $1}' | xargs kill >/dev/null 2>&1
|
||||
ps | grep 'easytier-web' | grep -v grep | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1
|
||||
uci -q delete firewall.easytier_webserver
|
||||
uci -q delete firewall.easytier_webapi
|
||||
fi
|
||||
if [ "$(uci -q get easytier.@easytier[0].enabled)" = "0" ] && [ "$(uci -q get easytier.@easytierweb[0].enabled)" = "0" ] ; then
|
||||
pgrep -f easytier_checklog | xargs kill -9 >/dev/null 2>&1
|
||||
rm -rf /tmp/easytiernew.tag /tmp/easytier.tag >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
|
|
Loading…
Reference in New Issue