Skip to content

Commit 926268f

Browse files
committed
[add] auto update lib
1 parent 515f8d0 commit 926268f

File tree

8 files changed

+170
-71
lines changed

8 files changed

+170
-71
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
## 前言
66

7+
> 该插件 1.10 版本之后支持核心库自动更新,该功能目前处于测试中,希望积极反馈
8+
79
1. 有问题,请开issues,有空会修复(我更希望有人pr)
810

911
2. 可能会和lede或其他openwrt固件自带的UnblockNeteaseMusic插件冲突(编译界面找不到该插件),编译前移除其他插件(包括依赖库)
@@ -13,11 +15,13 @@
1315
编译分两个ipk,需要一并安装。
1416

1517
如果只需要升级UnblockNeteaseMusic依赖包,可以直接从[UnblockNeteaseMusic](https://github.com/cnsilvan/UnblockNeteaseMusic/releases)中下载对应的版本解压到/usr/bin/下 ,且赋予运行权限
16-
`chmod +x /usr/bin/UnblockNeteaseMusic`,最后在luci界面重新启用该插件即可完成依赖包的升级。
18+
`chmod +x /usr/bin/UnblockNeteaseMusic`,最后在luci界面重新启用该插件即可完成依赖包的升级。
1719

1820
## luci界面
1921

20-
![Image text](https://raw.githubusercontent.com/cnsilvan/luci-app-unblockneteasemusic/master/pic/1.png)
22+
![基本设定](https://raw.githubusercontent.com/cnsilvan/luci-app-unblockneteasemusic/master/pic/1.png)
23+
![高级设定](https://raw.githubusercontent.com/cnsilvan/luci-app-unblockneteasemusic/master/pic/2.png)
24+
![日志](https://raw.githubusercontent.com/cnsilvan/luci-app-unblockneteasemusic/master/pic/3.png)
2125

2226
## 感谢
2327

luci-app-unblockneteasemusic/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
include $(TOPDIR)/rules.mk
33

44
LUCI_TITLE:=LuCI support for UnblockNeteaseMusic
5-
LUCI_DEPENDS:= +bash +busybox +coreutils +coreutils-nohup +curl +dnsmasq-full +ipset +luci-compat +openssl-util +UnblockNeteaseMusic
5+
LUCI_DEPENDS:= +bash +busybox +unzip +coreutils +coreutils-nohup +curl +dnsmasq-full +ipset +luci-compat +openssl-util +UnblockNeteaseMusic
66
LUCI_PKGARCH:=all
77
PKG_NAME:=luci-app-unblockneteasemusic
8-
PKG_VERSION:=1.9
8+
PKG_VERSION:=1.10
99
PKG_RELEASE:=1
1010

1111
PKG_MAINTAINER:=https://github.com/cnsilvan/luci-app-unblockneteasemusic

luci-app-unblockneteasemusic/luasrc/controller/unblockneteasemusic.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ function index()
99
return
1010
end
1111

12-
entry({"admin", "services", "unblockneteasemusic"},firstchild(), _("解除网易云音乐播放限制"), 50).dependent = false
12+
entry({"admin", "services", "unblockneteasemusic"},firstchild(), _("解除云音乐播放限制"), 50).dependent = false
1313

1414
entry({"admin", "services", "unblockneteasemusic", "general"},cbi("unblockneteasemusic"), _("基本设定"), 1)
15-
entry({"admin", "services", "unblockneteasemusic", "log"},form("unblockneteasemusic_log"), _("日志"), 2)
15+
entry({"admin", "services", "unblockneteasemusic", "senior"},cbi("unblockneteasemusic_senior"), _("高级设定"), 2)
16+
entry({"admin", "services", "unblockneteasemusic", "log"},form("unblockneteasemusic_log"), _("日志"), 3)
1617

1718
entry({"admin", "services", "unblockneteasemusic", "status"},call("act_status")).leaf=true
1819
end
Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
local http = luci.http
21

32
mp = Map("unblockneteasemusic", translate("解除网易云音乐播放限制 (Golang)"))
43
mp.description = translate("原理:采用 [酷我/酷狗/咕咪] 音源(后续有空补充),替换网易云音乐 灰色 歌曲链接<br/>具体使用方法参见:https://github.com/cnsilvan/luci-app-unblockneteasemusic<br/>提示:客户端网易云音乐能用就别升级app,最新版本不一定能用")
@@ -48,63 +47,7 @@ hijack.description = translate("如果使用Hosts劫持,请将HTTP/HTTPS端口
4847
hijack.default = "dont_hijack"
4948
hijack.rmempty = false
5049

51-
search_limit = s:option(Value, "search_limit", translate("搜索结果限制"))
52-
search_limit.description = translate("在搜索页面显示其他平台搜索结果个数,可填(0-3)")
53-
search_limit.default = "0"
54-
search_limit.rmempty = false
5550

56-
daemon_enable = s:option(Flag, "daemon_enable", translate("启用进程守护"))
57-
daemon_enable.description = translate("开启后,附属程序会自动检测主程序运行状态,在主程序退出时自动重启")
58-
daemon_enable.default = 0
59-
daemon_enable.rmempty = false
6051

61-
endpoint_enable = s:option(Flag, "endpoint_enable", translate("启用地址转换"))
62-
endpoint_enable.description = translate("开启后,设备需要信任证书,经测试ios设备需要开启,android设备使用咪咕源下载时需要开启,其他情况无法使用时再开启尝试")
63-
endpoint_enable.default = 0
64-
endpoint_enable.rmempty = false
6552

66-
force_best_quality = s:option(Flag, "force_best_quality", translate("强制音质优先"))
67-
force_best_quality.description = translate("开启后,客户端选择音质将失效")
68-
force_best_quality.default = 0
69-
force_best_quality.rmempty = false
70-
71-
delete = s:option(Button,"_delete", translate("删除根证书"))
72-
delete.description = translate("删除证书,以便下次启动时生成,可用于解决过期证书等问题")
73-
delete.inputstyle = "reload"
74-
delete.write = function()
75-
delete_()
76-
end
77-
download = s:option(Button,"_download", translate("下载根证书"))
78-
download.description = translate("请在客户端信任该证书。该证书由你设备自动生成,安全可靠<br/>IOS信任证书步骤:1. 安装证书--设置-描述文件-安装 2. 通用-关于本机-证书信任设置-启动完全信任")
79-
download.inputstyle = "reload"
80-
download.write = function()
81-
download_()
82-
end
83-
84-
function download_()
85-
local sFile, block
86-
sFile=nixio.open("/usr/share/UnblockNeteaseMusic/ca.crt","r")
87-
http.header('Content-Disposition','attachment; filename="ca.crt"')
88-
http.prepare_content("application/octet-stream")
89-
while true do
90-
block=sFile:read(nixio.const.buffersize)
91-
if(not block)or(#block==0)then
92-
break
93-
else
94-
http.write(block)
95-
end
96-
end
97-
sFile:close()
98-
http.close()
99-
end
100-
function delete_()
101-
local sPath, fd
102-
sPath = "/usr/share/UnblockNeteaseMusic/server.crt"
103-
fd = os.remove(sPath)
104-
if not fd then
105-
delete.description = string.format('删除证书,以便下次启动时生成,可用于解决过期证书等问题<br/><span style="color: red">%s</span>', translate("Couldn't delete file: ") .. sPath)
106-
return
107-
end
108-
delete.description = translate("删除证书,以便下次启动时生成,可用于解决过期证书等问题")
109-
end
11053
return mp
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
local http = luci.http
2+
3+
mp = Map("unblockneteasemusic", translate("解除网易云音乐播放限制 (Golang)"))
4+
mp.description = translate("原理:采用 [酷我/酷狗/咕咪] 音源(后续有空补充),替换网易云音乐 灰色 歌曲链接<br/>具体使用方法参见:https://github.com/cnsilvan/luci-app-unblockneteasemusic<br/>提示:客户端网易云音乐能用就别升级app,最新版本不一定能用")
5+
mp:section(SimpleSection).template = "unblockneteasemusic/unblockneteasemusic_status"
6+
7+
s = mp:section(TypedSection, "unblockneteasemusic")
8+
s.anonymous=true
9+
s.addremove=false
10+
11+
daemon_enable = s:option(Flag, "daemon_enable", translate("启用进程守护"))
12+
daemon_enable.description = translate("开启后,附属程序会自动检测主程序运行状态,在主程序退出时自动重启")
13+
daemon_enable.default = 0
14+
daemon_enable.rmempty = false
15+
16+
search_limit = s:option(Value, "search_limit", translate("搜索结果限制"))
17+
search_limit.description = translate("在搜索页面显示其他平台搜索结果个数,可填(0-3)")
18+
search_limit.default = "0"
19+
search_limit.rmempty = false
20+
21+
endpoint_enable = s:option(Flag, "endpoint_enable", translate("启用地址转换"))
22+
endpoint_enable.description = translate("开启后,设备需要信任证书,经测试ios设备需要开启,android设备使用咪咕源下载时需要开启,其他情况无法使用时再开启尝试")
23+
endpoint_enable.default = 0
24+
endpoint_enable.rmempty = false
25+
26+
force_best_quality = s:option(Flag, "force_best_quality", translate("强制音质优先"))
27+
force_best_quality.description = translate("开启后,客户端选择音质将失效")
28+
force_best_quality.default = 0
29+
force_best_quality.rmempty = false
30+
31+
auto_update = s:option(Flag, "auto_update", translate("核心库自动更新"))
32+
auto_update.description = translate("")
33+
auto_update.default = 0
34+
auto_update.rmempty = false
35+
36+
delete = s:option(Button,"_delete", translate("删除根证书"))
37+
delete.description = translate("删除证书,以便下次启动时生成,可用于解决过期证书等问题")
38+
delete.inputstyle = "reload"
39+
delete.write = function()
40+
delete_()
41+
end
42+
download = s:option(Button,"_download", translate("下载根证书"))
43+
download.description = translate("请在客户端信任该证书。该证书由你设备自动生成,安全可靠<br/>IOS信任证书步骤:1. 安装证书--设置-描述文件-安装 2. 通用-关于本机-证书信任设置-启动完全信任")
44+
download.inputstyle = "reload"
45+
download.write = function()
46+
download_()
47+
end
48+
49+
50+
local currentTagCMD="UnblockNeteaseMusic -v |grep Version|awk '{print $2}'"
51+
local currentRuntimeCMD="UnblockNeteaseMusic -v | grep runtime|awk -F\( '{print $2}'|awk '{print $3,$4}'|sed -E 's/\)//g'"
52+
53+
function excute_cmd(cmd)
54+
local t = io.popen(cmd)
55+
local ret = t:read("*all")
56+
return ret
57+
end
58+
function currentVersion()
59+
local current=excute_cmd(currentTagCMD)
60+
local runtime=excute_cmd(currentRuntimeCMD)
61+
auto_update.description=string.format("当前版本:%s(%s)",current,runtime)
62+
end
63+
currentVersion()
64+
65+
function download_()
66+
local sFile, block
67+
sFile=nixio.open("/usr/share/UnblockNeteaseMusic/ca.crt","r")
68+
http.header('Content-Disposition','attachment; filename="ca.crt"')
69+
http.prepare_content("application/octet-stream")
70+
while true do
71+
block=sFile:read(nixio.const.buffersize)
72+
if(not block)or(#block==0)then
73+
break
74+
else
75+
http.write(block)
76+
end
77+
end
78+
sFile:close()
79+
http.close()
80+
end
81+
function delete_()
82+
local sPath, fd
83+
sPath = "/usr/share/UnblockNeteaseMusic/server.crt"
84+
fd = os.remove(sPath)
85+
if not fd then
86+
delete.description = string.format('删除证书,以便下次启动时生成,可用于解决过期证书等问题<br/><span style="color: red">%s</span>', translate("Couldn't delete file: ") .. sPath)
87+
return
88+
end
89+
delete.description = translate("删除证书,以便下次启动时生成,可用于解决过期证书等问题")
90+
end
91+
92+
93+
return mp

luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ hijack_ways="$(uci get unblockneteasemusic.@unblockneteasemusic[0].hijack_ways)"
1414
endpoint="$(uci get unblockneteasemusic.@unblockneteasemusic[0].endpoint_enable)"
1515
force_best_quality="$(uci get unblockneteasemusic.@unblockneteasemusic[0].force_best_quality)"
1616
search_limit="$(uci get unblockneteasemusic.@unblockneteasemusic[0].search_limit)"
17+
auto_update="$(uci get unblockneteasemusic.@unblockneteasemusic[0].auto_update)"
1718
extFile="/usr/share/UnblockNeteaseMusic/extFile.txt"
1819
serverCrt="/usr/share/UnblockNeteaseMusic/server.crt"
1920
serverKey="/usr/share/UnblockNeteaseMusic/server.key"
@@ -109,22 +110,18 @@ set_hosts() {
109110
}
110111
createCertificate() {
111112
echo "create certificate..." >>"${logFile}"
112-
# 生成 CA 私钥
113113
openssl genrsa -out "${caKey}" 2048
114-
# 生成 CA 证书
115114
openssl req -x509 -new -nodes -key "${caKey}" -sha256 -days 825 -out "${caCrt}" -subj "/C=CN/CN=UnblockNeteaseMusic Root CA/O=UnblockNeteaseMusic"
116-
# 生成服务器私钥
117115
openssl genrsa -out "${serverKey}" 2048
118-
# 生成证书签发请求
119116
openssl req -new -sha256 -key "${serverKey}" -out "${serverCsr}" -subj "/C=CN/L=Hangzhou/O=NetEase (Hangzhou) Network Co., Ltd/OU=IT Dept./CN=*.music.163.com"
120-
# 使用 CA 签发服务器证书
121117
touch "${extFile}"
122118
echo "authorityKeyIdentifier=keyid,issuer
123119
basicConstraints=CA:FALSE
124120
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
125121
extendedKeyUsage=serverAuth,OCSPSigning
126122
subjectAltName=DNS:music.163.com,DNS:*.music.163.com" >"${extFile}"
127123
openssl x509 -req -extfile "${extFile}" -days 825 -in "${serverCsr}" -CA "${caCrt}" -CAkey "${caKey}" -CAcreateserial -out "${serverCrt}"
124+
rm -f "${extFile}"
128125
}
129126
start() {
130127
stop >>"${logFile}" 2>&1
@@ -152,10 +149,11 @@ start() {
152149
set_hosts >"/dev/null" 2>&1
153150
fi
154151
else
155-
echo "$(date -R) 网络连接异常" >>"${logFile}"
152+
echo "$(date -R) network connection error" >>"${logFile}"
156153
fi
157154
sed -i '/UnblockNeteaseMusic/d' /etc/crontabs/root
158155
echo "*/1 * * * * /usr/share/UnblockNeteaseMusic/log_check.sh" >>"/etc/crontabs/root"
156+
echo "0 5 * * * /usr/share/UnblockNeteaseMusic/version_check.sh" >>"/etc/crontabs/root"
159157
/etc/init.d/cron restart >"/dev/null" 2>&1
160158
}
161159

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#!/bin/bash
2-
log_max_size="128" #使用KB计算
2+
log_max_size="128" #KB
33
log_file="/tmp/unblockneteasemusic.log"
44

55
((log_size = "$(ls -l "${log_file}" | awk -F ' ' '{print $5}')" / "1024"))
66
(("${log_size}" >= "${log_max_size}")) && echo "" >"${log_file}"
77
if [ "$(uci get unblockneteasemusic.@unblockneteasemusic[0].daemon_enable)" == "1" ]; then
88
if [ -z "$(ps | grep "UnblockNeteaseMusic" | grep -v "grep")" ]; then
9-
echo "$(date -R) 尝试重启应用..." >>"${log_file}"
9+
echo "$(date -R) try restart..." >>"${log_file}"
1010
/etc/init.d/unblockneteasemusic restart
1111
fi
1212
fi
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/bash
2+
log_file="/tmp/unblockneteasemusic.log"
3+
json_file="/tmp/unblockneteasemusic_latest.json"
4+
if [ "$(uci get unblockneteasemusic.@unblockneteasemusic[0].auto_update)" == "1" ]; then
5+
echo "$(date -R) check latest version ..." >>"${log_file}"
6+
curl -s -o "${json_file}" https://api.github.com/repos/cnsilvan/UnblockNeteaseMusic/releases/latest
7+
if [ $? -ne 0 ]; then
8+
echo "$(date -R) curl api.github.com failed" >>"${log_file}"
9+
exit 1
10+
fi
11+
currentTagCMD="$(UnblockNeteaseMusic -v | grep Version | awk '{print $2}')"
12+
currentRuntimeCMD="$(UnblockNeteaseMusic -v | grep runtime|awk -F\( '{print $2}'|awk '{print $3,$4}'|sed -E 's/\)//g')"
13+
latestTagCMD="$(cat ${json_file} | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\1/')"
14+
GOOSS="$(echo $currentRuntimeCMD | awk '{print $1}')"
15+
GOOS="linux"
16+
GOARCH="amd64"
17+
suffix="$(echo $currentRuntimeCMD | awk '{print $2}')"
18+
if [ ! -n "$suffix" ]; then
19+
suffix=".zip"
20+
fi
21+
22+
if [ -n "$(echo $GOOSS | awk -F/ '{print $1}')" ]; then
23+
GOOS="$(echo $GOOSS | awk -F/ '{print $1}')"
24+
fi
25+
if [ -n "$(echo $GOOSS | awk -F/ '{print $2}')" ]; then
26+
GOARCH="$(echo $GOOSS | awk -F/ '{print $2}')"
27+
fi
28+
downloadUrl="$(cat ${json_file} | grep '\"browser_download_url\":' | grep ${GOOS} | grep ${GOARCH} | grep ${suffix} | sed -E 's/.*\"([^\"]+)\".*/\1/')"
29+
if [ ! -n "${downloadUrl}" ]; then
30+
echo "$(date -R) not found ${currentRuntimeCMD} on GitHub,please go to https://github.com/cnsilvan/luci-app-unblockneteasemusic/issues to open a issue " >>"${log_file}"
31+
exit 1
32+
fi
33+
if [ "${currentTagCMD}" == "${latestTagCMD}" ]; then
34+
echo "$(date -R) current version: ${currentTagCMD}(${currentRuntimeCMD}) is the latest version" >>"${log_file}"
35+
else
36+
echo "$(date -R) start downloading the latest version[ ${currentTagCMD}(${currentRuntimeCMD}) >> ${latestTagCMD}(${currentRuntimeCMD}) ]..." >>"${log_file}"
37+
echo "$(date -R) ${downloadUrl}" >>"${log_file}"
38+
curl -LJO ${downloadUrl}
39+
if [ $? -eq 0 ]; then
40+
echo "$(date -R) download successful" >>"${log_file}"
41+
unzip $(find . -type f -name "*UnblockNeteaseMusic*.zip") -d ./UnblockNeteaseMusic/
42+
rm -f $(find . -type f -name "*UnblockNeteaseMusic*.zip")
43+
chmod +x ./UnblockNeteaseMusic/UnblockNeteaseMusic
44+
if [ -n "$(./UnblockNeteaseMusic/UnblockNeteaseMusic -v | grep Version | awk '{print $2}')" ]; then
45+
mv ./UnblockNeteaseMusic/UnblockNeteaseMusic /usr/bin/
46+
rm -rf ./UnblockNeteaseMusic/
47+
echo "$(date -R) update successful" >>"${log_file}"
48+
/etc/init.d/unblockneteasemusic restart
49+
else
50+
rm -rf ./UnblockNeteaseMusic/
51+
echo "$(date -R) update failed. please check if the downloaded version is correct" >>"${log_file}"
52+
fi
53+
else
54+
echo "$(date -R) download failed" >>"${log_file}"
55+
56+
fi
57+
58+
fi
59+
60+
fi

0 commit comments

Comments
 (0)