diff --git a/package/cnsztl/luci-app-unblockneteasemusic/Makefile b/package/cnsztl/luci-app-unblockneteasemusic/Makefile index be3a9c9ab3..b364cf1978 100644 --- a/package/cnsztl/luci-app-unblockneteasemusic/Makefile +++ b/package/cnsztl/luci-app-unblockneteasemusic/Makefile @@ -11,8 +11,8 @@ LUCI_TITLE:=LuCI support for UnblockNeteaseMusic LUCI_DEPENDS:=+bash +busybox +coreutils-nohup +curl +dnsmasq-full +ipset +libopenssl +node LUCI_PKGARCH:=all PKG_NAME:=luci-app-unblockneteasemusic -PKG_VERSION:=2.0 -PKG_RELEASE:=2 +PKG_VERSION:=2.1 +PKG_RELEASE:=1 PKG_MAINTAINER:=[CTCGFW]Project-OpenWrt diff --git a/package/cnsztl/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua b/package/cnsztl/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua index 0b146edd75..60959265a9 100644 --- a/package/cnsztl/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua +++ b/package/cnsztl/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua @@ -12,6 +12,15 @@ enabled.description = translate("启用本插件以解除网易云音乐播放 enabled.default = 0 enabled.rmempty = false +button_update_core = s:option (Button, "_button_update_core", translate("更新主程序")) +button_update_core.description = translate("更新完毕后会自动重启插件;更新插件需要一点时间,请不要反复点击按钮") +local latest_ver = luci.sys.exec("/bin/bash /usr/share/unblockneteasemusic/check_update.sh") +button_update_core.inputtitle = translate (latest_ver) +button_update_core.inputstyle = "apply" +function button_update_core.write (self, section, value) + luci.sys.call ("/bin/bash /usr/share/unblockneteasemusic/update_core.sh &") +end + account = s:option(Value, "http_port", translate("[HTTP] 监听端口")) account.description = translate("本插件监听的HTTP端口,不可与其他程序/HTTPS共用一个端口") account.placeholder = "5200" @@ -47,6 +56,11 @@ hijack.description = translate("如果使用Hosts劫持,请将HTTP/HTTPS端口 hijack.default = "dont_hijack" hijack.rmempty = false +enabled = s:option(Flag, "auto_update", translate("启用自动更新")) +enabled.description = translate("启用后会在每天凌晨检测最新版本并自动更新") +enabled.default = 0 +enabled.rmempty = false + enabled = s:option(Flag, "advanced_mode", translate("启用进阶设置")) enabled.description = translate("仅推荐高级玩家使用") enabled.default = 0 @@ -72,7 +86,7 @@ account:depends("set_netease_server_ip", 1) account:depends("advanced_mode", 1) account = s:option(Value, "endpoint_url", translate("EndPoint")) -account.description = translate("具体说明请参见:https://github.com/nondanee/UnblockNeteaseMusic") +account.description = translate("具体说明参见:https://github.com/nondanee/UnblockNeteaseMusic") account.placeholder = "https://music.163.com" account.datatype = "string" account:depends("advanced_mode", 1) diff --git a/package/cnsztl/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic b/package/cnsztl/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic index 27f3931d15..a5e42c4eba 100755 --- a/package/cnsztl/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic +++ b/package/cnsztl/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic @@ -12,26 +12,17 @@ http_port="$(uci get unblockneteasemusic.@unblockneteasemusic[0].http_port)" https_port="$(uci get unblockneteasemusic.@unblockneteasemusic[0].https_port)" type="$(uci get unblockneteasemusic.@unblockneteasemusic[0].musicapptype)" hijack_ways="$(uci get unblockneteasemusic.@unblockneteasemusic[0].hijack_ways)" -[ "$(uci get unblockneteasemusic.@unblockneteasemusic[0].pub_access)" -ne "0" ] && addr="0.0.0.0" || addr="${lan_addr}" -[ "$(uci get unblockneteasemusic.@unblockneteasemusic[0].strict_mode)" -eq "1" ] && strict_mode="-s" +auto_update="$(uci get unblockneteasemusic.@unblockneteasemusic[0].auto_update)" +[ "*$(uci get unblockneteasemusic.@unblockneteasemusic[0].pub_access 2>/dev/null)*" = "*1*" ] && addr="0.0.0.0" || addr="${lan_addr}" +[ "*$(uci get unblockneteasemusic.@unblockneteasemusic[0].strict_mode 2>/dev/null)*" = "*1*" ] && strict_mode="-s" -netease_server_ip="$(uci get unblockneteasemusic.@unblockneteasemusic[0].netease_server_ip)" +netease_server_ip="$(uci get unblockneteasemusic.@unblockneteasemusic[0].netease_server_ip 2>/dev/null)" [ -n "${netease_server_ip}" ] && netease_server_ip="-f ${netease_server_ip}" -endpoint_url="$(uci get unblockneteasemusic.@unblockneteasemusic[0].endpoint_url)" +endpoint_url="$(uci get unblockneteasemusic.@unblockneteasemusic[0].endpoint_url 2>/dev/null)" [ -n "${endpoint_url}" ] && endpoint_url="-e ${endpoint_url}" -proxy_server_ip="$(uci get unblockneteasemusic.@unblockneteasemusic[0].proxy_server_ip)" +proxy_server_ip="$(uci get unblockneteasemusic.@unblockneteasemusic[0].proxy_server_ip 2>/dev/null)" [ -n "${proxy_server_ip}" ] && proxy_server_ip="-u ${proxy_server_ip}" -update_core(){ - mkdir -p "/usr/share/unblockneteasemusic/core" >/dev/null 2>&1 - rm -rf /usr/share/unblockneteasemusic/core/* >/dev/null 2>&1 - curl -L "https://github.com/nondanee/UnblockNeteaseMusic/archive/master.tar.gz" -o "/usr/share/unblockneteasemusic/core/core.tar.gz" >/dev/null 2>&1 - tar -zxf "/usr/share/unblockneteasemusic/core/core.tar.gz" -C "/usr/share/unblockneteasemusic/core/" >/dev/null 2>&1 - mv /usr/share/unblockneteasemusic/core/UnblockNeteaseMusic-master/* "/usr/share/unblockneteasemusic/core/" - rm -rf "/usr/share/unblockneteasemusic/core/core.tar.gz /usr/share/unblockneteasemusic/core/UnblockNeteaseMusic-master" >/dev/null 2>&1 - [ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && echo "Failed to download core." && exit 1 -} - set_ipset(){ if [ "${set_type}" = "start" ]; then mkdir -p "/tmp/dnsmasq.d" @@ -124,35 +115,41 @@ start() [ "${enable}" -eq "0" ] && exit 0 - update_core + [ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && bash /usr/share/unblockneteasemusic/update_core.sh && [ $? -eq 1 ] && exit 1 if [ "${type}" = "default" ]; then - nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >/tmp/unblockneteasemusic.log 2>&1 & + nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >>/tmp/unblockneteasemusic.log 2>&1 & elif [ "${type}" = "all" ]; then - nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" -o "kuwo migu qq xiami kugou joox" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >/tmp/unblockneteasemusic.log 2>&1 & + nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" -o "kuwo migu qq xiami kugou joox" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >>/tmp/unblockneteasemusic.log 2>&1 & else - nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" -o "${type}" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >/tmp/unblockneteasemusic.log 2>&1 & + nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" -o "${type}" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >>/tmp/unblockneteasemusic.log 2>&1 & fi if [ "*${hijack_ways}*" = "*use_ipset*" ]; then set_type="start" - set_ipset + set_ipset >/dev/null 2>&1 elif [ "*${hijack_ways}*" = "*use_hosts*" ]; then set_type="start" - set_hosts + set_hosts >/dev/null 2>&1 fi - nohup /usr/share/unblockneteasemusic/logcheck.sh >/dev/null 2>&1 & + sed -i '/unblockneteasemusic/d' /etc/crontabs/root + [ "${auto_update}" -eq "1" ] && echo "30 3 * * * /usr/share/unblockneteasemusic/update_core.sh" >> "/etc/crontabs/root" + echo "*/5 * * * * /usr/share/unblockneteasemusic/log_check.sh" >> "/etc/crontabs/root" + /etc/init.d/cron restart >/dev/null 2>&1 } stop() { { ps |grep "unblockneteasemusic" |grep "app.js" |grep -v "grep" |awk '{print $1}' |xargs kill -9; } >/dev/null 2>&1 - { ps |grep "unblockneteasemusic" |grep "logcheck.sh" |grep -v "grep" |awk '{print $1}' |xargs kill -9; } >/dev/null 2>&1 + + + sed -i '/unblockneteasemusic/d' /etc/crontabs/root + /etc/init.d/cron restart >/dev/null 2>&1 rm -f /tmp/unblockneteasemusic.log set_type="stop" - set_ipset - set_hosts + set_ipset >/dev/null 2>&1 + set_hosts >/dev/null 2>&1 } diff --git a/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/check_update.sh b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/check_update.sh new file mode 100755 index 0000000000..ed175d1a69 --- /dev/null +++ b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/check_update.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Created By [CTCGFW]Project OpenWRT +# https://github.com/project-openwrt + +commit_info="$(curl -s https://github.com/nondanee/UnblockNeteaseMusic/commits/master)" +latest_ver="$(echo -e "${commit_info}" |tr '\n' ' ' | grep -Eo 'commit\/[0-9a-z]+' |sed -n 1p |sed 's#commit/##g')" +latest_ver_mini="$(echo -e "${commit_info}" |tr -d '\n' | grep -Eo 'BtnGroup-item"> [0-9a-z]+' |sed -n 1p |sed 's#BtnGroup-item"> ##g')" + +[ -z "${commit_info}" ] && echo "无法检测最新版本,请稍后重试" && exit 1 +[ -z "${latest_ver}" ] && echo "无法检测最新版本,请稍后重试" && exit 1 +[ -z "${latest_ver_mini}" ] && echo "无法检测最新版本,请稍后重试" && exit 1 + +if [ ! -e "/usr/share/unblockneteasemusic/local_ver" ]; then + echo "最新版本:${latest_ver_mini},点此更新" +else + if [ "$(cat /usr/share/unblockneteasemusic/local_ver)" != "${latest_ver}" ]; then + echo "最新版本:${latest_ver_mini},点此更新" + else + echo "目前已是最新版本,无需更新" + fi +fi \ No newline at end of file diff --git a/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh new file mode 100755 index 0000000000..650e043065 --- /dev/null +++ b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Created By [CTCGFW]Project OpenWRT +# https://github.com/project-openwrt + +log_max_size="4" #使用KB计算 +log_file="/tmp/unblockneteasemusic.log" + +(( log_size = "$(ls -l "${log_file}" | awk -F ' ' '{print $5}')" / "1024" )) +(( "${log_size}" >= "${log_max_size}" )) && echo "" > "${log_file}" \ No newline at end of file diff --git a/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/logcheck.sh b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/logcheck.sh deleted file mode 100755 index 82772308f6..0000000000 --- a/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/logcheck.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Created By [CTCGFW]Project OpenWRT -# https://github.com/project-openwrt - -log_max_size="4" #使用KB计算 -log_file="/tmp/unblockneteasemusic.log" - -while true -do - (( log_size = "$(ls -l "${log_file}" | awk -F ' ' '{print $5}')" / "1024" )) - (( "${log_size}" >= "${log_max_size}" )) && echo "" > "${log_file}" - sleep 5m -done diff --git a/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/update_core.sh b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/update_core.sh new file mode 100755 index 0000000000..59d0247d21 --- /dev/null +++ b/package/cnsztl/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/update_core.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# Created By [CTCGFW]Project OpenWRT +# https://github.com/project-openwrt + +function check_if_enable(){ + [ "$(uci get unblockneteasemusic.@unblockneteasemusic[0].enabled)" -eq "0" ] && exit 2 +} + +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/unblockneteasemusic.log && exit 2 +} + +function clean_log(){ + echo "" > /tmp/unblockneteasemusic.log +} + +function check_latest_version(){ + latest_ver="$(curl -s https://github.com/nondanee/UnblockNeteaseMusic/commits/master |tr '\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/unblockneteasemusic.log && exit 1 + if [ ! -e "/usr/share/unblockneteasemusic/local_ver" ]; then + clean_log + echo -e "Local version: NOT FOUND, cloud version: ${latest_ver}." >>/tmp/unblockneteasemusic.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/unblockneteasemusic.log + update_core + else + echo -e "\nLocal version: $(cat /usr/share/unblockneteasemusic/local_ver 2>/dev/null), cloud version: ${latest_ver}." >>/tmp/unblockneteasemusic.log + echo -e "You're already using the latest version." >>/tmp/unblockneteasemusic.log + exit 3 + fi + fi +} + +function update_core(){ + echo -e "Updating core..." >>/tmp/unblockneteasemusic.log + + mkdir -p "/usr/share/unblockneteasemusic/core" >/dev/null 2>&1 + rm -rf /usr/share/unblockneteasemusic/core/* >/dev/null 2>&1 + + curl -L "https://github.com/nondanee/UnblockNeteaseMusic/archive/master.tar.gz" -o "/usr/share/unblockneteasemusic/core/core.tar.gz" >/dev/null 2>&1 + tar -zxf "/usr/share/unblockneteasemusic/core/core.tar.gz" -C "/usr/share/unblockneteasemusic/core/" >/dev/null 2>&1 + mv /usr/share/unblockneteasemusic/core/UnblockNeteaseMusic-master/* "/usr/share/unblockneteasemusic/core/" + rm -rf "/usr/share/unblockneteasemusic/core/core.tar.gz /usr/share/unblockneteasemusic/core/UnblockNeteaseMusic-master" >/dev/null 2>&1 + + if [ ! -e "/usr/share/unblockneteasemusic/core/app.js" ]; then + echo -e "Failed to download core." >>/tmp/unblockneteasemusic.log + exit 1 + else + echo -e "${latest_ver}" > /usr/share/unblockneteasemusic/local_ver + /etc/init.d/unblockneteasemusic restart + fi + + echo -e "Succeeded in updating core." >/tmp/unblockneteasemusic.log + echo -e "Local version: $(cat /usr/share/unblockneteasemusic/local_ver 2>/dev/null), cloud version: ${latest_ver}.\n" >>/tmp/unblockneteasemusic.log +} + +function main(){ + check_if_enable + check_if_already_running + check_latest_version +} + +main \ No newline at end of file