浏览代码

feat(init): work with latest dnsmasq confdir

Signed-off-by: Tianling Shen <[email protected]>
Tianling Shen 10 月之前
父节点
当前提交
6fb1bc96ef
共有 2 个文件被更改,包括 22 次插入8 次删除
  1. 15 7
      root/etc/init.d/unblockneteasemusic
  2. 7 1
      root/usr/share/unblockneteasemusic/debugging.sh

+ 15 - 7
root/etc/init.d/unblockneteasemusic

@@ -16,6 +16,14 @@ IPT_N="iptables -t nat"
 IPT_INPUT_RULE="unm_input_rule"
 FW4="$(command -v fw4)"
 
+# we don't know which is the default server, just take the first one
+DNSMASQ_UCI_CONFIG="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')"
+if [ -f "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG" ]; then
+	DNSMASQ_DIR="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$DNSMASQ_UCI_CONFIG")"
+else
+	DNSMASQ_DIR="/tmp/dnsmasq.d"
+fi
+
 is_enabled() {
 	local enabled
 	config_get_bool enabled "$1" "$2" "${3:-0}"
@@ -171,9 +179,9 @@ start_service() {
 			settype="ipset"
 			setname="neteasemusic"
 		fi
-		mkdir -p "/tmp/dnsmasq.d"
-		rm -f "/tmp/dnsmasq.d/dnsmasq-$NAME.conf"
-		cat <<-EOF > "/tmp/dnsmasq.d/dnsmasq-$NAME.conf"
+		mkdir -p "$DNSMASQ_DIR"
+		rm -f "$DNSMASQ_DIR/dnsmasq-$NAME.conf"
+		cat <<-EOF > "$DNSMASQ_DIR/dnsmasq-$NAME.conf"
 			dhcp-option=252,http://${lan_addr}:${http_port}/proxy.pac
 			${settype}=/.music.163.com/${setname}
 			${settype}=/interface.music.163.com/${setname}
@@ -241,9 +249,9 @@ start_service() {
 			echo "/etc/init.d/$NAME restart" > "$RUN_DIR/fw3.include"
 		fi
 	elif [ "${hijack_ways}" = "use_hosts" ]; then
-		mkdir -p "/tmp/dnsmasq.d"
-		rm -f "/tmp/dnsmasq.d/dnsmasq-$NAME.conf"
-		cat <<-EOF > "/tmp/dnsmasq.d/dnsmasq-$NAME.conf"
+		mkdir -p "$DNSMASQ_DIR"
+		rm -f "$DNSMASQ_DIR/dnsmasq-$NAME.conf"
+		cat <<-EOF > "$DNSMASQ_DIR/dnsmasq-$NAME.conf"
 			dhcp-option=252,http://${lan_addr}:${http_port}/proxy.pac
 			address=/music.163.com/${lan_addr}
 			address=/interface.music.163.com/${lan_addr}
@@ -304,7 +312,7 @@ stop_service() {
 		echo > "$RUN_DIR/fw3.include"
 	fi
 
-	rm -f "/tmp/dnsmasq.d/dnsmasq-$NAME.conf"
+	rm -f "$DNSMASQ_DIR/dnsmasq-$NAME.conf"
 	/etc/init.d/dnsmasq restart 2>"/dev/null"
 
 	rm -f "$RUN_DIR/run.log"

+ 7 - 1
root/usr/share/unblockneteasemusic/debugging.sh

@@ -96,7 +96,13 @@ echo -e "\n"
 		ipset list "acl_neteasemusic_https" 2>"/dev/null" || echo -e 'Table "acl_neteasemusic_https" not found.'
 	fi
 	echo -e ""
-	cat "/tmp/dnsmasq.d/dnsmasq-$NAME.conf"
+	dnsmasq_uci_config="$(uci -q show "dhcp.@dnsmasq[0]" | awk 'NR==1 {split($0, conf, /[.=]/); print conf[2]}')"
+	if [ -f "/tmp/etc/dnsmasq.conf.$dnsmasq_uci_config" ]; then
+		dnsmasq_dir="$(awk -F '=' '/^conf-dir=/ {print $2}' "/tmp/etc/dnsmasq.conf.$dnsmasq_uci_config")"
+	else
+		dnsmasq_dir="/tmp/dnsmasq.d"
+	fi
+	cat "$dnsmasq_dir/dnsmasq-$NAME.conf"
 	echo -e "\n"
 
 	echo -e "Testing source replacing..."