Explorar o código

feat: download CA for usage

Signed-off-by: Tianling Shen <[email protected]>
Tianling Shen %!s(int64=4) %!d(string=hai) anos
pai
achega
42ed694832

+ 25 - 3
luasrc/model/cbi/unblockneteasemusic/unblockneteasemusic.lua

@@ -4,8 +4,8 @@ mp.description = translate("原理:采用 [Bilibili/JOOX/酷狗/酷我/咪咕/
 mp:section(SimpleSection).template = "unblockneteasemusic/unblockneteasemusic_status"
 mp:section(SimpleSection).template = "unblockneteasemusic/unblockneteasemusic_status"
 
 
 s = mp:section(TypedSection, "unblockneteasemusic")
 s = mp:section(TypedSection, "unblockneteasemusic")
-s.anonymous=true
-s.addremove=false
+s.anonymous = true
+s.addremove = false
 
 
 enable = s:option(Flag, "enable", translate("启用本插件"))
 enable = s:option(Flag, "enable", translate("启用本插件"))
 enable.description = translate("启用本插件以解除网易云音乐播放限制")
 enable.description = translate("启用本插件以解除网易云音乐播放限制")
@@ -88,8 +88,30 @@ update_time.default = "3"
 update_time.description = translate("设定每天自动检查更新时间")
 update_time.description = translate("设定每天自动检查更新时间")
 update_time:depends("auto_update", 1)
 update_time:depends("auto_update", 1)
 
 
-download_cert = s:option(DummyValue, "opennewwindow", translate("<input type=\"button\" class=\"btn cbi-button cbi-button-apply\" value=\"下载 CA 根证书\" onclick=\"window.open('https://raw.githubusercontent.com/UnblockNeteaseMusic/server/enhanced/ca.crt')\" />"))
+download_cert = s:option(Button,"certificate", translate("HTTPS 证书"))
+download_cert.inputtitle = translate("下载 CA 根证书")
 download_cert.description = translate("Linux/iOS/MacOSX 在信任根证书后方可正常使用")
 download_cert.description = translate("Linux/iOS/MacOSX 在信任根证书后方可正常使用")
+download_cert.inputstyle = "reload"
+download_cert.write = function()
+	act_download_cert()
+end
+
+function act_download_cert()
+	local t,e
+	t=nixio.open("/usr/share/unblockneteasemusic/core/ca.crt","r")
+	luci.http.header('Content-Disposition','attachment; filename="ca.crt"')
+	luci.http.prepare_content("application/octet-stream")
+	while true do
+		e=t:read(nixio.const.buffersize)
+		if(not e)or(#e==0)then
+			break
+		else
+			luci.http.write(e)
+		end
+	end
+	t:close()
+	luci.http.close()
+end
 
 
 advanced_mode = s:option(Flag, "advanced_mode", translate("启用进阶设置"))
 advanced_mode = s:option(Flag, "advanced_mode", translate("启用进阶设置"))
 advanced_mode.description = translate("非必要不推荐使用")
 advanced_mode.description = translate("非必要不推荐使用")

+ 2 - 1
root/usr/share/unblockneteasemusic/update.sh

@@ -44,13 +44,14 @@ update_core(){
 	do
 	do
 		{
 		{
 			uclient-fetch "${mirror}${core_latest_ver}/precompiled/app.js" -qO "/usr/share/$NAME/core/app.js"
 			uclient-fetch "${mirror}${core_latest_ver}/precompiled/app.js" -qO "/usr/share/$NAME/core/app.js"
+			uclient-fetch "${mirror}enhanced/ca.crt" -qO "/usr/share/$NAME/core/ca.crt"
 			uclient-fetch "${mirror}enhanced/server.crt" -qO "/usr/share/$NAME/core/server.crt"
 			uclient-fetch "${mirror}enhanced/server.crt" -qO "/usr/share/$NAME/core/server.crt"
 			uclient-fetch "${mirror}enhanced/server.key" -qO "/usr/share/$NAME/core/server.key"
 			uclient-fetch "${mirror}enhanced/server.key" -qO "/usr/share/$NAME/core/server.key"
 		} > "/dev/null" 2>&1 && break
 		} > "/dev/null" 2>&1 && break
 	done
 	done
 
 
 	local file
 	local file
-	for file in "app.js" "server.crt" "server.key"
+	for file in "app.js" "ca.crt" "server.crt" "server.key"
 	do
 	do
 		[ -s "/usr/share/$NAME/core/${file}" ] || {
 		[ -s "/usr/share/$NAME/core/${file}" ] || {
 			echo -e "Failed to download ${file}." >> "/tmp/$NAME.log"
 			echo -e "Failed to download ${file}." >> "/tmp/$NAME.log"