Selaa lähdekoodia

code optimization and bug fixes

CN_SZTL 5 vuotta sitten
vanhempi
sitoutus
e3f7e385be

+ 1 - 1
Makefile

@@ -12,7 +12,7 @@ LUCI_DEPENDS:=+bash +busybox +coreutils +coreutils-nohup +curl +dnsmasq-full +ip
 LUCI_PKGARCH:=all
 PKG_NAME:=luci-app-unblockneteasemusic
 PKG_VERSION:=2.8
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 
 PKG_MAINTAINER:=[CTCGFW]Project-OpenWrt
 

+ 42 - 29
root/etc/init.d/unblockneteasemusic

@@ -184,47 +184,52 @@ start()
 
 	[ "${enable}" -ne "1" ] && exit 0
 
-	sed -i '/unblockneteasemusic/d' /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"
+	sed -i "/$NAME/d" /etc/crontabs/root
+	[ "${auto_update}" -eq "1" ] && echo "0 ${update_time} * * * /usr/share/$NAME/update.sh update_core" >> "/etc/crontabs/root"
+	echo "*/5 * * * * /usr/share/$NAME/log_check.sh" >> "/etc/crontabs/root"
 	/etc/init.d/cron restart > "/dev/null" 2>&1
 
-	[ ! -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; }
+	[ ! -e "/usr/share/$NAME/core/app.js" ] && { rm -f "/usr/share/$NAME/local_ver"; bash "/usr/share/$NAME/update.sh" "update_core_non_restart"; }
+	[ ! -e "/usr/share/$NAME/core/app.js" ] && { echo "Core Not Found, please download it before starting." >> "/tmp/$NAME.log"; exit 1; }
 
 	[ "${use_remote_qq_server}" -ne "1" ] && qq_server_mode="local" || qq_server_mode="remote"
-	bash "/usr/share/unblockneteasemusic/gen_remote_qq_server.sh" "${qq_server_mode}" "${enable_flac}" > "/usr/share/unblockneteasemusic/core/src/provider/qq.js"
+	bash "/usr/share/$NAME/gen_qq_provider.sh" "${qq_server_mode}" "${enable_flac}" > "/usr/share/$NAME/core/src/provider/qq.js"
 
 	[ -n "${neteasemusic_cookie}" ] && {
-		ub_cookie_line="$(sed -n -e "/netease.path.includes('song\/enhance')/=" "/usr/share/unblockneteasemusic/core/src/hook.js")";
-		[ -n "${ub_cookie_line}" ] && { let ub_cookie_endline="ub_cookie_line+6"; sed -i "${ub_cookie_line},${ub_cookie_endline}d" "/usr/share/unblockneteasemusic/core/src/hook.js"; }
-		sed -i "/netease.path == '\/api\/song\/enhance\/download\/url'/i\\\t\\t\\t\\tif (netease.path.includes('song\/enhance')) {" "/usr/share/unblockneteasemusic/core/src/hook.js"
-		sed -i "/if (netease.path.includes('song\/enhance')) {/a\\\t\\t\\t\\t\\treq.headers.cookie = [" "/usr/share/unblockneteasemusic/core/src/hook.js"
-		sed -i "/req.headers.cookie = \[/a\\\t\\t\\t\\t\\t\\t'MUSIC_U=${neteasemusic_cookie}'," "/usr/share/unblockneteasemusic/core/src/hook.js"
-		sed -i "/'MUSIC_U=${neteasemusic_cookie}',/a\\\t\\t\\t\\t\\t\\treq.headers.cookie.replace(\/\\\s*MUSIC_\\\w=[^\\\s;]+;*\/g, '')" "/usr/share/unblockneteasemusic/core/src/hook.js"
-		sed -i "/req.headers.cookie.replace(\/\\\s\\*MUSIC_\\\w=[^\\\s;]\\+/a\\\t\\t\\t\\t\\t].filter(line => line).join('; ')" "/usr/share/unblockneteasemusic/core/src/hook.js"
-		sed -i "/].filter(line => line).join('; ')/a\\\t\\t\\t\\t}\\n" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		ub_cookie_line="$(sed -n -e "/netease.path.includes('song\/enhance')/=" "/usr/share/$NAME/core/src/hook.js")";
+		[ -n "${ub_cookie_line}" ] && { let ub_cookie_endline="ub_cookie_line+6"; sed -i "${ub_cookie_line},${ub_cookie_endline}d" "/usr/share/$NAME/core/src/hook.js"; }
+		sed -i "/netease.path == '\/api\/song\/enhance\/download\/url'/i\\\t\\t\\t\\tif (netease.path.includes('song\/enhance')) {" "/usr/share/$NAME/core/src/hook.js"
+		sed -i "/if (netease.path.includes('song\/enhance')) {/a\\\t\\t\\t\\t\\treq.headers.cookie = [" "/usr/share/$NAME/core/src/hook.js"
+		sed -i "/req.headers.cookie = \[/a\\\t\\t\\t\\t\\t\\t'MUSIC_U=${neteasemusic_cookie}'," "/usr/share/$NAME/core/src/hook.js"
+		sed -i "/'MUSIC_U=${neteasemusic_cookie}',/a\\\t\\t\\t\\t\\t\\treq.headers.cookie.replace(\/\\\s*MUSIC_\\\w=[^\\\s;]+;*\/g, '')" "/usr/share/$NAME/core/src/hook.js"
+		sed -i "/req.headers.cookie.replace(\/\\\s\\*MUSIC_\\\w=[^\\\s;]\\+/a\\\t\\t\\t\\t\\t].filter(line => line).join('; ')" "/usr/share/$NAME/core/src/hook.js"
+		sed -i "/].filter(line => line).join('; ')/a\\\t\\t\\t\\t}\\n" "/usr/share/$NAME/core/src/hook.js"
 }
 
-	quality_check_line="$(awk "/target == 0 \|\| item.id == target/{print NR}" "/usr/share/unblockneteasemusic/core/src/hook.js")"
-	sed -i "${quality_check_line}d" "/usr/share/unblockneteasemusic/core/src/hook.js"
+	quality_check_line="$(awk "/target == 0 \|\| item.id == target/{print NR}" "/usr/share/$NAME/core/src/hook.js")"
+	sed -i "${quality_check_line}d" "/usr/share/$NAME/core/src/hook.js"
 	if [ "${replace_music_source}" = "dont_replace" ]; then
-		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo) && (target == 0 || item.id == target)) {" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo) && (target == 0 || item.id == target)) {" "/usr/share/$NAME/core/src/hook.js"
 	elif [ "${replace_music_source}" = "lower_than_192kbps" ]; then
-		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo || item.br < 192000) && (target == 0 || item.id == target)) {" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo || item.br < 192000) && (target == 0 || item.id == target)) {" "/usr/share/$NAME/core/src/hook.js"
 	elif [ "${replace_music_source}" = "lower_than_320kbps" ]; then
-		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo || item.br < 320000) && (target == 0 || item.id == target)) {" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo || item.br < 320000) && (target == 0 || item.id == target)) {" "/usr/share/$NAME/core/src/hook.js"
 	elif [ "${replace_music_source}" = "lower_than_999kbps" ]; then
-		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo || item.br < 999000) && (target == 0 || item.id == target)) {" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		sed -i -e "${quality_check_line}i \\\t\\tif ((item.code != 200 || item.freeTrialInfo || item.br < 999000) && (target == 0 || item.id == target)) {" "/usr/share/$NAME/core/src/hook.js"
 	elif [ "${replace_music_source}" = "replace_all" ]; then
-		sed -i -e "${quality_check_line}i \\\t\\tif (target == 0 || item.id == target) {" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		sed -i -e "${quality_check_line}i \\\t\\tif (target == 0 || item.id == target) {" "/usr/share/$NAME/core/src/hook.js"
 	fi
 
-	{ [ -f "${self_issue_cert_crt}" ] && [ -f "${self_issue_cert_key}" ]; } && { ln -sf "${self_issue_cert_crt}" "/usr/share/unblockneteasemusic/core/server.crt"; ln -sf "${self_issue_cert_key}" "/usr/share/unblockneteasemusic/core/server.key"; }
+	{ [ -f "${self_issue_cert_crt}" ] && [ -f "${self_issue_cert_key}" ]; } && {
+		{ [ "${self_issue_cert_crt}" != "/usr/share/$NAME/core/server.crt" ] && [ "${self_issue_cert_key}" != "/usr/share/$NAME/core/server.key" ]; } && {
+			ln -sf "${self_issue_cert_crt}" "/usr/share/$NAME/core/server.crt"
+			ln -sf "${self_issue_cert_key}" "/usr/share/$NAME/core/server.key"
+		}
+	}
 
 	[ "${hijack_ways}" = "use_hosts" ] && { http_port="80"; https_port="443"; }
 	[ "${music_source}" = "default" ] && music_source="" || music_source="-o ${music_source}"
-	nohup node "/usr/share/unblockneteasemusic/core/app.js" -a "${addr}" -p "${http_port}":"${https_port}" ${music_source} -e "${endpoint_url}" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >> "/tmp/$NAME.log" 2>&1 &
+	nohup node "/usr/share/$NAME/core/app.js" -a "${addr}" -p "${http_port}":"${https_port}" ${music_source} -e "${endpoint_url}" ${netease_server_ip} ${proxy_server_ip} ${strict_mode} >> "/tmp/$NAME.log" 2>&1 &
 
 	set_type="start"
 	if [ "${hijack_ways}" = "use_ipset" ]; then
@@ -237,16 +242,24 @@ start()
 
 stop()
 {
-	{ ps |grep "unblockneteasemusic" |grep "app.js" |grep -v "grep" |awk '{print $1}' |xargs kill -9; } > "/dev/null" 2>&1
+	{ ps |grep "$NAME" |grep "app.js" |grep -v "grep" |awk '{print $1}' |xargs kill -9; } > "/dev/null" 2>&1
 
-	sed -i '/unblockneteasemusic/d' "/etc/crontabs/root"
+	sed -i "/$NAME/d" "/etc/crontabs/root"
 	/etc/init.d/cron restart > "/dev/null" 2>&1
 
 	[ ! -f "${UPGRADE_CONF}" ] && touch "${UPGRADE_CONF}"
-	sed -i '/unblockneteasemusic\/core/d;/unblockneteasemusic\/local_ver/d' "${UPGRADE_CONF}"
-	[ "${keep_core_when_upgrade}" -eq "1" ] && { echo "/usr/share/unblockneteasemusic/core/" >> "${UPGRADE_CONF}"; echo "/usr/share/unblockneteasemusic/local_ver" >> "${UPGRADE_CONF}"; }
-	[ -f "${self_issue_cert_crt}" ] && { sed -i "/${self_issue_cert_crt//\//\\/}/d"; echo "${self_issue_cert_crt}" >> "${UPGRADE_CONF}"; }
-	[ -f "${self_issue_cert_key}" ] && { sed -i "/${self_issue_cert_key//\//\\/}/d"; echo "${self_issue_cert_key}" >> "${UPGRADE_CONF}"; }
+	sed -i "/$NAME\/core/d;/$NAME\/local_ver/d" "${UPGRADE_CONF}"
+	[ "${keep_core_when_upgrade}" -eq "1" ] && { echo "/usr/share/$NAME/core/" >> "${UPGRADE_CONF}"; echo "/usr/share/$NAME/local_ver" >> "${UPGRADE_CONF}"; }
+
+	{ [ -f "${self_issue_cert_crt}" ] && [ -f "${self_issue_cert_key}" ]; } && {
+		{ [ "${self_issue_cert_crt}" != "/usr/share/$NAME/core/server.crt" ] && [ "${self_issue_cert_key}" != "/usr/share/$NAME/core/server.key" ]; } && {
+			sed -i "/${self_issue_cert_crt//\//\\/}/d"
+			echo "${self_issue_cert_crt}" >> "${UPGRADE_CONF}"
+
+			sed -i "/${self_issue_cert_key//\//\\/}/d"
+			echo "${self_issue_cert_key}" >> "${UPGRADE_CONF}"
+		}
+	}
 
 	rm -f "/tmp/$NAME.log"
 

+ 15 - 51
root/usr/share/unblockneteasemusic/gen_remote_qq_server.sh → root/usr/share/unblockneteasemusic/gen_qq_provider.sh

@@ -2,20 +2,16 @@
 # Created By [CTCGFW]Project OpenWRT
 # https://github.com/project-openwrt
 
-if [ "$1" == "local" ]
-then echo -e "// local_mode
-const cache = require('../cache')
+header="const cache = require('../cache')
 const insure = require('./insure')
 const select = require('./select')
 const request = require('../request')
 
 const headers = {
-	'origin': 'http://y.qq.com/',
-	'referer': 'http://y.qq.com/',
-	'cookie': process.env.QQ_COOKIE || null // 'uin=; qm_keyst=',
-}
+        'origin': 'http://y.qq.com/',
+        'referer': 'http://y.qq.com/',"
 
-const playable = song => {
+body="const playable = song => {
 	const switchFlag = song['switch'].toString(2).split('')
 	switchFlag.pop()
 	switchFlag.reverse()
@@ -36,7 +32,7 @@ const search = info => {
 	const url =
 		'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?' +
 		'ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.center&' +
-		't=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w='
+		't=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=' +
 		encodeURIComponent(info.keyword) + '&' +
 		'g_tk=5381&jsonpCallback=MusicJsonCallback10005317669353331&loginUin=0&hostUin=0&' +
 		'format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0'
@@ -48,8 +44,16 @@ const search = info => {
 		const matched = select(list, info)
 		return matched ? matched.id : Promise.reject()
 	})
+}"
+
+if [ "$1" == "local" ]
+then echo -e "// local_mode
+${header}
+	'cookie': process.env.QQ_COOKIE || null // 'uin=; qm_keyst=',
 }
 
+${body}
+
 const single = (id, format) => {
 	const uin = ((headers.cookie || '').match(/uin=(\d+)/) || [])[1] || '0'
 
@@ -101,51 +105,11 @@ module.exports = {check, track}"
 elif [ "$1" == "remote" ]
 then [ "$2" == "1" ] && { flac_quality="'flac', "; loop_times="4"; } || loop_times="3"
 echo -e "// remote_mode
-const cache = require('../cache')
-const insure = require('./insure')
-const select = require('./select')
-const request = require('../request')
-
-const headers = {
-	'origin': 'http://y.qq.com/',
-	'referer': 'http://y.qq.com/',
+${header}
 	'cookie': null
 }
 
-const playable = song => {
-	const switchFlag = song['switch'].toString(2).split('')
-	switchFlag.pop()
-	switchFlag.reverse()
-	const playFlag = switchFlag[0]
-	const tryFlag = switchFlag[13]
-	return ((playFlag == 1) || ((playFlag == 1) && (tryFlag == 1)))
-}
-
-const format = song => ({
-	id: {song: song.mid, file: song.file.media_mid},
-	name: song.name,
-	duration: song.interval * 1000,
-	album: {id: song.album.mid, name: song.album.name},
-	artists: song.singer.map(({mid, name}) => ({id: mid, name}))
-})
-
-const search = info => {
-	const url =
-		'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?' +
-		'ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.center&' +
-		't=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=' +
-		encodeURIComponent(info.keyword) + '&' +
-		'g_tk=5381&jsonpCallback=MusicJsonCallback10005317669353331&loginUin=0&hostUin=0&' +
-		'format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0'
-
-	return request('GET', url)
-	.then(response => response.jsonp())
-	.then(jsonBody => {
-		const list = jsonBody.data.song.list.map(format)
-		const matched = select(list, info)
-		return matched ? matched.id : Promise.reject()
-	})
-}
+${body}
 
 const track = id => {
 	const typeObj = [${flac_quality}'320', '128', 'm4a']

+ 4 - 2
root/usr/share/unblockneteasemusic/log_check.sh

@@ -2,10 +2,12 @@
 # Created By [CTCGFW]Project OpenWRT
 # https://github.com/project-openwrt
 
+NAME="unblockneteasemusic"
+
 log_max_size="4" #使用KB计算
-log_file="/tmp/unblockneteasemusic.log"
+log_file="/tmp/$NAME.log"
 
 (( log_size = "$(ls -l "${log_file}" | awk -F ' ' '{print $5}')" / "1024" ))
 (( "${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; }
+[ "*$(uci get $NAME.@$NAME[0].daemon_enable 2>/dev/null)*" == "*1*" ] && { [ -z "$(ps |grep "$NAME" |grep "app.js" |grep -v "grep")" ] && /etc/init.d/$NAME restart; }

+ 37 - 35
root/usr/share/unblockneteasemusic/update.sh

@@ -2,36 +2,38 @@
 # Created By [CTCGFW]Project OpenWRT
 # https://github.com/project-openwrt
 
+NAME="unblockneteasemusic"
+
 function check_core_if_already_running(){
-	running_tasks="$(ps |grep "unblockneteasemusic" |grep "update.sh" |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; }
+	running_tasks="$(ps |grep "$NAME" |grep "update.sh" |grep "update_core" |grep -v "grep" |awk '{print $1}' |wc -l)"
+	[ "${running_tasks}" -gt "2" ] && { echo -e "\nA task is already running." >> "/tmp/$NAME.log"; exit 2; }
 }
 
 function check_luci_if_already_running(){
-	running_tasks="$(ps |grep "unblockneteasemusic" |grep "update.sh" |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; }
+	running_tasks="$(ps |grep "$NAME" |grep "update.sh" |grep "update_luci" |grep -v "grep" |awk '{print $1}' |wc -l)"
+	[ "${running_tasks}" -gt "2" ] && { echo -e "\nA task is already running." >> "/tmp/$NAME.log"; exit 2; }
 }
 
 function clean_log(){
-	echo "" > "/tmp/unblockneteasemusic.log"
+	echo "" > "/tmp/$NAME.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; }
+	[ -z "${luci_latest_ver}" ] && { echo -e "\nFailed to check latest LuCI version, please try again later." >> "/tmp/$NAME.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"
+		echo -e "Local LuCI version: $(opkg info "luci-app-unblockneteasemusic" |sed -n "2p" |tr -d "Version: "), cloud LuCI version: ${luci_latest_ver}." >> "/tmp/$NAME.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"
+		echo -e "\nLocal LuCI version: $(opkg info "luci-app-unblockneteasemusic" |sed -n "2p" |tr -d "Version: "), cloud LuCI version: ${luci_latest_ver}." >> "/tmp/$NAME.log"
+		echo -e "You're already using the latest LuCI version." >> "/tmp/$NAME.log"
 		exit 3
 	fi
 }
 
 function update_luci(){
-	echo -e "Updating LuCI..." >> "/tmp/unblockneteasemusic.log"
+	echo -e "Updating LuCI..." >> "/tmp/$NAME.log"
 
 	mkdir -p "/tmp" > "/dev/null" 2>&1
 
@@ -41,59 +43,59 @@ function update_luci(){
 	rm -rf "/tmp/luci-indexcache" "/tmp/luci-modulecache"
 
 	if [ "$(opkg info 'luci-app-unblockneteasemusic' |sed -n '2p' |tr -d 'Version: ')" != "${luci_latest_ver}" ]; then
-		echo -e "Failed to update LuCI." >> "/tmp/unblockneteasemusic.log"
+		echo -e "Failed to update LuCI." >> "/tmp/$NAME.log"
 		exit 1
 	else
-		touch "/usr/share/unblockneteasemusic/update_luci_successfully"
+		touch "/usr/share/$NAME/update_luci_successfully"
 		/etc/init.d/firewall restart > "/dev/null" 2>&1
 	fi
 
-	echo -e "Succeeded in updating LuCI." > "/tmp/unblockneteasemusic.log"
-	echo -e "Current LuCI version: ${luci_latest_ver}.\n" >> "/tmp/unblockneteasemusic.log"
+	echo -e "Succeeded in updating LuCI." > "/tmp/$NAME.log"
+	echo -e "Current LuCI version: ${luci_latest_ver}.\n" >> "/tmp/$NAME.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
+	[ -z "${core_latest_ver}" ] && { echo -e "\nFailed to check latest core version, please try again later." >> "/tmp/$NAME.log"; exit 1; }
+	if [ ! -e "/usr/share/$NAME/core_local_ver" ]; then
 		clean_log
-		echo -e "Local version: NOT FOUND, cloud version: ${core_latest_ver}." >> "/tmp/unblockneteasemusic.log"
+		echo -e "Local version: NOT FOUND, cloud version: ${core_latest_ver}." >> "/tmp/$NAME.log"
 		update_core
 	else
-		if [ "$(cat /usr/share/unblockneteasemusic/core_local_ver)" != "${core_latest_ver}" ]; then
+		if [ "$(cat /usr/share/$NAME/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"
+			echo -e "Local core version: $(cat /usr/share/$NAME/core_local_ver 2>"/dev/null"), cloud core version: ${core_latest_ver}." >> "/tmp/$NAME.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"
+			echo -e "\nLocal core version: $(cat /usr/share/$NAME/core_local_ver 2>"/dev/null"), cloud core version: ${core_latest_ver}." >> "/tmp/$NAME.log"
+			echo -e "You're already using the latest core version." >> "/tmp/$NAME.log"
 			exit 3
 		fi
 	fi
 }
 
 function update_core(){
-	echo -e "Updating core..." >> "/tmp/unblockneteasemusic.log"
+	echo -e "Updating core..." >> "/tmp/$NAME.log"
 
-	mkdir -p "/usr/share/unblockneteasemusic/core" > "/dev/null" 2>&1
-	rm -rf /usr/share/unblockneteasemusic/core/* > "/dev/null" 2>&1
+	mkdir -p "/usr/share/$NAME/core" > "/dev/null" 2>&1
+	rm -rf /usr/share/$NAME/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
+	curl -sL "https://github.com/nondanee/UnblockNeteaseMusic/archive/master.tar.gz" -o "/usr/share/$NAME/core/core.tar.gz" > "/dev/null" 2>&1
+	tar -zxf "/usr/share/$NAME/core/core.tar.gz" -C "/usr/share/$NAME/core/" > "/dev/null" 2>&1
+	mv /usr/share/$NAME/core/UnblockNeteaseMusic-master/* "/usr/share/$NAME/core/"
+	rm -rf "/usr/share/$NAME/core/core.tar.gz" "/usr/share/$NAME/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"
+	if [ ! -e "/usr/share/$NAME/core/app.js" ]; then
+		echo -e "Failed to download core." >> "/tmp/$NAME.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
+		[ "${update_core_from_luci}" == "y" ] && touch "/usr/share/$NAME/update_core_successfully"
+		echo -e "${core_latest_ver}" > "/usr/share/$NAME/core_local_ver"
+		[ "${non_restart}" != "y" ] && /etc/init.d/$NAME restart
 	fi
 
-	echo -e "Succeeded in updating core." > "/tmp/unblockneteasemusic.log"
-	echo -e "Current core version: ${core_latest_ver}.\n" >> "/tmp/unblockneteasemusic.log"
+	echo -e "Succeeded in updating core." > "/tmp/$NAME.log"
+	echo -e "Current core version: ${core_latest_ver}.\n" >> "/tmp/$NAME.log"
 }
 
 case "$1" in