From 9f169a17d3faa875359f1a592ea7f0dfef971e1a Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Tue, 29 Oct 2019 04:22:48 -0700 Subject: [PATCH] luci-app-unblockmusic: add auto update core js --- package/lean/UnblockNeteaseMusic/Makefile | 2 + package/lean/luci-app-unblockmusic/Makefile | 4 +- .../luasrc/model/cbi/unblockmusic.lua | 19 +++++- .../root/etc/config/unblockmusic | 1 + .../root/etc/init.d/unblockmusic | 20 ++++++ .../share/UnblockNeteaseMusic/update_core.sh | 64 +++++++++++++++++++ 6 files changed, 107 insertions(+), 3 deletions(-) create mode 100755 package/lean/luci-app-unblockmusic/root/usr/share/UnblockNeteaseMusic/update_core.sh diff --git a/package/lean/UnblockNeteaseMusic/Makefile b/package/lean/UnblockNeteaseMusic/Makefile index 95e804e6e..2e207b177 100644 --- a/package/lean/UnblockNeteaseMusic/Makefile +++ b/package/lean/UnblockNeteaseMusic/Makefile @@ -43,6 +43,8 @@ endef define Build/Prepare tar -xzvf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) + echo -e $(PKG_VERSION) > $(PKG_BUILD_DIR)/UnblockNeteaseMusic/core_ver + echo -e $(PKG_SOURCE_VERSION) > $(PKG_BUILD_DIR)/UnblockNeteaseMusic/local_ver endef define Build/Configure diff --git a/package/lean/luci-app-unblockmusic/Makefile b/package/lean/luci-app-unblockmusic/Makefile index 5892e2991..bec835b07 100644 --- a/package/lean/luci-app-unblockmusic/Makefile +++ b/package/lean/luci-app-unblockmusic/Makefile @@ -11,12 +11,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-unblockmusic PKG_VERSION:=2.2.0 -PKG_RELEASE:=5 +PKG_RELEASE:=8 PKG_LICENSE:=Apache-2.0 LUCI_TITLE:=LuCI support for Unblock NeteaseCloudMusic -LUCI_DEPENDS:=+UnblockNeteaseMusic +bash +dnsmasq-full +ipset +LUCI_DEPENDS:=+UnblockNeteaseMusic +bash +dnsmasq-full +ipset +bash LUCI_PKGARCH:=all PKG_MAINTAINER:=lean diff --git a/package/lean/luci-app-unblockmusic/luasrc/model/cbi/unblockmusic.lua b/package/lean/luci-app-unblockmusic/luasrc/model/cbi/unblockmusic.lua index 4a95f8b7c..436b19a85 100644 --- a/package/lean/luci-app-unblockmusic/luasrc/model/cbi/unblockmusic.lua +++ b/package/lean/luci-app-unblockmusic/luasrc/model/cbi/unblockmusic.lua @@ -32,7 +32,7 @@ endpoint.description = translate("默认为 https://music.163.com") o = s:option(Button,"certificate",translate("HTTPS 证书")) o.inputtitle = translate("下载 CA 根证书") o.description = translate("iOS 13 系统需要在“设置 -> 通用 -> 关于本机 -> 证书信任设置” 中,信任 UnblockNeteaseMusic Root CA )") -o.inputstyle = "reload" +o.inputstyle = "apply" o.write = function() Download() end @@ -54,4 +54,21 @@ function Download() luci.http.close() end +o = s:option(Flag, "autoupdate") +o.title = translate("自动检查更新主程序") +o.default = 0 +o.rmempty = false +o.description = translate("每天自动检测并更新到最新版本") + +local ver = luci.sys.exec("cat /usr/share/UnblockNeteaseMusic/core_ver") + +o = s:option(Button, "restart",translate("手动更新")) +o.inputtitle = translate("更新核心版本") +o.description = string.format(translate("目前运行主程序版本") .. ": %s ", ver) +o.inputstyle = "reload" +o.write = function() + luci.sys.exec("bash /usr/share/UnblockNeteaseMusic/update_core.sh 2>&1") + luci.http.redirect(luci.dispatcher.build_url("admin", "services", "unblockmusic")) +end + return mp diff --git a/package/lean/luci-app-unblockmusic/root/etc/config/unblockmusic b/package/lean/luci-app-unblockmusic/root/etc/config/unblockmusic index 26f7c4756..1102183f6 100644 --- a/package/lean/luci-app-unblockmusic/root/etc/config/unblockmusic +++ b/package/lean/luci-app-unblockmusic/root/etc/config/unblockmusic @@ -5,5 +5,6 @@ config unblockmusic option port '5200' option enable_ipset '1' option endpoint 'https://music.163.com' + option autoupdate '1' diff --git a/package/lean/luci-app-unblockmusic/root/etc/init.d/unblockmusic b/package/lean/luci-app-unblockmusic/root/etc/init.d/unblockmusic index 28a592b8d..1aa15e8de 100755 --- a/package/lean/luci-app-unblockmusic/root/etc/init.d/unblockmusic +++ b/package/lean/luci-app-unblockmusic/root/etc/init.d/unblockmusic @@ -7,6 +7,9 @@ enable=$(uci get unblockmusic.@unblockmusic[0].enabled) TYPE=$(uci get unblockmusic.@unblockmusic[0].musicapptype) ROUTE_IP=$(uci get network.lan.ipaddr) ENDPOINT=$(uci get unblockmusic.@unblockmusic[0].endpoint) +AUTOUPDATE=$(uci get unblockmusic.@unblockmusic[0].autoupdate) + +CRON_FILE=/etc/crontabs/root ipt_n="iptables -t nat" @@ -51,6 +54,21 @@ set_firewall(){ EOF } +add_cron() +{ + if [ $AUTOUPDATE -eq 1 ]; then + sed -i '/update_core.sh/d' $CRON_FILE + echo '0 2 * * * /usr/share/UnblockNeteaseMusic/update_core.sh 2>&1' >> $CRON_FILE + crontab $CRON_FILE + fi +} + +del_cron() +{ + sed -i '/update_core.sh/d' $CRON_FILE + /etc/init.d/cron restart +} + start() { stop @@ -70,6 +88,7 @@ start() fi set_firewall + add_cron /usr/share/UnblockNeteaseMusic/logcheck.sh >/dev/null 2>&1 & } @@ -82,6 +101,7 @@ stop() rm -f /tmp/unblockmusic.log del_rule + del_cron } diff --git a/package/lean/luci-app-unblockmusic/root/usr/share/UnblockNeteaseMusic/update_core.sh b/package/lean/luci-app-unblockmusic/root/usr/share/UnblockNeteaseMusic/update_core.sh new file mode 100755 index 000000000..51705698b --- /dev/null +++ b/package/lean/luci-app-unblockmusic/root/usr/share/UnblockNeteaseMusic/update_core.sh @@ -0,0 +1,64 @@ + + +function check_if_already_running(){ + running_tasks="$(ps |grep "unblockneteasemusic" |grep "update_core" |grep -v "grep" |awk '{print $1}' |wc -l)" + [ "${running_tasks}" -gt "2" ] && echo -e "\nA task is already running." >>/tmp/unblockmusic_update.log && exit 2 +} + +function clean_log(){ + echo "" > /tmp/unblockmusic_update.log +} + +function check_latest_version(){ + latest_ver="$(wget -O- https://github.com/nondanee/UnblockNeteaseMusic/commits/master |tr -d '\n' |grep -Eo 'commit\/[0-9a-z]+' |sed -n 1p |sed 's#commit/##g')" + [ -z "${latest_ver}" ] && echo -e "\nFailed to check latest version, please try again later." >>/tmp/unblockmusic_update.log && exit 1 + if [ ! -e "/usr/share/UnblockNeteaseMusic/local_ver" ]; then + clean_log + echo -e "Local version: NOT FOUND, cloud version: ${latest_ver}." >>/tmp/unblockmusic_update.log + update_core + else + if [ "$(cat /usr/share/UnblockNeteaseMusic/local_ver)" != "${latest_ver}" ]; then + clean_log + echo -e "Local version: $(cat /usr/share/UnblockNeteaseMusic/local_ver 2>/dev/null), cloud version: ${latest_ver}." >>/tmp/unblockmusic_update.log + update_core + else + echo -e "\nLocal version: $(cat /usr/share/UnblockNeteaseMusic/local_ver 2>/dev/null), cloud version: ${latest_ver}." >>/tmp/unblockmusic_update.log + echo -e "You're already using the latest version." >>/tmp/unblockmusic_update.log + exit 3 + fi + fi +} + +function update_core(){ + echo -e "Updating core..." >>/tmp/unblockmusic_update.log + + mkdir -p "/tmp/unblockneteasemusic/core" >/dev/null 2>&1 + rm -rf /tmp/unblockneteasemusic/core/* >/dev/null 2>&1 + + wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/unblockneteasemusic/core/core.tar.gz "https://github.com/nondanee/UnblockNeteaseMusic/archive/master.tar.gz" >/dev/null 2>&1 + tar -zxf "/tmp/unblockneteasemusic/core/core.tar.gz" -C "/tmp/unblockneteasemusic/core/" >/dev/null 2>&1 + rm -f /tmp/unblockneteasemusic/core/UnblockNeteaseMusic-master/ca.crt /tmp/unblockneteasemusic/core/UnblockNeteaseMusic-master/server.crt /tmp/unblockneteasemusic/core/UnblockNeteaseMusic-master/server.key + cp -a /tmp/unblockneteasemusic/core/UnblockNeteaseMusic-master/* "/usr/share/UnblockNeteaseMusic/" + rm -rf "/tmp/unblockneteasemusic" >/dev/null 2>&1 + + if [ ! -e "/usr/share/UnblockNeteaseMusic/app.js" ]; then + echo -e "Failed to download core." >>/tmp/unblockmusic_update.log + exit 1 + else + [ "${luci_update}" == "y" ] && touch "/usr/share/unblockneteasemusic/update_successfully" + echo -e "${latest_ver}" > /usr/share/UnblockNeteaseMusic/local_ver + /etc/init.d/unblockmusic restart + fi + + echo -e "Succeeded in updating core." >/tmp/unblockmusic_update.log + echo -e "Local version: $(cat /usr/share/UnblockNeteaseMusic/local_ver 2>/dev/null), cloud version: ${latest_ver}.\n" >>/tmp/unblockmusic_update.log + node /usr/share/UnblockNeteaseMusic/app.js -v > /usr/share/UnblockNeteaseMusic/core_ver +} + +function main(){ + check_if_already_running + check_latest_version +} + + [ "$1" == "luci_update" ] && luci_update="y" + main