Browse Source

add updating LuCI support

CN_SZTL 5 years ago
parent
commit
0a03fd3690

+ 41 - 12
luasrc/controller/unblockneteasemusic.lua

@@ -12,10 +12,11 @@ function index()
 	entry({"admin", "services", "unblockneteasemusic"},firstchild(), _("解除网易云音乐播放限制"), 50).dependent = false
 
 	entry({"admin", "services", "unblockneteasemusic", "general"},cbi("unblockneteasemusic"), _("基本设定"), 1)
-	entry({"admin", "services", "unblockneteasemusic", "upgrade_core"},form("unblockneteasemusic_upcore"), _("更新核心"), 2).leaf = true
+	entry({"admin", "services", "unblockneteasemusic", "upgrade"},form("unblockneteasemusic_upgrade"), _("更新组件"), 2).leaf = true
 	entry({"admin", "services", "unblockneteasemusic", "log"},form("unblockneteasemusiclog"), _("日志"), 3)
 
 	entry({"admin", "services", "unblockneteasemusic", "status"},call("act_status")).leaf=true
+	entry({"admin", "services", "unblockneteasemusic", "update_luci"},call("act_update_luci"))
 	entry({"admin", "services", "unblockneteasemusic", "update_core"},call("act_update_core"))
 end
 
@@ -26,21 +27,49 @@ function act_status()
 	luci.http.write_json(e)
 end
 
+function update_luci()
+	luci_cloud_ver=luci.sys.exec("curl -s 'https://github.com/project-openwrt/luci-app-unblockneteasemusic/releases/latest'| grep -Eo '[0-9\.]+\-[0-9]+'")
+	if not luci_cloud_ver then
+		return "1"
+	else
+		luci_local_ver=luci.sys.exec("opkg info 'luci-app-unblockneteasemusic' |sed -n '2p' |tr -d 'Version: '")
+		if not luci_local_ver or (luci_local_ver ~= luci_cloud_ver) then
+			luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_luci_successfully")
+			luci.sys.call("/bin/bash /usr/share/unblockneteasemusic/update.sh update_luci")
+			if not nixio.fs.access("/usr/share/unblockneteasemusic/update_luci_successfully") then
+				return "2"
+			else
+				luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_luci_successfully")
+				return luci_cloud_ver
+			end
+		else
+			return "0"
+		end
+	end
+end
+
+function act_update_luci()
+	luci.http.prepare_content("application/json")
+	luci.http.write_json({
+		ret = update_luci();
+	})
+end
+
 function update_core()
-	cloud_ver=luci.sys.exec("curl -s 'https://github.com/nondanee/UnblockNeteaseMusic/commits/master' |tr -d '\n' |grep -Eo 'commit\/[0-9a-z]+' |sed -n 1p |sed 's#commit/##g'")
-	cloud_ver_mini=luci.sys.exec("curl -s 'https://github.com/nondanee/UnblockNeteaseMusic/commits/master' |tr -d '\n' |grep -Eo 'BtnGroup-item.>      [0-9a-z]+' |sed -n 1p |sed 's#BtnGroup-item.>      ##g'")
-	if not cloud_ver or not cloud_ver_mini then
+	core_cloud_ver=luci.sys.exec("curl -s 'https://github.com/nondanee/UnblockNeteaseMusic/commits/master' |tr -d '\n' |grep -Eo 'commit\/[0-9a-z]+' |sed -n 1p |sed 's#commit/##g'")
+	core_cloud_ver_mini=luci.sys.exec("curl -s 'https://github.com/nondanee/UnblockNeteaseMusic/commits/master' |tr -d '\n' |grep -Eo 'BtnGroup-item.>      [0-9a-z]+' |sed -n 1p |sed 's#BtnGroup-item.>      ##g'")
+	if not core_cloud_ver or not core_cloud_ver_mini then
 		return "1"
 	else
-		local_ver=luci.sys.exec("cat '/usr/share/unblockneteasemusic/local_ver'")
-		if not local_ver or (local_ver ~= cloud_ver) then
-			luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_successfully")
-			luci.sys.call("/bin/bash /usr/share/unblockneteasemusic/update_core.sh luci_update")
-			if not nixio.fs.access("/usr/share/unblockneteasemusic/update_successfully") then
+		core_local_ver=luci.sys.exec("cat '/usr/share/unblockneteasemusic/core_local_ver'")
+		if not core_local_ver or (core_local_ver ~= core_cloud_ver) then
+			luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_core_successfully")
+			luci.sys.call("/bin/bash /usr/share/unblockneteasemusic/update.sh update_core_from_luci")
+			if not nixio.fs.access("/usr/share/unblockneteasemusic/update_core_successfully") then
 				return "2"
 			else
-				luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_successfully")
-				return cloud_ver_mini
+				luci.sys.call("rm -f /usr/share/unblockneteasemusic/update_core_successfully")
+				return core_cloud_ver_mini
 			end
 		else
 			return "0"
@@ -53,4 +82,4 @@ function act_update_core()
 	luci.http.write_json({
 		ret = update_core();
 	})
-end
+end

+ 6 - 0
luasrc/model/cbi/unblockneteasemusic_upcore.lua → luasrc/model/cbi/unblockneteasemusic_upgrade.lua

@@ -4,6 +4,12 @@ m = SimpleForm("Version")
 m.reset = false
 m.submit = false
 
+up_core=m:field(DummyValue,"update_luci",translate("更新LuCI")) 
+up_core.rawhtml  = true
+up_core.template = "unblockneteasemusic/update_luci"
+up_core.value = translate("未检查") 
+up_core.description = "更新完毕后请手动刷新该界面"
+
 up_core=m:field(DummyValue,"update_core",translate("更新主程序")) 
 up_core.rawhtml  = true
 up_core.template = "unblockneteasemusic/update_core"

+ 36 - 0
luasrc/view/unblockneteasemusic/update_luci.htm

@@ -0,0 +1,36 @@
+<%+cbi/valueheader%>
+
+<script type="text/javascript">//<![CDATA[
+	function act_update_luci(btn,dataname)
+	{
+		btn.disabled = true;
+		btn.value    = '<%:正在更新LuCI...%> ';
+		XHR.get('<%=luci.dispatcher.build_url("admin", "services", "unblockneteasemusic","update_luci")%>',
+			status.ret,
+			function(x,status)
+			{
+				var s = document.getElementById(dataname+'-status');
+				if (s)
+				{
+					if(status.ret=="0")
+						s.innerHTML ="<font color='green'>"+"<%:当前已是最新版本%>"+"</font>";
+					else if (status.ret=="1")
+						s.innerHTML ="<font color='red'>"+"<%:无法检测最新版本%>"+"</font>";
+					else if(status.ret=="2")
+						s.innerHTML ="<font color='red'>"+"<%:更新失败,请稍后重试%>"+"</font>";
+					else
+						s.innerHTML ="<font color='green'>"+"<%:更新成功,当前版本号:%>"+status.ret+"</font>";
+				}
+				btn.disabled = false;
+				btn.value    = '<%:点此更新LuCI%>';
+			}
+		);
+		return false;
+	}
+//]]></script>
+
+
+<input type="button" class="cbi-button cbi-input-reload" value="<%:点此更新LuCI%> " onclick="return act_update_luci(this,'<%=self.option%>')" />
+<span id="<%=self.option%>-status"><em><%=self.value%></em></span>
+
+<%+cbi/valuefooter%>

+ 2 - 2
root/etc/init.d/unblockneteasemusic

@@ -122,7 +122,7 @@ start()
 
 	[ "${enable}" -ne "1" ] && exit 0
 
-	[ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && rm -f "/usr/share/unblockneteasemusic/local_ver" && bash "/usr/share/unblockneteasemusic/update_core.sh"
+	[ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && rm -f "/usr/share/unblockneteasemusic/local_ver" && bash "/usr/share/unblockneteasemusic/update.sh" "update_core_non_restart"
 	[ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && echo "Core Not Found, please download it before starting." >> "/tmp/unblockneteasemusic.log" && exit 1
 
 	if [ "${music_source}" = "qq" ];then
@@ -156,7 +156,7 @@ start()
 	[ "*$(uci get unblockneteasemusic.@unblockneteasemusic[0].pub_access 2>"/dev/null")*" = "*1*" ] && set_ports > "/dev/null" 2>&1
 
 	sed -i '/unblockneteasemusic/d' /etc/crontabs/root
-	[ "${auto_update}" -eq "1" ] && echo "0 ${update_time} * * * /usr/share/unblockneteasemusic/update_core.sh" >> "/etc/crontabs/root"
+	[ "${auto_update}" -eq "1" ] && echo "0 ${update_time} * * * /usr/share/unblockneteasemusic/update.sh update_core" >> "/etc/crontabs/root"
 	echo "*/5 * * * * /usr/share/unblockneteasemusic/log_check.sh" >> "/etc/crontabs/root"
 	/etc/init.d/cron restart > "/dev/null" 2>&1
 }

+ 120 - 0
root/usr/share/unblockneteasemusic/update.sh

@@ -0,0 +1,120 @@
+#!/bin/bash
+# Created By [CTCGFW]Project OpenWRT
+# https://github.com/project-openwrt
+
+function check_core_if_already_running(){
+	running_tasks="$(ps |grep "unblockneteasemusic" |grep "update" |grep "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 check_luci_if_already_running(){
+	running_tasks="$(ps |grep "unblockneteasemusic" |grep "update" |grep "update_luci" |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_luci_latest_version(){
+	luci_latest_ver="$(curl -s 'https://github.com/project-openwrt/luci-app-unblockneteasemusic/releases/latest'| grep -Eo '[0-9\.]+\-[0-9]+')"
+	[ -z "${luci_latest_ver}" ] && echo -e "\nFailed to check latest LuCI version, please try again later." >>/tmp/unblockneteasemusic.log && exit 1
+	if [ "$(opkg info 'luci-app-unblockneteasemusic' |sed -n '2p' |tr -d 'Version: ')" != "${luci_latest_ver}" ]; then
+		clean_log
+		echo -e "Local LuCI version: $(opkg info 'luci-app-unblockneteasemusic' |sed -n '2p' |tr -d 'Version: '), cloud LuCI version: ${luci_latest_ver}." >>/tmp/unblockneteasemusic.log
+		update_luci
+	else
+		echo -e "\nLocal LuCI version: $(opkg info 'luci-app-unblockneteasemusic' |sed -n '2p' |tr -d 'Version: '), cloud LuCI version: ${luci_latest_ver}." >>/tmp/unblockneteasemusic.log
+		echo -e "You're already using the latest LuCI version." >>/tmp/unblockneteasemusic.log
+		exit 3
+	fi
+}
+
+function update_luci(){
+	echo -e "Updating LuCI..." >>/tmp/unblockneteasemusic.log
+
+	mkdir -p "/tmp" >/dev/null 2>&1
+
+	curl -sL "https://github.com/project-openwrt/luci-app-unblockneteasemusic/releases/download/v${luci_latest_ver}/luci-app-unblockneteasemusic_${luci_latest_ver}_all.ipk" -o "/tmp/luci-app-unblockneteasemusic_${luci_latest_ver}_all.ipk" >/dev/null 2>&1
+	opkg install "/tmp/luci-app-unblockneteasemusic_${luci_latest_ver}_all.ipk"
+	rm -f "/tmp/luci-app-unblockneteasemusic_${luci_latest_ver}_all.ipk"
+	rm -rf "/tmp/luci-indexcache" "/tmp/luci-modulecache"
+
+	if [ "$(opkg info 'luci-app-unblockneteasemusic' |sed -n '2p' |tr -d 'Version: ')" != "$1" ]; then
+		echo -e "Failed to update LuCI." >>/tmp/unblockneteasemusic.log
+		exit 1
+	else
+		touch "/usr/share/unblockneteasemusic/update_luci_successfully"
+	fi
+
+	echo -e "Succeeded in updating LuCI." >/tmp/unblockneteasemusic.log
+	echo -e "Current LuCI version: ${luci_latest_ver}.\n" >>/tmp/unblockneteasemusic.log
+}
+
+function check_core_latest_version(){
+	core_latest_ver="$(curl -s https://github.com/nondanee/UnblockNeteaseMusic/commits/master |tr -d '\n' |grep -Eo 'commit\/[0-9a-z]+' |sed -n 1p |sed 's#commit/##g')"
+	[ -z "${core_latest_ver}" ] && echo -e "\nFailed to check latest core version, please try again later." >>/tmp/unblockneteasemusic.log && exit 1
+	if [ ! -e "/usr/share/unblockneteasemusic/core_local_ver" ]; then
+		clean_log
+		echo -e "Local version: NOT FOUND, cloud version: ${core_latest_ver}." >>/tmp/unblockneteasemusic.log
+		update_core
+	else
+		if [ "$(cat /usr/share/unblockneteasemusic/core_local_ver)" != "${core_latest_ver}" ]; then
+			clean_log
+			echo -e "Local core version: $(cat /usr/share/unblockneteasemusic/core_local_ver 2>/dev/null), cloud core version: ${core_latest_ver}." >>/tmp/unblockneteasemusic.log
+			update_core
+		else
+			echo -e "\nLocal core version: $(cat /usr/share/unblockneteasemusic/core_local_ver 2>/dev/null), cloud core version: ${core_latest_ver}." >>/tmp/unblockneteasemusic.log
+			echo -e "You're already using the latest core 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 -sL "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
+		[ "${update_core_from_luci}" == "y" ] && touch "/usr/share/unblockneteasemusic/update_core_successfully"
+		echo -e "${core_latest_ver}" > /usr/share/unblockneteasemusic/core_local_ver
+		[ "${non_restart}" != "y" ] && /etc/init.d/unblockneteasemusic restart
+	fi
+
+	echo -e "Succeeded in updating core." >/tmp/unblockneteasemusic.log
+	echo -e "Current core version: ${core_latest_ver}.\n" >>/tmp/unblockneteasemusic.log
+}
+
+case "$1" in
+	"update_luci")
+		check_luci_if_already_running
+		check_luci_latest_version
+		;;
+	"update_core")
+		check_core_if_already_running
+		check_core_latest_version
+		;;
+	"update_core_non_restart")
+		non_restart="y"
+		check_core_if_already_running
+		check_core_latest_version
+		;;
+	"update_core_from_luci")
+		update_core_from_luci="y"
+		check_core_if_already_running
+		check_core_latest_version
+		;;
+	*)
+		echo -e "Usage: ./update.sh {update_luci|update_core}"
+		;;
+esac

+ 0 - 64
root/usr/share/unblockneteasemusic/update_core.sh

@@ -1,64 +0,0 @@
-#!/bin/bash
-# Created By [CTCGFW]Project OpenWRT
-# https://github.com/project-openwrt
-
-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 -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/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
-		[ "${luci_update}" == "y" ] && touch "/usr/share/unblockneteasemusic/update_successfully"
-		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 "Current version: ${latest_ver}.\n" >>/tmp/unblockneteasemusic.log
-}
-
-function main(){
-	check_if_already_running
-	check_latest_version
-}
-
-	[ "$1" == "luci_update" ] && luci_update="y"
-	main