diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua b/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua
index 853c1c8..328234e 100644
--- a/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua
+++ b/luci-app-mosdns/luasrc/model/cbi/mosdns/rule_list.lua
@@ -4,6 +4,7 @@ local white_list_file = "/etc/mosdns/rule/whitelist.txt"
local block_list_file = "/etc/mosdns/rule/blocklist.txt"
local hosts_list_file = "/etc/mosdns/rule/hosts.txt"
local redirect_list_file = "/etc/mosdns/rule/redirect.txt"
+local local_ptr_file = "/etc/mosdns/rule/local-ptr.txt"
m = Map("mosdns")
@@ -14,6 +15,7 @@ s:tab("white_list", translate("White Lists"))
s:tab("block_list", translate("Block Lists"))
s:tab("hosts_list", translate("Hosts"))
s:tab("redirect_list", translate("Redirect"))
+s:tab("local_ptr_list", translate("Block PTR"))
o = s:taboption("white_list", TextValue, "whitelist", "", "" .. translate("These domain names allow DNS resolution with the highest priority. Please input the domain names of websites, every line can input only one website domain. For example: hm.baidu.com.") .. "" .. "" .. translate("
The list of rules only apply to 'Default Config' profiles.") .. "")
o.rows = 15
@@ -55,6 +57,16 @@ o.validate = function(self, value)
return value
end
+o = s:taboption("local_ptr_list", TextValue, "local_ptr", "", "" .. translate("These domains are blocked from PTR requests") .. "" .. "" .. translate("
The list of rules only apply to 'Default Config' profiles.") .. "")
+o.rows = 15
+o.wrap = "off"
+o.cfgvalue = function(self, section) return nixio.fs.readfile(local_ptr_file) or "" end
+o.write = function(self, section, value) nixio.fs.writefile(local_ptr_file, value:gsub("\r\n", "\n")) end
+o.remove = function(self, section, value) nixio.fs.writefile(local_ptr_file, "") end
+o.validate = function(self, value)
+ return value
+end
+
local apply = luci.http.formvalue("cbi.apply")
if apply then
luci.sys.exec("/etc/init.d/mosdns reload")
diff --git a/luci-app-mosdns/po/zh-cn/mosdns.po b/luci-app-mosdns/po/zh-cn/mosdns.po
index ab9dba3..f1cc02b 100644
--- a/luci-app-mosdns/po/zh-cn/mosdns.po
+++ b/luci-app-mosdns/po/zh-cn/mosdns.po
@@ -98,10 +98,10 @@ msgid "Cache Survival Time"
msgstr "缓存生存时间(秒)"
msgid "Minimum TTL"
-msgstr "覆盖最小 TTL 值(禁用:0)"
+msgstr "覆盖最小 TTL 值(默认 0)"
msgid "Maximum TTL"
-msgstr "覆盖最大 TTL 值(禁用:0)"
+msgstr "覆盖最大 TTL 值(默认 0)"
msgid "Logs"
msgstr "日志"
@@ -138,3 +138,9 @@ msgstr "重定向"
msgid "The domain name to redirect the request to. Requests domain A, but returns records for domain B. example: a.com b.com"
msgstr "重定向请求的域名。请求域名 A,但返回域名 B 的记录,如:baidu.com qq.com(每个规则一行)"
+
+msgid "Block PTR"
+msgstr "PTR 黑名单"
+
+msgid "These domains are blocked from PTR requests"
+msgstr "加入的域名将阻止 PTR 请求(每个域名一行,支持域名匹配规则)"
diff --git a/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt b/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt
new file mode 100644
index 0000000..5dfb9ae
--- /dev/null
+++ b/luci-app-mosdns/root/etc/mosdns/rule/local-ptr.txt
@@ -0,0 +1,102 @@
+# from unbound.conf
+127.in-addr.arpa
+1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
+onion
+test
+invalid
+10.in-addr.arpa
+16.172.in-addr.arpa
+17.172.in-addr.arpa
+18.172.in-addr.arpa
+19.172.in-addr.arpa
+20.172.in-addr.arpa
+21.172.in-addr.arpa
+22.172.in-addr.arpa
+23.172.in-addr.arpa
+24.172.in-addr.arpa
+25.172.in-addr.arpa
+26.172.in-addr.arpa
+27.172.in-addr.arpa
+28.172.in-addr.arpa
+29.172.in-addr.arpa
+30.172.in-addr.arpa
+31.172.in-addr.arpa
+168.192.in-addr.arpa
+0.in-addr.arpa
+254.169.in-addr.arpa
+2.0.192.in-addr.arpa
+100.51.198.in-addr.arpa
+113.0.203.in-addr.arpa
+255.255.255.255.in-addr.arpa
+0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
+d.f.ip6.arpa
+8.e.f.ip6.arpa
+9.e.f.ip6.arpa
+a.e.f.ip6.arpa
+b.e.f.ip6.arpa
+8.b.d.0.1.0.0.2.ip6.arpa
+# 100.64.0.0/10 reserved address
+64.100.in-addr.arpa
+65.100.in-addr.arpa
+66.100.in-addr.arpa
+67.100.in-addr.arpa
+68.100.in-addr.arpa
+69.100.in-addr.arpa
+70.100.in-addr.arpa
+71.100.in-addr.arpa
+72.100.in-addr.arpa
+73.100.in-addr.arpa
+74.100.in-addr.arpa
+75.100.in-addr.arpa
+76.100.in-addr.arpa
+77.100.in-addr.arpa
+78.100.in-addr.arpa
+79.100.in-addr.arpa
+80.100.in-addr.arpa
+81.100.in-addr.arpa
+82.100.in-addr.arpa
+83.100.in-addr.arpa
+84.100.in-addr.arpa
+85.100.in-addr.arpa
+86.100.in-addr.arpa
+87.100.in-addr.arpa
+88.100.in-addr.arpa
+89.100.in-addr.arpa
+90.100.in-addr.arpa
+91.100.in-addr.arpa
+92.100.in-addr.arpa
+93.100.in-addr.arpa
+94.100.in-addr.arpa
+95.100.in-addr.arpa
+96.100.in-addr.arpa
+97.100.in-addr.arpa
+98.100.in-addr.arpa
+99.100.in-addr.arpa
+100.100.in-addr.arpa
+101.100.in-addr.arpa
+102.100.in-addr.arpa
+103.100.in-addr.arpa
+104.100.in-addr.arpa
+105.100.in-addr.arpa
+106.100.in-addr.arpa
+107.100.in-addr.arpa
+108.100.in-addr.arpa
+109.100.in-addr.arpa
+110.100.in-addr.arpa
+111.100.in-addr.arpa
+112.100.in-addr.arpa
+113.100.in-addr.arpa
+114.100.in-addr.arpa
+115.100.in-addr.arpa
+116.100.in-addr.arpa
+117.100.in-addr.arpa
+118.100.in-addr.arpa
+119.100.in-addr.arpa
+120.100.in-addr.arpa
+121.100.in-addr.arpa
+122.100.in-addr.arpa
+123.100.in-addr.arpa
+124.100.in-addr.arpa
+125.100.in-addr.arpa
+126.100.in-addr.arpa
+127.100.in-addr.arpa
diff --git a/luci-app-mosdns/root/usr/share/mosdns/default.yaml b/luci-app-mosdns/root/usr/share/mosdns/default.yaml
index 5d119a6..de7762d 100644
--- a/luci-app-mosdns/root/usr/share/mosdns/default.yaml
+++ b/luci-app-mosdns/root/usr/share/mosdns/default.yaml
@@ -29,6 +29,10 @@ data_providers:
file: "/etc/mosdns/rule/redirect.txt"
auto_reload: true
+ - tag: local_ptr
+ file: "/etc/mosdns/rule/local_ptr.txt"
+ auto_reload: true
+
plugins:
- tag: lazy_cache
type: cache
@@ -104,6 +108,13 @@ plugins:
domain:
- "adblock"
+ - tag: match_local_ptr
+ type: query_matcher
+ args:
+ qtype: [12]
+ domain:
+ - "provider:local_ptr"
+
- tag: "main_sequence"
type: "sequence"
args:
@@ -117,7 +128,7 @@ plugins:
- modify_ttl
- _return
- - if: "query_is_blocklist_domain || query_is_ad_domain"
+ - if: "query_is_blocklist_domain || query_is_ad_domain || match_local_ptr"
exec:
- _new_nxdomain_response
- _return