From 4605165ed24394891343af5173dc967441759f0a Mon Sep 17 00:00:00 2001
From: CN_SZTL <22235437+1715173329@users.noreply.github.com>
Date: Thu, 20 Feb 2020 16:12:24 +0800
Subject: [PATCH] luci-app-unblockneteasemusic-mini: add package (#3218)
* luci-app-unblockneteasemusic-mini: add package
* Update Makefile
* Update unblockneteasemusic-mini
Co-authored-by: coolsnowwolf <31687149+coolsnowwolf@users.noreply.github.com>
---
.../Makefile | 21 +++++
.../controller/unblockneteasemusic-mini.lua | 23 +++++
.../model/cbi/unblockneteasemusic-mini.lua | 29 ++++++
.../unblockneteasemusic_mini_status.htm | 22 +++++
.../root/etc/config/unblockneteasemusic-mini | 5 +
.../iface/99-unblockneteasemusic-mini | 8 ++
.../root/etc/init.d/unblockneteasemusic-mini | 91 +++++++++++++++++++
.../etc/uci-defaults/unblockneteasemusic-mini | 17 ++++
8 files changed, 216 insertions(+)
create mode 100644 package/lean/luci-app-unblockneteasemusic-mini/Makefile
create mode 100644 package/lean/luci-app-unblockneteasemusic-mini/luasrc/controller/unblockneteasemusic-mini.lua
create mode 100644 package/lean/luci-app-unblockneteasemusic-mini/luasrc/model/cbi/unblockneteasemusic-mini.lua
create mode 100644 package/lean/luci-app-unblockneteasemusic-mini/luasrc/view/unblockneteasemusic-mini/unblockneteasemusic_mini_status.htm
create mode 100644 package/lean/luci-app-unblockneteasemusic-mini/root/etc/config/unblockneteasemusic-mini
create mode 100755 package/lean/luci-app-unblockneteasemusic-mini/root/etc/hotplug.d/iface/99-unblockneteasemusic-mini
create mode 100755 package/lean/luci-app-unblockneteasemusic-mini/root/etc/init.d/unblockneteasemusic-mini
create mode 100755 package/lean/luci-app-unblockneteasemusic-mini/root/etc/uci-defaults/unblockneteasemusic-mini
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/Makefile b/package/lean/luci-app-unblockneteasemusic-mini/Makefile
new file mode 100644
index 000000000..9aef29613
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/Makefile
@@ -0,0 +1,21 @@
+# Copyright (C) 2016 Openwrt.org
+#
+# This is a free software, use it under GNU General Public License v3.0.
+#
+# Created By [CTCGFW]Project-OpenWrt
+# https://github.com/project-openwrt
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=luci-app-unblockneteasemusic-mini
+PKG_VERSION:=1.2
+PKG_RELEASE:=5
+LUCI_TITLE:=LuCI support for UnblockNeteaseMusic(Mini)
+LUCI_DEPENDS:=+dnsmasq-full +ipset +iptables +wget
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=[CTCGFW]Project-OpenWrt
+
+include $(TOPDIR)/feeds/luci/luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/luasrc/controller/unblockneteasemusic-mini.lua b/package/lean/luci-app-unblockneteasemusic-mini/luasrc/controller/unblockneteasemusic-mini.lua
new file mode 100644
index 000000000..73460b723
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/luasrc/controller/unblockneteasemusic-mini.lua
@@ -0,0 +1,23 @@
+-- This is a free software, use it under GNU General Public License v3.0.
+-- Created By [CTCGFW]Project OpenWRT
+-- https://github.com/project-openwrt
+
+module("luci.controller.unblockneteasemusic-mini", package.seeall)
+
+function index()
+ if not nixio.fs.access("/etc/config/unblockneteasemusic-mini") then
+ return
+ end
+
+ local page
+ page = entry({"admin", "services", "unblockneteasemusic-mini"}, cbi("unblockneteasemusic-mini"), _("解除网易云音乐播放限制 (Mini)"), 100)
+ page.dependent = true
+ entry({"admin", "services", "unblockneteasemusic-mini", "status"},call("act_status")).leaf=true
+end
+
+function act_status()
+ local e={}
+ e.running=luci.sys.call("iptables -t nat -L -v -n |grep unblock_netease_music |grep -v grep >/dev/null")==0
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(e)
+end
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/luasrc/model/cbi/unblockneteasemusic-mini.lua b/package/lean/luci-app-unblockneteasemusic-mini/luasrc/model/cbi/unblockneteasemusic-mini.lua
new file mode 100644
index 000000000..a40f77d10
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/luasrc/model/cbi/unblockneteasemusic-mini.lua
@@ -0,0 +1,29 @@
+-- Created By [CTCGFW]Project-OpenWrt
+-- https://github.com/project-openwrt
+
+mp = Map("unblockneteasemusic-mini", translate("解除网易云音乐播放限制 (Mini)"))
+mp.description = translate("原理:采用 [QQ/酷狗/酷我/咕咪] 等音源,替换网易云音乐 无版权/收费 歌曲链接
由 [CTCGFW]Project-OpenWrt & hyird 提供服务器支持
详细说明参见:https://github.com/project-openwrt/luci-app-unblockneteasemusic-mini")
+
+mp:section(SimpleSection).template = "unblockneteasemusic-mini/unblockneteasemusic_mini_status"
+
+s = mp:section(TypedSection, "unblockneteasemusic-mini")
+s.anonymous=true
+s.addremove=false
+
+enable = s:option(Flag, "enable", translate("启用本插件"))
+enable.description = translate("启用本插件以解除网易云音乐播放限制")
+enable.default = 0
+enable.rmempty = false
+
+select_server = s:option(ListValue, "select_server", translate("服务端类型"))
+select_server:value("tencent_shanghai_nodejs", translate("腾讯云上海 Node.js 版本(高音质)"))
+select_server:value("aliyun_beijing_nodejs", translate("阿里云北京 Node.js 版本(高音质)"))
+select_server:value("tencent_shanghai_golang", translate("腾讯云上海 Golang 版本(低音质)"))
+select_server.description = translate("Node.js版使用QQ、酷我、咪咕音源,Golang版使用酷狗、酷我、咪咕音源")
+select_server.default = "tencent_shanghai_nodejs"
+select_server.rmempty = false
+
+download_certificate=s:option(DummyValue,"opennewwindow",translate(""))
+download_certificate.description = translate("Linux/iOS/MacOSX设备在信任根证书后方可正常使用解锁功能。")
+
+return mp
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/luasrc/view/unblockneteasemusic-mini/unblockneteasemusic_mini_status.htm b/package/lean/luci-app-unblockneteasemusic-mini/luasrc/view/unblockneteasemusic-mini/unblockneteasemusic_mini_status.htm
new file mode 100644
index 000000000..8ec912590
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/luasrc/view/unblockneteasemusic-mini/unblockneteasemusic_mini_status.htm
@@ -0,0 +1,22 @@
+
+
+
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/root/etc/config/unblockneteasemusic-mini b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/config/unblockneteasemusic-mini
new file mode 100644
index 000000000..3766496e4
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/config/unblockneteasemusic-mini
@@ -0,0 +1,5 @@
+
+config unblockneteasemusic-mini
+ option enable '0'
+ option select_server 'tencent_shanghai_nodejs'
+
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/root/etc/hotplug.d/iface/99-unblockneteasemusic-mini b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/hotplug.d/iface/99-unblockneteasemusic-mini
new file mode 100755
index 000000000..fd56956ed
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/hotplug.d/iface/99-unblockneteasemusic-mini
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+[ "$ACTION" = ifup ] || exit 0
+[ "$INTERFACE" = "wan" ] || exit 0
+
+ipset -! -N "neteasemusic" hash:ip
+sleep 10
+wget-ssl -t 5 -T 10 "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" -O- |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add neteasemusic "$1}' |sh
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/root/etc/init.d/unblockneteasemusic-mini b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/init.d/unblockneteasemusic-mini
new file mode 100755
index 000000000..5c19e083b
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/init.d/unblockneteasemusic-mini
@@ -0,0 +1,91 @@
+#!/bin/sh /etc/rc.common
+# Created By [CTCGFW]Project OpenWRT
+# https://github.com/project-openwrt
+
+START=80
+STOP=10
+
+enable="$(uci get unblockneteasemusic-mini.@unblockneteasemusic-mini[0].enable)"
+select_server="$(uci get unblockneteasemusic-mini.@unblockneteasemusic-mini[0].select_server)"
+
+if [ "${select_server}" = "tencent_shanghai_nodejs" ]; then
+ unblock_server_addr="cdn-shanghai.service.project-openwrt.eu.org"
+ unblock_server_ip="$(ping "cdn-shanghai.service.project-openwrt.eu.org" -c 1 | sed '1{s/[^(]*(//;s/).*//;q}')"
+ [ -z "${unblock_server_ip}" ] && unblock_server_ip="122.51.88.18"
+ unblock_server_http_port="30000"
+ unblock_server_https_port="30001"
+elif [ "${select_server}" = "aliyun_beijing_nodejs" ]; then
+ unblock_server_addr="hyird.xyz"
+ unblock_server_ip="$(ping "hyird.xyz" -c 1 | sed '1{s/[^(]*(//;s/).*//;q}')"
+ [ -z "${unblock_server_ip}" ] && unblock_server_ip="182.92.84.98"
+ unblock_server_http_port="30000"
+ unblock_server_https_port="30001"
+elif [ "${select_server}" = "tencent_shanghai_golang" ]; then
+ unblock_server_addr="cdn-shanghai.service.project-openwrt.eu.org"
+ unblock_server_ip="$(ping "cdn-shanghai.service.project-openwrt.eu.org" -c 1 | sed '1{s/[^(]*(//;s/).*//;q}')"
+ [ -z "${unblock_server_ip}" ] && unblock_server_ip="122.51.88.18"
+ unblock_server_http_port="30002"
+ unblock_server_https_port="30003"
+fi
+
+set_ipset(){
+ if [ "${set_type}" = "start" ]; then
+ mkdir -p "/tmp/dnsmasq.d"
+ rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic-mini.conf"
+ cat <<-EOF > "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic-mini.conf"
+ipset=/.music.163.com/neteasemusic
+ipset=/interface.music.163.com/neteasemusic
+ipset=/interface3.music.163.com/neteasemusic
+ipset=/apm.music.163.com/neteasemusic
+ipset=/apm3.music.163.com/neteasemusic
+ipset=/clientlog.music.163.com/neteasemusic
+ipset=/clientlog3.music.163.com/neteasemusic
+ EOF
+ /etc/init.d/dnsmasq restart >/dev/null 2>&1
+
+ if ! ipset list "neteasemusic" >/dev/null; then ipset create "neteasemusic" hash:ip; fi
+ wget-ssl -t 5 -T 10 "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" -O- |grep -Eo '[0-9]+?\.[0-9]+?\.[0-9]+?\.[0-9]+?' |sort |uniq |awk '{print "ipset add neteasemusic "$1}' |sh
+ iptables -t nat -N "unblock_netease_music"
+ iptables -t nat -A "unblock_netease_music" -d 0.0.0.0/8 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 10.0.0.0/8 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 127.0.0.0/8 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 169.254.0.0/16 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 172.16.0.0/12 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 192.168.0.0/16 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 224.0.0.0/4 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -d 240.0.0.0/4 -j RETURN
+ iptables -t nat -A "unblock_netease_music" -p tcp --dport 80 -j DNAT --to ${unblock_server_ip}:${unblock_server_http_port}
+ iptables -t nat -A "unblock_netease_music" -p tcp --dport 443 -j DNAT --to ${unblock_server_ip}:${unblock_server_https_port}
+ [ -z "$(iptables -t nat -L "ADBYBY" | grep "UnblockMusic" | sed 's/\/.*//')" ] && iptables -t nat -I "ADBYBY" -m set --match-set "neteasemusic" dst -j RETURN -m comment --comment "AD for UnblockMusic"
+ [ -z "$(iptables -t nat -L "KOOLPROXY" | grep "UnblockMusic" | sed 's/\/.*//')" ] && iptables -t nat -I "KOOLPROXY" -m set --match-set "neteasemusic" dst -j RETURN -m comment --comment "KP for UnblockMusic"
+ iptables -t nat -I "PREROUTING" -p tcp -m set --match-set "neteasemusic" dst -j "unblock_netease_music"
+
+ mkdir -p /var/etc
+ echo -e "/etc/init.d/luci-app-unblockneteasemusic-mini restart" > "/var/etc/unblockneteasemusic-mini.include"
+ elif [ "${set_type}" = "stop" ]; then
+ iptables -t nat -D "ADBYBY" -m set --match-set "neteasemusic" dst -j RETURN -m comment --comment "AD for UnblockMusic"
+ iptables -t nat -D "KOOLPROXY" -m set --match-set "neteasemusic" dst -j RETURN -m comment --comment "KP for UnblockMusic"
+ iptables -t nat -D "PREROUTING" -p tcp -m set --match-set "neteasemusic" dst -j "unblock_netease_music"
+ iptables -t nat -F "unblock_netease_music"
+ iptables -t nat -X "unblock_netease_music"
+
+ echo "" > "/var/etc/unblockneteasemusic-mini.include"
+ rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic-mini.conf"
+ /etc/init.d/dnsmasq reload >/dev/null 2>&1
+ fi
+}
+
+start()
+{
+ stop
+
+ [ "${enable}" -ne "1" ] && exit 0
+ set_type="start"
+ set_ipset >/dev/null 2>&1
+}
+
+stop()
+{
+ set_type="stop"
+ set_ipset >/dev/null 2>&1
+}
diff --git a/package/lean/luci-app-unblockneteasemusic-mini/root/etc/uci-defaults/unblockneteasemusic-mini b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/uci-defaults/unblockneteasemusic-mini
new file mode 100755
index 000000000..e347775e1
--- /dev/null
+++ b/package/lean/luci-app-unblockneteasemusic-mini/root/etc/uci-defaults/unblockneteasemusic-mini
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@unblockneteasemusic-mini[-1]
+ add ucitrack unblockneteasemusic-mini
+ set ucitrack.@unblockneteasemusic-mini[-1].init=unblockneteasemusic-mini
+ commit ucitrack
+ delete firewall.unblockneteasemusic_mini
+ set firewall.unblockneteasemusic_mini=include
+ set firewall.unblockneteasemusic_mini.type=script
+ set firewall.unblockneteasemusic_mini.path=/var/etc/unblockneteasemusic-mini.include
+ set firewall.unblockneteasemusic_mini.reload=1
+ commit firewall
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0