dnsruby 1.26 → 1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/DNSSEC +19 -0
- data/EVENTMACHINE +1 -64
- data/EXAMPLES +124 -0
- data/README +2 -6
- data/demo/axfr.rb +2 -2
- data/demo/check_soa.rb +1 -1
- data/demo/check_zone.rb +2 -2
- data/demo/digdlv.rb +65 -0
- data/demo/digitar.rb +62 -0
- data/demo/mresolv.rb +1 -1
- data/demo/mx.rb +1 -1
- data/demo/rubydig.rb +8 -1
- data/demo/trace_dns.rb +28 -14
- data/html/created.rid +1 -0
- data/{doc → html}/fr_class_index.html +118 -172
- data/{doc → html}/fr_file_index.html +81 -130
- data/html/fr_method_index.html +371 -0
- data/{doc → html}/index.html +23 -23
- data/lib/Dnsruby/Cache.rb +129 -22
- data/lib/Dnsruby/Config.rb +72 -11
- data/lib/Dnsruby/DNS.rb +3 -0
- data/lib/Dnsruby/PacketSender.rb +565 -0
- data/lib/Dnsruby/Recursor.rb +337 -156
- data/lib/Dnsruby/Resolver.rb +508 -447
- data/lib/Dnsruby/SingleResolver.rb +151 -629
- data/lib/Dnsruby/code_mapper.rb +4 -2
- data/lib/Dnsruby/dnssec.rb +212 -518
- data/lib/Dnsruby/event_machine_interface.rb +266 -265
- data/lib/Dnsruby/iana_ports.rb +5206 -5196
- data/lib/Dnsruby/key_cache.rb +85 -0
- data/lib/Dnsruby/message.rb +207 -72
- data/lib/Dnsruby/name.rb +42 -4
- data/lib/Dnsruby/resource/CERT.rb +1 -1
- data/lib/Dnsruby/resource/DNSKEY.rb +66 -25
- data/lib/Dnsruby/resource/DS.rb +7 -2
- data/lib/Dnsruby/resource/NAPTR.rb +2 -2
- data/lib/Dnsruby/resource/NSEC.rb +31 -2
- data/lib/Dnsruby/resource/NSEC3.rb +86 -8
- data/lib/Dnsruby/resource/OPT.rb +9 -6
- data/lib/Dnsruby/resource/PX.rb +1 -1
- data/lib/Dnsruby/resource/RT.rb +1 -1
- data/lib/Dnsruby/resource/SRV.rb +3 -3
- data/lib/Dnsruby/resource/resource.rb +30 -36
- data/lib/Dnsruby/select_thread.rb +160 -23
- data/lib/Dnsruby/single_verifier.rb +1289 -0
- data/lib/Dnsruby/validator_thread.rb +108 -0
- data/lib/Dnsruby/zone_transfer.rb +5 -2
- data/lib/dnsruby.rb +33 -18
- data/test/tc_cache.rb +88 -0
- data/test/tc_dlv.rb +55 -0
- data/test/tc_dns.rb +3 -1
- data/test/tc_dnskey.rb +21 -5
- data/test/tc_ds.rb +1 -7
- data/test/tc_itar.rb +76 -0
- data/test/tc_name.rb +21 -0
- data/test/tc_nsec.rb +169 -0
- data/test/tc_nsec3.rb +18 -1
- data/test/tc_packet.rb +97 -6
- data/test/tc_queue.rb +7 -5
- data/test/tc_recur.rb +6 -1
- data/test/tc_res_config.rb +1 -3
- data/test/tc_res_opt.rb +1 -5
- data/test/tc_resolver.rb +27 -8
- data/test/tc_rr-opt.rb +1 -0
- data/test/tc_rr.rb +6 -0
- data/test/tc_rrset.rb +60 -0
- data/test/tc_single_resolver.rb +55 -2
- data/test/tc_tsig.rb +29 -13
- data/test/tc_update.rb +6 -0
- data/test/tc_validator.rb +56 -0
- data/test/{tc_dnssec.rb → tc_verifier.rb} +106 -92
- data/test/ts_online.rb +19 -16
- metadata +27 -1053
- data/doc/classes/Cache.html +0 -179
- data/doc/classes/Cache.src/M000212.html +0 -19
- data/doc/classes/Cache.src/M000213.html +0 -18
- data/doc/classes/Cache.src/M000214.html +0 -23
- data/doc/classes/ConfigTable.html +0 -500
- data/doc/classes/ConfigTable.src/M000019.html +0 -25
- data/doc/classes/ConfigTable.src/M000020.html +0 -18
- data/doc/classes/ConfigTable.src/M000021.html +0 -18
- data/doc/classes/ConfigTable.src/M000022.html +0 -18
- data/doc/classes/ConfigTable.src/M000023.html +0 -18
- data/doc/classes/ConfigTable.src/M000024.html +0 -18
- data/doc/classes/ConfigTable.src/M000025.html +0 -18
- data/doc/classes/ConfigTable.src/M000026.html +0 -18
- data/doc/classes/ConfigTable.src/M000027.html +0 -18
- data/doc/classes/ConfigTable.src/M000028.html +0 -19
- data/doc/classes/ConfigTable.src/M000029.html +0 -21
- data/doc/classes/ConfigTable.src/M000030.html +0 -20
- data/doc/classes/ConfigTable.src/M000031.html +0 -18
- data/doc/classes/ConfigTable.src/M000032.html +0 -25
- data/doc/classes/ConfigTable.src/M000033.html +0 -23
- data/doc/classes/ConfigTable.src/M000034.html +0 -20
- data/doc/classes/ConfigTable.src/M000035.html +0 -20
- data/doc/classes/ConfigTable.src/M000036.html +0 -23
- data/doc/classes/ConfigTable.src/M000037.html +0 -19
- data/doc/classes/ConfigTable.src/M000038.html +0 -18
- data/doc/classes/ConfigTable.src/M000039.html +0 -18
- data/doc/classes/ConfigTable/BoolItem.html +0 -154
- data/doc/classes/ConfigTable/BoolItem.src/M000040.html +0 -18
- data/doc/classes/ConfigTable/BoolItem.src/M000041.html +0 -18
- data/doc/classes/ConfigTable/ExecItem.html +0 -201
- data/doc/classes/ConfigTable/ExecItem.src/M000059.html +0 -20
- data/doc/classes/ConfigTable/ExecItem.src/M000060.html +0 -18
- data/doc/classes/ConfigTable/ExecItem.src/M000061.html +0 -18
- data/doc/classes/ConfigTable/ExecItem.src/M000062.html +0 -18
- data/doc/classes/ConfigTable/ExecItem.src/M000063.html +0 -22
- data/doc/classes/ConfigTable/Item.html +0 -250
- data/doc/classes/ConfigTable/Item.src/M000066.html +0 -22
- data/doc/classes/ConfigTable/Item.src/M000067.html +0 -18
- data/doc/classes/ConfigTable/Item.src/M000068.html +0 -18
- data/doc/classes/ConfigTable/Item.src/M000069.html +0 -18
- data/doc/classes/ConfigTable/Item.src/M000070.html +0 -18
- data/doc/classes/ConfigTable/Item.src/M000071.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.html +0 -325
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000046.html +0 -19
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000047.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000048.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000049.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000050.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000051.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000052.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000053.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000054.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000055.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000056.html +0 -18
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000057.html +0 -19
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000058.html +0 -19
- data/doc/classes/ConfigTable/PackageSelectionItem.html +0 -169
- data/doc/classes/ConfigTable/PackageSelectionItem.src/M000044.html +0 -19
- data/doc/classes/ConfigTable/PackageSelectionItem.src/M000045.html +0 -18
- data/doc/classes/ConfigTable/PathItem.html +0 -139
- data/doc/classes/ConfigTable/PathItem.src/M000043.html +0 -18
- data/doc/classes/ConfigTable/ProgramItem.html +0 -139
- data/doc/classes/ConfigTable/ProgramItem.src/M000042.html +0 -18
- data/doc/classes/ConfigTable/SelectItem.html +0 -156
- data/doc/classes/ConfigTable/SelectItem.src/M000064.html +0 -19
- data/doc/classes/ConfigTable/SelectItem.src/M000065.html +0 -18
- data/doc/classes/DnskeyTest.html +0 -180
- data/doc/classes/DnskeyTest.src/M000016.html +0 -26
- data/doc/classes/DnskeyTest.src/M000017.html +0 -24
- data/doc/classes/DnskeyTest.src/M000018.html +0 -33
- data/doc/classes/Dnsruby.html +0 -504
- data/doc/classes/Dnsruby.src/M000351.html +0 -18
- data/doc/classes/Dnsruby/Algorithms.html +0 -173
- data/doc/classes/Dnsruby/Classes.html +0 -197
- data/doc/classes/Dnsruby/Classes.src/M000573.html +0 -23
- data/doc/classes/Dnsruby/Classes.src/M000574.html +0 -19
- data/doc/classes/Dnsruby/CodeMapper.html +0 -375
- data/doc/classes/Dnsruby/CodeMapper.src/M000550.html +0 -18
- data/doc/classes/Dnsruby/CodeMapper.src/M000551.html +0 -33
- data/doc/classes/Dnsruby/CodeMapper.src/M000552.html +0 -21
- data/doc/classes/Dnsruby/CodeMapper.src/M000553.html +0 -19
- data/doc/classes/Dnsruby/CodeMapper.src/M000554.html +0 -19
- data/doc/classes/Dnsruby/CodeMapper.src/M000555.html +0 -18
- data/doc/classes/Dnsruby/CodeMapper.src/M000556.html +0 -22
- data/doc/classes/Dnsruby/CodeMapper.src/M000557.html +0 -22
- data/doc/classes/Dnsruby/CodeMapper.src/M000558.html +0 -22
- data/doc/classes/Dnsruby/CodeMapper.src/M000559.html +0 -31
- data/doc/classes/Dnsruby/CodeMapper.src/M000560.html +0 -19
- data/doc/classes/Dnsruby/Config.html +0 -413
- data/doc/classes/Dnsruby/Config.src/M000505.html +0 -18
- data/doc/classes/Dnsruby/Config.src/M000506.html +0 -19
- data/doc/classes/Dnsruby/Config.src/M000507.html +0 -19
- data/doc/classes/Dnsruby/Config.src/M000508.html +0 -25
- data/doc/classes/Dnsruby/Config.src/M000509.html +0 -21
- data/doc/classes/Dnsruby/Config.src/M000510.html +0 -38
- data/doc/classes/Dnsruby/Config.src/M000511.html +0 -26
- data/doc/classes/Dnsruby/Config.src/M000512.html +0 -22
- data/doc/classes/Dnsruby/Config.src/M000513.html +0 -27
- data/doc/classes/Dnsruby/Config.src/M000514.html +0 -22
- data/doc/classes/Dnsruby/Config.src/M000515.html +0 -21
- data/doc/classes/Dnsruby/DNS.html +0 -571
- data/doc/classes/Dnsruby/DNS.src/M000645.html +0 -24
- data/doc/classes/Dnsruby/DNS.src/M000646.html +0 -18
- data/doc/classes/Dnsruby/DNS.src/M000647.html +0 -18
- data/doc/classes/Dnsruby/DNS.src/M000648.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000649.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000650.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000651.html +0 -18
- data/doc/classes/Dnsruby/DNS.src/M000652.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000653.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000654.html +0 -30
- data/doc/classes/Dnsruby/DNS.src/M000655.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000656.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000657.html +0 -31
- data/doc/classes/Dnsruby/DecodeError.html +0 -120
- data/doc/classes/Dnsruby/Dnssec.html +0 -536
- data/doc/classes/Dnsruby/Dnssec.src/M000615.html +0 -21
- data/doc/classes/Dnsruby/Dnssec.src/M000616.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000617.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000618.html +0 -19
- data/doc/classes/Dnsruby/Dnssec.src/M000619.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000620.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000621.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000622.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000623.html +0 -19
- data/doc/classes/Dnsruby/Dnssec.src/M000624.html +0 -18
- data/doc/classes/Dnsruby/Dnssec.src/M000625.html +0 -20
- data/doc/classes/Dnsruby/Dnssec.src/M000626.html +0 -46
- data/doc/classes/Dnsruby/Dnssec.src/M000627.html +0 -23
- data/doc/classes/Dnsruby/Dnssec.src/M000628.html +0 -22
- data/doc/classes/Dnsruby/Dnssec.src/M000629.html +0 -19
- data/doc/classes/Dnsruby/Dnssec.src/M000630.html +0 -116
- data/doc/classes/Dnsruby/Dnssec.src/M000631.html +0 -33
- data/doc/classes/Dnsruby/Dnssec.src/M000632.html +0 -28
- data/doc/classes/Dnsruby/Dnssec.src/M000633.html +0 -92
- data/doc/classes/Dnsruby/Dnssec/ValidationPolicy.html +0 -167
- data/doc/classes/Dnsruby/EncodeError.html +0 -120
- data/doc/classes/Dnsruby/FormErr.html +0 -119
- data/doc/classes/Dnsruby/Header.html +0 -531
- data/doc/classes/Dnsruby/Header.src/M000595.html +0 -18
- data/doc/classes/Dnsruby/Header.src/M000596.html +0 -35
- data/doc/classes/Dnsruby/Header.src/M000597.html +0 -18
- data/doc/classes/Dnsruby/Header.src/M000598.html +0 -18
- data/doc/classes/Dnsruby/Header.src/M000599.html +0 -21
- data/doc/classes/Dnsruby/Header.src/M000600.html +0 -20
- data/doc/classes/Dnsruby/Header.src/M000601.html +0 -32
- data/doc/classes/Dnsruby/Header.src/M000602.html +0 -27
- data/doc/classes/Dnsruby/Header.src/M000603.html +0 -26
- data/doc/classes/Dnsruby/Header.src/M000604.html +0 -18
- data/doc/classes/Dnsruby/Header.src/M000605.html +0 -47
- data/doc/classes/Dnsruby/Header.src/M000606.html +0 -28
- data/doc/classes/Dnsruby/Header.src/M000607.html +0 -30
- data/doc/classes/Dnsruby/Hosts.html +0 -316
- data/doc/classes/Dnsruby/Hosts.src/M000561.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000562.html +0 -19
- data/doc/classes/Dnsruby/Hosts.src/M000563.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000564.html +0 -21
- data/doc/classes/Dnsruby/Hosts.src/M000565.html +0 -19
- data/doc/classes/Dnsruby/Hosts.src/M000566.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000567.html +0 -21
- data/doc/classes/Dnsruby/IPv4.html +0 -233
- data/doc/classes/Dnsruby/IPv4.src/M000568.html +0 -32
- data/doc/classes/Dnsruby/IPv4.src/M000569.html +0 -19
- data/doc/classes/Dnsruby/IPv4.src/M000570.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000571.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000572.html +0 -18
- data/doc/classes/Dnsruby/IPv6.html +0 -281
- data/doc/classes/Dnsruby/IPv6.src/M000608.html +0 -60
- data/doc/classes/Dnsruby/IPv6.src/M000609.html +0 -22
- data/doc/classes/Dnsruby/IPv6.src/M000610.html +0 -20
- data/doc/classes/Dnsruby/IPv6.src/M000611.html +0 -18
- data/doc/classes/Dnsruby/Message.html +0 -861
- data/doc/classes/Dnsruby/Message.src/M000473.html +0 -39
- data/doc/classes/Dnsruby/Message.src/M000474.html +0 -26
- data/doc/classes/Dnsruby/Message.src/M000475.html +0 -23
- data/doc/classes/Dnsruby/Message.src/M000476.html +0 -22
- data/doc/classes/Dnsruby/Message.src/M000477.html +0 -22
- data/doc/classes/Dnsruby/Message.src/M000478.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000479.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000480.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000481.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000482.html +0 -18
- data/doc/classes/Dnsruby/Message.src/M000483.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000484.html +0 -23
- data/doc/classes/Dnsruby/Message.src/M000485.html +0 -30
- data/doc/classes/Dnsruby/Message.src/M000486.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000487.html +0 -18
- data/doc/classes/Dnsruby/Message.src/M000488.html +0 -23
- data/doc/classes/Dnsruby/Message.src/M000489.html +0 -24
- data/doc/classes/Dnsruby/Message.src/M000490.html +0 -73
- data/doc/classes/Dnsruby/Message.src/M000491.html +0 -35
- data/doc/classes/Dnsruby/Message.src/M000492.html +0 -46
- data/doc/classes/Dnsruby/Message/Section.html +0 -160
- data/doc/classes/Dnsruby/Message/Section.src/M000498.html +0 -29
- data/doc/classes/Dnsruby/Message/Section.src/M000499.html +0 -30
- data/doc/classes/Dnsruby/MetaTypes.html +0 -136
- data/doc/classes/Dnsruby/Modes.html +0 -171
- data/doc/classes/Dnsruby/NXDomain.html +0 -119
- data/doc/classes/Dnsruby/Name.html +0 -330
- data/doc/classes/Dnsruby/Name.src/M000458.html +0 -35
- data/doc/classes/Dnsruby/Name.src/M000459.html +0 -20
- data/doc/classes/Dnsruby/Name.src/M000460.html +0 -18
- data/doc/classes/Dnsruby/Name.src/M000461.html +0 -21
- data/doc/classes/Dnsruby/Name.src/M000462.html +0 -22
- data/doc/classes/Dnsruby/Name.src/M000463.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.html +0 -300
- data/doc/classes/Dnsruby/Name/Label.src/M000464.html +0 -21
- data/doc/classes/Dnsruby/Name/Label.src/M000465.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000466.html +0 -22
- data/doc/classes/Dnsruby/Name/Label.src/M000467.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000468.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000469.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000470.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000471.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000472.html +0 -18
- data/doc/classes/Dnsruby/NotImp.html +0 -119
- data/doc/classes/Dnsruby/OpCode.html +0 -146
- data/doc/classes/Dnsruby/OtherResolvError.html +0 -119
- data/doc/classes/Dnsruby/QTypes.html +0 -146
- data/doc/classes/Dnsruby/Question.html +0 -306
- data/doc/classes/Dnsruby/Question.src/M000590.html +0 -47
- data/doc/classes/Dnsruby/Question.src/M000591.html +0 -18
- data/doc/classes/Dnsruby/Question.src/M000592.html +0 -18
- data/doc/classes/Dnsruby/Question.src/M000593.html +0 -32
- data/doc/classes/Dnsruby/Question.src/M000594.html +0 -18
- data/doc/classes/Dnsruby/RCode.html +0 -211
- data/doc/classes/Dnsruby/RR.html +0 -653
- data/doc/classes/Dnsruby/RR.src/M000352.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000353.html +0 -22
- data/doc/classes/Dnsruby/RR.src/M000354.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000355.html +0 -26
- data/doc/classes/Dnsruby/RR.src/M000356.html +0 -26
- data/doc/classes/Dnsruby/RR.src/M000357.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000358.html +0 -36
- data/doc/classes/Dnsruby/RR.src/M000359.html +0 -100
- data/doc/classes/Dnsruby/RR.src/M000360.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000361.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000362.html +0 -22
- data/doc/classes/Dnsruby/RR.src/M000363.html +0 -33
- data/doc/classes/Dnsruby/RR.src/M000364.html +0 -24
- data/doc/classes/Dnsruby/RR/ANY.html +0 -133
- data/doc/classes/Dnsruby/RR/CERT.html +0 -180
- data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +0 -169
- data/doc/classes/Dnsruby/RR/CNAME.html +0 -151
- data/doc/classes/Dnsruby/RR/DLV.html +0 -134
- data/doc/classes/Dnsruby/RR/DNAME.html +0 -150
- data/doc/classes/Dnsruby/RR/DNSKEY.html +0 -422
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000397.html +0 -20
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000398.html +0 -21
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000399.html +0 -28
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000400.html +0 -22
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000401.html +0 -18
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000402.html +0 -22
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000403.html +0 -18
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000404.html +0 -26
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000405.html +0 -38
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000406.html +0 -58
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000407.html +0 -21
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000408.html +0 -24
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000409.html +0 -39
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000410.html +0 -24
- data/doc/classes/Dnsruby/RR/DS.html +0 -329
- data/doc/classes/Dnsruby/RR/DS.src/M000390.html +0 -19
- data/doc/classes/Dnsruby/RR/DS.src/M000391.html +0 -28
- data/doc/classes/Dnsruby/RR/DS.src/M000392.html +0 -28
- data/doc/classes/Dnsruby/RR/DS.src/M000393.html +0 -38
- data/doc/classes/Dnsruby/RR/DS.src/M000394.html +0 -29
- data/doc/classes/Dnsruby/RR/DS.src/M000395.html +0 -53
- data/doc/classes/Dnsruby/RR/DS.src/M000396.html +0 -40
- data/doc/classes/Dnsruby/RR/DS/DigestTypes.html +0 -111
- data/doc/classes/Dnsruby/RR/DomainName.html +0 -175
- data/doc/classes/Dnsruby/RR/DomainName.src/M000436.html +0 -18
- data/doc/classes/Dnsruby/RR/Generic.html +0 -133
- data/doc/classes/Dnsruby/RR/HINFO.html +0 -155
- data/doc/classes/Dnsruby/RR/IN.html +0 -155
- data/doc/classes/Dnsruby/RR/IN/A.html +0 -200
- data/doc/classes/Dnsruby/RR/IN/A.src/M000368.html +0 -18
- data/doc/classes/Dnsruby/RR/IN/A.src/M000369.html +0 -18
- data/doc/classes/Dnsruby/RR/IN/A.src/M000370.html +0 -18
- data/doc/classes/Dnsruby/RR/IN/AAAA.html +0 -139
- data/doc/classes/Dnsruby/RR/IN/AFSDB.html +0 -145
- data/doc/classes/Dnsruby/RR/IN/PX.html +0 -143
- data/doc/classes/Dnsruby/RR/IN/SRV.html +0 -238
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000365.html +0 -29
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000366.html +0 -26
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000367.html +0 -22
- data/doc/classes/Dnsruby/RR/IN/WKS.html +0 -166
- data/doc/classes/Dnsruby/RR/IN/WKS.src/M000371.html +0 -20
- data/doc/classes/Dnsruby/RR/ISDN.html +0 -155
- data/doc/classes/Dnsruby/RR/LOC.html +0 -395
- data/doc/classes/Dnsruby/RR/LOC.src/M000376.html +0 -32
- data/doc/classes/Dnsruby/RR/LOC.src/M000377.html +0 -23
- data/doc/classes/Dnsruby/RR/LOC.src/M000378.html +0 -25
- data/doc/classes/Dnsruby/RR/LOC.src/M000379.html +0 -21
- data/doc/classes/Dnsruby/RR/LOC.src/M000380.html +0 -20
- data/doc/classes/Dnsruby/RR/LOC.src/M000381.html +0 -23
- data/doc/classes/Dnsruby/RR/MB.html +0 -150
- data/doc/classes/Dnsruby/RR/MG.html +0 -150
- data/doc/classes/Dnsruby/RR/MINFO.html +0 -156
- data/doc/classes/Dnsruby/RR/MR.html +0 -150
- data/doc/classes/Dnsruby/RR/MX.html +0 -155
- data/doc/classes/Dnsruby/RR/NAPTR.html +0 -190
- data/doc/classes/Dnsruby/RR/NS.html +0 -151
- data/doc/classes/Dnsruby/RR/NSAP.html +0 -293
- data/doc/classes/Dnsruby/RR/NSAP.src/M000446.html +0 -19
- data/doc/classes/Dnsruby/RR/NSAP.src/M000447.html +0 -19
- data/doc/classes/Dnsruby/RR/NSAP.src/M000448.html +0 -22
- data/doc/classes/Dnsruby/RR/NSAP.src/M000449.html +0 -31
- data/doc/classes/Dnsruby/RR/NSEC.html +0 -301
- data/doc/classes/Dnsruby/RR/NSEC.src/M000382.html +0 -19
- data/doc/classes/Dnsruby/RR/NSEC.src/M000383.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC.src/M000384.html +0 -34
- data/doc/classes/Dnsruby/RR/NSEC.src/M000385.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC.src/M000386.html +0 -75
- data/doc/classes/Dnsruby/RR/NSEC.src/M000387.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC.src/M000388.html +0 -92
- data/doc/classes/Dnsruby/RR/NSEC.src/M000389.html +0 -23
- data/doc/classes/Dnsruby/RR/NSEC3.html +0 -366
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000438.html +0 -28
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000439.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000440.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000441.html +0 -22
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000442.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000443.html +0 -21
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000444.html +0 -21
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000445.html +0 -29
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.html +0 -279
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000430.html +0 -28
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000431.html +0 -18
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000432.html +0 -22
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000433.html +0 -21
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000434.html +0 -25
- data/doc/classes/Dnsruby/RR/PTR.html +0 -132
- data/doc/classes/Dnsruby/RR/RP.html +0 -183
- data/doc/classes/Dnsruby/RR/RP.src/M000435.html +0 -19
- data/doc/classes/Dnsruby/RR/RRSIG.html +0 -372
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000450.html +0 -26
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000451.html +0 -28
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000452.html +0 -23
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000453.html +0 -23
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000454.html +0 -46
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000455.html +0 -50
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000456.html +0 -18
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000457.html +0 -27
- data/doc/classes/Dnsruby/RR/RT.html +0 -155
- data/doc/classes/Dnsruby/RR/SOA.html +0 -233
- data/doc/classes/Dnsruby/RR/SOA.src/M000419.html +0 -24
- data/doc/classes/Dnsruby/RR/SOA.src/M000420.html +0 -27
- data/doc/classes/Dnsruby/RR/SPF.html +0 -138
- data/doc/classes/Dnsruby/RR/TKEY.html +0 -313
- data/doc/classes/Dnsruby/RR/TKEY.src/M000372.html +0 -19
- data/doc/classes/Dnsruby/RR/TKEY.src/M000373.html +0 -29
- data/doc/classes/Dnsruby/RR/TKEY.src/M000374.html +0 -21
- data/doc/classes/Dnsruby/RR/TKEY.src/M000375.html +0 -29
- data/doc/classes/Dnsruby/RR/TSIG.html +0 -524
- data/doc/classes/Dnsruby/RR/TSIG.src/M000421.html +0 -24
- data/doc/classes/Dnsruby/RR/TSIG.src/M000422.html +0 -32
- data/doc/classes/Dnsruby/RR/TSIG.src/M000423.html +0 -54
- data/doc/classes/Dnsruby/RR/TSIG.src/M000424.html +0 -121
- data/doc/classes/Dnsruby/RR/TSIG.src/M000425.html +0 -33
- data/doc/classes/Dnsruby/RR/TSIG.src/M000426.html +0 -25
- data/doc/classes/Dnsruby/RR/TSIG.src/M000427.html +0 -36
- data/doc/classes/Dnsruby/RR/TSIG.src/M000428.html +0 -22
- data/doc/classes/Dnsruby/RR/TSIG.src/M000429.html +0 -29
- data/doc/classes/Dnsruby/RR/TXT.html +0 -233
- data/doc/classes/Dnsruby/RR/TXT.src/M000414.html +0 -18
- data/doc/classes/Dnsruby/RR/TXT.src/M000415.html +0 -18
- data/doc/classes/Dnsruby/RR/TXT.src/M000416.html +0 -20
- data/doc/classes/Dnsruby/RR/TXT.src/M000417.html +0 -27
- data/doc/classes/Dnsruby/RR/TXT.src/M000418.html +0 -25
- data/doc/classes/Dnsruby/RR/X25.html +0 -203
- data/doc/classes/Dnsruby/RR/X25.src/M000411.html +0 -18
- data/doc/classes/Dnsruby/RR/X25.src/M000412.html +0 -18
- data/doc/classes/Dnsruby/RR/X25.src/M000413.html +0 -22
- data/doc/classes/Dnsruby/RRSet.html +0 -400
- data/doc/classes/Dnsruby/RRSet.src/M000575.html +0 -23
- data/doc/classes/Dnsruby/RRSet.src/M000576.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000577.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000578.html +0 -47
- data/doc/classes/Dnsruby/RRSet.src/M000579.html +0 -32
- data/doc/classes/Dnsruby/RRSet.src/M000580.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000581.html +0 -20
- data/doc/classes/Dnsruby/RRSet.src/M000582.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000583.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000584.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000585.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000586.html +0 -22
- data/doc/classes/Dnsruby/RRSet.src/M000587.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000588.html +0 -22
- data/doc/classes/Dnsruby/RRSet.src/M000589.html +0 -18
- data/doc/classes/Dnsruby/Recursor.html +0 -744
- data/doc/classes/Dnsruby/Recursor.src/M000639.html +0 -19
- data/doc/classes/Dnsruby/Recursor.src/M000640.html +0 -97
- data/doc/classes/Dnsruby/Recursor.src/M000641.html +0 -20
- data/doc/classes/Dnsruby/Recursor.src/M000642.html +0 -18
- data/doc/classes/Dnsruby/Recursor.src/M000643.html +0 -31
- data/doc/classes/Dnsruby/Recursor.src/M000644.html +0 -231
- data/doc/classes/Dnsruby/Refused.html +0 -119
- data/doc/classes/Dnsruby/Resolv.html +0 -401
- data/doc/classes/Dnsruby/Resolv.src/M000516.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000517.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000518.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000519.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000520.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000521.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000522.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000523.html +0 -19
- data/doc/classes/Dnsruby/Resolv.src/M000524.html +0 -20
- data/doc/classes/Dnsruby/Resolv.src/M000525.html +0 -29
- data/doc/classes/Dnsruby/Resolv.src/M000526.html +0 -19
- data/doc/classes/Dnsruby/Resolv.src/M000527.html +0 -20
- data/doc/classes/Dnsruby/Resolv.src/M000528.html +0 -25
- data/doc/classes/Dnsruby/ResolvError.html +0 -117
- data/doc/classes/Dnsruby/ResolvTimeout.html +0 -117
- data/doc/classes/Dnsruby/Resolver.html +0 -1114
- data/doc/classes/Dnsruby/Resolver.src/M000658.html +0 -24
- data/doc/classes/Dnsruby/Resolver.src/M000659.html +0 -27
- data/doc/classes/Dnsruby/Resolver.src/M000660.html +0 -28
- data/doc/classes/Dnsruby/Resolver.src/M000661.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000662.html +0 -51
- data/doc/classes/Dnsruby/Resolver.src/M000663.html +0 -25
- data/doc/classes/Dnsruby/Resolver.src/M000664.html +0 -22
- data/doc/classes/Dnsruby/Resolver.src/M000665.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000666.html +0 -20
- data/doc/classes/Dnsruby/Resolver.src/M000667.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000668.html +0 -21
- data/doc/classes/Dnsruby/Resolver.src/M000669.html +0 -21
- data/doc/classes/Dnsruby/Resolver.src/M000670.html +0 -27
- data/doc/classes/Dnsruby/Resolver.src/M000671.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000672.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000673.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000674.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000675.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000676.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000677.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000678.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000679.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000680.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000681.html +0 -26
- data/doc/classes/Dnsruby/Resolver.src/M000682.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000683.html +0 -23
- data/doc/classes/Dnsruby/Resolver.src/M000684.html +0 -18
- data/doc/classes/Dnsruby/ServFail.html +0 -119
- data/doc/classes/Dnsruby/SingleResolver.html +0 -801
- data/doc/classes/Dnsruby/SingleResolver.src/M000529.html +0 -18
- data/doc/classes/Dnsruby/SingleResolver.src/M000530.html +0 -24
- data/doc/classes/Dnsruby/SingleResolver.src/M000531.html +0 -36
- data/doc/classes/Dnsruby/SingleResolver.src/M000532.html +0 -18
- data/doc/classes/Dnsruby/SingleResolver.src/M000533.html +0 -19
- data/doc/classes/Dnsruby/SingleResolver.src/M000534.html +0 -58
- data/doc/classes/Dnsruby/SingleResolver.src/M000535.html +0 -19
- data/doc/classes/Dnsruby/SingleResolver.src/M000536.html +0 -19
- data/doc/classes/Dnsruby/SingleResolver.src/M000537.html +0 -25
- data/doc/classes/Dnsruby/SingleResolver.src/M000538.html +0 -57
- data/doc/classes/Dnsruby/SingleResolver.src/M000539.html +0 -21
- data/doc/classes/Dnsruby/SingleResolver.src/M000540.html +0 -19
- data/doc/classes/Dnsruby/SingleResolver.src/M000541.html +0 -26
- data/doc/classes/Dnsruby/SingleResolver.src/M000542.html +0 -26
- data/doc/classes/Dnsruby/SingleResolver.src/M000543.html +0 -36
- data/doc/classes/Dnsruby/SingleResolver.src/M000544.html +0 -21
- data/doc/classes/Dnsruby/SingleResolver.src/M000545.html +0 -31
- data/doc/classes/Dnsruby/SingleResolver.src/M000546.html +0 -47
- data/doc/classes/Dnsruby/SingleResolver.src/M000547.html +0 -35
- data/doc/classes/Dnsruby/SingleResolver.src/M000548.html +0 -24
- data/doc/classes/Dnsruby/SingleResolver.src/M000549.html +0 -21
- data/doc/classes/Dnsruby/TheLog.html +0 -188
- data/doc/classes/Dnsruby/TheLog.src/M000612.html +0 -18
- data/doc/classes/Dnsruby/TheLog.src/M000613.html +0 -18
- data/doc/classes/Dnsruby/TheLog.src/M000614.html +0 -18
- data/doc/classes/Dnsruby/Types.html +0 -441
- data/doc/classes/Dnsruby/Update.html +0 -368
- data/doc/classes/Dnsruby/Update.src/M000634.html +0 -32
- data/doc/classes/Dnsruby/Update.src/M000635.html +0 -36
- data/doc/classes/Dnsruby/Update.src/M000636.html +0 -32
- data/doc/classes/Dnsruby/Update.src/M000637.html +0 -41
- data/doc/classes/Dnsruby/Update.src/M000638.html +0 -34
- data/doc/classes/Dnsruby/VerifyError.html +0 -119
- data/doc/classes/Dnsruby/ZoneTransfer.html +0 -300
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000500.html +0 -18
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000501.html +0 -24
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000502.html +0 -35
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +0 -200
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000503.html +0 -19
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000504.html +0 -19
- data/doc/classes/DnssecTest.html +0 -242
- data/doc/classes/DnssecTest.src/M000235.html +0 -58
- data/doc/classes/DnssecTest.src/M000236.html +0 -28
- data/doc/classes/DnssecTest.src/M000237.html +0 -28
- data/doc/classes/DnssecTest.src/M000238.html +0 -28
- data/doc/classes/DnssecTest.src/M000239.html +0 -33
- data/doc/classes/DnssecTest.src/M000240.html +0 -24
- data/doc/classes/DnssecTest.src/M000241.html +0 -47
- data/doc/classes/DnssecTest.src/M000242.html +0 -30
- data/doc/classes/DsTest.html +0 -252
- data/doc/classes/DsTest.src/M000190.html +0 -25
- data/doc/classes/DsTest.src/M000191.html +0 -24
- data/doc/classes/DsTest.src/M000192.html +0 -26
- data/doc/classes/DsTest.src/M000193.html +0 -23
- data/doc/classes/DsTest.src/M000194.html +0 -31
- data/doc/classes/DsTest.src/M000195.html +0 -25
- data/doc/classes/Enumerable.html +0 -118
- data/doc/classes/Errno.html +0 -111
- data/doc/classes/Errno/ENOTEMPTY.html +0 -111
- data/doc/classes/EventMachineTestDeferrable.html +0 -212
- data/doc/classes/EventMachineTestDeferrable.src/M000100.html +0 -20
- data/doc/classes/EventMachineTestDeferrable.src/M000101.html +0 -19
- data/doc/classes/EventMachineTestDeferrable.src/M000102.html +0 -28
- data/doc/classes/EventMachineTestDeferrable.src/M000103.html +0 -29
- data/doc/classes/EventMachineTestDeferrable.src/M000104.html +0 -33
- data/doc/classes/EventMachineTestDeferrable.src/M000105.html +0 -32
- data/doc/classes/EventMachineTestResolver.html +0 -324
- data/doc/classes/EventMachineTestResolver.src/M000177.html +0 -21
- data/doc/classes/EventMachineTestResolver.src/M000178.html +0 -19
- data/doc/classes/EventMachineTestResolver.src/M000179.html +0 -20
- data/doc/classes/EventMachineTestResolver.src/M000180.html +0 -20
- data/doc/classes/EventMachineTestResolver.src/M000181.html +0 -24
- data/doc/classes/EventMachineTestResolver.src/M000182.html +0 -25
- data/doc/classes/EventMachineTestResolver.src/M000183.html +0 -31
- data/doc/classes/EventMachineTestResolver.src/M000184.html +0 -24
- data/doc/classes/EventMachineTestResolver.src/M000185.html +0 -39
- data/doc/classes/EventMachineTestResolver.src/M000186.html +0 -36
- data/doc/classes/EventMachineTestResolver.src/M000187.html +0 -32
- data/doc/classes/EventMachineTestResolver.src/M000188.html +0 -30
- data/doc/classes/EventMachineTestResolver.src/M000189.html +0 -22
- data/doc/classes/EventMachineTestSingleResolver.html +0 -227
- data/doc/classes/EventMachineTestSingleResolver.src/M000092.html +0 -21
- data/doc/classes/EventMachineTestSingleResolver.src/M000093.html +0 -19
- data/doc/classes/EventMachineTestSingleResolver.src/M000094.html +0 -31
- data/doc/classes/EventMachineTestSingleResolver.src/M000095.html +0 -33
- data/doc/classes/EventMachineTestSingleResolver.src/M000096.html +0 -33
- data/doc/classes/EventMachineTestSingleResolver.src/M000097.html +0 -32
- data/doc/classes/EventMachineTestSingleResolver.src/M000098.html +0 -23
- data/doc/classes/File.html +0 -166
- data/doc/classes/File.src/M000336.html +0 -20
- data/doc/classes/File.src/M000337.html +0 -20
- data/doc/classes/File.src/M000338.html +0 -18
- data/doc/classes/FileOperations.html +0 -375
- data/doc/classes/FileOperations.src/M000685.html +0 -31
- data/doc/classes/FileOperations.src/M000686.html +0 -20
- data/doc/classes/FileOperations.src/M000687.html +0 -20
- data/doc/classes/FileOperations.src/M000688.html +0 -24
- data/doc/classes/FileOperations.src/M000689.html +0 -34
- data/doc/classes/FileOperations.src/M000690.html +0 -27
- data/doc/classes/FileOperations.src/M000691.html +0 -21
- data/doc/classes/FileOperations.src/M000692.html +0 -19
- data/doc/classes/FileOperations.src/M000693.html +0 -40
- data/doc/classes/FileOperations.src/M000694.html +0 -19
- data/doc/classes/FileOperations.src/M000695.html +0 -20
- data/doc/classes/FileOperations.src/M000696.html +0 -18
- data/doc/classes/FileOperations.src/M000697.html +0 -18
- data/doc/classes/FileOperations.src/M000698.html +0 -18
- data/doc/classes/FileOperations.src/M000699.html +0 -20
- data/doc/classes/FileOperations.src/M000700.html +0 -20
- data/doc/classes/HookScriptAPI.html +0 -308
- data/doc/classes/HookScriptAPI.src/M000339.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000341.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000342.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000343.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000344.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000345.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000346.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000347.html +0 -18
- data/doc/classes/HookScriptAPI.src/M000348.html +0 -20
- data/doc/classes/HookScriptAPI.src/M000349.html +0 -20
- data/doc/classes/HookScriptAPI.src/M000350.html +0 -20
- data/doc/classes/Installer.html +0 -1148
- data/doc/classes/Installer.src/M000243.html +0 -21
- data/doc/classes/Installer.src/M000244.html +0 -18
- data/doc/classes/Installer.src/M000245.html +0 -17
- data/doc/classes/Installer.src/M000246.html +0 -18
- data/doc/classes/Installer.src/M000247.html +0 -18
- data/doc/classes/Installer.src/M000248.html +0 -18
- data/doc/classes/Installer.src/M000249.html +0 -18
- data/doc/classes/Installer.src/M000250.html +0 -18
- data/doc/classes/Installer.src/M000251.html +0 -23
- data/doc/classes/Installer.src/M000252.html +0 -18
- data/doc/classes/Installer.src/M000255.html +0 -18
- data/doc/classes/Installer.src/M000259.html +0 -18
- data/doc/classes/Installer.src/M000260.html +0 -18
- data/doc/classes/Installer.src/M000261.html +0 -20
- data/doc/classes/Installer.src/M000263.html +0 -18
- data/doc/classes/Installer.src/M000267.html +0 -36
- data/doc/classes/Installer.src/M000268.html +0 -25
- data/doc/classes/Installer.src/M000269.html +0 -24
- data/doc/classes/Installer.src/M000270.html +0 -19
- data/doc/classes/Installer.src/M000271.html +0 -18
- data/doc/classes/Installer.src/M000272.html +0 -18
- data/doc/classes/Installer.src/M000273.html +0 -21
- data/doc/classes/Installer.src/M000274.html +0 -18
- data/doc/classes/Installer.src/M000275.html +0 -20
- data/doc/classes/Installer.src/M000276.html +0 -18
- data/doc/classes/Installer.src/M000277.html +0 -21
- data/doc/classes/Installer.src/M000278.html +0 -18
- data/doc/classes/Installer.src/M000279.html +0 -22
- data/doc/classes/Installer.src/M000280.html +0 -18
- data/doc/classes/Installer.src/M000281.html +0 -23
- data/doc/classes/Installer.src/M000282.html +0 -18
- data/doc/classes/Installer.src/M000283.html +0 -20
- data/doc/classes/Installer.src/M000284.html +0 -19
- data/doc/classes/Installer.src/M000285.html +0 -19
- data/doc/classes/Installer.src/M000286.html +0 -20
- data/doc/classes/Installer.src/M000287.html +0 -30
- data/doc/classes/Installer.src/M000288.html +0 -20
- data/doc/classes/Installer.src/M000294.html +0 -19
- data/doc/classes/Installer.src/M000295.html +0 -20
- data/doc/classes/Installer.src/M000298.html +0 -19
- data/doc/classes/Installer.src/M000302.html +0 -26
- data/doc/classes/Installer.src/M000303.html +0 -25
- data/doc/classes/Installer.src/M000304.html +0 -29
- data/doc/classes/Installer.src/M000305.html +0 -26
- data/doc/classes/Installer/Shebang.html +0 -202
- data/doc/classes/Installer/Shebang.src/M000306.html +0 -23
- data/doc/classes/Installer/Shebang.src/M000307.html +0 -19
- data/doc/classes/Installer/Shebang.src/M000308.html +0 -19
- data/doc/classes/Installer/Shebang.src/M000309.html +0 -18
- data/doc/classes/Nsec3ParamTest.html +0 -172
- data/doc/classes/Nsec3ParamTest.src/M000233.html +0 -26
- data/doc/classes/Nsec3ParamTest.src/M000234.html +0 -24
- data/doc/classes/Nsec3Test.html +0 -202
- data/doc/classes/Nsec3Test.src/M000207.html +0 -27
- data/doc/classes/Nsec3Test.src/M000208.html +0 -24
- data/doc/classes/Nsec3Test.src/M000209.html +0 -39
- data/doc/classes/Nsec3Test.src/M000210.html +0 -23
- data/doc/classes/NsecTest.html +0 -187
- data/doc/classes/NsecTest.src/M000333.html +0 -23
- data/doc/classes/NsecTest.src/M000334.html +0 -24
- data/doc/classes/NsecTest.src/M000335.html +0 -23
- data/doc/classes/RrsetTest.html +0 -137
- data/doc/classes/RrsetTest.src/M000310.html +0 -68
- data/doc/classes/RrsigTest.html +0 -150
- data/doc/classes/RrsigTest.src/M000099.html +0 -35
- data/doc/classes/SetupError.html +0 -111
- data/doc/classes/TestAResolverFile.html +0 -152
- data/doc/classes/TestAResolverFile.src/M000205.html +0 -18
- data/doc/classes/TestAResolverFile.src/M000206.html +0 -33
- data/doc/classes/TestAxfr.html +0 -137
- data/doc/classes/TestAxfr.src/M000106.html +0 -23
- data/doc/classes/TestDNS.html +0 -257
- data/doc/classes/TestDNS.src/M000196.html +0 -18
- data/doc/classes/TestDNS.src/M000197.html +0 -18
- data/doc/classes/TestDNS.src/M000198.html +0 -53
- data/doc/classes/TestDNS.src/M000199.html +0 -19
- data/doc/classes/TestDNS.src/M000200.html +0 -18
- data/doc/classes/TestDNS.src/M000201.html +0 -32
- data/doc/classes/TestDNS.src/M000202.html +0 -74
- data/doc/classes/TestDNS.src/M000203.html +0 -41
- data/doc/classes/TestDNS.src/M000204.html +0 -67
- data/doc/classes/TestDnsruby.html +0 -137
- data/doc/classes/TestDnsruby.src/M000211.html +0 -36
- data/doc/classes/TestEscapedChars.html +0 -152
- data/doc/classes/TestEscapedChars.src/M000014.html +0 -243
- data/doc/classes/TestEscapedChars.src/M000015.html +0 -248
- data/doc/classes/TestEventMachineSoak.html +0 -227
- data/doc/classes/TestEventMachineSoak.src/M000319.html +0 -19
- data/doc/classes/TestEventMachineSoak.src/M000320.html +0 -18
- data/doc/classes/TestEventMachineSoak.src/M000321.html +0 -18
- data/doc/classes/TestEventMachineSoak.src/M000322.html +0 -33
- data/doc/classes/TestEventMachineSoak.src/M000323.html +0 -34
- data/doc/classes/TestEventMachineSoak.src/M000324.html +0 -33
- data/doc/classes/TestEventMachineSoak.src/M000325.html +0 -33
- data/doc/classes/TestHeader.html +0 -137
- data/doc/classes/TestHeader.src/M000091.html +0 -98
- data/doc/classes/TestMisc.html +0 -167
- data/doc/classes/TestMisc.src/M000011.html +0 -28
- data/doc/classes/TestMisc.src/M000012.html +0 -50
- data/doc/classes/TestMisc.src/M000013.html +0 -84
- data/doc/classes/TestName.html +0 -182
- data/doc/classes/TestName.src/M000218.html +0 -24
- data/doc/classes/TestName.src/M000219.html +0 -23
- data/doc/classes/TestName.src/M000220.html +0 -21
- data/doc/classes/TestName.src/M000221.html +0 -21
- data/doc/classes/TestPacket.html +0 -182
- data/doc/classes/TestPacket.src/M000229.html +0 -154
- data/doc/classes/TestPacket.src/M000230.html +0 -25
- data/doc/classes/TestPacket.src/M000231.html +0 -23
- data/doc/classes/TestPacket.src/M000232.html +0 -32
- data/doc/classes/TestPacketUniquePush.html +0 -140
- data/doc/classes/TestPacketUniquePush.src/M000318.html +0 -81
- data/doc/classes/TestQuestion.html +0 -137
- data/doc/classes/TestQuestion.src/M000090.html +0 -45
- data/doc/classes/TestQueue.html +0 -137
- data/doc/classes/TestQueue.src/M000089.html +0 -27
- data/doc/classes/TestRR.html +0 -137
- data/doc/classes/TestRR.src/M000217.html +0 -256
- data/doc/classes/TestRecur.html +0 -137
- data/doc/classes/TestRecur.src/M000176.html +0 -20
- data/doc/classes/TestResOpt.html +0 -227
- data/doc/classes/TestResOpt.src/M000311.html +0 -37
- data/doc/classes/TestResOpt.src/M000312.html +0 -19
- data/doc/classes/TestResOpt.src/M000313.html +0 -30
- data/doc/classes/TestResOpt.src/M000314.html +0 -37
- data/doc/classes/TestResOpt.src/M000315.html +0 -45
- data/doc/classes/TestResOpt.src/M000316.html +0 -36
- data/doc/classes/TestResOpt.src/M000317.html +0 -60
- data/doc/classes/TestResolver.html +0 -357
- data/doc/classes/TestResolver.src/M000077.html +0 -18
- data/doc/classes/TestResolver.src/M000078.html +0 -20
- data/doc/classes/TestResolver.src/M000079.html +0 -20
- data/doc/classes/TestResolver.src/M000080.html +0 -24
- data/doc/classes/TestResolver.src/M000081.html +0 -25
- data/doc/classes/TestResolver.src/M000082.html +0 -31
- data/doc/classes/TestResolver.src/M000083.html +0 -24
- data/doc/classes/TestResolver.src/M000084.html +0 -42
- data/doc/classes/TestResolver.src/M000085.html +0 -38
- data/doc/classes/TestResolver.src/M000086.html +0 -34
- data/doc/classes/TestResolver.src/M000087.html +0 -30
- data/doc/classes/TestResolver.src/M000088.html +0 -41
- data/doc/classes/TestResolverConfig.html +0 -205
- data/doc/classes/TestResolverConfig.src/M000225.html +0 -18
- data/doc/classes/TestResolverConfig.src/M000226.html +0 -37
- data/doc/classes/TestResolverConfig.src/M000227.html +0 -23
- data/doc/classes/TestResolverConfig.src/M000228.html +0 -22
- data/doc/classes/TestResolverEnv.html +0 -141
- data/doc/classes/TestResolverEnv.src/M000332.html +0 -44
- data/doc/classes/TestRrOpt.html +0 -182
- data/doc/classes/TestRrOpt.src/M000007.html +0 -33
- data/doc/classes/TestRrOpt.src/M000008.html +0 -46
- data/doc/classes/TestRrOpt.src/M000009.html +0 -23
- data/doc/classes/TestRrOpt.src/M000010.html +0 -34
- data/doc/classes/TestRrTest.html +0 -155
- data/doc/classes/TestRrTest.src/M000224.html +0 -77
- data/doc/classes/TestRrUnknown.html +0 -167
- data/doc/classes/TestRrUnknown.src/M000074.html +0 -41
- data/doc/classes/TestRrUnknown.src/M000075.html +0 -39
- data/doc/classes/TestRrUnknown.src/M000076.html +0 -42
- data/doc/classes/TestSingleResolver.html +0 -293
- data/doc/classes/TestSingleResolver.src/M000149.html +0 -18
- data/doc/classes/TestSingleResolver.src/M000150.html +0 -19
- data/doc/classes/TestSingleResolver.src/M000151.html +0 -28
- data/doc/classes/TestSingleResolver.src/M000152.html +0 -30
- data/doc/classes/TestSingleResolver.src/M000153.html +0 -55
- data/doc/classes/TestSingleResolver.src/M000154.html +0 -26
- data/doc/classes/TestSingleResolver.src/M000155.html +0 -23
- data/doc/classes/TestSingleResolver.src/M000156.html +0 -27
- data/doc/classes/TestSingleResolver.src/M000157.html +0 -39
- data/doc/classes/TestSingleResolverSoak.html +0 -223
- data/doc/classes/TestSingleResolverSoak.src/M000326.html +0 -18
- data/doc/classes/TestSingleResolverSoak.src/M000327.html +0 -18
- data/doc/classes/TestSingleResolverSoak.src/M000328.html +0 -57
- data/doc/classes/TestSingleResolverSoak.src/M000329.html +0 -64
- data/doc/classes/TestSingleResolverSoak.src/M000330.html +0 -25
- data/doc/classes/TestSingleResolverSoak.src/M000331.html +0 -63
- data/doc/classes/TestSoakBase.html +0 -172
- data/doc/classes/TestSoakBase.src/M000072.html +0 -68
- data/doc/classes/TestSoakBase.src/M000073.html +0 -66
- data/doc/classes/TestTKey.html +0 -152
- data/doc/classes/TestTKey.src/M000215.html +0 -18
- data/doc/classes/TestTKey.src/M000216.html +0 -65
- data/doc/classes/TestTSig.html +0 -309
- data/doc/classes/TestTSig.src/M000138.html +0 -18
- data/doc/classes/TestTSig.src/M000139.html +0 -20
- data/doc/classes/TestTSig.src/M000140.html +0 -26
- data/doc/classes/TestTSig.src/M000141.html +0 -69
- data/doc/classes/TestTSig.src/M000142.html +0 -21
- data/doc/classes/TestTSig.src/M000143.html +0 -60
- data/doc/classes/TestTSig.src/M000144.html +0 -33
- data/doc/classes/TestTSig.src/M000145.html +0 -20
- data/doc/classes/TestTSig.src/M000146.html +0 -24
- data/doc/classes/TestTSig.src/M000147.html +0 -54
- data/doc/classes/TestTSig.src/M000148.html +0 -23
- data/doc/classes/TestTcp.html +0 -152
- data/doc/classes/TestTcp.src/M000222.html +0 -21
- data/doc/classes/TestTcp.src/M000223.html +0 -23
- data/doc/classes/TestUpdate.html +0 -152
- data/doc/classes/TestUpdate.src/M000174.html +0 -20
- data/doc/classes/TestUpdate.src/M000175.html +0 -203
- data/doc/classes/ToplevelInstaller.html +0 -621
- data/doc/classes/ToplevelInstaller.src/M000107.html +0 -23
- data/doc/classes/ToplevelInstaller.src/M000108.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000109.html +0 -25
- data/doc/classes/ToplevelInstaller.src/M000110.html +0 -21
- data/doc/classes/ToplevelInstaller.src/M000111.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000112.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000113.html +0 -38
- data/doc/classes/ToplevelInstaller.src/M000114.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000115.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000116.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000117.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000118.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000119.html +0 -40
- data/doc/classes/ToplevelInstaller.src/M000120.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000121.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000122.html +0 -21
- data/doc/classes/ToplevelInstaller.src/M000128.html +0 -40
- data/doc/classes/ToplevelInstaller.src/M000129.html +0 -31
- data/doc/classes/ToplevelInstaller.src/M000130.html +0 -52
- data/doc/classes/ToplevelInstaller.src/M000131.html +0 -19
- data/doc/classes/ToplevelInstaller.src/M000132.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000133.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000134.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000135.html +0 -20
- data/doc/classes/ToplevelInstaller.src/M000136.html +0 -18
- data/doc/classes/ToplevelInstaller.src/M000137.html +0 -18
- data/doc/classes/ToplevelInstallerMulti.html +0 -398
- data/doc/classes/ToplevelInstallerMulti.src/M000158.html +0 -21
- data/doc/classes/ToplevelInstallerMulti.src/M000159.html +0 -21
- data/doc/classes/ToplevelInstallerMulti.src/M000160.html +0 -23
- data/doc/classes/ToplevelInstallerMulti.src/M000161.html +0 -29
- data/doc/classes/ToplevelInstallerMulti.src/M000162.html +0 -22
- data/doc/classes/ToplevelInstallerMulti.src/M000163.html +0 -21
- data/doc/classes/ToplevelInstallerMulti.src/M000164.html +0 -21
- data/doc/classes/ToplevelInstallerMulti.src/M000165.html +0 -20
- data/doc/classes/ToplevelInstallerMulti.src/M000166.html +0 -20
- data/doc/classes/ToplevelInstallerMulti.src/M000167.html +0 -20
- data/doc/classes/ToplevelInstallerMulti.src/M000168.html +0 -21
- data/doc/classes/ToplevelInstallerMulti.src/M000169.html +0 -21
- data/doc/classes/ToplevelInstallerMulti.src/M000170.html +0 -25
- data/doc/classes/ToplevelInstallerMulti.src/M000171.html +0 -18
- data/doc/classes/ToplevelInstallerMulti.src/M000172.html +0 -18
- data/doc/classes/ToplevelInstallerMulti.src/M000173.html +0 -18
- data/doc/created.rid +0 -1
- data/doc/files/demo/axfr_rb.html +0 -158
- data/doc/files/demo/check_soa_rb.html +0 -138
- data/doc/files/demo/check_zone_rb.html +0 -231
- data/doc/files/demo/check_zone_rb.src/M000001.html +0 -81
- data/doc/files/demo/check_zone_rb.src/M000002.html +0 -30
- data/doc/files/demo/check_zone_rb.src/M000003.html +0 -23
- data/doc/files/demo/check_zone_rb.src/M000004.html +0 -23
- data/doc/files/demo/check_zone_rb.src/M000005.html +0 -23
- data/doc/files/demo/example_recurse_rb.html +0 -115
- data/doc/files/demo/mresolv_rb.html +0 -130
- data/doc/files/demo/mx_rb.html +0 -108
- data/doc/files/demo/rubydig_rb.html +0 -128
- data/doc/files/demo/trace_dns_rb.html +0 -108
- data/doc/files/lib/Dnsruby/Cache_rb.html +0 -109
- data/doc/files/lib/Dnsruby/Config_rb.html +0 -101
- data/doc/files/lib/Dnsruby/DNS_rb.html +0 -110
- data/doc/files/lib/Dnsruby/Hosts_rb.html +0 -108
- data/doc/files/lib/Dnsruby/Recursor_rb.html +0 -101
- data/doc/files/lib/Dnsruby/Resolver_rb.html +0 -110
- data/doc/files/lib/Dnsruby/SingleResolver_rb.html +0 -109
- data/doc/files/lib/Dnsruby/TheLog_rb.html +0 -110
- data/doc/files/lib/Dnsruby/code_mapper_rb.html +0 -101
- data/doc/files/lib/Dnsruby/dnssec_rb.html +0 -107
- data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +0 -108
- data/doc/files/lib/Dnsruby/iana_ports_rb.html +0 -127
- data/doc/files/lib/Dnsruby/ipv4_rb.html +0 -101
- data/doc/files/lib/Dnsruby/ipv6_rb.html +0 -101
- data/doc/files/lib/Dnsruby/message_rb.html +0 -109
- data/doc/files/lib/Dnsruby/name_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/A_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/CERT_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/DLV_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/DNSKEY_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/DS_rb.html +0 -108
- data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/IN_rb.html +0 -112
- data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/LOC_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/MX_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/NSEC3PARAM_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/NSEC3_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/NSEC_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/OPT_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/PX_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/RP_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/RRSIG_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/RT_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/SOA_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/SPF_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/SRV_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +0 -114
- data/doc/files/lib/Dnsruby/resource/TXT_rb.html +0 -108
- data/doc/files/lib/Dnsruby/resource/X25_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +0 -101
- data/doc/files/lib/Dnsruby/resource/generic_rb.html +0 -132
- data/doc/files/lib/Dnsruby/resource/resource_rb.html +0 -110
- data/doc/files/lib/Dnsruby/select_thread_rb.html +0 -111
- data/doc/files/lib/Dnsruby/update_rb.html +0 -101
- data/doc/files/lib/Dnsruby/zone_transfer_rb.html +0 -101
- data/doc/files/lib/dnsruby_rb.html +0 -118
- data/doc/files/setup_rb.html +0 -148
- data/doc/files/setup_rb.src/M000006.html +0 -18
- data/doc/files/test/tc_axfr_rb.html +0 -110
- data/doc/files/test/tc_dns_rb.html +0 -117
- data/doc/files/test/tc_dnskey_rb.html +0 -109
- data/doc/files/test/tc_dnsruby_rb.html +0 -117
- data/doc/files/test/tc_dnssec_rb.html +0 -109
- data/doc/files/test/tc_ds_rb.html +0 -110
- data/doc/files/test/tc_escapedchars_rb.html +0 -117
- data/doc/files/test/tc_event_machine_deferrable_rb.html +0 -111
- data/doc/files/test/tc_event_machine_res_rb.html +0 -111
- data/doc/files/test/tc_event_machine_single_res_rb.html +0 -111
- data/doc/files/test/tc_event_machine_soak_rb.html +0 -113
- data/doc/files/test/tc_header_rb.html +0 -117
- data/doc/files/test/tc_misc_rb.html +0 -110
- data/doc/files/test/tc_name_rb.html +0 -117
- data/doc/files/test/tc_nsec3_rb.html +0 -109
- data/doc/files/test/tc_nsec3param_rb.html +0 -109
- data/doc/files/test/tc_nsec_rb.html +0 -109
- data/doc/files/test/tc_packet_rb.html +0 -117
- data/doc/files/test/tc_packet_unique_push_rb.html +0 -117
- data/doc/files/test/tc_question_rb.html +0 -117
- data/doc/files/test/tc_queue_rb.html +0 -109
- data/doc/files/test/tc_recur_rb.html +0 -109
- data/doc/files/test/tc_res_config_rb.html +0 -110
- data/doc/files/test/tc_res_env_rb.html +0 -117
- data/doc/files/test/tc_res_file_rb.html +0 -110
- data/doc/files/test/tc_res_opt_rb.html +0 -117
- data/doc/files/test/tc_resolver_rb.html +0 -117
- data/doc/files/test/tc_rr-opt_rb.html +0 -118
- data/doc/files/test/tc_rr-txt_rb.html +0 -117
- data/doc/files/test/tc_rr-unknown_rb.html +0 -110
- data/doc/files/test/tc_rr_rb.html +0 -117
- data/doc/files/test/tc_rrset_rb.html +0 -109
- data/doc/files/test/tc_rrsig_rb.html +0 -109
- data/doc/files/test/tc_single_resolver_rb.html +0 -117
- data/doc/files/test/tc_soak_base_rb.html +0 -110
- data/doc/files/test/tc_soak_rb.html +0 -121
- data/doc/files/test/tc_tcp_rb.html +0 -110
- data/doc/files/test/tc_tkey_rb.html +0 -111
- data/doc/files/test/tc_tsig_rb.html +0 -111
- data/doc/files/test/tc_update_rb.html +0 -117
- data/doc/files/test/ts_dnsruby_rb.html +0 -109
- data/doc/files/test/ts_offline_rb.html +0 -133
- data/doc/files/test/ts_online_rb.html +0 -128
- data/doc/fr_method_index.html +0 -726
data/lib/Dnsruby/Config.rb
CHANGED
|
@@ -33,6 +33,10 @@ module Dnsruby
|
|
|
33
33
|
# If apply_search_list is true, then each member of the search list
|
|
34
34
|
# is appended to the name.
|
|
35
35
|
#
|
|
36
|
+
# The Config class has now been modified for lazy loading. Previously, the config
|
|
37
|
+
# was loaded when a Resolver was instantiated. Now, the config is only loaded if
|
|
38
|
+
# a query is performed (or a config parameter requested on) a Resolver which has
|
|
39
|
+
# not yet been configured.
|
|
36
40
|
class Config
|
|
37
41
|
#--
|
|
38
42
|
#@TODO@ Switches for :
|
|
@@ -42,13 +46,23 @@ module Dnsruby
|
|
|
42
46
|
#++
|
|
43
47
|
|
|
44
48
|
# The list of nameservers to query
|
|
45
|
-
|
|
49
|
+
def nameserver
|
|
50
|
+
if (!@configured)
|
|
51
|
+
parse_config
|
|
52
|
+
end
|
|
53
|
+
return @nameserver
|
|
54
|
+
end
|
|
46
55
|
# Should the search list be applied?
|
|
47
56
|
attr_accessor :apply_search_list
|
|
48
57
|
# Should the default domain be applied?
|
|
49
58
|
attr_accessor :apply_domain
|
|
50
59
|
# The minimum number of labels in the query name (if it is not absolute) before it is considered complete
|
|
51
|
-
|
|
60
|
+
def ndots
|
|
61
|
+
if (!@configured)
|
|
62
|
+
parse_config
|
|
63
|
+
end
|
|
64
|
+
return @ndots
|
|
65
|
+
end
|
|
52
66
|
|
|
53
67
|
# Set the config. Parameter can be :
|
|
54
68
|
#
|
|
@@ -69,12 +83,14 @@ module Dnsruby
|
|
|
69
83
|
# Create a new Config with system default values
|
|
70
84
|
def initialize()
|
|
71
85
|
@mutex = Mutex.new
|
|
72
|
-
|
|
86
|
+
@configured = false
|
|
87
|
+
# parse_config
|
|
73
88
|
end
|
|
74
89
|
# Reset the config to default values
|
|
75
90
|
def Config.reset
|
|
76
91
|
c = Config.new
|
|
77
|
-
|
|
92
|
+
@configured = false
|
|
93
|
+
# c.parse_config
|
|
78
94
|
end
|
|
79
95
|
|
|
80
96
|
def parse_config(config_info=nil) #:nodoc: all
|
|
@@ -109,8 +125,11 @@ module Dnsruby
|
|
|
109
125
|
@apply_search_list = config_hash[:apply_search_list] if config_hash.include? :apply_search_list
|
|
110
126
|
@apply_domain= config_hash[:apply_domain] if config_hash.include? :apply_domain
|
|
111
127
|
dom = config_hash[:domain] if config_hash.include? :domain
|
|
112
|
-
|
|
113
|
-
|
|
128
|
+
|
|
129
|
+
if (!@configured)
|
|
130
|
+
send("nameserver=",ns)
|
|
131
|
+
end
|
|
132
|
+
@configured = true
|
|
114
133
|
send("search=",s)
|
|
115
134
|
send("ndots=",nd)
|
|
116
135
|
send("domain=",dom)
|
|
@@ -120,6 +139,7 @@ module Dnsruby
|
|
|
120
139
|
|
|
121
140
|
# Set the default domain
|
|
122
141
|
def domain=(dom)
|
|
142
|
+
# @configured = true
|
|
123
143
|
if (dom)
|
|
124
144
|
if !dom.kind_of?(String)
|
|
125
145
|
raise ArgumentError.new("invalid domain config: #{@domain.inspect}")
|
|
@@ -132,6 +152,7 @@ module Dnsruby
|
|
|
132
152
|
|
|
133
153
|
# Set ndots
|
|
134
154
|
def ndots=(nd)
|
|
155
|
+
@configured = true
|
|
135
156
|
@ndots=nd
|
|
136
157
|
if !@ndots.kind_of?(Integer)
|
|
137
158
|
raise ArgumentError.new("invalid ndots config: #{@ndots.inspect}")
|
|
@@ -140,6 +161,7 @@ module Dnsruby
|
|
|
140
161
|
|
|
141
162
|
# Set the default search path
|
|
142
163
|
def search=(s)
|
|
164
|
+
@configured = true
|
|
143
165
|
@search=s
|
|
144
166
|
if @search
|
|
145
167
|
if @search.class == Array
|
|
@@ -165,12 +187,27 @@ module Dnsruby
|
|
|
165
187
|
|
|
166
188
|
def check_ns(ns) #:nodoc: all
|
|
167
189
|
if !ns.kind_of?(Array) ||
|
|
168
|
-
!ns.all? {|n| (String === n || IPv4 === n || IPv6 === n)}
|
|
190
|
+
!ns.all? {|n| (Name === n || String === n || IPv4 === n || IPv6 === n)}
|
|
169
191
|
raise ArgumentError.new("invalid nameserver config: #{ns.inspect}")
|
|
170
|
-
end
|
|
171
|
-
ns.each_index do |i|
|
|
172
|
-
ns[i]=Config.resolve_server(ns[i])
|
|
173
192
|
end
|
|
193
|
+
ns.each {|n|
|
|
194
|
+
if (String ===n)
|
|
195
|
+
# Make sure we can make a Name or an address from it
|
|
196
|
+
begin
|
|
197
|
+
a = IPv4.create(n)
|
|
198
|
+
rescue ArgumentError
|
|
199
|
+
begin
|
|
200
|
+
a = IPv6.create(n)
|
|
201
|
+
rescue ArgumentError
|
|
202
|
+
begin
|
|
203
|
+
a = Name.create(n)
|
|
204
|
+
rescue ArgumentError
|
|
205
|
+
raise ArgumentError.new("Can't interpret #{n} as IPv4, IPv6 or Name")
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
}
|
|
174
211
|
end
|
|
175
212
|
|
|
176
213
|
# Add a nameserver to the list of nameservers.
|
|
@@ -178,6 +215,7 @@ module Dnsruby
|
|
|
178
215
|
# Can take either a single String or an array of Strings.
|
|
179
216
|
# The new nameservers are added at a higher priority.
|
|
180
217
|
def add_nameserver(ns)
|
|
218
|
+
@configured = true
|
|
181
219
|
if (ns.kind_of?String)
|
|
182
220
|
ns=[ns]
|
|
183
221
|
end
|
|
@@ -191,6 +229,7 @@ module Dnsruby
|
|
|
191
229
|
|
|
192
230
|
# Set the config to point to a single nameserver
|
|
193
231
|
def nameserver=(ns)
|
|
232
|
+
@configured = true
|
|
194
233
|
check_ns(ns)
|
|
195
234
|
# @nameserver = ['0.0.0.0'] if (@nameserver.class != Array || @nameserver.empty?)
|
|
196
235
|
# Now go through and ensure that all ns point to IP addresses, not domain names
|
|
@@ -203,6 +242,9 @@ module Dnsruby
|
|
|
203
242
|
# If it's an IP address, then use that for server
|
|
204
243
|
# If it's a name, then we'll need to resolve it first
|
|
205
244
|
server=ns
|
|
245
|
+
if (Name === ns)
|
|
246
|
+
ns = ns.to_s
|
|
247
|
+
end
|
|
206
248
|
begin
|
|
207
249
|
addr = IPv4.create(ns)
|
|
208
250
|
server = ns
|
|
@@ -217,7 +259,8 @@ module Dnsruby
|
|
|
217
259
|
server = addr
|
|
218
260
|
rescue Exception => e
|
|
219
261
|
Dnsruby.log.error{"Can't make sense of nameserver : #{server}, exception : #{e}"}
|
|
220
|
-
raise ArgumentError.new("Can't make sense of nameserver : #{server}, exception : #{e}")
|
|
262
|
+
# raise ArgumentError.new("Can't make sense of nameserver : #{server}, exception : #{e}")
|
|
263
|
+
return nil
|
|
221
264
|
end
|
|
222
265
|
end
|
|
223
266
|
end
|
|
@@ -271,6 +314,9 @@ module Dnsruby
|
|
|
271
314
|
end
|
|
272
315
|
|
|
273
316
|
def to_s
|
|
317
|
+
if (!@configured)
|
|
318
|
+
parse_config
|
|
319
|
+
end
|
|
274
320
|
ret = "Config - nameservers : "
|
|
275
321
|
@nameserver.each {|n| ret += n.to_s + ", "}
|
|
276
322
|
domain_string="empty"
|
|
@@ -311,6 +357,9 @@ module Dnsruby
|
|
|
311
357
|
|
|
312
358
|
# Return the search path
|
|
313
359
|
def search
|
|
360
|
+
if (!@configured)
|
|
361
|
+
parse_config
|
|
362
|
+
end
|
|
314
363
|
search = []
|
|
315
364
|
@search.each do |s|
|
|
316
365
|
search.push(Name.new(s).to_s)
|
|
@@ -320,6 +369,9 @@ module Dnsruby
|
|
|
320
369
|
|
|
321
370
|
# Return the default domain
|
|
322
371
|
def domain
|
|
372
|
+
if (!@configured)
|
|
373
|
+
parse_config
|
|
374
|
+
end
|
|
323
375
|
if (@domain==nil)
|
|
324
376
|
return nil
|
|
325
377
|
end
|
|
@@ -333,8 +385,17 @@ module Dnsruby
|
|
|
333
385
|
return nil
|
|
334
386
|
end
|
|
335
387
|
end
|
|
388
|
+
|
|
389
|
+
def get_ready
|
|
390
|
+
if (!@configured)
|
|
391
|
+
parse_config
|
|
392
|
+
end
|
|
393
|
+
end
|
|
336
394
|
|
|
337
395
|
def generate_candidates(name) #:nodoc: all
|
|
396
|
+
if !@configured
|
|
397
|
+
parse_config
|
|
398
|
+
end
|
|
338
399
|
candidates = []
|
|
339
400
|
name = Name.create(name)
|
|
340
401
|
if name.absolute?
|
data/lib/Dnsruby/DNS.rb
CHANGED
|
@@ -117,6 +117,9 @@ module Dnsruby
|
|
|
117
117
|
@config = Config.new()
|
|
118
118
|
@config.set_config_info(config_info)
|
|
119
119
|
@resolver = Resolver.new(@config)
|
|
120
|
+
# if (@resolver.single_resolvers.length == 0)
|
|
121
|
+
# raise ArgumentError.new("Must pass at least one valid resolver address")
|
|
122
|
+
# end
|
|
120
123
|
end
|
|
121
124
|
|
|
122
125
|
attr_reader :config
|
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'Dnsruby/select_thread'
|
|
17
|
+
require 'Dnsruby/iana_ports'
|
|
18
|
+
module Dnsruby
|
|
19
|
+
class PacketSender # :nodoc: all
|
|
20
|
+
@@authoritative_cache = Cache.new
|
|
21
|
+
@@recursive_cache = Cache.new
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def PacketSender.cache(query, response)
|
|
25
|
+
return if response.cached
|
|
26
|
+
# ONLY cache the response if it is not an update response
|
|
27
|
+
question = query.question()[0]
|
|
28
|
+
if (query.do_caching && (query.class != Update) &&
|
|
29
|
+
(question.qtype != Types.AXFR) && (question.qtype != Types.IXFR) &&
|
|
30
|
+
(response.rcode == RCode.NOERROR) &&(!response.tsig) &&
|
|
31
|
+
(query.class != Update) &&
|
|
32
|
+
(response.header.ancount > 0))
|
|
33
|
+
## @TODO@ What about TSIG-signed responses?
|
|
34
|
+
# Don't cache any packets with "*" in the query name! (RFC1034 sec 4.3.3)
|
|
35
|
+
if (!question.qname.to_s.include?"*")
|
|
36
|
+
# Now cache response RRSets
|
|
37
|
+
if (query.header.rd)
|
|
38
|
+
PacketSender.cache_recursive(response);
|
|
39
|
+
else
|
|
40
|
+
PacketSender.cache_authoritative(response);
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
def PacketSender.cache_authoritative(answer)
|
|
46
|
+
return if !answer.header.aa
|
|
47
|
+
@@authoritative_cache.add(answer)
|
|
48
|
+
end
|
|
49
|
+
def PacketSender.cache_recursive(answer)
|
|
50
|
+
@@recursive_cache.add(answer)
|
|
51
|
+
end
|
|
52
|
+
def PacketSender.clear_caches
|
|
53
|
+
@@recursive_cache.clear
|
|
54
|
+
@@authoritative_cache.clear
|
|
55
|
+
end
|
|
56
|
+
attr_accessor :packet_timeout
|
|
57
|
+
|
|
58
|
+
# The port on the resolver to send queries to.
|
|
59
|
+
#
|
|
60
|
+
# Defaults to 53
|
|
61
|
+
attr_accessor :port
|
|
62
|
+
|
|
63
|
+
# Use TCP rather than UDP as the transport.
|
|
64
|
+
#
|
|
65
|
+
# Defaults to false
|
|
66
|
+
attr_accessor :use_tcp
|
|
67
|
+
|
|
68
|
+
# The TSIG record to sign/verify messages with
|
|
69
|
+
attr_reader :tsig
|
|
70
|
+
|
|
71
|
+
# Don't worry if the response is truncated - return it anyway.
|
|
72
|
+
#
|
|
73
|
+
# Defaults to false
|
|
74
|
+
attr_accessor :ignore_truncation
|
|
75
|
+
|
|
76
|
+
# The source address to send queries from
|
|
77
|
+
#
|
|
78
|
+
# Defaults to localhost
|
|
79
|
+
attr_accessor :src_address
|
|
80
|
+
|
|
81
|
+
# should the Recursion Desired bit be set on queries?
|
|
82
|
+
#
|
|
83
|
+
# Defaults to true
|
|
84
|
+
attr_accessor :recurse
|
|
85
|
+
|
|
86
|
+
# The max UDP packet size
|
|
87
|
+
#
|
|
88
|
+
# Defaults to 512
|
|
89
|
+
attr_reader :udp_size
|
|
90
|
+
|
|
91
|
+
# The address of the resolver to send queries to
|
|
92
|
+
attr_reader :server
|
|
93
|
+
|
|
94
|
+
# Use DNSSEC for this PacketSender
|
|
95
|
+
# dnssec defaults to ON
|
|
96
|
+
attr_reader :dnssec
|
|
97
|
+
|
|
98
|
+
#Sets the TSIG to sign outgoing messages with.
|
|
99
|
+
#Pass in either a Dnsruby::RR::TSIG, or a key_name and key (or just a key)
|
|
100
|
+
#Pass in nil to stop tsig signing.
|
|
101
|
+
#It is possible for client code to sign packets prior to sending - see
|
|
102
|
+
#Dnsruby::RR::TSIG#apply and Dnsruby::Message#sign
|
|
103
|
+
#Note that pre-signed packets will not be signed by PacketSender.
|
|
104
|
+
#* res.tsig=(tsig_rr)
|
|
105
|
+
#* res.tsig=(key_name, key)
|
|
106
|
+
#* res.tsig=nil # Stop the resolver from signing
|
|
107
|
+
def tsig=(*args)
|
|
108
|
+
@tsig = Resolver.get_tsig(args)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def dnssec=(on)
|
|
112
|
+
@dnssec=on
|
|
113
|
+
if (on)
|
|
114
|
+
# Set the UDP size (RFC 4035 section 4.1)
|
|
115
|
+
if (udp_packet_size < Resolver::MinDnssecUdpSize)
|
|
116
|
+
self.udp_size = Resolver::MinDnssecUdpSize
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def udp_size=(size)
|
|
123
|
+
@udp_size = size
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def server=(server)
|
|
127
|
+
Dnsruby.log.debug{"InternalResolver setting server to #{server}"}
|
|
128
|
+
@server=Config.resolve_server(server)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Can take a hash with the following optional keys :
|
|
132
|
+
#
|
|
133
|
+
# * :server
|
|
134
|
+
# * :port
|
|
135
|
+
# * :use_tcp
|
|
136
|
+
# * :ignore_truncation
|
|
137
|
+
# * :src_address
|
|
138
|
+
# * :src_port
|
|
139
|
+
# * :udp_size
|
|
140
|
+
# * :tsig
|
|
141
|
+
# * :packet_timeout
|
|
142
|
+
# * :recurse
|
|
143
|
+
def initialize(*args)
|
|
144
|
+
arg=args[0]
|
|
145
|
+
@packet_timeout = Resolver::DefaultPacketTimeout
|
|
146
|
+
@port = Resolver::DefaultPort
|
|
147
|
+
@udp_size = Resolver::DefaultUDPSize
|
|
148
|
+
@dnssec = Resolver::DefaultDnssec
|
|
149
|
+
@use_tcp = false
|
|
150
|
+
@tsig = nil
|
|
151
|
+
@ignore_truncation = false
|
|
152
|
+
@src_address = '0.0.0.0'
|
|
153
|
+
@src_port = [0]
|
|
154
|
+
@recurse = true
|
|
155
|
+
|
|
156
|
+
if (arg==nil)
|
|
157
|
+
# Get default config
|
|
158
|
+
config = Config.new
|
|
159
|
+
# @server = config.nameserver[0]
|
|
160
|
+
elsif (arg.kind_of?String)
|
|
161
|
+
@server=arg
|
|
162
|
+
elsif (arg.kind_of?Name)
|
|
163
|
+
@server=arg
|
|
164
|
+
elsif (arg.kind_of?Hash)
|
|
165
|
+
arg.keys.each do |attr|
|
|
166
|
+
begin
|
|
167
|
+
send(attr.to_s+"=", arg[attr])
|
|
168
|
+
rescue Exception
|
|
169
|
+
Dnsruby.log.error{"Argument #{attr} not valid\n"}
|
|
170
|
+
end
|
|
171
|
+
# end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
#Check server is IP
|
|
175
|
+
@server=Config.resolve_server(@server)
|
|
176
|
+
|
|
177
|
+
# ResolverRegister::register_single_resolver(self)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def close
|
|
181
|
+
# @TODO@ What about closing?
|
|
182
|
+
# Any queries to complete? Sockets to close?
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
#Asynchronously send a Message to the server. The send can be done using just
|
|
186
|
+
#Dnsruby. Support for EventMachine has been deprecated.
|
|
187
|
+
#
|
|
188
|
+
#== Dnsruby pure Ruby event loop :
|
|
189
|
+
#
|
|
190
|
+
#A client_queue is supplied by the client,
|
|
191
|
+
#along with an optional client_query_id to identify the response. The client_query_id
|
|
192
|
+
#is generated, if not supplied, and returned to the client.
|
|
193
|
+
#When the response is known, the tuple
|
|
194
|
+
#(query_id, response_message, response_exception) is put in the queue for the client to process.
|
|
195
|
+
#
|
|
196
|
+
#The query is sent synchronously in the caller's thread. The select thread is then used to
|
|
197
|
+
#listen for and process the response (up to pushing it to the client_queue). The client thread
|
|
198
|
+
#is then used to retrieve the response and deal with it.
|
|
199
|
+
#
|
|
200
|
+
#Takes :
|
|
201
|
+
#
|
|
202
|
+
#* msg - the message to send
|
|
203
|
+
#* client_queue - a Queue to push the response to, when it arrives
|
|
204
|
+
#* client_query_id - an optional ID to identify the query to the client
|
|
205
|
+
#* use_tcp - whether to use TCP (defaults to PacketSender.use_tcp)
|
|
206
|
+
#
|
|
207
|
+
#Returns :
|
|
208
|
+
#
|
|
209
|
+
#* client_query_id - to identify the query response to the client. This ID is
|
|
210
|
+
#generated if it is not passed in by the client
|
|
211
|
+
#
|
|
212
|
+
#If the native Dsnruby networking layer is being used, then this method returns the client_query_id
|
|
213
|
+
#
|
|
214
|
+
# id = res.send_async(msg, queue)
|
|
215
|
+
# NOT SUPPORTED : id = res.send_async(msg, queue, use_tcp)
|
|
216
|
+
# id = res.send_async(msg, queue, id)
|
|
217
|
+
# id = res.send_async(msg, queue, id, use_tcp)
|
|
218
|
+
#
|
|
219
|
+
#Use Message#send_raw to send the packet with an untouched header.
|
|
220
|
+
#Use Message#do_caching to tell dnsruby whether to check the cache before
|
|
221
|
+
#sending, and update the cache upon receiving a response.
|
|
222
|
+
#Use Message#do_validation to tell dnsruby whether or not to do DNSSEC
|
|
223
|
+
#validation for this particular packet (assuming SingleResolver#dnssec == true)
|
|
224
|
+
#Note that these options should not normally be used!
|
|
225
|
+
def send_async(*args) # msg, client_queue, client_query_id, use_tcp=@use_tcp)
|
|
226
|
+
# @TODO@ Need to select a good Header ID here - see forgery-resilience RFC draft for details
|
|
227
|
+
msg = args[0]
|
|
228
|
+
client_query_id = nil
|
|
229
|
+
client_queue = nil
|
|
230
|
+
use_tcp = @use_tcp
|
|
231
|
+
if (msg.kind_of?String)
|
|
232
|
+
msg = Message.new(msg)
|
|
233
|
+
if (@dnssec)
|
|
234
|
+
msg.header.cd = @dnssec # we'll do our own validation by default
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
if (args.length > 1)
|
|
238
|
+
if (args[1].class==Queue)
|
|
239
|
+
client_queue = args[1]
|
|
240
|
+
elsif (args.length == 2)
|
|
241
|
+
use_tcp = args[1]
|
|
242
|
+
end
|
|
243
|
+
if (args.length > 2)
|
|
244
|
+
client_query_id = args[2]
|
|
245
|
+
if (args.length > 3)
|
|
246
|
+
use_tcp = args[3]
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
# Need to keep track of the request mac (if using tsig) so we can validate the response (RFC2845 4.1)
|
|
251
|
+
# #Are we using EventMachine or native Dnsruby?
|
|
252
|
+
# if (Resolver.eventmachine?)
|
|
253
|
+
# return send_eventmachine(query_packet, msg, client_query_id, client_queue, use_tcp)
|
|
254
|
+
# else
|
|
255
|
+
if (!client_query_id)
|
|
256
|
+
client_query_id = Time.now + rand(10000) # is this safe?!
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
query_packet = make_query_packet(msg, use_tcp)
|
|
260
|
+
|
|
261
|
+
if (msg.do_caching && (msg.class != Update))
|
|
262
|
+
# Check the cache!!
|
|
263
|
+
cachedanswer = nil
|
|
264
|
+
if (msg.header.rd)
|
|
265
|
+
cachedanswer = @@recursive_cache.find(msg.question()[0].qname, msg.question()[0].type)
|
|
266
|
+
else
|
|
267
|
+
cachedanswer = @@authoritative_cache.find(msg.question()[0].qname, msg.question()[0].type)
|
|
268
|
+
end
|
|
269
|
+
if (cachedanswer)
|
|
270
|
+
TheLog.debug("Sending cached answer to client\n")
|
|
271
|
+
# @TODO@ Fix up the header - ID and flags
|
|
272
|
+
cachedanswer.header.id = msg.header.id
|
|
273
|
+
# If we can find the answer, send it to the client straight away
|
|
274
|
+
# Post the result to the client using SelectThread
|
|
275
|
+
st = SelectThread.instance
|
|
276
|
+
st.push_response_to_select(client_query_id, client_queue, cachedanswer, msg, self)
|
|
277
|
+
return client_query_id
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
# Otherwise, run the query
|
|
281
|
+
if (udp_packet_size < query_packet.length)
|
|
282
|
+
Dnsruby.log.debug{"Query packet length exceeds max UDP packet size - using TCP"}
|
|
283
|
+
use_tcp = true
|
|
284
|
+
end
|
|
285
|
+
send_dnsruby(query_packet, msg, client_query_id, client_queue, use_tcp)
|
|
286
|
+
return client_query_id
|
|
287
|
+
# end
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
# This method sends the packet using the built-in pure Ruby event loop, with no dependencies.
|
|
292
|
+
def send_dnsruby(query_bytes, query, client_query_id, client_queue, use_tcp) #:nodoc: all
|
|
293
|
+
endtime = Time.now + @packet_timeout
|
|
294
|
+
# First send the query (synchronously)
|
|
295
|
+
st = SelectThread.instance
|
|
296
|
+
socket = nil
|
|
297
|
+
runnextportloop = true
|
|
298
|
+
numtries = 0
|
|
299
|
+
while (runnextportloop)do
|
|
300
|
+
begin
|
|
301
|
+
numtries += 1
|
|
302
|
+
src_port = get_next_src_port
|
|
303
|
+
if (use_tcp)
|
|
304
|
+
begin
|
|
305
|
+
socket = TCPSocket.new(@server, @port, @src_address, src_port)
|
|
306
|
+
rescue Errno::EBADF=> e
|
|
307
|
+
# Can't create a connection
|
|
308
|
+
err=IOError.new("TCP connection error to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp}, exception = #{e.class}, #{e}")
|
|
309
|
+
Dnsruby.log.error{"#{err}"}
|
|
310
|
+
st.push_exception_to_select(client_query_id, client_queue, err, nil)
|
|
311
|
+
return
|
|
312
|
+
end
|
|
313
|
+
else
|
|
314
|
+
socket = nil
|
|
315
|
+
# JRuby UDPSocket only takes 0 parameters - no IPv6 support in JRuby...
|
|
316
|
+
if (/java/ =~ RUBY_PLATFORM )
|
|
317
|
+
socket = UDPSocket.new()
|
|
318
|
+
else
|
|
319
|
+
ipv6 = @src_address =~ /:/
|
|
320
|
+
socket = UDPSocket.new(ipv6 ? Socket::AF_INET6 : Socket::AF_INET)
|
|
321
|
+
end
|
|
322
|
+
socket.bind(@src_address, src_port)
|
|
323
|
+
socket.connect(@server, @port)
|
|
324
|
+
end
|
|
325
|
+
runnextportloop = false
|
|
326
|
+
rescue Exception => e
|
|
327
|
+
if (socket!=nil)
|
|
328
|
+
socket.close
|
|
329
|
+
end
|
|
330
|
+
# Try again if the error was EADDRINUSE and a random source port is used
|
|
331
|
+
# Maybe try a max number of times?
|
|
332
|
+
if ((e.class != Errno::EADDRINUSE) || (numtries > 50) ||
|
|
333
|
+
((e.class == Errno::EADDRINUSE) && (src_port == @src_port[0])))
|
|
334
|
+
err=IOError.new("dnsruby can't connect to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp}, exception = #{e.class}, #{e}")
|
|
335
|
+
Dnsruby.log.error{"#{err}"}
|
|
336
|
+
st.push_exception_to_select(client_query_id, client_queue, err, nil)
|
|
337
|
+
return
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
if (socket==nil)
|
|
342
|
+
err=IOError.new("dnsruby can't connect to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp}")
|
|
343
|
+
Dnsruby.log.error{"#{err}"}
|
|
344
|
+
st.push_exception_to_select(client_query_id, client_queue, err, nil)
|
|
345
|
+
return
|
|
346
|
+
end
|
|
347
|
+
Dnsruby.log.debug{"Sending packet to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp} : #{query.question()[0].qname}, #{query.question()[0].qtype}"}
|
|
348
|
+
# print "#{Time.now} : Sending packet to #{@server} : #{query.question()[0].qname}, #{query.question()[0].qtype}\n"
|
|
349
|
+
begin
|
|
350
|
+
if (use_tcp)
|
|
351
|
+
lenmsg = [query_bytes.length].pack('n')
|
|
352
|
+
socket.send(lenmsg, 0)
|
|
353
|
+
end
|
|
354
|
+
socket.send(query_bytes, 0)
|
|
355
|
+
rescue Exception => e
|
|
356
|
+
socket.close
|
|
357
|
+
err=IOError.new("Send failed to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp}, exception : #{e}")
|
|
358
|
+
Dnsruby.log.error{"#{err}"}
|
|
359
|
+
st.push_exception_to_select(client_query_id, client_queue, err, nil)
|
|
360
|
+
return
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
# Then listen for the response
|
|
364
|
+
query_settings = SelectThread::QuerySettings.new(query_bytes, query, @ignore_truncation, client_queue, client_query_id, socket, @server, @port, endtime, udp_packet_size, self)
|
|
365
|
+
# The select thread will now wait for the response and send that or a timeout
|
|
366
|
+
# back to the client_queue.
|
|
367
|
+
st.add_to_select(query_settings)
|
|
368
|
+
Dnsruby.log.debug{"Packet sent to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp} : #{query.question()[0].qname}, #{query.question()[0].qtype}"}
|
|
369
|
+
# print "Packet sent to #{@server}:#{@port} from #{@src_address}:#{src_port}, use_tcp=#{use_tcp} : #{query.question()[0].qname}, #{query.question()[0].qtype}\n"
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
# The source port to send queries from
|
|
373
|
+
# Returns either a single Fixnum or an Array
|
|
374
|
+
# e.g. "0", or "[60001, 60002, 60007]"
|
|
375
|
+
#
|
|
376
|
+
# Defaults to 0 - random port
|
|
377
|
+
def src_port
|
|
378
|
+
if (@src_port.length == 1)
|
|
379
|
+
return @src_port[0]
|
|
380
|
+
end
|
|
381
|
+
return @src_port
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
# Can be a single Fixnum or a Range or an Array
|
|
385
|
+
# If an invalid port is selected (one reserved by
|
|
386
|
+
# IANA), then an ArgumentError will be raised.
|
|
387
|
+
#
|
|
388
|
+
# res.src_port=0
|
|
389
|
+
# res.src_port=[60001,60005,60010]
|
|
390
|
+
# res.src_port=60015..60115
|
|
391
|
+
#
|
|
392
|
+
def src_port=(p)
|
|
393
|
+
@src_port=[]
|
|
394
|
+
add_src_port(p)
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
# Can be a single Fixnum or a Range or an Array
|
|
398
|
+
# If an invalid port is selected (one reserved by
|
|
399
|
+
# IANA), then an ArgumentError will be raised.
|
|
400
|
+
# "0" means "any valid port" - this is only a viable
|
|
401
|
+
# option if it is the only port in the list.
|
|
402
|
+
# An ArgumentError will be raised if "0" is added to
|
|
403
|
+
# an existing set of source ports.
|
|
404
|
+
#
|
|
405
|
+
# res.add_src_port(60000)
|
|
406
|
+
# res.add_src_port([60001,60005,60010])
|
|
407
|
+
# res.add_src_port(60015..60115)
|
|
408
|
+
#
|
|
409
|
+
def add_src_port(p)
|
|
410
|
+
if (Resolver.check_port(p, @src_port))
|
|
411
|
+
a = Resolver.get_ports_from(p)
|
|
412
|
+
a.each do |x|
|
|
413
|
+
if ((@src_port.length > 0) && (x == 0))
|
|
414
|
+
raise ArgumentError.new("src_port of 0 only allowed as only src_port value (currently #{@src_port.length} values")
|
|
415
|
+
end
|
|
416
|
+
@src_port.push(x)
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
def get_next_src_port
|
|
423
|
+
#Different OSes have different interpretations of "random port" here.
|
|
424
|
+
#Apparently, Linux will just give you the same port as last time, unless it is still
|
|
425
|
+
#open, in which case you get n+1.
|
|
426
|
+
#We need to determine an actual (random) number here, then ask the OS for it, and
|
|
427
|
+
#continue until we get one.
|
|
428
|
+
if (@src_port[0] == 0)
|
|
429
|
+
candidate = -1
|
|
430
|
+
# better to construct an array of all the ports we *can* use, and then just pick one at random!
|
|
431
|
+
candidate = UNRESERVED_PORTS[rand(UNRESERVED_PORTS.length())]
|
|
432
|
+
# while (!(Resolver.port_in_range(candidate)))
|
|
433
|
+
# candidate = (rand(65535-1024) + 1024)
|
|
434
|
+
# end
|
|
435
|
+
return candidate
|
|
436
|
+
end
|
|
437
|
+
pos = rand(@src_port.length)
|
|
438
|
+
return @src_port[pos]
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
def check_response(response, response_bytes, query, client_queue, client_query_id, tcp)
|
|
442
|
+
# @TODO@ Should send_raw avoid this?
|
|
443
|
+
if (!query.send_raw)
|
|
444
|
+
if (!check_tsig(query, response, response_bytes))
|
|
445
|
+
# Should send error back up to Resolver here, and then NOT QUERY AGAIN!!!
|
|
446
|
+
return TsigError.new
|
|
447
|
+
# return false
|
|
448
|
+
end
|
|
449
|
+
# Should check that question section is same as question that was sent! RFC 5452
|
|
450
|
+
# If it's not an update...
|
|
451
|
+
if (query.class == Update)
|
|
452
|
+
# @TODO@!!
|
|
453
|
+
else
|
|
454
|
+
if ((response.question.size == 0) ||
|
|
455
|
+
(response.question[0].qname.labels != query.question[0].qname.labels) ||
|
|
456
|
+
(response.question[0].qtype != query.question[0].qtype) ||
|
|
457
|
+
(response.question[0].qclass != query.question[0].qclass) ||
|
|
458
|
+
(response.question.length != query.question.length) ||
|
|
459
|
+
(response.header.id != query.header.id))
|
|
460
|
+
TheLog.info("Incorrect packet returned : #{response.to_s}")
|
|
461
|
+
return false
|
|
462
|
+
end
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
if (response.header.tc && !tcp && !@ignore_truncation)
|
|
466
|
+
# Try to resend over tcp
|
|
467
|
+
Dnsruby.log.debug{"Truncated - resending over TCP"}
|
|
468
|
+
# @TODO@ Are the query options used correctly here? DNSSEC in particular...
|
|
469
|
+
# query.send_raw = true # Make sure that the packet is not messed with.
|
|
470
|
+
send_async(query, client_queue, client_query_id, true)
|
|
471
|
+
return false
|
|
472
|
+
end
|
|
473
|
+
return true
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
def check_tsig(query, response, response_bytes)
|
|
477
|
+
if (query.tsig)
|
|
478
|
+
if (response.tsig)
|
|
479
|
+
if !query.tsig.verify(query, response, response_bytes)
|
|
480
|
+
# Discard packet and wait for correctly signed response
|
|
481
|
+
Dnsruby.log.error{"TSIG authentication failed!"}
|
|
482
|
+
return false
|
|
483
|
+
end
|
|
484
|
+
else
|
|
485
|
+
# Treated as having format error and discarded (RFC2845, 4.6)
|
|
486
|
+
Dnsruby.log.error{"Expecting TSIG signed response, but got unsigned response - discarding"}
|
|
487
|
+
return false
|
|
488
|
+
end
|
|
489
|
+
elsif (response.tsig)
|
|
490
|
+
# Error - signed response to unsigned query
|
|
491
|
+
Dnsruby.log.error{"Signed response to unsigned query"}
|
|
492
|
+
return false
|
|
493
|
+
end
|
|
494
|
+
return true
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
def make_query(name, type = Types.A, klass = Classes.IN, set_cd=@dnssec)
|
|
498
|
+
msg = Message.new
|
|
499
|
+
msg.header.rd = 1
|
|
500
|
+
msg.add_question(name, type, klass)
|
|
501
|
+
if (@dnssec)
|
|
502
|
+
msg.header.cd = set_cd # We do our own validation by default
|
|
503
|
+
end
|
|
504
|
+
return msg
|
|
505
|
+
end
|
|
506
|
+
|
|
507
|
+
# Prepare the packet for sending
|
|
508
|
+
def make_query_packet(packet, use_tcp = @use_tcp) #:nodoc: all
|
|
509
|
+
if (!packet.send_raw) # Don't mess with this packet!
|
|
510
|
+
if (packet.header.opcode == OpCode.QUERY || @recurse)
|
|
511
|
+
packet.header.rd=@recurse
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
# @TODO@ Only do this if the packet has not been prepared already!
|
|
515
|
+
if (@dnssec)
|
|
516
|
+
prepare_for_dnssec(packet)
|
|
517
|
+
|
|
518
|
+
elsif ((udp_packet_size > Resolver::DefaultUDPSize) && !use_tcp)
|
|
519
|
+
# if ((udp_packet_size > Resolver::DefaultUDPSize) && !use_tcp)
|
|
520
|
+
add_opt_rr(packet)
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
if (@tsig && !packet.signed?)
|
|
525
|
+
@tsig.apply(packet)
|
|
526
|
+
end
|
|
527
|
+
return packet.encode
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
def add_opt_rr(packet)
|
|
531
|
+
Dnsruby.log.debug{";; Adding EDNS extension with UDP packetsize #{udp_packet_size}.\n"}
|
|
532
|
+
# RFC 3225
|
|
533
|
+
optrr = RR::OPT.new(udp_packet_size)
|
|
534
|
+
|
|
535
|
+
packet.add_additional(optrr)
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
def prepare_for_dnssec(packet)
|
|
539
|
+
# RFC 4035
|
|
540
|
+
Dnsruby.log.debug{";; Adding EDNS extension with UDP packetsize #{udp_packet_size} and DNS OK bit set\n"}
|
|
541
|
+
optrr = RR::OPT.new(udp_packet_size) # Decimal UDPpayload
|
|
542
|
+
optrr.dnssec_ok=true
|
|
543
|
+
|
|
544
|
+
if (packet.additional.rrset(packet.question()[0].qname, Types.OPT).rrs.length == 0)
|
|
545
|
+
packet.add_additional(optrr)
|
|
546
|
+
end
|
|
547
|
+
|
|
548
|
+
packet.header.ad = false # RFC 4035 section 4.6
|
|
549
|
+
|
|
550
|
+
# SHOULD SET CD HERE!!!
|
|
551
|
+
if (packet.do_validation)
|
|
552
|
+
packet.header.cd = true
|
|
553
|
+
end
|
|
554
|
+
|
|
555
|
+
end
|
|
556
|
+
|
|
557
|
+
# Return the packet size to use for UDP
|
|
558
|
+
def udp_packet_size
|
|
559
|
+
# if @udp_size > DefaultUDPSize then we use EDNS and
|
|
560
|
+
# @udp_size should be taken as the maximum packet_data length
|
|
561
|
+
ret = (@udp_size > Resolver::DefaultUDPSize ? @udp_size : Resolver::DefaultUDPSize)
|
|
562
|
+
return ret
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
end
|