From a945201177964c65984280de28440da631c9bbbf Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 21 Dec 2019 20:30:16 +0800 Subject: [PATCH] luci-app-unblockneteasemusic: bump to v2.5 --- .../luasrc/model/cbi/unblockneteasemusic.lua | 14 +++- .../root/etc/config/unblockneteasemusic | 2 + .../root/etc/init.d/unblockneteasemusic | 67 ++++++++++--------- .../root/etc/ppp/ip-up.d/unblockneteasemusic | 4 ++ .../share/unblockneteasemusic/log_check.sh | 4 +- 5 files changed, 59 insertions(+), 32 deletions(-) create mode 100755 package/ctcgfw/luci-app-unblockneteasemusic/root/etc/ppp/ip-up.d/unblockneteasemusic diff --git a/package/ctcgfw/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua b/package/ctcgfw/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua index 9e2cbc0b5d..74456a6977 100644 --- a/package/ctcgfw/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua +++ b/package/ctcgfw/luci-app-unblockneteasemusic/luasrc/model/cbi/unblockneteasemusic.lua @@ -71,6 +71,18 @@ advanced_mode.description = translate("仅推荐高级玩家使用") advanced_mode.default = 0 advanced_mode.rmempty = false +daemon_enable = s:option(Flag, "daemon_enable", translate("启用进程守护")) +daemon_enable.description = translate("开启后,附属程序会自动检测主程序运行状态,在主程序退出时自动重启") +daemon_enable.default = 0 +daemon_enable.rmempty = false +daemon_enable:depends("advanced_mode", 1) + +keep_core_when_upgrade = s:option(Flag, "keep_core_when_upgrade", translate("升级时保留核心程序")) +keep_core_when_upgrade.description = translate("默认情况下,在OpenWrt升级后会导致核心程序丢失,开启此选项后会保留当前下载的核心程序") +keep_core_when_upgrade.default = 0 +keep_core_when_upgrade.rmempty = false +keep_core_when_upgrade:depends("advanced_mode", 1) + pub_access = s:option(Flag, "pub_access", translate("部署到公网")) pub_access.description = translate("默认仅监听局域网,如需提供公开访问请勾选此选项") pub_access.default = 0 @@ -78,7 +90,7 @@ pub_access.rmempty = false pub_access:depends("advanced_mode", 1) strict_mode = s:option(Flag, "strict_mode", translate("启用严格模式")) -strict_mode.description = translate("[慎用] 若将服务部署到公网,则强烈建议使用严格模式,此模式下仅放行网易云音乐所属域名的请求") +strict_mode.description = translate("若将服务部署到公网,则强烈建议使用严格模式,此模式下仅放行网易云音乐所属域名的请求;注意:该模式下只能使用 IPSet方式进行劫持和PAC方式进行代理") strict_mode.default = 0 strict_mode.rmempty = false strict_mode:depends("advanced_mode", 1) diff --git a/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/config/unblockneteasemusic b/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/config/unblockneteasemusic index c5440a707e..6542ec9f3b 100644 --- a/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/config/unblockneteasemusic +++ b/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/config/unblockneteasemusic @@ -8,6 +8,8 @@ config unblockneteasemusic option auto_update '1' option update_time '3' option advanced_mode '0' + option daemon_enable '0' + option keep_core_when_upgrade '0' option pub_access '0' option strict_mode '0' option netease_server_ip '59.111.181.38' diff --git a/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic b/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic index 2806c05219..7d9b6ae66e 100755 --- a/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic +++ b/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/init.d/unblockneteasemusic @@ -11,17 +11,18 @@ enable="$(uci get unblockneteasemusic.@unblockneteasemusic[0].enable)" http_port="$(uci get unblockneteasemusic.@unblockneteasemusic[0].http_port)" https_port="$(uci get unblockneteasemusic.@unblockneteasemusic[0].https_port)" music_source="$(uci get unblockneteasemusic.@unblockneteasemusic[0].music_source)" -youtube_key="$(uci get unblockneteasemusic.@unblockneteasemusic[0].youtube_key 2>/dev/null)" +youtube_key="$(uci get unblockneteasemusic.@unblockneteasemusic[0].youtube_key 2> "/dev/null")" hijack_ways="$(uci get unblockneteasemusic.@unblockneteasemusic[0].hijack_ways)" auto_update="$(uci get unblockneteasemusic.@unblockneteasemusic[0].auto_update)" update_time="$(uci get unblockneteasemusic.@unblockneteasemusic[0].update_time)" -[ "*$(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 2>/dev/null)" +keep_core_when_upgrade="$(uci get unblockneteasemusic.@unblockneteasemusic[0].keep_core_when_upgrade 2> "/dev/null")" +[ "*$(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 2> "/dev/null")" [ -n "${netease_server_ip}" ] && netease_server_ip="-f ${netease_server_ip}" -endpoint_url="$(uci get unblockneteasemusic.@unblockneteasemusic[0].endpoint_url 2>/dev/null)" +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 2>/dev/null)" +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}" set_ipset(){ @@ -36,10 +37,10 @@ ipset=/interface3.music.163.com/music ipset=/apm.music.163.com/music ipset=/apm3.music.163.com/music EOF - /etc/init.d/dnsmasq restart >/dev/null 2>&1 + /etc/init.d/dnsmasq restart > "/dev/null" 2>&1 - if ! ipset list music >/dev/null; then ipset create music hash:ip; fi - curl -s "http://httpdns.n.netease.com/httpdns/v2/d?domain=music.163.com,interface.music.163.com,interface3.music.163.com,apm.music.163.com,apm3.music.163.com,clientlog.music.163.com,clientlog3.music.163.com" |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add music "$1}' |bash >/dev/null 2>&1 + if ! ipset list music > "/dev/null"; then ipset create music hash:ip; fi + curl -s "http://httpdns.n.netease.com/httpdns/v2/d?domain=music.163.com,interface.music.163.com,interface3.music.163.com,apm.music.163.com,apm3.music.163.com,clientlog.music.163.com,clientlog3.music.163.com" |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add music "$1}' |bash > "/dev/null" 2>&1 iptables -t nat -N cloud_music iptables -t nat -A cloud_music -d 0.0.0.0/8 -j RETURN iptables -t nat -A cloud_music -d 10.0.0.0/8 -j RETURN @@ -55,8 +56,8 @@ ipset=/apm3.music.163.com/music mkdir -p /var/etc cat <<-EOF >> "/var/etc/unblockneteasemusic.include" -if ! ipset list music >/dev/null; then ipset create music hash:ip; fi -curl -s "http://httpdns.n.netease.com/httpdns/v2/d?domain=music.163.com,interface.music.163.com,interface3.music.163.com,apm.music.163.com,apm3.music.163.com,clientlog.music.163.com,clientlog3.music.163.com" |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add music "$1}' |bash >/dev/null 2>&1 +if ! ipset list music > "/dev/null"; then ipset create music hash:ip; fi +curl -s "http://httpdns.n.netease.com/httpdns/v2/d?domain=music.163.com,interface.music.163.com,interface3.music.163.com,apm.music.163.com,apm3.music.163.com,clientlog.music.163.com,clientlog3.music.163.com" |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add music "$1}' |bash > "/dev/null" 2>&1 iptables -t nat -N cloud_music iptables -t nat -A cloud_music -d 0.0.0.0/8 -j RETURN iptables -t nat -A cloud_music -d 10.0.0.0/8 -j RETURN @@ -78,7 +79,7 @@ iptables -t nat -I PREROUTING -p tcp -m set --match-set music dst -j cloud_music echo "" > "/var/etc/unblockneteasemusic.include" rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic.conf" - /etc/init.d/dnsmasq restart >/dev/null 2>&1 + /etc/init.d/dnsmasq restart > "/dev/null" 2>&1 fi } @@ -90,16 +91,19 @@ set_hosts(){ dhcp-option=252,http://${lan_addr}:${http_port}/proxy.pac address=/music.163.com/${lan_addr} address=/interface.music.163.com/${lan_addr} +address=/interface3.music.163.com/${lan_addr} +address=/apm.music.163.com/${lan_addr} +address=/apm3.music.163.com/${lan_addr} address=/music.httpdns.c.163.com/0.0.0.0 EOF - /etc/init.d/dnsmasq restart >/dev/null 2>&1 + /etc/init.d/dnsmasq restart > "/dev/null" 2>&1 echo "" > "/var/etc/unblockneteasemusic.include" ip route add 223.252.199.10 dev lo elif [ "${set_type}" = "stop" ]; then rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic.conf" - /etc/init.d/dnsmasq restart >/dev/null 2>&1 + /etc/init.d/dnsmasq restart > "/dev/null" 2>&1 echo "" > "/var/etc/unblockneteasemusic.include" @@ -131,46 +135,49 @@ 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" ] && echo "Core Not Found, please download it before starting." >>/tmp/unblockneteasemusic.log && exit 1 + [ ! -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" ] && echo "Core Not Found, please download it before starting." >> "/tmp/unblockneteasemusic.log" && exit 1 - if [ "{music_source}" == "youtube" ];then + if [ "${music_source}" = "youtube" ];then [ -z "${youtube_key}" ] && echo "Youtube API Key is not exsit, please enter it before starting." && exit 1 sed -i '/const key = /d' "/usr/share/unblockneteasemusic/core/provider/youtube.js" sed -i -e "1i const key = '${youtube_key}'" "/usr/share/unblockneteasemusic/core/provider/youtube.js" fi if [ "${music_source}" = "default" ]; then - nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" ${netease_server_ip} ${proxy_server_ip} ${endpoint_url} ${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} ${endpoint_url} ${strict_mode} >> "/tmp/unblockneteasemusic.log" 2>&1 & else - nohup node /usr/share/unblockneteasemusic/core/app.js -a "${addr}" -p "${http_port}":"${https_port}" -o "${music_source}" ${netease_server_ip} ${proxy_server_ip} ${endpoint_url} ${strict_mode} >>/tmp/unblockneteasemusic.log 2>&1 & + nohup node "/usr/share/unblockneteasemusic/core/app.js" -a "${addr}" -p "${http_port}":"${https_port}" -o "${music_source}" ${netease_server_ip} ${proxy_server_ip} ${endpoint_url} ${strict_mode} >> "/tmp/unblockneteasemusic.log" 2>&1 & fi set_type="start" if [ "*${hijack_ways}*" = "*use_ipset*" ]; then - set_ipset >/dev/null 2>&1 + set_ipset > "/dev/null" 2>&1 elif [ "*${hijack_ways}*" = "*use_hosts*" ]; then - set_hosts >/dev/null 2>&1 + set_hosts > "/dev/null" 2>&1 fi - [ "*$(uci get unblockneteasemusic.@unblockneteasemusic[0].pub_access 2>/dev/null)*" = "*1*" ] && set_ports >/dev/null 2>&1 + [ "*$(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" echo "*/5 * * * * /usr/share/unblockneteasemusic/log_check.sh" >> "/etc/crontabs/root" - /etc/init.d/cron restart >/dev/null 2>&1 + /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 "app.js" |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 + sed -i '/unblockneteasemusic/d' "/etc/crontabs/root" + /etc/init.d/cron restart > "/dev/null" 2>&1 - rm -f /tmp/unblockneteasemusic.log + sed -i '/unblockneteasemusic/d' "/etc/sysupgrade.conf" + [ "${keep_core_when_upgrade}" -eq 1 ] && { echo "/usr/share/unblockneteasemusic/core/" >> "/etc/sysupgrade.conf"; echo "/usr/share/unblockneteasemusic/local_ver" >> "/etc/sysupgrade.conf"; } + + rm -f "/tmp/unblockneteasemusic.log" set_type="stop" - set_ipset >/dev/null 2>&1 - set_hosts >/dev/null 2>&1 - set_ports >/dev/null 2>&1 + set_ipset > "/dev/null" 2>&1 + set_hosts > "/dev/null" 2>&1 + set_ports > "/dev/null" 2>&1 } diff --git a/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/ppp/ip-up.d/unblockneteasemusic b/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/ppp/ip-up.d/unblockneteasemusic new file mode 100755 index 0000000000..e9bea88fc8 --- /dev/null +++ b/package/ctcgfw/luci-app-unblockneteasemusic/root/etc/ppp/ip-up.d/unblockneteasemusic @@ -0,0 +1,4 @@ +#!/bin/sh + +sleep 10 +curl -s "http://httpdns.n.netease.com/httpdns/v2/d?domain=music.163.com,interface.music.163.com,interface3.music.163.com,apm.music.163.com,apm3.music.163.com,clientlog.music.163.com,clientlog3.music.163.com" |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add music "$1}' |bash > "/dev/null" 2>&1 diff --git a/package/ctcgfw/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh b/package/ctcgfw/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh index 650e043065..74bb2fd290 100755 --- a/package/ctcgfw/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh +++ b/package/ctcgfw/luci-app-unblockneteasemusic/root/usr/share/unblockneteasemusic/log_check.sh @@ -6,4 +6,6 @@ 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 +(( "${log_size}" >= "${log_max_size}" )) && echo "" > "${log_file}" + +[ "*$(uci get unblockneteasemusic.@unblockneteasemusic[0].daemon_enable 2>/dev/null)*" == "*1*" ] && { [ -z "$(ps |grep "unblockneteasemusic" |grep "app.js" |grep -v "grep")" ] && /etc/init.d/unblockneteasemusic restart; } \ No newline at end of file