update-11.17

This commit is contained in:
github-actions[bot] 2021-11-17 09:01:13 +08:00
parent 685d7ecd81
commit b3e38aacab
19 changed files with 710 additions and 766 deletions

View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: ------------------- 规则更新成功! -------------------

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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 -%>

View File

@ -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 + ' &nbsp;正式版</em>';
} else {
urlNode = '<em style="color:red;">最新版本号:' + json.version + ' &nbsp;尝鲜版</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>
&nbsp;&nbsp;&nbsp;<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 + ' &nbsp;正式版</em>';
} else {
urlNode = '<em style="color:red;">最新版本号:' + json.version + ' &nbsp;尝鲜版</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>
&nbsp;&nbsp;&nbsp;<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%>

View File

@ -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
) &

View File

@ -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*

View File

@ -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

View File

@ -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))