From 426f1ac2c695de43d712833ec7786a95886afb5e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Dec 2021 22:50:52 +0800 Subject: [PATCH] update-12.01 --- luci-app-gpsysupgrade/Makefile | 22 +- luci-app-gpsysupgrade/README.md | 2 +- .../luasrc/controller/gpsysupgrade.lua | 76 +-- .../luasrc/model/cbi/gpsysupgrade/api.lua | 156 +++--- .../model/cbi/gpsysupgrade/sysupgrade.lua | 272 +++++----- .../luasrc/view/admin_status/index/links.htm | 16 +- .../view/admin_status/index/sysupgrade.htm | 80 +-- .../view/gpsysupgrade/system_version.htm | 482 +++++++++--------- .../po/zh_Hans/gpsysupgrade.po | 2 +- .../root/etc/init.d/packages | 205 ++++---- .../root/etc/uci-defaults/luci-gpsysupgrade | 4 +- my-autocore/Makefile | 2 + my-autocore/files/x86/autocore | 50 ++ my-default-settings/files/sysinfo.sh | 23 +- my-default-settings/po/zh_Hans/default.po | 9 - 15 files changed, 724 insertions(+), 677 deletions(-) create mode 100644 my-autocore/files/x86/autocore diff --git a/luci-app-gpsysupgrade/Makefile b/luci-app-gpsysupgrade/Makefile index 8c6425319..3a60f8c4d 100644 --- a/luci-app-gpsysupgrade/Makefile +++ b/luci-app-gpsysupgrade/Makefile @@ -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 diff --git a/luci-app-gpsysupgrade/README.md b/luci-app-gpsysupgrade/README.md index 7b6209f04..c47bf1f8b 100644 --- a/luci-app-gpsysupgrade/README.md +++ b/luci-app-gpsysupgrade/README.md @@ -1 +1 @@ -# Only for my Openwrt firmware +# Only for my Openwrt firmware diff --git a/luci-app-gpsysupgrade/luasrc/controller/gpsysupgrade.lua b/luci-app-gpsysupgrade/luasrc/controller/gpsysupgrade.lua index cf96e5737..0e3107ca7 100644 --- a/luci-app-gpsysupgrade/luasrc/controller/gpsysupgrade.lua +++ b/luci-app-gpsysupgrade/luasrc/controller/gpsysupgrade.lua @@ -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 diff --git a/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/api.lua b/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/api.lua index a38451c34..c0bf3fec3 100644 --- a/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/api.lua +++ b/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/api.lua @@ -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 = {"--quiet", "--connect-timeout=3", "--timeout=6", "--tries=2"} +command_timeout = 60 +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 + diff --git a/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/sysupgrade.lua b/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/sysupgrade.lua index efd8c8adf..e7974d5c1 100644 --- a/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/sysupgrade.lua +++ b/luci-app-gpsysupgrade/luasrc/model/cbi/gpsysupgrade/sysupgrade.lua @@ -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.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 +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.wget, {api._unpack(api.wget_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 diff --git a/luci-app-gpsysupgrade/luasrc/view/admin_status/index/links.htm b/luci-app-gpsysupgrade/luasrc/view/admin_status/index/links.htm index 5bbaecef1..25f01935d 100644 --- a/luci-app-gpsysupgrade/luasrc/view/admin_status/index/links.htm +++ b/luci-app-gpsysupgrade/luasrc/view/admin_status/index/links.htm @@ -1,8 +1,8 @@ - + diff --git a/luci-app-gpsysupgrade/luasrc/view/admin_status/index/sysupgrade.htm b/luci-app-gpsysupgrade/luasrc/view/admin_status/index/sysupgrade.htm index f17b90a03..9905fbc0e 100644 --- a/luci-app-gpsysupgrade/luasrc/view/admin_status/index/sysupgrade.htm +++ b/luci-app-gpsysupgrade/luasrc/view/admin_status/index/sysupgrade.htm @@ -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 --%> - -<% end -%> +<% +local fs = require "nixio.fs" +local uci = require 'luci.model.uci'.cursor() + +if fs.access('/etc/config/wizard') then + autoupgrade_fm = uci:get('wizard', 'default', 'autoupgrade_fm') +end +if autoupgrade_fm ~= '0' then +-%> + +<% end -%> diff --git a/luci-app-gpsysupgrade/luasrc/view/gpsysupgrade/system_version.htm b/luci-app-gpsysupgrade/luasrc/view/gpsysupgrade/system_version.htm index 3f6a7fa03..0e4204aef 100644 --- a/luci-app-gpsysupgrade/luasrc/view/gpsysupgrade/system_version.htm +++ b/luci-app-gpsysupgrade/luasrc/view/gpsysupgrade/system_version.htm @@ -1,241 +1,241 @@ -<% -local system_version = require "luci.model.cbi.gpsysupgrade.sysupgrade".get_system_version() --%> -<%+header%> -