update-11.17
This commit is contained in:
parent
685d7ecd81
commit
b3e38aacab
|
@ -50,11 +50,6 @@ define Package/adguardhome/conffiles
|
|||
/etc/adguardhome.yaml
|
||||
endef
|
||||
|
||||
define Package/adguardhome/postinst
|
||||
#!/bin/sh
|
||||
/etc/init.d/AdGuardHome restart
|
||||
endef
|
||||
|
||||
define Package/adguardhome/description
|
||||
Free and open source, powerful network-wide ads and trackers blocking DNS server.
|
||||
endef
|
||||
|
|
|
@ -24,7 +24,7 @@ PKG_CONFIG_DEPENDS:= \
|
|||
|
||||
LUCI_TITLE:=SS/SSR/Xray/Trojan/Trojan-Go/NaiveProxy/Socks5/Tun LuCI interface
|
||||
LUCI_PKGARCH:=all
|
||||
LUCI_DEPENDS:=+ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +smartdns-le +coreutils +coreutils-base64 +curl +tcping +chinadns-ng +lua +luci-compat +unzip +lua-maxminddb \
|
||||
LUCI_DEPENDS:=+ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +smartdns +coreutils +coreutils-base64 +curl +tcping +chinadns-ng +lua +luci-compat +unzip +lua-maxminddb \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server:shadowsocks-libev-ss-server \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client:shadowsocks-libev-ss-local \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client:shadowsocks-libev-ss-redir \
|
||||
|
|
|
@ -228,7 +228,7 @@ end
|
|||
|
||||
function status()
|
||||
local e = {}
|
||||
e.dns_mode_status = luci.sys.call("pidof smartdns-le >/dev/null") == 0
|
||||
e.dns_mode_status = luci.sys.call("pidof smartdns >/dev/null") == 0
|
||||
e.socks5_status = luci.sys.call("ps -w | grep by- | grep socks5 | grep -v grep >/dev/null") == 0
|
||||
e.tcp_node_status = luci.sys.call("ps -w | grep by-retcp | grep -v grep >/dev/null") == 0
|
||||
e.udp_node_status = luci.sys.call("ps -w | grep by-reudp | grep -v grep >/dev/null") == 0
|
||||
|
|
|
@ -7,9 +7,9 @@ if [ "$ACTION" = ifup -a "$INTERFACE" != wan_6 ];then
|
|||
ipset -! add bypass_all $i
|
||||
done
|
||||
fi
|
||||
if pidof smartdns-le >/dev/null;then
|
||||
killall -q -9 smartdns-le
|
||||
$(which smartdns-le) -c /var/etc/smartdns/smartdns.conf
|
||||
if pidof smartdns >/dev/null;then
|
||||
killall -q -9 smartdns
|
||||
$(which smartdns) -c /var/etc/smartdns/smartdns.conf
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -169,7 +169,7 @@ gen_config_file(){
|
|||
}
|
||||
|
||||
start_dns(){
|
||||
$(which smartdns-le) -c $DNS_T
|
||||
$(which smartdns) -c $DNS_T
|
||||
case $dns_mode_o in
|
||||
doh)
|
||||
doh_o_a=$(echo $doh_o_a | sed 's/ -http-host dns.google//g')
|
||||
|
@ -856,7 +856,7 @@ gen_dns(){
|
|||
rm -f $O
|
||||
[ $(find $DNS_DIR -name \* -exec cat {} \; 2>/dev/null | wc -l) = 0 ] && rm -rf $DNS_DIR || echo conf-dir=$DNS_DIR >>$DNS_FILE
|
||||
[ $run_mode = router ] && chinadns_flag=1
|
||||
killall -q -9 smartdns-le
|
||||
killall -q -9 smartdns
|
||||
start_dns
|
||||
/etc/init.d/dnsmasq restart >/dev/null 2>&1
|
||||
preload
|
||||
|
@ -1031,7 +1031,7 @@ stop(){
|
|||
kill -9 $(ps -w | grep by-monitor | grep -v grep | awk '{print$1}') 2>/dev/null
|
||||
kill -9 $(ps -w | grep by-preload | grep -v grep | awk '{print$1}') 2>/dev/null
|
||||
kill -9 $(ps -w | grep $VAR | grep -v grep | awk '{print$1}') 2>/dev/null
|
||||
killall -q -9 smartdns-le chinadns-ng kcptun-client microsocks
|
||||
killall -q -9 smartdns chinadns-ng kcptun-client microsocks
|
||||
if [[ $adguardhome == 1 && ! "$GLOBAL_SERVER" ]]; then
|
||||
if [[ -f /etc/init.d/AdGuardHome && "$(uci -q get AdGuardHome.AdGuardHome.redirect)" == "exchange" ]]; then
|
||||
redirect="$(uci -q get AdGuardHome.AdGuardHome.old_redirect)"
|
||||
|
@ -1083,9 +1083,9 @@ stop(){
|
|||
dns_d_l=$(echo $dns_d_l | sed -e 's/,/,/g' -e 's/。/./g' -e 's/:/:/g' -e 's/,/\n/g')
|
||||
for i in $dns_d_l;do echo "server $i" >> $DNS_T;done
|
||||
fi
|
||||
$(which smartdns-le) -c $DNS_T
|
||||
$(which smartdns) -c $DNS_T
|
||||
r=1
|
||||
while ! ps -w | grep smartdns-le | grep -v grep >/dev/null;do
|
||||
while ! ps -w | grep smartdns | grep -v grep >/dev/null;do
|
||||
[ $r -ge 10 ] && return 1 || let r++
|
||||
sleep 1
|
||||
done
|
||||
|
|
|
@ -74,11 +74,11 @@ while :;do
|
|||
fi
|
||||
#smartdns
|
||||
if [ $smartdns = 1 ];then
|
||||
t=`ps -w | grep smartdns-le | grep -v grep | wc -l`
|
||||
t=`ps -w | grep smartdns | grep -v grep | wc -l`
|
||||
if [ $t = 0 ];then
|
||||
echolog "SmartDNS Error. Restart!"
|
||||
killall -q -9 smartdns-le
|
||||
$(which smartdns-le) -c /var/etc/smartdns/smartdns.conf
|
||||
killall -q -9 smartdns
|
||||
$(which smartdns) -c /var/etc/smartdns/smartdns.conf
|
||||
fi
|
||||
fi
|
||||
#chinadns-ng
|
||||
|
|
|
@ -1,50 +1,31 @@
|
|||
2021-11-16 05:51:24: ------------------- 规则更新 -----------------------
|
||||
2021-11-16 05:51:24: ====================================================
|
||||
2021-11-16 05:51:24: 开始更新koolproxy的规则,请等待...
|
||||
2021-11-16 05:51:24: ---------------------------------------------------------------------------------------
|
||||
2021-11-16 05:51:25: ---------------------------------------------------------------------------------------
|
||||
2021-11-16 05:51:26: ---------------------------------------------------------------------------------------
|
||||
2021-11-16 05:51:27: ABP规则的本地版本号: 202111160515
|
||||
2021-11-16 05:51:27: ABP规则的在线版本号: 202111160535
|
||||
2021-11-16 05:51:27: 检测到 ABP规则 已更新,现在开始更新...
|
||||
2021-11-16 05:51:27: 将临时的ABP规则文件移动到指定位置
|
||||
2021-11-16 05:51:29: Yhosts规则本地版本号: 202111082343
|
||||
2021-11-16 05:51:29: Yhosts规则在线版本号: 202111082343
|
||||
2021-11-16 05:51:29: 检测到Yhosts本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 05:51:30: Fanboy规则本地版本号:
|
||||
2021-11-16 05:51:30: Fanboy规则在线版本号: 202111160550
|
||||
2021-11-16 05:51:30: 检测到新版本 Fanboy规则 列表,开始更新...
|
||||
2021-11-16 05:51:30: 将临时文件覆盖到原始 Fanboy规则 文件
|
||||
2021-11-16 05:51:31: Antiad规则本地版本号: 20211115105634
|
||||
2021-11-16 05:51:31: Antiad规则在线版本号: 20211115105634
|
||||
2021-11-16 05:51:31: 检测到 Antiad规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 05:51:31: Banben规则本地版本号: 20211115115330
|
||||
2021-11-16 05:51:31: Banben规则在线版本号: 20211115115330
|
||||
2021-11-16 05:51:31: 检测到 Banben手机规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 05:51:31: StevenBlack规则本地版本号: 14 November 2021
|
||||
2021-11-16 05:51:31: StevenBlack规则在线版本号: 14 November 2021
|
||||
2021-11-16 05:51:31: 检测到 StevenBlack规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 05:51:31: AdAway规则本地版本号: mobile ad
|
||||
2021-11-16 05:51:31: AdAway规则在线版本号:
|
||||
2021-11-16 05:51:31: 检测到新版本 AdAway规则 列表,开始更新...
|
||||
2021-11-16 05:51:31: 将临时文件覆盖到原始 AdAway规则 文件
|
||||
2021-11-16 05:51:31: 正在优化 Fanboy规则。。。。。
|
||||
2021-11-16 05:51:32: 正在优化 ABP规则。。。。。
|
||||
2021-11-16 05:51:39: 跳过优化 补充规则Yhosts。。。。。
|
||||
2021-11-16 05:51:39: 跳过优化 补充规则Antiad。。。。。
|
||||
2021-11-16 05:51:39: 跳过优化 补充规则Banben。。。。。
|
||||
2021-11-16 05:51:39: 跳过优化 补充规则StevenBlack。。。。。
|
||||
2021-11-16 05:51:39: 正在优化 补充规则Adwars。。。。。
|
||||
2021-11-16 05:51:39: 正在优化 补充规则AdAway。。。。。
|
||||
2021-11-16 05:51:39: 所有规则更新并优化完毕!
|
||||
2021-11-16 05:51:39: ====================================================
|
||||
2021-11-16 05:51:40: -------------------ABP规则 version 202111160535
|
||||
2021-11-16 05:51:40: -------------------Fanboy规则 version 202111160550
|
||||
2021-11-16 05:51:40: -------------------Yhosts规则 version 202111082343
|
||||
2021-11-16 05:51:40: -------------------Antiad规则 version 20211115105634
|
||||
2021-11-16 05:51:40: -------------------Banben手机规则 version 20211115115330
|
||||
2021-11-16 05:51:40: -------------------StevenBlack规则 version 14 November 2021
|
||||
2021-11-16 05:51:40: -------------------静态规则 version 2021-10-07 18:00
|
||||
2021-11-16 05:51:40: -------------------乘风视频 version 202111131
|
||||
2021-11-16 05:51:40: ------------------- 内置规则更新成功! -------------------
|
||||
2021-11-16 05:51:40: ------------------- 规则更新成功! -------------------
|
||||
2021-11-16 23:20:28: ------------------- 规则更新 -----------------------
|
||||
2021-11-16 23:20:28: ====================================================
|
||||
2021-11-16 23:20:28: 开始更新koolproxy的规则,请等待...
|
||||
2021-11-16 23:20:28: ---------------------------------------------------------------------------------------
|
||||
2021-11-16 23:20:28: ABP规则本地版本号:
|
||||
2021-11-16 23:20:28: ABP规则在线版本号: Tue 11/16/2021
|
||||
2021-11-16 23:20:28: 检测到新版本 ABP规则 列表,开始更新...
|
||||
2021-11-16 23:20:28: 将临时文件覆盖到原始 ABP规则 文件
|
||||
2021-11-16 23:20:28: ---------------------------------------------------------------------------------------
|
||||
2021-11-16 23:20:28: Fanboy规则本地版本号: Tue 11/16/2021
|
||||
2021-11-16 23:20:28: Fanboy规则在线版本号: Tue 11/16/2021
|
||||
2021-11-16 23:20:28: 检测到 Fanboy规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 23:20:30: Yhosts规则本地版本号: 202111082343
|
||||
2021-11-16 23:20:30: Yhosts规则在线版本号: 202111082343
|
||||
2021-11-16 23:20:30: 检测到Yhosts本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 23:20:30: Antiad规则本地版本号: 20211117023854
|
||||
2021-11-16 23:20:30: Antiad规则在线版本号: 20211117023854
|
||||
2021-11-16 23:20:30: 检测到 Antiad规则 本地版本号和在线版本号相同,那还更新个毛啊!
|
||||
2021-11-16 23:20:30: 正在优化 ABP规则。。。。。
|
||||
2021-11-16 23:20:43: 跳过优化 Fanboy规则。。。。。
|
||||
2021-11-16 23:20:43: 跳过优化 补充规则Yhosts。。。。。
|
||||
2021-11-16 23:20:43: 跳过优化 补充规则Antiad。。。。。
|
||||
2021-11-16 23:20:43: 所有规则更新并优化完毕!
|
||||
2021-11-16 23:20:43: ====================================================
|
||||
2021-11-16 23:20:45: -------------------ABP规则 version
|
||||
2021-11-16 23:20:45: -------------------Fanboy规则 version Tue 11/16/2021
|
||||
2021-11-16 23:20:45: -------------------Yhosts规则 version 202111082343
|
||||
2021-11-16 23:20:45: -------------------Antiad规则 version 20211117023854
|
||||
2021-11-16 23:20:45: -------------------静态规则 version 2021-10-07 18:00
|
||||
2021-11-16 23:20:45: ------------------- 内置规则更新成功! -------------------
|
||||
2021-11-16 23:20:45: ------------------- 规则更新成功! -------------------
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI for sysupgrade
|
||||
LUCI_DEPENDS:=+luci-base
|
||||
PKG_MAINTAINER:=Kiddin'
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI for sysupgrade
|
||||
LUCI_DEPENDS:=+luci-base
|
||||
PKG_MAINTAINER:=Kiddin'
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
|
|
@ -1 +1 @@
|
|||
# Only for my <a href="https://github.com/garypang13/OpenWrt/">Openwrt firmware</a>
|
||||
# Only for my <a href="https://github.com/garypang13/OpenWrt/">Openwrt firmware</a>
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
-- Copyright (C) 2018-2020 L-WRT Team
|
||||
module("luci.controller.gpsysupgrade", package.seeall)
|
||||
local appname = "gpsysupgrade"
|
||||
local ucic = luci.model.uci.cursor()
|
||||
local http = require "luci.http"
|
||||
local util = require "luci.util"
|
||||
local sysupgrade = require "luci.model.cbi.gpsysupgrade.sysupgrade"
|
||||
|
||||
function index()
|
||||
appname = "gpsysupgrade"
|
||||
entry({"admin", "services", appname}).dependent = true
|
||||
entry({"admin", "services", appname}, template("gpsysupgrade/system_version"), _("System upgrade"), 1)
|
||||
entry({"admin", "services", appname, "sysversion_check"}, call("sysversion_check")).leaf = true
|
||||
entry({"admin", "services", appname, "sysversion_update"}, call("sysversion_update")).leaf = true
|
||||
end
|
||||
|
||||
local function http_write_json(content)
|
||||
http.prepare_content("application/json")
|
||||
http.write_json(content or {code = 1})
|
||||
end
|
||||
|
||||
|
||||
function sysversion_check()
|
||||
local json = sysupgrade.to_check("")
|
||||
http_write_json(json)
|
||||
end
|
||||
|
||||
function sysversion_update()
|
||||
local json = nil
|
||||
local task = http.formvalue("task")
|
||||
if task == "flash" then
|
||||
json = sysupgrade.to_flash(http.formvalue("file"),http.formvalue("retain"))
|
||||
else
|
||||
json = sysupgrade.to_download(http.formvalue("url"),http.formvalue("md5"))
|
||||
end
|
||||
|
||||
http_write_json(json)
|
||||
end
|
||||
-- Copyright (C) 2018-2020 L-WRT Team
|
||||
module("luci.controller.gpsysupgrade", package.seeall)
|
||||
local appname = "gpsysupgrade"
|
||||
local ucic = luci.model.uci.cursor()
|
||||
local http = require "luci.http"
|
||||
local util = require "luci.util"
|
||||
local sysupgrade = require "luci.model.cbi.gpsysupgrade.sysupgrade"
|
||||
|
||||
function index()
|
||||
appname = "gpsysupgrade"
|
||||
entry({"admin", "services", appname}).dependent = true
|
||||
entry({"admin", "services", appname}, template("gpsysupgrade/system_version"), _("System upgrade"), 1)
|
||||
entry({"admin", "services", appname, "sysversion_check"}, call("sysversion_check")).leaf = true
|
||||
entry({"admin", "services", appname, "sysversion_update"}, call("sysversion_update")).leaf = true
|
||||
end
|
||||
|
||||
local function http_write_json(content)
|
||||
http.prepare_content("application/json")
|
||||
http.write_json(content or {code = 1})
|
||||
end
|
||||
|
||||
|
||||
function sysversion_check()
|
||||
local json = sysupgrade.to_check("")
|
||||
http_write_json(json)
|
||||
end
|
||||
|
||||
function sysversion_update()
|
||||
local json = nil
|
||||
local task = http.formvalue("task")
|
||||
if task == "flash" then
|
||||
json = sysupgrade.to_flash(http.formvalue("file"),http.formvalue("retain"))
|
||||
else
|
||||
json = sysupgrade.to_download(http.formvalue("url"),http.formvalue("md5"))
|
||||
end
|
||||
|
||||
http_write_json(json)
|
||||
end
|
||||
|
|
|
@ -1,78 +1,78 @@
|
|||
module("luci.model.cbi.gpsysupgrade.api", package.seeall)
|
||||
local fs = require "nixio.fs"
|
||||
local sys = require "luci.sys"
|
||||
local uci = require"luci.model.uci".cursor()
|
||||
local util = require "luci.util"
|
||||
|
||||
appname = "gpsysupgrade"
|
||||
curl = "/usr/bin/curl"
|
||||
curl_args = {"-skfL", "--connect-timeout 3", "--retry 3"}
|
||||
wget = "/usr/bin/wget"
|
||||
wget_args = {"--no-check-certificate", "--quiet", "--timeout=100", "--tries=3"}
|
||||
command_timeout = 40
|
||||
LEDE_BOARD = nil
|
||||
DISTRIB_TARGET = nil
|
||||
|
||||
function _unpack(t, i)
|
||||
i = i or 1
|
||||
if t[i] ~= nil then return t[i], _unpack(t, i + 1) end
|
||||
end
|
||||
|
||||
function exec(cmd, args, writer, timeout)
|
||||
local os = require "os"
|
||||
local nixio = require "nixio"
|
||||
|
||||
local fdi, fdo = nixio.pipe()
|
||||
local pid = nixio.fork()
|
||||
|
||||
if pid > 0 then
|
||||
fdo:close()
|
||||
|
||||
if writer or timeout then
|
||||
local starttime = os.time()
|
||||
while true do
|
||||
if timeout and os.difftime(os.time(), starttime) >= timeout then
|
||||
nixio.kill(pid, nixio.const.SIGTERM)
|
||||
return 1
|
||||
end
|
||||
|
||||
if writer then
|
||||
local buffer = fdi:read(2048)
|
||||
if buffer and #buffer > 0 then
|
||||
writer(buffer)
|
||||
end
|
||||
end
|
||||
|
||||
local wpid, stat, code = nixio.waitpid(pid, "nohang")
|
||||
|
||||
if wpid and stat == "exited" then return code end
|
||||
|
||||
if not writer and timeout then nixio.nanosleep(1) end
|
||||
end
|
||||
else
|
||||
local wpid, stat, code = nixio.waitpid(pid)
|
||||
return wpid and stat == "exited" and code
|
||||
end
|
||||
elseif pid == 0 then
|
||||
nixio.dup(fdo, nixio.stdout)
|
||||
fdi:close()
|
||||
fdo:close()
|
||||
nixio.exece(cmd, args, nil)
|
||||
nixio.stdout:close()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
|
||||
function auto_get_model()
|
||||
local arch = nixio.uname().machine or ""
|
||||
if fs.access("/etc/openwrt_release") then
|
||||
if arch == "x86_64" then
|
||||
model = "x86_64"
|
||||
else
|
||||
local boardinfo = luci.util.ubus("system", "board") or { }
|
||||
model = boardinfo.model
|
||||
end
|
||||
end
|
||||
return util.trim(model)
|
||||
end
|
||||
|
||||
module("luci.model.cbi.gpsysupgrade.api", package.seeall)
|
||||
local fs = require "nixio.fs"
|
||||
local sys = require "luci.sys"
|
||||
local uci = require"luci.model.uci".cursor()
|
||||
local util = require "luci.util"
|
||||
|
||||
appname = "gpsysupgrade"
|
||||
curl = "/usr/bin/curl"
|
||||
curl_args = {"-skfL", "--connect-timeout 3", "--retry 3"}
|
||||
wget = "/usr/bin/wget"
|
||||
wget_args = {"--no-check-certificate", "--quiet", "--timeout=100", "--tries=3"}
|
||||
command_timeout = 40
|
||||
LEDE_BOARD = nil
|
||||
DISTRIB_TARGET = nil
|
||||
|
||||
function _unpack(t, i)
|
||||
i = i or 1
|
||||
if t[i] ~= nil then return t[i], _unpack(t, i + 1) end
|
||||
end
|
||||
|
||||
function exec(cmd, args, writer, timeout)
|
||||
local os = require "os"
|
||||
local nixio = require "nixio"
|
||||
|
||||
local fdi, fdo = nixio.pipe()
|
||||
local pid = nixio.fork()
|
||||
|
||||
if pid > 0 then
|
||||
fdo:close()
|
||||
|
||||
if writer or timeout then
|
||||
local starttime = os.time()
|
||||
while true do
|
||||
if timeout and os.difftime(os.time(), starttime) >= timeout then
|
||||
nixio.kill(pid, nixio.const.SIGTERM)
|
||||
return 1
|
||||
end
|
||||
|
||||
if writer then
|
||||
local buffer = fdi:read(2048)
|
||||
if buffer and #buffer > 0 then
|
||||
writer(buffer)
|
||||
end
|
||||
end
|
||||
|
||||
local wpid, stat, code = nixio.waitpid(pid, "nohang")
|
||||
|
||||
if wpid and stat == "exited" then return code end
|
||||
|
||||
if not writer and timeout then nixio.nanosleep(1) end
|
||||
end
|
||||
else
|
||||
local wpid, stat, code = nixio.waitpid(pid)
|
||||
return wpid and stat == "exited" and code
|
||||
end
|
||||
elseif pid == 0 then
|
||||
nixio.dup(fdo, nixio.stdout)
|
||||
fdi:close()
|
||||
fdo:close()
|
||||
nixio.exece(cmd, args, nil)
|
||||
nixio.stdout:close()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
|
||||
function auto_get_model()
|
||||
local arch = nixio.uname().machine or ""
|
||||
if fs.access("/etc/openwrt_release") then
|
||||
if arch == "x86_64" then
|
||||
model = "x86_64"
|
||||
else
|
||||
local boardinfo = luci.util.ubus("system", "board") or { }
|
||||
model = boardinfo.model
|
||||
end
|
||||
end
|
||||
return util.trim(model)
|
||||
end
|
||||
|
||||
|
|
|
@ -1,136 +1,136 @@
|
|||
module("luci.model.cbi.gpsysupgrade.sysupgrade", package.seeall)
|
||||
local fs = require "nixio.fs"
|
||||
local sys = require "luci.sys"
|
||||
local util = require "luci.util"
|
||||
local i18n = require "luci.i18n"
|
||||
local ipkg = require("luci.model.ipkg")
|
||||
local api = require "luci.model.cbi.gpsysupgrade.api"
|
||||
|
||||
function get_system_version()
|
||||
local system_version = luci.sys.exec("[ -f '/etc/openwrt_version' ] && echo -n `cat /etc/openwrt_version`")
|
||||
return system_version
|
||||
end
|
||||
|
||||
function check_update()
|
||||
needs_update, notice, md5 = false, false, false
|
||||
remote_version = luci.sys.exec("curl -skfL https://op.supes.top/firmware/" ..model.. "/version.txt")
|
||||
updatelogs = luci.sys.exec("curl -skfL https://op.supes.top/firmware/" ..model.. "/updatelogs.txt")
|
||||
remoteformat = luci.sys.exec("date -d $(echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $1}' | awk -F. '{printf $3\"-\"$1\"-\"$2}') +%s")
|
||||
fnotice = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $(NF-1)}'")
|
||||
dateyr = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F. '{printf $1\".\"$2}'")
|
||||
md5 = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $2}'")
|
||||
remote_version = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $1}' | awk -F. '{printf $1\".\"$2\".\"$3}'")
|
||||
if remoteformat > sysverformat then
|
||||
needs_update = true
|
||||
if currentTimeStamp > remoteformat or fnotice == "1" then
|
||||
notice = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function to_check()
|
||||
if not model or model == "" then model = api.auto_get_model() end
|
||||
sysverformat = luci.sys.exec("date -d $(echo " ..get_system_version().. " | awk -F. '{printf $3\"-\"$1\"-\"$2}') +%s")
|
||||
currentTimeStamp = luci.sys.exec("expr $(date -d \"$(date '+%Y-%m-%d %H:%M:%S')\" +%s) - 172800")
|
||||
if model == "x86_64" then
|
||||
check_update()
|
||||
if fs.access("/sys/firmware/efi") then
|
||||
download_url = "https://op.supes.top/firmware/" ..model.. "/" ..dateyr.. "-openwrt-x86-64-generic-squashfs-combined-efi.img.gz"
|
||||
else
|
||||
download_url = "https://op.supes.top/firmware/" ..model.. "/" ..dateyr.. "-openwrt-x86-64-generic-squashfs-combined.img.gz"
|
||||
md5 = ""
|
||||
end
|
||||
elseif model:match(".*R2S.*") then
|
||||
model = "nanopi-r2s"
|
||||
check_update()
|
||||
download_url = "https://op.supes.top/firmware/" ..model.. "/" ..dateyr.. "-openwrt-rockchip-armv8-nanopi-r2s-squashfs-sysupgrade.img.gz"
|
||||
elseif model:match(".*R4S.*") then
|
||||
model = "nanopi-r4s"
|
||||
check_update()
|
||||
download_url = "https://op.supes.top/firmware/" ..model.. "/" ..dateyr.. "-openwrt-rockchip-armv8-nanopi-r4s-squashfs-sysupgrade.img.gz"
|
||||
elseif model:match(".*R2C.*") then
|
||||
model = "nanopi-r2c"
|
||||
check_update()
|
||||
download_url = "https://op.supes.top/firmware/" ..model.. "/" ..dateyr.. "-openwrt-rockchip-armv8-nanopi-r2c-squashfs-sysupgrade.img.gz"
|
||||
elseif model:match(".*Pi 4 Model B.*") then
|
||||
model = "Rpi-4B"
|
||||
check_update()
|
||||
download_url = "https://op.supes.top/firmware/" ..model.. "/" ..dateyr.. "-openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz"
|
||||
else
|
||||
local needs_update = false
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translate("Can't determine MODEL, or MODEL not supported.")
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
if needs_update and not download_url then
|
||||
return {
|
||||
code = 1,
|
||||
now_version = get_system_version(),
|
||||
version = remote_version,
|
||||
error = i18n.translate(
|
||||
"New version found, but failed to get new version download url.")
|
||||
}
|
||||
end
|
||||
|
||||
return {
|
||||
code = 0,
|
||||
update = needs_update,
|
||||
notice = notice,
|
||||
now_version = get_system_version(),
|
||||
version = remote_version,
|
||||
md5 = md5,
|
||||
logs = updatelogs,
|
||||
url = download_url
|
||||
}
|
||||
end
|
||||
|
||||
function to_download(url,md5)
|
||||
if not url or url == "" then
|
||||
return {code = 1, error = i18n.translate("Download url is required.")}
|
||||
end
|
||||
|
||||
sys.call("/bin/rm -f /tmp/firmware_download.*")
|
||||
|
||||
local tmp_file = util.trim(util.exec("mktemp -u -t firmware_download.XXXXXX"))
|
||||
|
||||
local result = api.exec(api.curl, {api._unpack(api.curl_args), "-o", tmp_file, url}, nil, api.command_timeout) == 0
|
||||
|
||||
if not result then
|
||||
api.exec("/bin/rm", {"-f", tmp_file})
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translatef("File download failed or timed out: %s", url)
|
||||
}
|
||||
end
|
||||
|
||||
local md5local = sys.exec("echo -n $(md5sum " .. tmp_file .. " | awk '{print $1}')")
|
||||
|
||||
if md5 ~= "" and md5local ~= md5 then
|
||||
api.exec("/bin/rm", {"-f", tmp_file})
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translatef("Md5 check failed: %s", url)
|
||||
}
|
||||
end
|
||||
|
||||
return {code = 0, file = tmp_file}
|
||||
end
|
||||
|
||||
function to_flash(file,retain)
|
||||
if not file or file == "" or not fs.access(file) then
|
||||
return {code = 1, error = i18n.translate("Firmware file is required.")}
|
||||
end
|
||||
if not retain or retain == "" then
|
||||
local result = api.exec("/sbin/sysupgrade", {file}, nil, api.command_timeout) == 0
|
||||
else
|
||||
if retain:match(".*-q .*") then
|
||||
luci.sys.exec("echo -e /etc/backup/user_installed.opkg>/lib/upgrade/keep.d/luci-app-gpsysupgrade")
|
||||
end
|
||||
sys.exec("/sbin/sysupgrade " ..retain.. " " ..file.. "")
|
||||
end
|
||||
|
||||
return {code = 0}
|
||||
end
|
||||
module("luci.model.cbi.gpsysupgrade.sysupgrade", package.seeall)
|
||||
local fs = require "nixio.fs"
|
||||
local sys = require "luci.sys"
|
||||
local util = require "luci.util"
|
||||
local i18n = require "luci.i18n"
|
||||
local ipkg = require("luci.model.ipkg")
|
||||
local api = require "luci.model.cbi.gpsysupgrade.api"
|
||||
|
||||
function get_system_version()
|
||||
local system_version = luci.sys.exec("[ -f '/etc/openwrt_version' ] && echo -n `cat /etc/openwrt_version`")
|
||||
return system_version
|
||||
end
|
||||
|
||||
function check_update()
|
||||
needs_update, notice, md5 = false, false, false
|
||||
remote_version = luci.sys.exec("curl -skfL https://op.dllkids.xyz/firmware/" ..model.. "/version.txt")
|
||||
updatelogs = luci.sys.exec("curl -skfL https://op.dllkids.xyz/firmware/" ..model.. "/updatelogs.txt")
|
||||
remoteformat = luci.sys.exec("date -d $(echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $1}' | awk -F. '{printf $3\"-\"$1\"-\"$2}') +%s")
|
||||
fnotice = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $(NF-1)}'")
|
||||
dateyr = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F. '{printf $1\".\"$2}'")
|
||||
md5 = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $2}'")
|
||||
remote_version = luci.sys.exec("echo \"" ..remote_version.. "\" | tr '\r\n' ',' | awk -F, '{printf $1}' | awk -F. '{printf $1\".\"$2\".\"$3}'")
|
||||
if remoteformat > sysverformat then
|
||||
needs_update = true
|
||||
if currentTimeStamp > remoteformat or fnotice == "1" then
|
||||
notice = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function to_check()
|
||||
if not model or model == "" then model = api.auto_get_model() end
|
||||
sysverformat = luci.sys.exec("date -d $(echo " ..get_system_version().. " | awk -F. '{printf $3\"-\"$1\"-\"$2}') +%s")
|
||||
currentTimeStamp = luci.sys.exec("expr $(date -d \"$(date '+%Y-%m-%d %H:%M:%S')\" +%s) - 172800")
|
||||
if model == "x86_64" then
|
||||
check_update()
|
||||
if fs.access("/sys/firmware/efi") then
|
||||
download_url = "https://op.dllkids.xyz/firmware/" ..model.. "/" ..dateyr.. "-openwrt-x86-64-generic-squashfs-combined-efi.img.gz"
|
||||
else
|
||||
download_url = "https://op.dllkids.xyz/firmware/" ..model.. "/" ..dateyr.. "-openwrt-x86-64-generic-squashfs-combined.img.gz"
|
||||
md5 = ""
|
||||
end
|
||||
elseif model:match(".*R2S.*") then
|
||||
model = "nanopi-r2s"
|
||||
check_update()
|
||||
download_url = "https://op.dllkids.xyz/firmware/" ..model.. "/" ..dateyr.. "-openwrt-rockchip-armv8-nanopi-r2s-squashfs-sysupgrade.img.gz"
|
||||
elseif model:match(".*R4S.*") then
|
||||
model = "nanopi-r4s"
|
||||
check_update()
|
||||
download_url = "https://op.dllkids.xyz/firmware/" ..model.. "/" ..dateyr.. "-openwrt-rockchip-armv8-nanopi-r4s-squashfs-sysupgrade.img.gz"
|
||||
elseif model:match(".*R2C.*") then
|
||||
model = "nanopi-r2c"
|
||||
check_update()
|
||||
download_url = "https://op.dllkids.xyz/firmware/" ..model.. "/" ..dateyr.. "-openwrt-rockchip-armv8-nanopi-r2c-squashfs-sysupgrade.img.gz"
|
||||
elseif model:match(".*Pi 4 Model B.*") then
|
||||
model = "Rpi-4B"
|
||||
check_update()
|
||||
download_url = "https://op.dllkids.xyz/firmware/" ..model.. "/" ..dateyr.. "-openwrt-bcm27xx-bcm2711-rpi-4-squashfs-sysupgrade.img.gz"
|
||||
else
|
||||
local needs_update = false
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translate("Can't determine MODEL, or MODEL not supported.")
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
if needs_update and not download_url then
|
||||
return {
|
||||
code = 1,
|
||||
now_version = get_system_version(),
|
||||
version = remote_version,
|
||||
error = i18n.translate(
|
||||
"New version found, but failed to get new version download url.")
|
||||
}
|
||||
end
|
||||
|
||||
return {
|
||||
code = 0,
|
||||
update = needs_update,
|
||||
notice = notice,
|
||||
now_version = get_system_version(),
|
||||
version = remote_version,
|
||||
md5 = md5,
|
||||
logs = updatelogs,
|
||||
url = download_url
|
||||
}
|
||||
end
|
||||
|
||||
function to_download(url,md5)
|
||||
if not url or url == "" then
|
||||
return {code = 1, error = i18n.translate("Download url is required.")}
|
||||
end
|
||||
|
||||
sys.call("/bin/rm -f /tmp/firmware_download.*")
|
||||
|
||||
local tmp_file = util.trim(util.exec("mktemp -u -t firmware_download.XXXXXX"))
|
||||
|
||||
local result = api.exec(api.curl, {api._unpack(api.curl_args), "-o", tmp_file, url}, nil, api.command_timeout) == 0
|
||||
|
||||
if not result then
|
||||
api.exec("/bin/rm", {"-f", tmp_file})
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translatef("File download failed or timed out: %s", url)
|
||||
}
|
||||
end
|
||||
|
||||
local md5local = sys.exec("echo -n $(md5sum " .. tmp_file .. " | awk '{print $1}')")
|
||||
|
||||
if md5 ~= "" and md5local ~= md5 then
|
||||
api.exec("/bin/rm", {"-f", tmp_file})
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translatef("Md5 check failed: %s", url)
|
||||
}
|
||||
end
|
||||
|
||||
return {code = 0, file = tmp_file}
|
||||
end
|
||||
|
||||
function to_flash(file,retain)
|
||||
if not file or file == "" or not fs.access(file) then
|
||||
return {code = 1, error = i18n.translate("Firmware file is required.")}
|
||||
end
|
||||
if not retain or retain == "" then
|
||||
local result = api.exec("/sbin/sysupgrade", {file}, nil, api.command_timeout) == 0
|
||||
else
|
||||
if retain:match(".*-q .*") then
|
||||
luci.sys.exec("echo -e /etc/backup/user_installed.opkg>/lib/upgrade/keep.d/luci-app-gpsysupgrade")
|
||||
end
|
||||
sys.exec("/sbin/sysupgrade " ..retain.. " " ..file.. "")
|
||||
end
|
||||
|
||||
return {code = 0}
|
||||
end
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<script>
|
||||
setTimeout(function(){
|
||||
var links = document.createElement('div');
|
||||
links.innerHTML ='<div class="table"><div class="tr"><div class="td left" width="33%"><a href="https://t.me/opwrts" target="_blank">TG交流(小粉红勿扰)</a></div><div class="td left" width="33%"><a href="https://github.com/kiddin9/OpenWrt_x86-r2s-r4s" target="_blank">GitHub仓库</a></div><div class="td left"><a href="http://op.supes.top/" target="_blank">固件下载</a></div></div></div>';
|
||||
var telegram = document.querySelectorAll(".cbi-section")[0];
|
||||
telegram.appendChild(links);
|
||||
}, 2000);
|
||||
</script>
|
||||
<script>
|
||||
setTimeout(function(){
|
||||
var links = document.createElement('div');
|
||||
links.innerHTML ='<div class="table"><div class="tr"><div class="td left" width="33%"><a href="https://t.me/joinchat/JjxmyRZZXJWb74I-sCrryA" target="_blank">TG交流</a></div><div class="td left" width="33%"><a href="https://github.com/kenzok78/Bulid_Wrt" target="_blank">GitHub仓库</a></div><div class="td left"><a href="http://op.dllkids.xyz/" target="_blank">固件下载</a></div></div></div>';
|
||||
var telegram = document.querySelectorAll(".cbi-section")[0];
|
||||
telegram.appendChild(links);
|
||||
}, 2000);
|
||||
</script>
|
||||
|
|
|
@ -1,40 +1,40 @@
|
|||
<%
|
||||
local fs = require "nixio.fs"
|
||||
local uci = require 'luci.model.uci'.cursor()
|
||||
|
||||
if fs.access('/etc/config/system') then
|
||||
autoupgrade_fm = uci:get_first('system', 'system', 'autoupgrade_fm', '1')
|
||||
end
|
||||
if autoupgrade_fm ~= '0' then
|
||||
-%>
|
||||
<script>
|
||||
var tokenStr = '<%=token%>';
|
||||
|
||||
XHR.get('<%=url([[admin]], [[services]], [[gpsysupgrade]], [[sysversion_check]])%>', {
|
||||
token: tokenStr,
|
||||
model: ''
|
||||
}, function(x,json) {
|
||||
if(json.code) {
|
||||
|
||||
} else {
|
||||
if(json.notice) {
|
||||
sysUpgradeInfo = json;
|
||||
setTimeout(function(){
|
||||
var ckeckDetailElm = document.querySelector("#maincontent");
|
||||
if(ckeckDetailElm) {
|
||||
var urlNode = '';
|
||||
if(json.version) {
|
||||
urlNode = '<div class="alert-message fade-in success" style="display:flex;margin-top: -1.5rem;padding: 0.31rem 0rem;"><div style="flex:10"><a href="<%=url([[admin]], [[services]], [[gpsysupgrade]])%>"><p><%:New version available%>:' + json.version + '</p></a></div></div>';
|
||||
ckeckDetailElm.innerHTML=urlNode+ckeckDetailElm.innerHTML;
|
||||
}
|
||||
|
||||
}
|
||||
}, 0);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
},300);
|
||||
|
||||
</script>
|
||||
<% end -%>
|
||||
<%
|
||||
local fs = require "nixio.fs"
|
||||
local uci = require 'luci.model.uci'.cursor()
|
||||
|
||||
if fs.access('/etc/config/system') then
|
||||
autoupgrade_fm = uci:get_first('system', 'system', 'autoupgrade_fm', '1')
|
||||
end
|
||||
if autoupgrade_fm ~= '0' then
|
||||
-%>
|
||||
<script>
|
||||
var tokenStr = '<%=token%>';
|
||||
|
||||
XHR.get('<%=url([[admin]], [[services]], [[gpsysupgrade]], [[sysversion_check]])%>', {
|
||||
token: tokenStr,
|
||||
model: ''
|
||||
}, function(x,json) {
|
||||
if(json.code) {
|
||||
|
||||
} else {
|
||||
if(json.notice) {
|
||||
sysUpgradeInfo = json;
|
||||
setTimeout(function(){
|
||||
var ckeckDetailElm = document.querySelector("#maincontent");
|
||||
if(ckeckDetailElm) {
|
||||
var urlNode = '';
|
||||
if(json.version) {
|
||||
urlNode = '<div class="alert-message fade-in success" style="display:flex;margin-top: -1.5rem;padding: 0.31rem 0rem;"><div style="flex:10"><a href="<%=url([[admin]], [[services]], [[gpsysupgrade]])%>"><p><%:New version available%>:' + json.version + '</p></a></div></div>';
|
||||
ckeckDetailElm.innerHTML=urlNode+ckeckDetailElm.innerHTML;
|
||||
}
|
||||
|
||||
}
|
||||
}, 0);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
},300);
|
||||
|
||||
</script>
|
||||
<% end -%>
|
||||
|
|
|
@ -1,241 +1,241 @@
|
|||
<%
|
||||
local system_version = require "luci.model.cbi.gpsysupgrade.sysupgrade".get_system_version()
|
||||
-%>
|
||||
<%+header%>
|
||||
<h2 name="content"><%:System upgrade%></h2>
|
||||
<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%>
|
||||
<p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
|
||||
<%- end -%>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var sysUpgradeInfo;
|
||||
var tokenStr = '<%=token%>';
|
||||
var clickToForceUpdateText = '<%:It is the latest version,Reflash?%>';
|
||||
var updateSuccessText = '<%:Upgrade successful%>';
|
||||
var clickToUpdateText = '<%:Click to Upgrade%>';
|
||||
var inProgressText = '<%:Upgrading...%>';
|
||||
var unexpectedErrorText = '<%:Unexpected error%>';
|
||||
var updateInProgressNotice = '<%:Upgrading, are you sure to close?%>';
|
||||
var downloadingText = '<%:Downloading...%>';
|
||||
var flashing = '<%:Flashing...%>';
|
||||
var checking = '<%:Checking...%>';
|
||||
|
||||
window.onload = function() {
|
||||
var sysupCheckBtn = document.getElementById('_sysup-check_btn');
|
||||
checkUpdate_sysup(sysupCheckBtn)
|
||||
};
|
||||
|
||||
function addPageNotice_sysup() {
|
||||
window.onbeforeunload = function(e) {
|
||||
e.returnValue = updateInProgressNotice;
|
||||
return updateInProgressNotice;
|
||||
};
|
||||
}
|
||||
|
||||
function removePageNotice_sysup() {
|
||||
window.onbeforeunload = null;
|
||||
}
|
||||
|
||||
function onUpdateSuccess_sysup(btn) {
|
||||
alert(updateSuccessText);
|
||||
|
||||
if(btn) {
|
||||
btn.value = updateSuccessText;
|
||||
btn.placeholder = updateSuccessText;
|
||||
btn.disabled = true;
|
||||
}
|
||||
|
||||
window.setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function onRequestError_sysup(btn, errorMessage) {
|
||||
btn.disabled = false;
|
||||
btn.value = btn.placeholder;
|
||||
|
||||
if(errorMessage) {
|
||||
alert(errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
function onBtnClick_sysup(btn) {
|
||||
if(sysUpgradeInfo === undefined) {
|
||||
checkUpdate_sysup(btn);
|
||||
} else {
|
||||
doUpdate_sysup(btn);
|
||||
}
|
||||
}
|
||||
|
||||
function checkUpdate_sysup(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = checking;
|
||||
|
||||
addPageNotice_sysup();
|
||||
|
||||
var ckeckDetailElm = document.getElementById(btn.id + '-detail');
|
||||
var updateLogs = document.getElementById('updatelogs');
|
||||
|
||||
XHR.get('<%=url([[admin]], [[services]], [[gpsysupgrade]], [[sysversion_check]])%>', {
|
||||
token: tokenStr,
|
||||
model: ''
|
||||
}, function(x,json) {
|
||||
removePageNotice_sysup();
|
||||
|
||||
if(json.code) {
|
||||
sysUpgradeInfo = undefined;
|
||||
onRequestError_sysup(btn, json.error);
|
||||
} else {
|
||||
document.querySelector('#retain').style.display = '';
|
||||
if(json.update) {
|
||||
sysUpgradeInfo = json;
|
||||
btn.disabled = false;
|
||||
btn.value = clickToUpdateText;
|
||||
btn.placeholder = clickToUpdateText;
|
||||
|
||||
if(ckeckDetailElm) {
|
||||
var urlNode = '';
|
||||
if(json.version) {
|
||||
if(json.notice) {
|
||||
urlNode = '<em style="color:red;">最新版本号:' + json.version + ' 正式版</em>';
|
||||
} else {
|
||||
urlNode = '<em style="color:red;">最新版本号:' + json.version + ' 尝鲜版</em>';
|
||||
}
|
||||
}
|
||||
if(json.logs) {
|
||||
logs = '<div class="alert alert-message">' + json.logs + '</div>';
|
||||
}
|
||||
ckeckDetailElm.innerHTML = urlNode;
|
||||
updateLogs.innerHTML = logs;
|
||||
|
||||
}
|
||||
} else {
|
||||
sysUpgradeInfo = json;
|
||||
btn.disabled = false;
|
||||
btn.value = clickToForceUpdateText;
|
||||
btn.placeholder = clickToForceUpdateText;
|
||||
}
|
||||
}
|
||||
},300);
|
||||
}
|
||||
|
||||
function doUpdate_sysup(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = downloadingText;
|
||||
|
||||
addPageNotice_sysup();
|
||||
|
||||
var sysUpgradeUrl = '<%=url([[admin]], [[services]], [[gpsysupgrade]], [[sysversion_update]])%>';
|
||||
// Download file
|
||||
XHR.get(sysUpgradeUrl, {
|
||||
token: tokenStr,
|
||||
url: sysUpgradeInfo ? sysUpgradeInfo.url : '',
|
||||
md5: sysUpgradeInfo ? sysUpgradeInfo.md5 : ''
|
||||
}, function(x,json) {
|
||||
if(json.code) {
|
||||
removePageNotice_sysup();
|
||||
onRequestError_sysup(btn, json.error);
|
||||
} else {
|
||||
btn.value = flashing;
|
||||
message.style.display = '';
|
||||
label.innerHTML = '<%:Upgrade successful, Waiting for device...%>';
|
||||
|
||||
var opts = "-u";
|
||||
if (!kconfig.checked){
|
||||
opts = "-n";
|
||||
}
|
||||
|
||||
if (kopkg.checked){
|
||||
opts = "-q -u";
|
||||
}
|
||||
if (!kconfig.checked && kopkg.checked){
|
||||
opts = "-n -q";
|
||||
}
|
||||
removePageNotice_sysup();
|
||||
setTimeout(check, 8000);
|
||||
XHR.get(sysUpgradeUrl, {
|
||||
token: tokenStr,
|
||||
task: 'flash',
|
||||
file: json.file,
|
||||
retain: opts
|
||||
}, function(x,json) {
|
||||
},300)
|
||||
}
|
||||
},300)
|
||||
}
|
||||
//]]>
|
||||
|
||||
</script>
|
||||
|
||||
<div class="cbi-value">
|
||||
<label class="value-title" style="float:left;">
|
||||
<%:Current system version%>
|
||||
</label>
|
||||
|
||||
<div class="cbi-value-description">
|
||||
<span>【 <%=system_version%> 】</span>
|
||||
<span id="_sysup-check_btn-detail"></span>
|
||||
</div>
|
||||
<style>
|
||||
#updatelogs .alert-message p{
|
||||
text-align:left;
|
||||
}
|
||||
#updatelogs .alert-message a{
|
||||
color: orangered;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.red{
|
||||
color: orangered;
|
||||
}
|
||||
#updatelogs h4{
|
||||
padding-bottom:0;
|
||||
}
|
||||
#updatelogs h4.title{
|
||||
font-size:130%
|
||||
}
|
||||
</style>
|
||||
<pre id="updatelogs" style="font-family:Microsoft Yahei;line-height:1.5rem;white-space:pre-line;"></div>
|
||||
<div id="retain" style="display:none;margin:0.5rem;">
|
||||
<p style="margin-top:0.4rem;"><button class="btn"><input type="checkbox" checked id="kconfig"> <%:Keep settings and retain the current configuration%></button></p>
|
||||
<p style="margin-top:0.5rem;"><button class="btn"><input type="checkbox" checked id="kopkg"> <%:Retain the current packages%></button></p>
|
||||
</div>
|
||||
<input class="cbi-button cbi-input-apply cbi-button-reset" type="button" id="_sysup-check_btn" onclick="onBtnClick_sysup(this);" value="<%:Check update%>" style="margin-top:0.5rem;"/>
|
||||
|
||||
</div>
|
||||
<p class="alert-message notice reboot-message" style="display:none">
|
||||
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
|
||||
<span><%:Device is rebooting...%></span>
|
||||
</p>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var tries = 0,
|
||||
kconfig = document.querySelector('#kconfig'),
|
||||
kopkg = document.querySelector('#kopkg');
|
||||
var message = document.querySelector('p.reboot-message');
|
||||
var label = message.querySelector('span');
|
||||
|
||||
function ok() {
|
||||
window.location = '<%=url("admin")%>';
|
||||
}
|
||||
|
||||
function check() {
|
||||
window.setTimeout(ping, 3000);
|
||||
}
|
||||
|
||||
function ping() {
|
||||
var img = document.createElement('img');
|
||||
|
||||
img.onload = ok;
|
||||
img.onerror = check;
|
||||
img.src = '<%=resource%>/icons/loading.gif?' + Math.random();
|
||||
|
||||
if (tries++ >= 30) {
|
||||
message.classList.remove('notice');
|
||||
message.classList.add('warning');
|
||||
label.innerHTML = '<%:Device unreachable! Still waiting for device...%>';
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<%+footer%>
|
||||
<%
|
||||
local system_version = require "luci.model.cbi.gpsysupgrade.sysupgrade".get_system_version()
|
||||
-%>
|
||||
<%+header%>
|
||||
<h2 name="content"><%:System upgrade%></h2>
|
||||
<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%>
|
||||
<p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
|
||||
<%- end -%>
|
||||
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var sysUpgradeInfo;
|
||||
var tokenStr = '<%=token%>';
|
||||
var clickToForceUpdateText = '<%:It is the latest version,Reflash?%>';
|
||||
var updateSuccessText = '<%:Upgrade successful%>';
|
||||
var clickToUpdateText = '<%:Click to Upgrade%>';
|
||||
var inProgressText = '<%:Upgrading...%>';
|
||||
var unexpectedErrorText = '<%:Unexpected error%>';
|
||||
var updateInProgressNotice = '<%:Upgrading, are you sure to close?%>';
|
||||
var downloadingText = '<%:Downloading...%>';
|
||||
var flashing = '<%:Flashing...%>';
|
||||
var checking = '<%:Checking...%>';
|
||||
|
||||
window.onload = function() {
|
||||
var sysupCheckBtn = document.getElementById('_sysup-check_btn');
|
||||
checkUpdate_sysup(sysupCheckBtn)
|
||||
};
|
||||
|
||||
function addPageNotice_sysup() {
|
||||
window.onbeforeunload = function(e) {
|
||||
e.returnValue = updateInProgressNotice;
|
||||
return updateInProgressNotice;
|
||||
};
|
||||
}
|
||||
|
||||
function removePageNotice_sysup() {
|
||||
window.onbeforeunload = null;
|
||||
}
|
||||
|
||||
function onUpdateSuccess_sysup(btn) {
|
||||
alert(updateSuccessText);
|
||||
|
||||
if(btn) {
|
||||
btn.value = updateSuccessText;
|
||||
btn.placeholder = updateSuccessText;
|
||||
btn.disabled = true;
|
||||
}
|
||||
|
||||
window.setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function onRequestError_sysup(btn, errorMessage) {
|
||||
btn.disabled = false;
|
||||
btn.value = btn.placeholder;
|
||||
|
||||
if(errorMessage) {
|
||||
alert(errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
function onBtnClick_sysup(btn) {
|
||||
if(sysUpgradeInfo === undefined) {
|
||||
checkUpdate_sysup(btn);
|
||||
} else {
|
||||
doUpdate_sysup(btn);
|
||||
}
|
||||
}
|
||||
|
||||
function checkUpdate_sysup(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = checking;
|
||||
|
||||
addPageNotice_sysup();
|
||||
|
||||
var ckeckDetailElm = document.getElementById(btn.id + '-detail');
|
||||
var updateLogs = document.getElementById('updatelogs');
|
||||
|
||||
XHR.get('<%=url([[admin]], [[services]], [[gpsysupgrade]], [[sysversion_check]])%>', {
|
||||
token: tokenStr,
|
||||
model: ''
|
||||
}, function(x,json) {
|
||||
removePageNotice_sysup();
|
||||
|
||||
if(json.code) {
|
||||
sysUpgradeInfo = undefined;
|
||||
onRequestError_sysup(btn, json.error);
|
||||
} else {
|
||||
document.querySelector('#retain').style.display = '';
|
||||
if(json.update) {
|
||||
sysUpgradeInfo = json;
|
||||
btn.disabled = false;
|
||||
btn.value = clickToUpdateText;
|
||||
btn.placeholder = clickToUpdateText;
|
||||
|
||||
if(ckeckDetailElm) {
|
||||
var urlNode = '';
|
||||
if(json.version) {
|
||||
if(json.notice) {
|
||||
urlNode = '<em style="color:red;">最新版本号:' + json.version + ' 正式版</em>';
|
||||
} else {
|
||||
urlNode = '<em style="color:red;">最新版本号:' + json.version + ' 尝鲜版</em>';
|
||||
}
|
||||
}
|
||||
if(json.logs) {
|
||||
logs = '<div class="alert alert-message">' + json.logs + '</div>';
|
||||
}
|
||||
ckeckDetailElm.innerHTML = urlNode;
|
||||
updateLogs.innerHTML = logs;
|
||||
|
||||
}
|
||||
} else {
|
||||
sysUpgradeInfo = json;
|
||||
btn.disabled = false;
|
||||
btn.value = clickToForceUpdateText;
|
||||
btn.placeholder = clickToForceUpdateText;
|
||||
}
|
||||
}
|
||||
},300);
|
||||
}
|
||||
|
||||
function doUpdate_sysup(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = downloadingText;
|
||||
|
||||
addPageNotice_sysup();
|
||||
|
||||
var sysUpgradeUrl = '<%=url([[admin]], [[services]], [[gpsysupgrade]], [[sysversion_update]])%>';
|
||||
// Download file
|
||||
XHR.get(sysUpgradeUrl, {
|
||||
token: tokenStr,
|
||||
url: sysUpgradeInfo ? sysUpgradeInfo.url : '',
|
||||
md5: sysUpgradeInfo ? sysUpgradeInfo.md5 : ''
|
||||
}, function(x,json) {
|
||||
if(json.code) {
|
||||
removePageNotice_sysup();
|
||||
onRequestError_sysup(btn, json.error);
|
||||
} else {
|
||||
btn.value = flashing;
|
||||
message.style.display = '';
|
||||
label.innerHTML = '<%:Upgrade successful, Waiting for device...%>';
|
||||
|
||||
var opts = "-u";
|
||||
if (!kconfig.checked){
|
||||
opts = "-n";
|
||||
}
|
||||
|
||||
if (kopkg.checked){
|
||||
opts = "-q -u";
|
||||
}
|
||||
if (!kconfig.checked && kopkg.checked){
|
||||
opts = "-n -q";
|
||||
}
|
||||
removePageNotice_sysup();
|
||||
setTimeout(check, 8000);
|
||||
XHR.get(sysUpgradeUrl, {
|
||||
token: tokenStr,
|
||||
task: 'flash',
|
||||
file: json.file,
|
||||
retain: opts
|
||||
}, function(x,json) {
|
||||
},300)
|
||||
}
|
||||
},300)
|
||||
}
|
||||
//]]>
|
||||
|
||||
</script>
|
||||
|
||||
<div class="cbi-value">
|
||||
<label class="value-title" style="float:left;">
|
||||
<%:Current system version%>
|
||||
</label>
|
||||
|
||||
<div class="cbi-value-description">
|
||||
<span>【 <%=system_version%> 】</span>
|
||||
<span id="_sysup-check_btn-detail"></span>
|
||||
</div>
|
||||
<style>
|
||||
#updatelogs .alert-message p{
|
||||
text-align:left;
|
||||
}
|
||||
#updatelogs .alert-message a{
|
||||
color: orangered;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.red{
|
||||
color: orangered;
|
||||
}
|
||||
#updatelogs h4{
|
||||
padding-bottom:0;
|
||||
}
|
||||
#updatelogs h4.title{
|
||||
font-size:130%
|
||||
}
|
||||
</style>
|
||||
<pre id="updatelogs" style="font-family:Microsoft Yahei;line-height:1.5rem;white-space:pre-line;"></div>
|
||||
<div id="retain" style="display:none;margin:0.5rem;">
|
||||
<p style="margin-top:0.4rem;"><button class="btn"><input type="checkbox" checked id="kconfig"> <%:Keep settings and retain the current configuration%></button></p>
|
||||
<p style="margin-top:0.5rem;"><button class="btn"><input type="checkbox" checked id="kopkg"> <%:Retain the current packages%></button></p>
|
||||
</div>
|
||||
<input class="cbi-button cbi-input-apply cbi-button-reset" type="button" id="_sysup-check_btn" onclick="onBtnClick_sysup(this);" value="<%:Check update%>" style="margin-top:0.5rem;"/>
|
||||
|
||||
</div>
|
||||
<p class="alert-message notice reboot-message" style="display:none">
|
||||
<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
|
||||
<span><%:Device is rebooting...%></span>
|
||||
</p>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var tries = 0,
|
||||
kconfig = document.querySelector('#kconfig'),
|
||||
kopkg = document.querySelector('#kopkg');
|
||||
var message = document.querySelector('p.reboot-message');
|
||||
var label = message.querySelector('span');
|
||||
|
||||
function ok() {
|
||||
window.location = '<%=url("admin")%>';
|
||||
}
|
||||
|
||||
function check() {
|
||||
window.setTimeout(ping, 3000);
|
||||
}
|
||||
|
||||
function ping() {
|
||||
var img = document.createElement('img');
|
||||
|
||||
img.onload = ok;
|
||||
img.onerror = check;
|
||||
img.src = '<%=resource%>/icons/loading.gif?' + Math.random();
|
||||
|
||||
if (tries++ >= 30) {
|
||||
message.classList.remove('notice');
|
||||
message.classList.add('warning');
|
||||
label.innerHTML = '<%:Device unreachable! Still waiting for device...%>';
|
||||
}
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<%+footer%>
|
||||
|
|
|
@ -1,101 +1,101 @@
|
|||
#!/bin/sh
|
||||
|
||||
START=99
|
||||
|
||||
LOCK=/var/lock/opkgupgrade.lock
|
||||
BKOPKG="/etc/backup"
|
||||
# 防止重复启动
|
||||
[ -f $LOCK ] && exit 1
|
||||
touch $LOCK
|
||||
|
||||
if [ ! -f "$BKOPKG/user_installed.opkg" ]; then
|
||||
touch /etc/inited
|
||||
fi
|
||||
|
||||
function opkgupgrade() {
|
||||
mkdir -p $BKOPKG
|
||||
if [ ! -f /etc/inited ]; then
|
||||
[ "$(uci -q get dhcp.@dnsmasq[0].noresolv)" ] && {
|
||||
uci -q del dhcp.@dnsmasq[0].noresolv
|
||||
uci commit dhcp
|
||||
/etc/init.d/dnsmasq reload
|
||||
}
|
||||
# sh -c "cat '/usr/share/patch/adblock.patch' | patch -d '/' -p1 --forward" >/dev/null 2>&1
|
||||
fi
|
||||
c1=0
|
||||
c2=0
|
||||
c3=0
|
||||
c4=0
|
||||
while ! curl --retry 3 -m 5 https://op.supes.top >/dev/null 2>&1;do
|
||||
echo "无法连接仓库服务器,请检查网络. $c1" | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log
|
||||
[ $c1 eq 120 ] && return || let c1++
|
||||
sleep 5
|
||||
done
|
||||
while :; do
|
||||
opkg update | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1
|
||||
if [ "$?" == "0" ]; then
|
||||
def="$(opkg list-upgradable | cut -f 1 -d ' ' | grep -vE 'opkg|luci-lib-fs|firewall|base-files|luci-base|busybox|^?nginx($|-)|dnsmasq-full|coremark|miniupnpd|luci-mod-network|luci-mod-status|luci-mod-system')"
|
||||
if [ ! -f /etc/inited ]; then
|
||||
insed="$(cat $BKOPKG/user_installed.opkg)"
|
||||
fi
|
||||
upopkg="$insed $def"
|
||||
if [ "$upopkg" != " " ]; then
|
||||
for ipk in $upopkg; do
|
||||
while [ ! "$(opkg list-installed | cut -f 1 -d ' ' | grep -w $ipk)" ]; do
|
||||
opkg install --force-overwrite --force-checksum --force-depends $ipk 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
[ $c2 eq 3 ] && {
|
||||
echo $ipk >> $BKOPKG/failed.txt
|
||||
sed -i "/^$ipk$/d" $BKOPKG/user_installed.opkg
|
||||
break
|
||||
} || let c2++
|
||||
sleep 1
|
||||
rm -f /var/lock/opkg.lock
|
||||
done
|
||||
if [[ $ipk == luci-app-* ]]; then
|
||||
opkg install --force-overwrite --force-checksum luci-i18n-"$(echo $ipk | cut -d - -f 3-4)"-zh-cn 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
fi
|
||||
done
|
||||
rm -f /etc/config/*-opkg
|
||||
fi
|
||||
while [[ -f $BKOPKG/failed.txt && -f /etc/inited && $c4 -le 5 ]]; do
|
||||
for ipk in $(cat $BKOPKG/failed.txt); do
|
||||
opkg install --force-overwrite --force-checksum --force-depends $ipk 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
[[ "$(opkg list-installed | cut -f 1 -d ' ' | grep -w $ipk)" ]] && {
|
||||
sed -i "/^$ipk$/d" $BKOPKG/failed.txt
|
||||
[ -n "$(cat $BKOPKG/failed.txt)" ] || rm -f $BKOPKG/failed.txt
|
||||
}
|
||||
done
|
||||
let c4++
|
||||
sleep 1
|
||||
rm -f /var/lock/opkg.lock
|
||||
done
|
||||
if [[ $ipk == luci-app-* ]]; then
|
||||
opkg install --force-overwrite --force-checksum luci-i18n-"$(echo $ipk | cut -d - -f 3-4)"-zh-cn 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
fi
|
||||
mv $BKOPKG/failed.txt $BKOPKG/failed_.txt >/dev/null 2>&1
|
||||
touch /etc/inited
|
||||
rm -f /var/lock/opkg.lock
|
||||
break
|
||||
fi
|
||||
[ $c3 eq 10 ] && break || let c3++
|
||||
done
|
||||
rm -f /var/lock/opkg.lock
|
||||
}
|
||||
(
|
||||
if [[ ! -f /etc/inited || -f $BKOPKG/failed.txt ]]; then
|
||||
opkgupgrade || true
|
||||
elif [[ -f /etc/inited && `uci -q get system.@system[0].autoupgrade_pkg || echo "1"` != '0' ]]; then
|
||||
opkgupgrade || true
|
||||
fi
|
||||
rm -f /var/lock/opkg.lock
|
||||
|
||||
[[ -f "/bin/coremark" && ! -f "/etc/bench.log" ]] && {
|
||||
sleep 5
|
||||
/bin/coremark >/tmp/coremark.log
|
||||
cat /tmp/coremark.log | grep "CoreMark 1.0" | cut -d "/" -f 1 >/etc/bench.log
|
||||
sed -i 's/CoreMark 1.0/(CpuMark/g' /etc/bench.log
|
||||
echo " Scores)" >>/etc/bench.log
|
||||
}
|
||||
|
||||
rm -f $LOCK
|
||||
) &
|
||||
#!/bin/sh
|
||||
|
||||
START=99
|
||||
|
||||
LOCK=/var/lock/opkgupgrade.lock
|
||||
BKOPKG="/etc/backup"
|
||||
# 防止重复启动
|
||||
[ -f $LOCK ] && exit 1
|
||||
touch $LOCK
|
||||
|
||||
if [ ! -f "$BKOPKG/user_installed.opkg" ]; then
|
||||
touch /etc/inited
|
||||
fi
|
||||
|
||||
function opkgupgrade() {
|
||||
mkdir -p $BKOPKG
|
||||
if [ ! -f /etc/inited ]; then
|
||||
[ "$(uci -q get dhcp.@dnsmasq[0].noresolv)" ] && {
|
||||
uci -q del dhcp.@dnsmasq[0].noresolv
|
||||
uci commit dhcp
|
||||
/etc/init.d/dnsmasq reload
|
||||
}
|
||||
# sh -c "cat '/usr/share/patch/adblock.patch' | patch -d '/' -p1 --forward" >/dev/null 2>&1
|
||||
fi
|
||||
c1=0
|
||||
c2=0
|
||||
c3=0
|
||||
c4=0
|
||||
while ! curl --retry 3 -m 5 https://op.dllkids.xyz >/dev/null 2>&1;do
|
||||
echo "无法连接仓库服务器,请检查网络. $c1" | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log
|
||||
[ $c1 eq 120 ] && return || let c1++
|
||||
sleep 5
|
||||
done
|
||||
while :; do
|
||||
opkg update | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1
|
||||
if [ "$?" == "0" ]; then
|
||||
def="$(opkg list-upgradable | cut -f 1 -d ' ' | grep -vE 'opkg|luci-lib-fs|firewall|base-files|luci-base|busybox|^?nginx($|-)|dnsmasq-full|coremark|miniupnpd|luci-mod-network|luci-mod-status|luci-mod-system')"
|
||||
if [ ! -f /etc/inited ]; then
|
||||
insed="$(cat $BKOPKG/user_installed.opkg)"
|
||||
fi
|
||||
upopkg="$insed $def"
|
||||
if [ "$upopkg" != " " ]; then
|
||||
for ipk in $upopkg; do
|
||||
while [ ! "$(opkg list-installed | cut -f 1 -d ' ' | grep -w $ipk)" ]; do
|
||||
opkg install --force-overwrite --force-checksum --force-depends $ipk 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
[ $c2 eq 3 ] && {
|
||||
echo $ipk >> $BKOPKG/failed.txt
|
||||
sed -i "/^$ipk$/d" $BKOPKG/user_installed.opkg
|
||||
break
|
||||
} || let c2++
|
||||
sleep 1
|
||||
rm -f /var/lock/opkg.lock
|
||||
done
|
||||
if [[ $ipk == luci-app-* ]]; then
|
||||
opkg install --force-overwrite --force-checksum luci-i18n-"$(echo $ipk | cut -d - -f 3-4)"-zh-cn 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
fi
|
||||
done
|
||||
rm -f /etc/config/*-opkg
|
||||
fi
|
||||
while [[ -f $BKOPKG/failed.txt && -f /etc/inited && $c4 -le 5 ]]; do
|
||||
for ipk in $(cat $BKOPKG/failed.txt); do
|
||||
opkg install --force-overwrite --force-checksum --force-depends $ipk 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
[[ "$(opkg list-installed | cut -f 1 -d ' ' | grep -w $ipk)" ]] && {
|
||||
sed -i "/^$ipk$/d" $BKOPKG/failed.txt
|
||||
[ -n "$(cat $BKOPKG/failed.txt)" ] || rm -f $BKOPKG/failed.txt
|
||||
}
|
||||
done
|
||||
let c4++
|
||||
sleep 1
|
||||
rm -f /var/lock/opkg.lock
|
||||
done
|
||||
if [[ $ipk == luci-app-* ]]; then
|
||||
opkg install --force-overwrite --force-checksum luci-i18n-"$(echo $ipk | cut -d - -f 3-4)"-zh-cn 2>&1 | sed -e "s/^/$(date +%Y-%m-%d" "%H:%M:%S) /" >>/tmp/opkgupdate.log 2>&1 || true
|
||||
fi
|
||||
mv $BKOPKG/failed.txt $BKOPKG/failed_.txt >/dev/null 2>&1
|
||||
touch /etc/inited
|
||||
rm -f /var/lock/opkg.lock
|
||||
break
|
||||
fi
|
||||
[ $c3 eq 10 ] && break || let c3++
|
||||
done
|
||||
rm -f /var/lock/opkg.lock
|
||||
}
|
||||
(
|
||||
if [[ ! -f /etc/inited || -f $BKOPKG/failed.txt ]]; then
|
||||
opkgupgrade || true
|
||||
elif [[ -f /etc/inited && `uci -q get system.@system[0].autoupgrade_pkg || echo "1"` != '0' ]]; then
|
||||
opkgupgrade || true
|
||||
fi
|
||||
rm -f /var/lock/opkg.lock
|
||||
|
||||
[[ -f "/bin/coremark" && ! -f "/etc/bench.log" ]] && {
|
||||
sleep 5
|
||||
/bin/coremark >/tmp/coremark.log
|
||||
cat /tmp/coremark.log | grep "CoreMark 1.0" | cut -d "/" -f 1 >/etc/bench.log
|
||||
sed -i 's/CoreMark 1.0/(CpuMark/g' /etc/bench.log
|
||||
echo " Scores)" >>/etc/bench.log
|
||||
}
|
||||
|
||||
rm -f $LOCK
|
||||
) &
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
chmod +x /etc/init.d/packages >/dev/null 2>&1
|
||||
rm -rf /tmp/luci-modulecache /tmp/luci-indexcache*
|
||||
chmod +x /etc/init.d/packages >/dev/null 2>&1
|
||||
rm -rf /tmp/luci-modulecache /tmp/luci-indexcache*
|
||||
|
|
|
@ -1,21 +1,30 @@
|
|||
luci-app-netdata for OpenWRT/Lede(ÖÐÎÄ)
|
||||
luci-app-netdata for OpenWRT/Lede
|
||||
|
||||
|
||||
Install to OpenWRT/LEDE
|
||||
|
||||
git clone https://github.com/sirpdboy/luci-app-netdata
|
||||
|
||||
cp -r luci-app-netdata LEDE_DIR/package/luci-app-netdata
|
||||
|
||||
cd LEDE_DIR
|
||||
|
||||
./scripts/feeds update -a
|
||||
|
||||
./scripts/feeds install -a
|
||||
|
||||
make menuconfig
|
||||
|
||||
LuCI --->
|
||||
|
||||
1. Collections --->
|
||||
|
||||
<*> luci
|
||||
|
||||
3. Applications --->
|
||||
|
||||
<*> luci-app-netdata.........................LuCI support for Netdata
|
||||
|
||||
|
||||
make package/new/luci-app-netdata/compile V=s
|
||||
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=smartdns-le
|
||||
PKG_VERSION:=2021.07.30
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://www.github.com/pymumu/smartdns.git
|
||||
PKG_SOURCE_VERSION:=a5887932218d007415dfee435c41f3b25a25bd97
|
||||
|
||||
PKG_MAINTAINER:=Nick Peng <pymumu@gmail.com>
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
MAKE_VARS += VER=$(PKG_VERSION)
|
||||
MAKE_PATH:=src
|
||||
|
||||
define Package/smartdns-le
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=smartdns server
|
||||
DEPENDS:=+libc +libpthread +libopenssl
|
||||
URL:=https://www.github.com/pymumu/smartdns/
|
||||
endef
|
||||
|
||||
define Package/smartdns-le/description
|
||||
SmartDNS is a local DNS server which accepts DNS query requests from local network clients,
|
||||
gets DNS query results from multiple upstream DNS servers concurrently, and returns the fastest IP to clients.
|
||||
Unlike dnsmasq's all-servers, smartdns returns the fastest IP.
|
||||
endef
|
||||
|
||||
define Package/smartdns-le/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/smartdns $(1)/usr/sbin/smartdns-le
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,smartdns-le))
|
Loading…
Reference in New Issue