|
@@ -5,40 +5,59 @@
|
|
|
START=80
|
|
|
STOP=10
|
|
|
|
|
|
+NAME="unblockneteasemusic"
|
|
|
+
|
|
|
+uci_get_by_type() {
|
|
|
+ local "ret"
|
|
|
+ ret="$(uci get "$NAME".@"$1"[0]."$2" 2>/dev/null)"
|
|
|
+ echo "${ret:=$3}"
|
|
|
+}
|
|
|
+
|
|
|
+uci_get_by_name() {
|
|
|
+ local "index"
|
|
|
+ index=0
|
|
|
+ if [ -n "$4" ]; then
|
|
|
+ index="$4"
|
|
|
+ fi
|
|
|
+ ret="$(uci get "$NAME".@"$1"["${index}"]."$2" 2>/dev/null)"
|
|
|
+ echo "${ret:=$3}"
|
|
|
+}
|
|
|
+
|
|
|
lan_addr="$(uci get network.lan.ipaddr)"
|
|
|
|
|
|
-enable="$(uci get unblockneteasemusic.@unblockneteasemusic[0].enable)"
|
|
|
+enable="$(uci_get_by_type "unblockneteasemusic" "enable" "0")"
|
|
|
|
|
|
-music_source="$(uci get unblockneteasemusic.@unblockneteasemusic[0].music_source)"
|
|
|
-neteasemusic_cookie="$(uci get unblockneteasemusic.@unblockneteasemusic[0].neteasemusic_cookie 2>"/dev/null")"
|
|
|
-qq_cookie="$(uci get unblockneteasemusic.@unblockneteasemusic[0].qq_cookie 2>"/dev/null")"
|
|
|
-youtube_key="$(uci get unblockneteasemusic.@unblockneteasemusic[0].youtube_key 2>"/dev/null")"
|
|
|
+music_source="$(uci_get_by_type "unblockneteasemusic" "music_source" "default")"
|
|
|
+neteasemusic_cookie="$(uci_get_by_type "unblockneteasemusic" "neteasemusic_cookie")"
|
|
|
+qq_cookie="$(uci_get_by_type "unblockneteasemusic" "qq_cookie")"
|
|
|
+youtube_key="$(uci_get_by_type "unblockneteasemusic" "youtube_key")"
|
|
|
|
|
|
-enable_flac="$(uci get unblockneteasemusic.@unblockneteasemusic[0].enable_flac)"
|
|
|
+enable_flac="$(uci_get_by_type "unblockneteasemusic" "enable_flac" "0")"
|
|
|
[ "${enable_flac}" -eq "1" ] && flag_arg="ENABLE_FLAC=true"
|
|
|
|
|
|
-endpoint_url="$(uci get unblockneteasemusic.@unblockneteasemusic[0].endpoint_url || echo "http://music.163.com")"
|
|
|
-hijack_ways="$(uci get unblockneteasemusic.@unblockneteasemusic[0].hijack_ways || echo "use_ipset")"
|
|
|
+endpoint_url="$(uci_get_by_type "unblockneteasemusic" "endpoint_url" "http://music.163.com")"
|
|
|
+hijack_ways="$(uci_get_by_type "unblockneteasemusic" "hijack_ways" "use_ipset")"
|
|
|
|
|
|
-auto_update="$(uci get unblockneteasemusic.@unblockneteasemusic[0].auto_update)"
|
|
|
-update_time="$(uci get unblockneteasemusic.@unblockneteasemusic[0].update_time)"
|
|
|
+auto_update="$(uci_get_by_type "unblockneteasemusic" "auto_update" "1")"
|
|
|
+update_time="$(uci_get_by_type "unblockneteasemusic" "update_time" "3")"
|
|
|
|
|
|
-http_port="$(uci get unblockneteasemusic.@unblockneteasemusic[0].http_port 2>"/dev/null" || echo "5200")"
|
|
|
-https_port="$(uci get unblockneteasemusic.@unblockneteasemusic[0].https_port 2>"/dev/null" || echo "5201")"
|
|
|
+http_port="$(uci_get_by_type "unblockneteasemusic" "http_port" "5200")"
|
|
|
+https_port="$(uci_get_by_type "unblockneteasemusic" "https_port" "5201")"
|
|
|
|
|
|
-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"
|
|
|
+keep_core_when_upgrade="$(uci_get_by_type "unblockneteasemusic" keep_core_when_upgrade)"
|
|
|
+[ "$(uci_get_by_type "unblockneteasemusic" "pub_access")" = "1" ] && addr="0.0.0.0" || addr="${lan_addr}"
|
|
|
+[ "$(uci_get_by_type "unblockneteasemusic" "strict_mode")" = "1" ] && strict_mode="-s"
|
|
|
|
|
|
-netease_server_ip="$(uci get unblockneteasemusic.@unblockneteasemusic[0].netease_server_ip 2>"/dev/null")"
|
|
|
+netease_server_ip="$(uci_get_by_type "unblockneteasemusic" "netease_server_ip")"
|
|
|
[ -n "${netease_server_ip}" ] && netease_server_ip="-f ${netease_server_ip}"
|
|
|
-proxy_server_ip="$(uci get unblockneteasemusic.@unblockneteasemusic[0].proxy_server_ip 2>"/dev/null")"
|
|
|
+proxy_server_ip="$(uci_get_by_type "unblockneteasemusic" "proxy_server_ip")"
|
|
|
[ -n "${proxy_server_ip}" ] && proxy_server_ip="-u ${proxy_server_ip}"
|
|
|
|
|
|
-self_issue_cert_crt="$(uci get unblockneteasemusic.@unblockneteasemusic[0].self_issue_cert_crt 2>"/dev/null")"
|
|
|
-self_issue_cert_key="$(uci get unblockneteasemusic.@unblockneteasemusic[0].self_issue_cert_key 2>"/dev/null")"
|
|
|
+self_issue_cert_crt="$(uci_get_by_type "unblockneteasemusic" "self_issue_cert_crt")"
|
|
|
+self_issue_cert_key="$(uci_get_by_type "unblockneteasemusic" "self_issue_cert_key")"
|
|
|
|
|
|
-set_ipset(){
|
|
|
+set_ipset()
|
|
|
+{
|
|
|
if [ "${set_type}" = "start" ]; then
|
|
|
mkdir -p "/tmp/dnsmasq.d"
|
|
|
rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic.conf"
|
|
@@ -54,6 +73,28 @@ ipset=/clientlog3.music.163.com/neteasemusic
|
|
|
EOF
|
|
|
/etc/init.d/dnsmasq reload > "/dev/null" 2>&1
|
|
|
|
|
|
+ if ! ipset list "acl_neteasemusic_http" > "/dev/null"; then ipset create "acl_neteasemusic_http" hash:ip; fi
|
|
|
+ if ! ipset list "acl_neteasemusic_https" > "/dev/null"; then ipset create "acl_neteasemusic_https" hash:ip; fi
|
|
|
+ ip_addr_num="$(uci show "unblockneteasemusic" | grep -c "filter_mode")"
|
|
|
+ let ip_addr_num="ip_addr_num-1"
|
|
|
+ [ "${ip_addr_num}" -ge "0" ] && for i in $(seq 0 "${ip_addr_num}")
|
|
|
+ do
|
|
|
+ ip_addr="$(uci_get_by_name "acl_rule" "ip_addr" "" "$i")"
|
|
|
+ filter_mode="$(uci_get_by_name "acl_rule" "filter_mode" "" "$i")"
|
|
|
+ case "${filter_mode}" in
|
|
|
+ "disable_http")
|
|
|
+ ipset -! add "acl_neteasemusic_http" "${ip_addr}"
|
|
|
+ ;;
|
|
|
+ "disable_https")
|
|
|
+ ipset -! add "acl_neteasemusic_https" "${ip_addr}"
|
|
|
+ ;;
|
|
|
+ "disable_all")
|
|
|
+ ipset -! add "acl_neteasemusic_http" "${ip_addr}"
|
|
|
+ ipset -! add "acl_neteasemusic_https" "${ip_addr}"
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+ done
|
|
|
+
|
|
|
if ! ipset list "neteasemusic" > "/dev/null"; then ipset create "neteasemusic" hash:ip; fi
|
|
|
curl --retry "5" --retry-delay "3" -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 neteasemusic "$1}' |bash > "/dev/null" 2>&1
|
|
|
iptables -t nat -N "netease_cloud_music"
|
|
@@ -65,11 +106,11 @@ ipset=/clientlog3.music.163.com/neteasemusic
|
|
|
iptables -t nat -A "netease_cloud_music" -d "192.168.0.0/16" -j RETURN
|
|
|
iptables -t nat -A "netease_cloud_music" -d "224.0.0.0/4" -j RETURN
|
|
|
iptables -t nat -A "netease_cloud_music" -d "240.0.0.0/4" -j RETURN
|
|
|
- iptables -t nat -A "netease_cloud_music" -p tcp --dport 80 -j REDIRECT --to-ports "${http_port}"
|
|
|
- iptables -t nat -A "netease_cloud_music" -p tcp --dport 443 -j REDIRECT --to-ports "${https_port}"
|
|
|
+ iptables -t nat -A "netease_cloud_music" -p tcp -m set ! --match-set "acl_neteasemusic_http" src --dport 80 -j "REDIRECT" --to-ports "${http_port}"
|
|
|
+ iptables -t nat -A "netease_cloud_music" -p tcp -m set ! --match-set "acl_neteasemusic_https" src --dport 443 -j "REDIRECT" --to-ports "${https_port}"
|
|
|
iptables -t nat -I PREROUTING -p tcp -m set --match-set "neteasemusic" dst -j "netease_cloud_music"
|
|
|
- [ -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"
|
|
|
+ [ -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"
|
|
|
|
|
|
mkdir -p "/var/etc/"
|
|
|
echo "/etc/init.d/unblockneteasemusic restart" > "/var/etc/unblockneteasemusic.include"
|
|
@@ -80,6 +121,8 @@ ipset=/clientlog3.music.163.com/neteasemusic
|
|
|
iptables -t nat -F "netease_cloud_music"
|
|
|
iptables -t nat -X "netease_cloud_music"
|
|
|
ipset destroy "neteasemusic"
|
|
|
+ ipset destroy "acl_neteasemusic_http"
|
|
|
+ ipset destroy "acl_neteasemusic_https"
|
|
|
|
|
|
echo "" > "/var/etc/unblockneteasemusic.include"
|
|
|
rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic.conf"
|
|
@@ -87,7 +130,8 @@ ipset=/clientlog3.music.163.com/neteasemusic
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-set_hosts(){
|
|
|
+set_hosts()
|
|
|
+{
|
|
|
if [ "${set_type}" = "start" ]; then
|
|
|
mkdir -p "/tmp/dnsmasq.d"
|
|
|
rm -f "/tmp/dnsmasq.d/dnsmasq-unblockneteasemusic.conf"
|
|
@@ -113,7 +157,8 @@ address=/music.httpdns.c.163.com/0.0.0.0
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-set_ports(){
|
|
|
+set_ports()
|
|
|
+{
|
|
|
if [ "${set_type}" = "start" ]; then
|
|
|
iptables -I INPUT -p tcp --dport "${http_port}" -j ACCEPT
|
|
|
iptables -I INPUT -p tcp --dport "${https_port}" -j ACCEPT
|
|
@@ -174,7 +219,7 @@ start()
|
|
|
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_by_type "unblockneteasemusic" pub_access)" = "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.sh update_core" >> "/etc/crontabs/root"
|