Pre-add the final dot

This commit is contained in:
Frank Denis 2019-12-16 16:39:30 +01:00
parent 1b276be85d
commit 7066e53843
1 changed files with 150 additions and 148 deletions

View File

@ -6,145 +6,145 @@ import (
) )
var undelegatedSet = []string{ var undelegatedSet = []string{
"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", "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.",
"0.in-addr.arpa", "0.in-addr.arpa.",
"1", "1.",
"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", "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.",
"10.in-addr.arpa", "10.in-addr.arpa.",
"100.100.in-addr.arpa", "100.100.in-addr.arpa.",
"100.51.198.in-addr.arpa", "100.51.198.in-addr.arpa.",
"101.100.in-addr.arpa", "101.100.in-addr.arpa.",
"102.100.in-addr.arpa", "102.100.in-addr.arpa.",
"103.100.in-addr.arpa", "103.100.in-addr.arpa.",
"104.100.in-addr.arpa", "104.100.in-addr.arpa.",
"105.100.in-addr.arpa", "105.100.in-addr.arpa.",
"106.100.in-addr.arpa", "106.100.in-addr.arpa.",
"107.100.in-addr.arpa", "107.100.in-addr.arpa.",
"108.100.in-addr.arpa", "108.100.in-addr.arpa.",
"109.100.in-addr.arpa", "109.100.in-addr.arpa.",
"110.100.in-addr.arpa", "110.100.in-addr.arpa.",
"111.100.in-addr.arpa", "111.100.in-addr.arpa.",
"112.100.in-addr.arpa", "112.100.in-addr.arpa.",
"113.0.203.in-addr.arpa", "113.0.203.in-addr.arpa.",
"113.100.in-addr.arpa", "113.100.in-addr.arpa.",
"114.100.in-addr.arpa", "114.100.in-addr.arpa.",
"115.100.in-addr.arpa", "115.100.in-addr.arpa.",
"116.100.in-addr.arpa", "116.100.in-addr.arpa.",
"117.100.in-addr.arpa", "117.100.in-addr.arpa.",
"118.100.in-addr.arpa", "118.100.in-addr.arpa.",
"119.100.in-addr.arpa", "119.100.in-addr.arpa.",
"120.100.in-addr.arpa", "120.100.in-addr.arpa.",
"121.100.in-addr.arpa", "121.100.in-addr.arpa.",
"122.100.in-addr.arpa", "122.100.in-addr.arpa.",
"123.100.in-addr.arpa", "123.100.in-addr.arpa.",
"124.100.in-addr.arpa", "124.100.in-addr.arpa.",
"125.100.in-addr.arpa", "125.100.in-addr.arpa.",
"126.100.in-addr.arpa", "126.100.in-addr.arpa.",
"127.100.in-addr.arpa", "127.100.in-addr.arpa.",
"127.in-addr.arpa", "127.in-addr.arpa.",
"16.172.in-addr.arpa", "16.172.in-addr.arpa.",
"168.192.in-addr.arpa", "168.192.in-addr.arpa.",
"17.172.in-addr.arpa", "17.172.in-addr.arpa.",
"18.172.in-addr.arpa", "18.172.in-addr.arpa.",
"19.172.in-addr.arpa", "19.172.in-addr.arpa.",
"2.0.192.in-addr.arpa", "2.0.192.in-addr.arpa.",
"20.172.in-addr.arpa", "20.172.in-addr.arpa.",
"21.172.in-addr.arpa", "21.172.in-addr.arpa.",
"22.172.in-addr.arpa", "22.172.in-addr.arpa.",
"23.172.in-addr.arpa", "23.172.in-addr.arpa.",
"24.172.in-addr.arpa", "24.172.in-addr.arpa.",
"25.172.in-addr.arpa", "25.172.in-addr.arpa.",
"254.169.in-addr.arpa", "254.169.in-addr.arpa.",
"255.255.255.255.in-addr.arpa", "255.255.255.255.in-addr.arpa.",
"26.172.in-addr.arpa", "26.172.in-addr.arpa.",
"27.172.in-addr.arpa", "27.172.in-addr.arpa.",
"28.172.in-addr.arpa", "28.172.in-addr.arpa.",
"29.172.in-addr.arpa", "29.172.in-addr.arpa.",
"30.172.in-addr.arpa", "30.172.in-addr.arpa.",
"31.172.in-addr.arpa", "31.172.in-addr.arpa.",
"64.100.in-addr.arpa", "64.100.in-addr.arpa.",
"65.100.in-addr.arpa", "65.100.in-addr.arpa.",
"66.100.in-addr.arpa", "66.100.in-addr.arpa.",
"67.100.in-addr.arpa", "67.100.in-addr.arpa.",
"68.100.in-addr.arpa", "68.100.in-addr.arpa.",
"69.100.in-addr.arpa", "69.100.in-addr.arpa.",
"70.100.in-addr.arpa", "70.100.in-addr.arpa.",
"71.100.in-addr.arpa", "71.100.in-addr.arpa.",
"72.100.in-addr.arpa", "72.100.in-addr.arpa.",
"73.100.in-addr.arpa", "73.100.in-addr.arpa.",
"74.100.in-addr.arpa", "74.100.in-addr.arpa.",
"75.100.in-addr.arpa", "75.100.in-addr.arpa.",
"76.100.in-addr.arpa", "76.100.in-addr.arpa.",
"77.100.in-addr.arpa", "77.100.in-addr.arpa.",
"78.100.in-addr.arpa", "78.100.in-addr.arpa.",
"79.100.in-addr.arpa", "79.100.in-addr.arpa.",
"8.b.d.0.1.0.0.2.ip6.arpa", "8.b.d.0.1.0.0.2.ip6.arpa.",
"8.e.f.ip6.arpa", "8.e.f.ip6.arpa.",
"80.100.in-addr.arpa", "80.100.in-addr.arpa.",
"81.100.in-addr.arpa", "81.100.in-addr.arpa.",
"82.100.in-addr.arpa", "82.100.in-addr.arpa.",
"83.100.in-addr.arpa", "83.100.in-addr.arpa.",
"84.100.in-addr.arpa", "84.100.in-addr.arpa.",
"85.100.in-addr.arpa", "85.100.in-addr.arpa.",
"86.100.in-addr.arpa", "86.100.in-addr.arpa.",
"87.100.in-addr.arpa", "87.100.in-addr.arpa.",
"88.100.in-addr.arpa", "88.100.in-addr.arpa.",
"89.100.in-addr.arpa", "89.100.in-addr.arpa.",
"9.e.f.ip6.arpa", "9.e.f.ip6.arpa.",
"90.100.in-addr.arpa", "90.100.in-addr.arpa.",
"91.100.in-addr.arpa", "91.100.in-addr.arpa.",
"92.100.in-addr.arpa", "92.100.in-addr.arpa.",
"93.100.in-addr.arpa", "93.100.in-addr.arpa.",
"94.100.in-addr.arpa", "94.100.in-addr.arpa.",
"95.100.in-addr.arpa", "95.100.in-addr.arpa.",
"96.100.in-addr.arpa", "96.100.in-addr.arpa.",
"97.100.in-addr.arpa", "97.100.in-addr.arpa.",
"98.100.in-addr.arpa", "98.100.in-addr.arpa.",
"99.100.in-addr.arpa", "99.100.in-addr.arpa.",
"a.e.f.ip6.arpa", "a.e.f.ip6.arpa.",
"airdream", "airdream.",
"api", "api.",
"b.e.f.ip6.arpa", "b.e.f.ip6.arpa.",
"bbrouter", "bbrouter.",
"belkin", "belkin.",
"blinkap", "blinkap.",
"corp", "corp.",
"d.f.ip6.arpa", "d.f.ip6.arpa.",
"davolink", "davolink.",
"dearmyrouter", "dearmyrouter.",
"dhcp", "dhcp.",
"dlink", "dlink.",
"domain", "domain.",
"envoy", "envoy.",
"example", "example.",
"f.f.ip6.arpa", "f.f.ip6.arpa.",
"grp", "grp.",
"gw==", "gw==.",
"home", "home.",
"hub", "hub.",
"internal", "internal.",
"intra", "intra.",
"invalid", "invalid.",
"ksyun", "ksyun.",
"lan", "lan.",
"loc", "loc.",
"local", "local.",
"localdomain", "localdomain.",
"localnet", "localnet.",
"modem", "modem.",
"mynet", "mynet.",
"myrouter", "myrouter.",
"novalocal", "novalocal.",
"openstacklocal", "openstacklocal.",
"priv", "priv.",
"prv", "prv.",
"router", "router.",
"telus", "telus.",
"test", "test.",
"totolink", "totolink.",
"wlan_ap", "wlan_ap.",
"workgroup", "workgroup.",
"zghjccbob3n0", "zghjccbob3n0.",
} }
type PluginBlockUndelegated struct { type PluginBlockUndelegated struct {
@ -162,7 +162,7 @@ func (plugin *PluginBlockUndelegated) Description() string {
func (plugin *PluginBlockUndelegated) Init(proxy *Proxy) error { func (plugin *PluginBlockUndelegated) Init(proxy *Proxy) error {
suffixes := critbitgo.NewTrie() suffixes := critbitgo.NewTrie()
for _, line := range undelegatedSet { for _, line := range undelegatedSet {
pattern := StringReverse(line + ".") pattern := StringReverse(line)
suffixes.Insert([]byte(pattern), true) suffixes.Insert([]byte(pattern), true)
} }
plugin.suffixes = suffixes plugin.suffixes = suffixes
@ -183,14 +183,16 @@ func (plugin *PluginBlockUndelegated) Eval(pluginsState *PluginsState, msg *dns.
return nil return nil
} }
revQname := StringReverse(questions[0].Name) revQname := StringReverse(questions[0].Name)
if match, _, found := plugin.suffixes.LongestPrefix([]byte(revQname)); found { match, _, found := plugin.suffixes.LongestPrefix([]byte(revQname))
if len(match) == len(revQname) || revQname[len(match)] == '.' { if !found {
synth := EmptyResponseFromMessage(msg) return nil
synth.Rcode = dns.RcodeNameError }
pluginsState.synthResponse = synth if len(match) == len(revQname) || revQname[len(match)] == '.' {
pluginsState.action = PluginsActionSynth synth := EmptyResponseFromMessage(msg)
pluginsState.returnCode = PluginsReturnCodeSynth synth.Rcode = dns.RcodeNameError
} pluginsState.synthResponse = synth
pluginsState.action = PluginsActionSynth
pluginsState.returnCode = PluginsReturnCodeSynth
} }
return nil return nil
} }