From 47d0aae3100a0604f3bac745d33238f28f520543 Mon Sep 17 00:00:00 2001 From: qingtian110 <1335538902@qq.com> Date: Sat, 25 Mar 2023 23:32:52 +0800 Subject: [PATCH] luci-app-mosdns: tidy up code --- luci-app-mosdns/luasrc/controller/mosdns.lua | 48 ++-- .../luasrc/model/cbi/mosdns/basic.lua | 38 ++-- .../luasrc/model/cbi/mosdns/update.lua | 2 +- .../luasrc/view/mosdns/geo_update.htm | 56 ++--- .../luasrc/view/mosdns/mosdns_log.htm | 50 ++--- .../luasrc/view/mosdns/mosdns_status.htm | 44 ++-- luci-app-mosdns/root/etc/init.d/mosdns | 211 +++++++++--------- .../root/usr/share/mosdns/mosdns.sh | 170 +++++++------- 8 files changed, 309 insertions(+), 310 deletions(-) diff --git a/luci-app-mosdns/luasrc/controller/mosdns.lua b/luci-app-mosdns/luasrc/controller/mosdns.lua index 4a7bb64..875850f 100644 --- a/luci-app-mosdns/luasrc/controller/mosdns.lua +++ b/luci-app-mosdns/luasrc/controller/mosdns.lua @@ -1,42 +1,42 @@ module("luci.controller.mosdns", package.seeall) function index() - if not nixio.fs.access("/etc/config/mosdns") then - return - end + if not nixio.fs.access("/etc/config/mosdns") then + return + end - local page = entry({"admin", "services", "mosdns"}, alias("admin", "services", "mosdns", "basic"), _("MosDNS"), 30) - page.dependent = true - page.acl_depends = { "luci-app-mosdns" } + local page = entry({"admin", "services", "mosdns"}, alias("admin", "services", "mosdns", "basic"), _("MosDNS"), 30) + page.dependent = true + page.acl_depends = { "luci-app-mosdns" } - entry({"admin", "services", "mosdns", "basic"}, cbi("mosdns/basic"), _("Basic Setting"), 1).leaf = true - entry({"admin", "services", "mosdns", "rule_list"}, cbi("mosdns/rule_list"), _("Rule List"), 2).leaf = true - entry({"admin", "services", "mosdns", "update"}, cbi("mosdns/update"), _("Geodata Update"), 3).leaf = true - entry({"admin", "services", "mosdns", "log"}, cbi("mosdns/log"), _("Logs"), 4).leaf = true - entry({"admin", "services", "mosdns", "status"}, call("act_status")).leaf = true - entry({"admin", "services", "mosdns", "get_log"}, call("get_log")).leaf = true - entry({"admin", "services", "mosdns", "clear_log"}, call("clear_log")).leaf = true - entry({"admin", "services", "mosdns", "geo_update"}, call("geo_update")).leaf = true + entry({"admin", "services", "mosdns", "basic"}, cbi("mosdns/basic"), _("Basic Setting"), 1).leaf = true + entry({"admin", "services", "mosdns", "rule_list"}, cbi("mosdns/rule_list"), _("Rule List"), 2).leaf = true + entry({"admin", "services", "mosdns", "update"}, cbi("mosdns/update"), _("Geodata Update"), 3).leaf = true + entry({"admin", "services", "mosdns", "log"}, cbi("mosdns/log"), _("Logs"), 4).leaf = true + entry({"admin", "services", "mosdns", "status"}, call("act_status")).leaf = true + entry({"admin", "services", "mosdns", "get_log"}, call("get_log")).leaf = true + entry({"admin", "services", "mosdns", "clear_log"}, call("clear_log")).leaf = true + entry({"admin", "services", "mosdns", "geo_update"}, call("geo_update")).leaf = true end function act_status() - local e = {} - e.running = luci.sys.call("pgrep -f mosdns >/dev/null") == 0 - luci.http.prepare_content("application/json") - luci.http.write_json(e) + local e = {} + e.running = luci.sys.call("pgrep -f mosdns >/dev/null") == 0 + luci.http.prepare_content("application/json") + luci.http.write_json(e) end function get_log() - luci.http.write(luci.sys.exec("cat $(/usr/share/mosdns/mosdns.sh logfile)")) + luci.http.write(luci.sys.exec("cat $(/usr/share/mosdns/mosdns.sh logfile)")) end function clear_log() - luci.sys.call("cat /dev/null > $(/usr/share/mosdns/mosdns.sh logfile)") + luci.sys.call("cat /dev/null > $(/usr/share/mosdns/mosdns.sh logfile)") end function geo_update() - local e = {} - e.updating = luci.sys.call("/usr/share/mosdns/mosdns.sh geodata >/dev/null") == 0 - luci.http.prepare_content("application/json") - luci.http.write_json(e) + local e = {} + e.updating = luci.sys.call("/usr/share/mosdns/mosdns.sh geodata >/dev/null") == 0 + luci.http.prepare_content("application/json") + luci.http.write_json(e) end diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua b/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua index e88e94e..004b978 100644 --- a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua +++ b/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua @@ -1,7 +1,7 @@ if nixio.fs.access("/usr/bin/mosdns") then - mosdns_version=luci.sys.exec("/usr/share/mosdns/mosdns.sh version") + mosdns_version = luci.sys.exec("/usr/share/mosdns/mosdns.sh version") else - mosdns_version="Unknown Version" + mosdns_version = "Unknown Version" end m = Map("mosdns") m.title = translate("MosDNS") .. " " .. mosdns_version @@ -24,7 +24,7 @@ configfile.default = "/etc/mosdns/config.yaml" listenport = s:option(Value, "listen_port", translate("Listen port")) listenport.datatype = "and(port,min(1))" listenport.default = 5335 -listenport:depends( "configfile", "/etc/mosdns/config.yaml") +listenport:depends("configfile", "/etc/mosdns/config.yaml") loglevel = s:option(ListValue, "log_level", translate("Log Level")) loglevel:value("debug", translate("Debug")) @@ -32,12 +32,12 @@ loglevel:value("info", translate("Info")) loglevel:value("warn", translate("Warning")) loglevel:value("error", translate("Error")) loglevel.default = "info" -loglevel:depends( "configfile", "/etc/mosdns/config.yaml") +loglevel:depends("configfile", "/etc/mosdns/config.yaml") logfile = s:option(Value, "logfile", translate("Log File")) logfile.placeholder = "/tmp/mosdns.log" logfile.default = "/tmp/mosdns.log" -logfile:depends( "configfile", "/etc/mosdns/config.yaml") +logfile:depends("configfile", "/etc/mosdns/config.yaml") redirect = s:option(Flag, "redirect", translate("DNS Forward"), translate("Forward Dnsmasq Domain Name resolution requests to MosDNS")) redirect.default = true @@ -65,7 +65,7 @@ remote_dns:value("tls://149.112.112.112", "149.112.112.112 (Quad9 DNS)") remote_dns:value("tls://45.11.45.11", "45.11.45.11 (DNS.SB)") remote_dns:value("tls://208.67.222.222", "208.67.222.222 (Open DNS)") remote_dns:value("tls://208.67.220.220", "208.67.220.220 (Open DNS)") -remote_dns:depends( "configfile", "/etc/mosdns/config.yaml") +remote_dns:depends("configfile", "/etc/mosdns/config.yaml") bootstrap_dns = s:option(ListValue, "bootstrap_dns", translate("Bootstrap DNS servers"), translate("Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT resolvers you specify as upstreams")) bootstrap_dns:value("119.29.29.29", "119.29.29.29 (DNSPod Primary)") @@ -76,27 +76,27 @@ bootstrap_dns:value("114.114.114.114", "114.114.114.114 (114DNS Primary)") bootstrap_dns:value("114.114.115.115", "114.114.115.115 (114DNS Secondary)") bootstrap_dns:value("180.76.76.76", "180.76.76.76 (Baidu DNS)") bootstrap_dns.default = "119.29.29.29" -bootstrap_dns:depends( "configfile", "/etc/mosdns/config.yaml") +bootstrap_dns:depends("configfile", "/etc/mosdns/config.yaml") remote_dns_pipeline = s:option(Flag, "enable_pipeline", translate("TCP/DoT Connection Multiplexing"), translate("Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode")) remote_dns_pipeline.rmempty = false remote_dns_pipeline.default = false -remote_dns_pipeline:depends( "configfile", "/etc/mosdns/config.yaml") +remote_dns_pipeline:depends("configfile", "/etc/mosdns/config.yaml") cache_size = s:option(Value, "cache_size", translate("DNS Cache Size")) cache_size.datatype = "and(uinteger,min(0))" cache_size.default = "20000" -cache_size:depends( "configfile", "/etc/mosdns/config.yaml") +cache_size:depends("configfile", "/etc/mosdns/config.yaml") cache_size = s:option(Value, "cache_survival_time", translate("Cache Survival Time")) cache_size.datatype = "and(uinteger,min(0))" cache_size.default = "86400" -cache_size:depends( "configfile", "/etc/mosdns/config.yaml") +cache_size:depends("configfile", "/etc/mosdns/config.yaml") cache_dump = s:option(Flag, "dump_file", translate("Cache Dump"), translate("Save the cache locally and reload the cache dump on the next startup")) cache_dump.rmempty = false cache_dump.default = false -cache_dump:depends( "configfile", "/etc/mosdns/config.yaml") +cache_dump:depends("configfile", "/etc/mosdns/config.yaml") cache_dump = s:option(Value, "dump_interval", translate("Auto Save Cache Interval")) cache_dump.datatype = "and(uinteger,min(0))" @@ -107,15 +107,15 @@ minimal_ttl = s:option(Value, "minimal_ttl", translate("Minimum TTL")) minimal_ttl.datatype = "and(uinteger,min(0))" minimal_ttl.datatype = "and(uinteger,max(3600))" minimal_ttl.default = "0" -minimal_ttl:depends( "configfile", "/etc/mosdns/config.yaml") +minimal_ttl:depends("configfile", "/etc/mosdns/config.yaml") maximum_ttl = s:option(Value, "maximum_ttl", translate("Maximum TTL")) maximum_ttl.datatype = "and(uinteger,min(0))" maximum_ttl.default = "0" -maximum_ttl:depends( "configfile", "/etc/mosdns/config.yaml") +maximum_ttl:depends("configfile", "/etc/mosdns/config.yaml") adblock = s:option(Flag, "adblock", translate("Enable DNS ADblock")) -adblock:depends( "configfile", "/etc/mosdns/config.yaml") +adblock:depends("configfile", "/etc/mosdns/config.yaml") adblock.default = false adblock = s:option(Value, "ad_source", translate("ADblock Source")) @@ -131,21 +131,21 @@ reload_service = s:option( Button, "_reload", translate("Reload Service"), trans reload_service.write = function() luci.sys.exec("/etc/init.d/mosdns reload") end -reload_service:depends( "configfile", "/etc/mosdns/config_custom.yaml") +reload_service:depends("configfile", "/etc/mosdns/config_custom.yaml") config = s:option(TextValue, "manual-config") config.description = translate("View the Custom YAML Configuration file used by this MosDNS. You can edit it as you own need.") config.template = "cbi/tvalue" config.rows = 25 -config:depends( "configfile", "/etc/mosdns/config_custom.yaml") +config:depends("configfile", "/etc/mosdns/config_custom.yaml") function config.cfgvalue(self, section) - return nixio.fs.readfile("/etc/mosdns/config_custom.yaml") + return nixio.fs.readfile("/etc/mosdns/config_custom.yaml") end function config.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile("/etc/mosdns/config_custom.yaml", value) + value = value:gsub("\r\n?", "\n") + nixio.fs.writefile("/etc/mosdns/config_custom.yaml", value) end return m diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua b/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua index 0beaf6d..150fd16 100644 --- a/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua +++ b/luci-app-mosdns/luasrc/model/cbi/mosdns/update.lua @@ -20,7 +20,7 @@ o.default = "*" update_time = s:option(ListValue, "geo_update_day_time", translate("Update Time")) for t = 0, 23 do - update_time:value(t, t..":00") + update_time:value(t, t..":00") end update_time.default = 0 diff --git a/luci-app-mosdns/luasrc/view/mosdns/geo_update.htm b/luci-app-mosdns/luasrc/view/mosdns/geo_update.htm index 68b3027..660311c 100644 --- a/luci-app-mosdns/luasrc/view/mosdns/geo_update.htm +++ b/luci-app-mosdns/luasrc/view/mosdns/geo_update.htm @@ -1,33 +1,33 @@ <%+cbi/valueheader%> <%=self.value%> diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm b/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm index c645698..ba7f178 100644 --- a/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm +++ b/luci-app-mosdns/luasrc/view/mosdns/mosdns_log.htm @@ -1,29 +1,29 @@
diff --git a/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm b/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm index 7f9be5b..2683279 100644 --- a/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm +++ b/luci-app-mosdns/luasrc/view/mosdns/mosdns_status.htm @@ -1,28 +1,28 @@ diff --git a/luci-app-mosdns/root/etc/init.d/mosdns b/luci-app-mosdns/root/etc/init.d/mosdns index 1642ce5..5488785 100755 --- a/luci-app-mosdns/root/etc/init.d/mosdns +++ b/luci-app-mosdns/root/etc/init.d/mosdns @@ -33,142 +33,141 @@ DEFAULT_CONF=/usr/share/mosdns/default.yaml MOSDNS_SCRIPT=/usr/share/mosdns/mosdns.sh get_config() { - config_get enabled $1 enabled 0 - config_get adblock $1 adblock 0 - config_get ad_source $1 ad_source "" - config_get cache_size $1 cache_size 20000 - config_get cache_survival_time $1 cache_survival_time 86400 - config_get dump_file $1 dump_file 0 - config_get dump_interval $1 dump_interval 600 - config_get enable_pipeline $1 enable_pipeline 0 - config_get geo_auto_update $1 geo_auto_update 0 - config_get geo_update_day_time $1 geo_update_day_time 2 - config_get geo_update_week_time $1 geo_update_week_time "*" - config_get listen_port $1 listen_port 5335 - config_get log_file $1 logfile "/tmp/mosdns.log" - config_get log_level $1 log_level "info" - config_get maximum_ttl_custom $1 maximum_ttl 0 - config_get minimal_ttl_custom $1 minimal_ttl 0 - config_get redirect $1 redirect 0 - config_get remote_dns $1 remote_dns "tls://8.8.8.8 tls://1.1.1.1" - config_get custom_local_dns $1 custom_local_dns 0 - config_get bootstrap_dns $1 bootstrap_dns "119.29.29.29" + config_get enabled $1 enabled 0 + config_get adblock $1 adblock 0 + config_get ad_source $1 ad_source "" + config_get cache_size $1 cache_size 20000 + config_get cache_survival_time $1 cache_survival_time 86400 + config_get dump_file $1 dump_file 0 + config_get dump_interval $1 dump_interval 600 + config_get enable_pipeline $1 enable_pipeline 0 + config_get geo_auto_update $1 geo_auto_update 0 + config_get geo_update_day_time $1 geo_update_day_time 2 + config_get geo_update_week_time $1 geo_update_week_time "*" + config_get listen_port $1 listen_port 5335 + config_get log_file $1 logfile "/tmp/mosdns.log" + config_get log_level $1 log_level "info" + config_get maximum_ttl_custom $1 maximum_ttl 0 + config_get minimal_ttl_custom $1 minimal_ttl 0 + config_get redirect $1 redirect 0 + config_get remote_dns $1 remote_dns "tls://8.8.8.8 tls://1.1.1.1" + config_get custom_local_dns $1 custom_local_dns 0 + config_get bootstrap_dns $1 bootstrap_dns "119.29.29.29" } init_yaml() { - tmpdir=$(mktemp -d) || exit 1 - adlist=$($MOSDNS_SCRIPT ad) - [ $enable_pipeline = 1 ] && enable_pipeline=true || enable_pipeline=false - [ "$custom_local_dns" -eq 1 ] && \ - local_dns=$($MOSDNS_SCRIPT dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n%s bootstrap: '${bootstrap_dns}'\n%s enable_pipeline: '${enable_pipeline}'\n",s,$i,s,s}' s=' ') || \ - local_dns=$($MOSDNS_SCRIPT dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n",s,$i,s}' s=' ') - remote_dns=$(echo $remote_dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n%s bootstrap: '${bootstrap_dns}'\n%s enable_pipeline: '${enable_pipeline}'\n",s,$i,s,s}' s=' ') - sed "s,log_level,$log_level,g;s,log_file,$log_file,g; \ - s,listen_port,$listen_port,g;s,cache_size,$cache_size,g; \ - s,cache_survival_time,$cache_survival_time,g; \ - s,minimal_ttl_custom,$minimal_ttl_custom,g; \ - s,maximum_ttl_custom,$maximum_ttl_custom,g; \ - s,adblock,$adlist,g;s,remote_dns_pipeline,$enable_pipeline,g" $DEFAULT_CONF > $CONF - echo "${local_dns}" > $tmpdir/local_dns.txt - echo "${remote_dns}" > $tmpdir/remote_dns.txt - sed -i -e '/- addr: local_dns/{r '$tmpdir/local_dns.txt -e';d};/- addr: remote_dns/{r '$tmpdir/remote_dns.txt -e';d}' $CONF - [ "$dump_file" -eq 1 ] && sed -i "/lazy_cache_ttl/a\ dump_file: $DUMP_FILE\n dump_interval: $dump_interval" $CONF - [ "$dump_file" -eq 1 ] && [ ! -f $DUMP_FILE ] && cp -a $DUMP_FILE_DEFAULT $DUMP_FILE - [ "$dump_file" -eq 0 ] && \cp -a $DUMP_FILE_DEFAULT $DUMP_FILE - rm -rf $tmpdir + TMPDIR=$(mktemp -d) || exit 1 + adlist=$($MOSDNS_SCRIPT ad) + [ $enable_pipeline -eq 1 ] && enable_pipeline=true || enable_pipeline=false + [ "$custom_local_dns" -eq 1 ] && \ + local_dns=$($MOSDNS_SCRIPT dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n%s bootstrap: '${bootstrap_dns}'\n%s enable_pipeline: '${enable_pipeline}'\n",s,$i,s,s}' s=' ') || \ + local_dns=$($MOSDNS_SCRIPT dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n",s,$i,s}' s=' ') + remote_dns=$(echo $remote_dns | awk '{for(i=1;i<=NF;i++)printf "%s- addr: %s\n%s bootstrap: '${bootstrap_dns}'\n%s enable_pipeline: '${enable_pipeline}'\n",s,$i,s,s}' s=' ') + sed "s,log_level,$log_level,g;s,log_file,$log_file,g; \ + s,listen_port,$listen_port,g;s,cache_size,$cache_size,g; \ + s,cache_survival_time,$cache_survival_time,g; \ + s,minimal_ttl_custom,$minimal_ttl_custom,g; \ + s,maximum_ttl_custom,$maximum_ttl_custom,g; \ + s,adblock,$adlist,g;s,remote_dns_pipeline,$enable_pipeline,g" $DEFAULT_CONF > $CONF + echo "${local_dns}" > $TMPDIR/local_dns.txt + echo "${remote_dns}" > $TMPDIR/remote_dns.txt + sed -i -e '/- addr: local_dns/{r '$TMPDIR/local_dns.txt -e';d};/- addr: remote_dns/{r '$TMPDIR/remote_dns.txt -e';d}' $CONF + [ "$dump_file" -eq 1 ] && sed -i "/lazy_cache_ttl/a\ dump_file: $DUMP_FILE\n dump_interval: $dump_interval" $CONF + [ "$dump_file" -eq 1 ] && [ ! -f $DUMP_FILE ] && cp -a $DUMP_FILE_DEFAULT $DUMP_FILE + [ "$dump_file" -eq 0 ] && \cp -a $DUMP_FILE_DEFAULT $DUMP_FILE + rm -rf $TMPDIR } service_triggers() { - procd_add_reload_trigger "mosdns" + procd_add_reload_trigger "mosdns" } restore_setting() { - rm -f /etc/mosdns/redirect.lock - sed -i "/list server/d" /etc/config/dhcp - uci set dhcp.@dnsmasq[0].noresolv='0' - uci del dhcp.@dnsmasq[0].cachesize - uci commit dhcp + rm -f /etc/mosdns/redirect.lock + sed -i "/list server/d" /etc/config/dhcp + uci set dhcp.@dnsmasq[0].noresolv='0' + uci del dhcp.@dnsmasq[0].cachesize + uci commit dhcp } redirect_setting() { - if [ "${CONF}" = "/etc/mosdns/config.yaml" ]; then - sed -i "/list server/d" /etc/config/dhcp - uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$listen_port" - uci set dhcp.@dnsmasq[0].rebind_protection='0' - uci set dhcp.@dnsmasq[0].noresolv="1" - uci set dhcp.@dnsmasq[0].cachesize='0' - uci commit dhcp - else - sed -i "/list server/d" /etc/config/dhcp - uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$(cat /etc/mosdns/config_custom.yaml | awk -F'[:" ]+' '/^\s+listen:/{for(i=1;i<=NF;i++){if($i~/^[0-9]+$/){print $i;exit}}}')" - uci set dhcp.@dnsmasq[0].rebind_protection='0' - uci set dhcp.@dnsmasq[0].noresolv="1" - uci set dhcp.@dnsmasq[0].cachesize='0' - uci commit dhcp - fi - touch /etc/mosdns/redirect.lock + if [ "${CONF}" = "/etc/mosdns/config.yaml" ]; then + sed -i "/list server/d" /etc/config/dhcp + uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$listen_port" + uci set dhcp.@dnsmasq[0].rebind_protection='0' + uci set dhcp.@dnsmasq[0].noresolv="1" + uci set dhcp.@dnsmasq[0].cachesize='0' + uci commit dhcp + else + sed -i "/list server/d" /etc/config/dhcp + uci add_list dhcp.@dnsmasq[0].server="127.0.0.1#$(awk -F'[:" ]+' '/^\s+listen:/{for(i=1;i<=NF;i++){if($i~/^[0-9]+$/){print $i;exit}}}' $CONF)" + uci set dhcp.@dnsmasq[0].rebind_protection='0' + uci set dhcp.@dnsmasq[0].noresolv="1" + uci set dhcp.@dnsmasq[0].cachesize='0' + uci commit dhcp + fi + touch /etc/mosdns/redirect.lock } -reload_others() { - /etc/init.d/network reload - /etc/init.d/dnsmasq reload +reload_dnsmasq() { + /etc/init.d/dnsmasq reload } reload_service() { - stop - sleep 1 - start + stop + sleep 1 + start } setcron() { - sed -i '/mosdns.sh/d' $CRON_FILE 2>/dev/null - [ "$geo_auto_update" -eq 1 ] && echo "0 $geo_update_day_time * * $geo_update_week_time $MOSDNS_SCRIPT geodata" >>$CRON_FILE - crontab $CRON_FILE + sed -i '/mosdns.sh/d' $CRON_FILE 2>/dev/null + [ "$geo_auto_update" -eq 1 ] && echo "0 $geo_update_day_time * * $geo_update_week_time $MOSDNS_SCRIPT geodata" >> $CRON_FILE + crontab $CRON_FILE } delcron() { - sed -i '/mosdns.sh/d' $CRON_FILE 2>/dev/null - crontab $CRON_FILE + sed -i '/mosdns.sh/d' $CRON_FILE 2>/dev/null + crontab $CRON_FILE } v2dat_dump() { - mkdir -p /var/mosdns - rm -f /var/mosdns/geo*.txt - v2dat unpack geoip -o /var/mosdns -f cn $V2DAT_DIR/geoip.dat - v2dat unpack geosite -o /var/mosdns -f cn -f 'geolocation-!cn' $V2DAT_DIR/geosite.dat - [ "$adblock" -eq 1 ] && [ "$ad_source" = "geosite.dat" ] && v2dat unpack geosite -o /var/mosdns -f category-ads-all $V2DAT_DIR/geosite.dat + mkdir -p /var/mosdns + rm -f /var/mosdns/geo*.txt + v2dat unpack geoip -o /var/mosdns -f cn $V2DAT_DIR/geoip.dat + v2dat unpack geosite -o /var/mosdns -f cn -f 'geolocation-!cn' $V2DAT_DIR/geosite.dat + [ "$adblock" -eq 1 ] && [ "$ad_source" = "geosite.dat" ] && v2dat unpack geosite -o /var/mosdns -f category-ads-all $V2DAT_DIR/geosite.dat } start_service() { - config_load "mosdns" - config_foreach get_config "mosdns" - [ $enabled != 1 ] && return 1 - delcron ; setcron - [ "${CONF}" = "/etc/mosdns/config.yaml" ] && init_yaml - :> $($MOSDNS_SCRIPT logfile) - v2dat_dump >> $($MOSDNS_SCRIPT logfile) 2>&1 - procd_open_instance mosdns - procd_set_param command $PROG start -c "$CONF" - procd_set_param user root - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" - procd_close_instance mosdns - [ "$redirect" -ne 1 ] && [ -f "/etc/mosdns/redirect.lock" ] && restore_setting - [ "$redirect" -eq 1 ] && redirect_setting - reload_others - update_list=0 - [ "$adblock" -eq 1 ] && [ "$ad_source" != "geosite.dat" ] && { - [ -s "/etc/mosdns/rule/adlist.txt" ] && [ -f "/etc/mosdns/rule/.ad_source" ] && url_adlist=$(cat /etc/mosdns/rule/.ad_source) || update_list=1 - [ "$ad_source" != "$url_adlist" ] && update_list=1 - } - [ "$update_list" -eq 1 ] && $MOSDNS_SCRIPT adlist_update &> /dev/null & + config_load "mosdns" + config_foreach get_config "mosdns" + [ $enabled -ne 1 ] && return 1 + delcron ; setcron + [ "${CONF}" = "/etc/mosdns/config.yaml" ] && init_yaml + :> $($MOSDNS_SCRIPT logfile) + v2dat_dump >> $($MOSDNS_SCRIPT logfile) 2>&1 + procd_open_instance mosdns + procd_set_param command $PROG start -c "$CONF" + procd_set_param user root + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" + procd_close_instance mosdns + [ "$redirect" -ne 1 ] && [ -f "/etc/mosdns/redirect.lock" ] && restore_setting + [ "$redirect" -eq 1 ] && redirect_setting + reload_dnsmasq + update_list=0 + [ "$adblock" -eq 1 ] && [ "$ad_source" != "geosite.dat" ] && { + [ -s "/etc/mosdns/rule/adlist.txt" ] && [ -f "/etc/mosdns/rule/.ad_source" ] && url_adlist=$(cat /etc/mosdns/rule/.ad_source) || update_list=1 + [ "$ad_source" != "$url_adlist" ] && update_list=1 + } + [ "$update_list" -eq 1 ] && $MOSDNS_SCRIPT adlist_update &> /dev/null & } stop_service() { - config_load "mosdns" - config_foreach get_config "mosdns" - [ "$enabled" = "0" ] && [ -f "/etc/mosdns/redirect.lock" ] && restore_setting - reload_others - delcron + config_load "mosdns" + config_foreach get_config "mosdns" + [ "$enabled" -eq "0" ] && [ -f "/etc/mosdns/redirect.lock" ] && restore_setting + reload_dnsmasq + delcron } diff --git a/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh b/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh index c0396e8..8fa977f 100755 --- a/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh +++ b/luci-app-mosdns/root/usr/share/mosdns/mosdns.sh @@ -3,107 +3,107 @@ script_action=${1} logfile_path() ( - configfile=$(uci -q get mosdns.config.configfile) - if [ "$configfile" = "/etc/mosdns/config.yaml" ]; then - uci -q get mosdns.config.logfile - else - [ ! -f /etc/mosdns/config_custom.yaml ] && exit 1 - awk '/^log:/{f=1;next}f==1{if($0~/file:/){print;exit}if($0~/^[^ ]/)exit}' /etc/mosdns/config_custom.yaml | grep -Eo "/[^'\"]+" - fi + configfile=$(uci -q get mosdns.config.configfile) + if [ "$configfile" = "/etc/mosdns/config.yaml" ]; then + uci -q get mosdns.config.logfile + else + [ ! -f /etc/mosdns/config_custom.yaml ] && exit 1 + awk '/^log:/{f=1;next}f==1{if($0~/file:/){print;exit}if($0~/^[^ ]/)exit}' /etc/mosdns/config_custom.yaml | grep -Eo "/[^'\"]+" + fi ) interface_dns() ( - if [ "$(uci -q get mosdns.config.custom_local_dns)" = 1 ]; then - uci -q get mosdns.config.local_dns - else - peerdns=$(uci -q get network.wan.peerdns) - proto=$(uci -q get network.wan.proto) - if [ "$peerdns" = 0 ] || [ "$proto" = "static" ]; then - uci -q get network.wan.dns - else - interface_status=$(ubus call network.interface.wan status) - echo $interface_status | jsonfilter -e "@['dns-server'][0]" - echo $interface_status | jsonfilter -e "@['dns-server'][1]" - fi - [ $? -ne 0 ] && echo "119.29.29.29 223.5.5.5" - fi + if [ "$(uci -q get mosdns.config.custom_local_dns)" = 1 ]; then + uci -q get mosdns.config.local_dns + else + peerdns=$(uci -q get network.wan.peerdns) + proto=$(uci -q get network.wan.proto) + if [ "$peerdns" = 0 ] || [ "$proto" = "static" ]; then + uci -q get network.wan.dns + else + interface_status=$(ubus call network.interface.wan status) + echo $interface_status | jsonfilter -e "@['dns-server'][0]" + echo $interface_status | jsonfilter -e "@['dns-server'][1]" + fi + [ $? -ne 0 ] && echo "119.29.29.29 223.5.5.5" + fi ) ad_block() ( - adblock=$(uci -q get mosdns.config.adblock) - if [ "$adblock" = 1 ]; then - ad_source=$(uci -q get mosdns.config.ad_source) - if [ "$ad_source" = "geosite.dat" ]; then - echo "/var/mosdns/geosite_category-ads-all.txt" - else - echo "/etc/mosdns/rule/adlist.txt" - fi - else - touch /var/disable-ads.txt ; echo "/var/disable-ads.txt" - fi + adblock=$(uci -q get mosdns.config.adblock) + if [ "$adblock" = 1 ]; then + ad_source=$(uci -q get mosdns.config.ad_source) + if [ "$ad_source" = "geosite.dat" ]; then + echo "/var/mosdns/geosite_category-ads-all.txt" + else + echo "/etc/mosdns/rule/adlist.txt" + fi + else + touch /var/disable-ads.txt ; echo "/var/disable-ads.txt" + fi ) adlist_update() ( - ad_source=$(uci -q get mosdns.config.ad_source) - [ "$ad_source" = "geosite.dat" ] || [ -z "$ad_source" ] && exit 0 - AD_TMPDIR=$(mktemp -d) || exit 1 - if echo "$ad_source" | grep -Eq "^https://raw.githubusercontent.com" ; then - google_status=$(curl -I -4 -m 3 -o /dev/null -s -w %{http_code} http://www.google.com/generate_204) - [ "$google_status" -ne "204" ] && mirror="https://ghproxy.com/" - fi - echo -e "\e[1;32mDownloading $mirror$ad_source\e[0m" - curl --connect-timeout 60 -m 90 --ipv4 -kfSLo "$AD_TMPDIR/adlist.txt" "$mirror$ad_source" - if [ $? -ne 0 ]; then - rm -rf "$AD_TMPDIR" - exit 1 - else - \cp "$AD_TMPDIR/adlist.txt" /etc/mosdns/rule/adlist.txt - echo "$ad_source" > /etc/mosdns/rule/.ad_source - rm -rf "$AD_TMPDIR" - fi + ad_source=$(uci -q get mosdns.config.ad_source) + [ "$ad_source" = "geosite.dat" ] || [ -z "$ad_source" ] && exit 0 + AD_TMPDIR=$(mktemp -d) || exit 1 + if echo "$ad_source" | grep -Eq "^https://raw.githubusercontent.com" ; then + google_status=$(curl -I -4 -m 3 -o /dev/null -s -w %{http_code} http://www.google.com/generate_204) + [ "$google_status" -ne "204" ] && mirror="https://ghproxy.com/" + fi + echo -e "\e[1;32mDownloading $mirror$ad_source\e[0m" + curl --connect-timeout 60 -m 90 --ipv4 -kfSLo "$AD_TMPDIR/adlist.txt" "$mirror$ad_source" + if [ $? -ne 0 ]; then + rm -rf "$AD_TMPDIR" + exit 1 + else + \cp "$AD_TMPDIR/adlist.txt" /etc/mosdns/rule/adlist.txt + echo "$ad_source" > /etc/mosdns/rule/.ad_source + rm -rf "$AD_TMPDIR" + fi ) geodat_update() ( - geodat_download() ( - google_status=$(curl -I -4 -m 3 -o /dev/null -s -w %{http_code} http://www.google.com/generate_204) - [ "$google_status" -ne "204" ] && mirror="https://ghproxy.com/" - echo -e "\e[1;32mDownloading "$mirror"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/$1\e[0m" - curl --connect-timeout 60 -m 900 --ipv4 -kfSLo "$TMPDIR/$1" ""$mirror"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/$1" - ) - TMPDIR=$(mktemp -d) || exit 1 - geodat_download geoip.dat && geodat_download geosite.dat - if [ $? -ne 0 ]; then - rm -rf "$TMPDIR" - exit 1 - fi - cp -f "$TMPDIR"/* /usr/share/v2ray - rm -rf "$TMPDIR" + geodat_download() ( + google_status=$(curl -I -4 -m 3 -o /dev/null -s -w %{http_code} http://www.google.com/generate_204) + [ "$google_status" -ne "204" ] && mirror="https://ghproxy.com/" + echo -e "\e[1;32mDownloading "$mirror"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/$1\e[0m" + curl --connect-timeout 60 -m 900 --ipv4 -kfSLo "$TMPDIR/$1" ""$mirror"https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/$1" + ) + TMPDIR=$(mktemp -d) || exit 1 + geodat_download geoip.dat && geodat_download geosite.dat + if [ $? -ne 0 ]; then + rm -rf "$TMPDIR" + exit 1 + fi + cp -f "$TMPDIR"/* /usr/share/v2ray + rm -rf "$TMPDIR" ) restart_service() { - service mosdns restart + service mosdns restart } case $script_action in - "dns") - interface_dns - ;; - "ad") - ad_block - ;; - "geodata") - geodat_update && adlist_update && restart_service - ;; - "logfile") - logfile_path - ;; - "adlist_update") - adlist_update && restart_service - ;; - "version") - mosdns version - ;; - *) - exit 0 - ;; + "dns") + interface_dns + ;; + "ad") + ad_block + ;; + "geodata") + geodat_update && adlist_update && restart_service + ;; + "logfile") + logfile_path + ;; + "adlist_update") + adlist_update && restart_service + ;; + "version") + mosdns version + ;; + *) + exit 0 + ;; esac