whois 2.7.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. data/CHANGELOG.md +143 -0
  2. data/{LICENSE → LICENSE.txt} +1 -1
  3. data/README.md +28 -41
  4. data/bin/ruby-whois +14 -7
  5. data/data/ipv4.json +723 -0
  6. data/data/ipv6.json +100 -0
  7. data/data/tld.json +1302 -0
  8. data/lib/whois.rb +3 -3
  9. data/lib/whois/client.rb +17 -7
  10. data/lib/whois/core_ext.rb +0 -2
  11. data/lib/whois/errors.rb +13 -20
  12. data/lib/whois/record.rb +28 -22
  13. data/lib/whois/record/contact.rb +1 -1
  14. data/lib/whois/record/nameserver.rb +1 -1
  15. data/lib/whois/record/parser.rb +70 -46
  16. data/lib/whois/record/parser/base.rb +58 -59
  17. data/lib/whois/record/parser/base_afilias.rb +2 -7
  18. data/lib/whois/record/parser/base_cocca.rb +8 -5
  19. data/lib/whois/record/parser/base_cocca2.rb +107 -0
  20. data/lib/whois/record/parser/base_shared1.rb +2 -7
  21. data/lib/whois/record/parser/base_shared2.rb +2 -7
  22. data/lib/whois/record/parser/base_whoisd.rb +16 -9
  23. data/lib/whois/record/parser/blank.rb +1 -1
  24. data/lib/whois/record/parser/example.rb +1 -10
  25. data/lib/whois/record/parser/jobswhois.verisign-grs.com.rb +19 -19
  26. data/lib/whois/record/parser/kero.yachay.pe.rb +28 -18
  27. data/lib/whois/record/parser/whois.adamsnames.tc.rb +1 -1
  28. data/lib/whois/record/parser/whois.aeda.net.ae.rb +1 -1
  29. data/lib/whois/record/parser/whois.aero.rb +2 -2
  30. data/lib/whois/record/parser/whois.afilias-grs.info.rb +1 -1
  31. data/lib/whois/record/parser/whois.afilias.info.rb +1 -1
  32. data/lib/whois/record/parser/whois.ai.rb +1 -1
  33. data/lib/whois/record/parser/whois.arnes.si.rb +1 -1
  34. data/lib/whois/record/parser/whois.ati.tn.rb +3 -8
  35. data/lib/whois/record/parser/whois.audns.net.au.rb +4 -9
  36. data/lib/whois/record/parser/whois.ax.rb +66 -0
  37. data/lib/whois/record/parser/whois.biz.rb +1 -1
  38. data/lib/whois/record/parser/whois.cat.rb +1 -1
  39. data/lib/whois/record/parser/whois.cctld.by.rb +5 -8
  40. data/lib/whois/record/parser/whois.cctld.uz.rb +1 -1
  41. data/lib/whois/record/parser/whois.centralnic.com.rb +4 -9
  42. data/lib/whois/record/parser/whois.cira.ca.rb +3 -8
  43. data/lib/whois/record/parser/whois.cmc.iq.rb +7 -4
  44. data/lib/whois/record/parser/whois.cnnic.cn.rb +13 -21
  45. data/lib/whois/record/parser/whois.co.ca.rb +1 -1
  46. data/lib/whois/record/parser/whois.co.pl.rb +1 -6
  47. data/lib/whois/record/parser/whois.co.ug.rb +2 -2
  48. data/lib/whois/record/parser/whois.crsnic.net.rb +14 -15
  49. data/lib/whois/record/parser/whois.denic.de.rb +2 -2
  50. data/lib/whois/record/parser/whois.dk-hostmaster.dk.rb +2 -2
  51. data/lib/whois/record/parser/whois.dns.be.rb +2 -2
  52. data/lib/whois/record/parser/whois.dns.hr.rb +3 -8
  53. data/lib/whois/record/parser/whois.dns.lu.rb +1 -1
  54. data/lib/whois/record/parser/whois.dns.pl.rb +70 -9
  55. data/lib/whois/record/parser/whois.dns.pt.rb +16 -15
  56. data/lib/whois/record/parser/whois.domain-registry.nl.rb +2 -2
  57. data/lib/whois/record/parser/whois.domain.kg.rb +1 -1
  58. data/lib/whois/record/parser/whois.domainregistry.ie.rb +9 -12
  59. data/lib/whois/record/parser/whois.domainregistry.my.rb +1 -1
  60. data/lib/whois/record/parser/whois.domreg.lt.rb +1 -1
  61. data/lib/whois/record/parser/whois.dot.tk.rb +1 -1
  62. data/lib/whois/record/parser/whois.dotmobiregistry.net.rb +1 -1
  63. data/lib/whois/record/parser/whois.dreamhost.com.rb +1 -1
  64. data/lib/whois/record/parser/whois.educause.edu.rb +1 -6
  65. data/lib/whois/record/parser/whois.eenet.ee.rb +1 -1
  66. data/lib/whois/record/parser/whois.enom.com.rb +1 -1
  67. data/lib/whois/record/parser/whois.eu.org.rb +1 -1
  68. data/lib/whois/record/parser/whois.eu.rb +13 -1
  69. data/lib/whois/record/parser/whois.fi.rb +2 -2
  70. data/lib/whois/record/parser/whois.gg.rb +1 -1
  71. data/lib/whois/record/parser/whois.godaddy.com.rb +4 -4
  72. data/lib/whois/record/parser/whois.gov.za.rb +1 -1
  73. data/lib/whois/record/parser/whois.hkirc.hk.rb +1 -1
  74. data/lib/whois/record/parser/whois.iam.net.ma.rb +1 -1
  75. data/lib/whois/record/parser/whois.iana.org.rb +2 -2
  76. data/lib/whois/record/parser/whois.in.ua.rb +1 -1
  77. data/lib/whois/record/parser/whois.isnic.is.rb +1 -1
  78. data/lib/whois/record/parser/whois.isoc.org.il.rb +1 -1
  79. data/lib/whois/record/parser/whois.ja.net.rb +1 -1
  80. data/lib/whois/record/parser/whois.je.rb +1 -1
  81. data/lib/whois/record/parser/whois.jprs.jp.rb +9 -6
  82. data/lib/whois/record/parser/whois.kenic.or.ke.rb +1 -1
  83. data/lib/whois/record/parser/whois.kr.rb +1 -1
  84. data/lib/whois/record/parser/whois.markmonitor.com.rb +1 -1
  85. data/lib/whois/record/parser/whois.meregistry.net.rb +1 -1
  86. data/lib/whois/record/parser/whois.monic.mo.rb +1 -6
  87. data/lib/whois/record/parser/whois.museum.rb +1 -1
  88. data/lib/whois/record/parser/whois.na-nic.com.na.rb +3 -23
  89. data/lib/whois/record/parser/whois.nc.rb +8 -11
  90. data/lib/whois/record/parser/whois.netcom.cm.rb +1 -1
  91. data/lib/whois/record/parser/whois.networksolutions.com.rb +1 -1
  92. data/lib/whois/record/parser/whois.nic-se.se.rb +1 -1
  93. data/lib/whois/record/parser/whois.nic.ac.rb +1 -6
  94. data/lib/whois/record/parser/whois.nic.af.rb +7 -3
  95. data/lib/whois/record/parser/whois.nic.ag.rb +1 -1
  96. data/lib/whois/record/parser/whois.nic.am.rb +1 -1
  97. data/lib/whois/record/parser/whois.nic.as.rb +1 -1
  98. data/lib/whois/record/parser/whois.nic.asia.rb +1 -1
  99. data/lib/whois/record/parser/whois.nic.at.rb +7 -9
  100. data/lib/whois/record/parser/whois.nic.bo.rb +1 -1
  101. data/lib/whois/record/parser/whois.nic.cc.rb +11 -11
  102. data/lib/whois/record/parser/whois.nic.cd.rb +1 -1
  103. data/lib/whois/record/parser/whois.nic.ch.rb +1 -1
  104. data/lib/whois/record/parser/whois.nic.ci.rb +1 -1
  105. data/lib/whois/record/parser/whois.nic.ck.rb +1 -1
  106. data/lib/whois/record/parser/whois.nic.cl.rb +1 -1
  107. data/lib/whois/record/parser/whois.nic.co.rb +1 -1
  108. data/lib/whois/record/parser/whois.nic.coop.rb +1 -1
  109. data/lib/whois/record/parser/whois.nic.cx.rb +7 -3
  110. data/lib/whois/record/parser/whois.nic.cz.rb +8 -3
  111. data/lib/whois/record/parser/whois.nic.dm.rb +3 -8
  112. data/lib/whois/record/parser/whois.nic.dz.rb +1 -1
  113. data/lib/whois/record/parser/whois.nic.ec.rb +1 -1
  114. data/lib/whois/record/parser/whois.nic.fo.rb +2 -2
  115. data/lib/whois/record/parser/whois.nic.fr.rb +1 -1
  116. data/lib/whois/record/parser/whois.nic.gl.rb +5 -1
  117. data/lib/whois/record/parser/whois.nic.gov.rb +11 -12
  118. data/lib/whois/record/parser/whois.nic.gs.rb +7 -23
  119. data/lib/whois/record/parser/whois.nic.hn.rb +28 -0
  120. data/lib/whois/record/parser/whois.nic.ht.rb +7 -3
  121. data/lib/whois/record/parser/whois.nic.hu.rb +2 -2
  122. data/lib/whois/record/parser/whois.nic.im.rb +1 -1
  123. data/lib/whois/record/parser/whois.nic.io.rb +1 -6
  124. data/lib/whois/record/parser/whois.nic.ir.rb +1 -1
  125. data/lib/whois/record/parser/whois.nic.it.rb +2 -7
  126. data/lib/whois/record/parser/whois.nic.ki.rb +7 -3
  127. data/lib/whois/record/parser/whois.nic.kz.rb +9 -12
  128. data/lib/whois/record/parser/whois.nic.la.rb +3 -2
  129. data/lib/whois/record/parser/whois.nic.li.rb +1 -1
  130. data/lib/whois/record/parser/whois.nic.lk.rb +3 -9
  131. data/lib/whois/record/parser/whois.nic.lv.rb +1 -1
  132. data/lib/whois/record/parser/whois.nic.ly.rb +1 -1
  133. data/lib/whois/record/parser/whois.nic.md.rb +1 -6
  134. data/lib/whois/record/parser/whois.nic.mg.rb +1 -1
  135. data/lib/whois/record/parser/whois.nic.ms.rb +7 -3
  136. data/lib/whois/record/parser/whois.nic.mu.rb +7 -3
  137. data/lib/whois/record/parser/whois.nic.mx.rb +1 -1
  138. data/lib/whois/record/parser/whois.nic.name.rb +2 -2
  139. data/lib/whois/record/parser/whois.nic.net.nf.rb +7 -42
  140. data/lib/whois/record/parser/whois.nic.net.ng.rb +3 -3
  141. data/lib/whois/record/parser/whois.nic.net.sa.rb +1 -1
  142. data/lib/whois/record/parser/whois.nic.net.sb.rb +7 -3
  143. data/lib/whois/record/parser/whois.nic.nu.rb +1 -1
  144. data/lib/whois/record/parser/whois.nic.org.uy.rb +1 -1
  145. data/lib/whois/record/parser/whois.nic.pr.rb +32 -14
  146. data/lib/whois/record/parser/whois.nic.priv.at.rb +1 -1
  147. data/lib/whois/record/parser/whois.nic.pw.rb +27 -0
  148. data/lib/whois/record/parser/whois.nic.sh.rb +1 -6
  149. data/lib/whois/record/parser/whois.nic.sl.rb +1 -1
  150. data/lib/whois/record/parser/whois.nic.sm.rb +1 -1
  151. data/lib/whois/record/parser/whois.nic.sn.rb +1 -6
  152. data/lib/whois/record/parser/whois.nic.so.rb +1 -1
  153. data/lib/whois/record/parser/whois.nic.st.rb +1 -1
  154. data/lib/whois/record/parser/whois.nic.tel.rb +5 -54
  155. data/lib/whois/record/parser/whois.nic.tl.rb +7 -3
  156. data/lib/whois/record/parser/whois.nic.tm.rb +1 -6
  157. data/lib/whois/record/parser/whois.nic.tr.rb +1 -1
  158. data/lib/whois/record/parser/whois.nic.travel.rb +5 -50
  159. data/lib/whois/record/parser/whois.nic.tv.rb +11 -12
  160. data/lib/whois/record/parser/whois.nic.uk.rb +18 -20
  161. data/lib/whois/record/parser/whois.nic.us.rb +5 -50
  162. data/lib/whois/record/parser/whois.nic.ve.rb +1 -1
  163. data/lib/whois/record/parser/whois.nic.xxx.rb +1 -1
  164. data/lib/whois/record/parser/whois.norid.no.rb +1 -1
  165. data/lib/whois/record/parser/whois.org.za.rb +1 -6
  166. data/lib/whois/record/parser/whois.pandi.or.id.rb +1 -1
  167. data/lib/whois/record/parser/whois.pir.org.rb +1 -1
  168. data/lib/whois/record/parser/whois.pnina.ps.rb +1 -1
  169. data/lib/whois/record/parser/whois.register.bg.rb +1 -1
  170. data/lib/whois/record/parser/whois.register.com.rb +2 -2
  171. data/lib/whois/record/parser/whois.registro.br.rb +1 -1
  172. data/lib/whois/record/parser/whois.registry.gy.rb +7 -3
  173. data/lib/whois/record/parser/whois.registry.hm.rb +1 -1
  174. data/lib/whois/record/parser/whois.registry.in.rb +1 -1
  175. data/lib/whois/record/parser/whois.registry.net.za.rb +123 -0
  176. data/lib/whois/record/parser/whois.registry.om.rb +2 -2
  177. data/lib/whois/record/parser/whois.registry.qa.rb +1 -1
  178. data/lib/whois/record/parser/whois.registrypro.pro.rb +2 -2
  179. data/lib/whois/record/parser/whois.ripe.net.rb +1 -1
  180. data/lib/whois/record/parser/whois.rnids.rs.rb +3 -8
  181. data/lib/whois/record/parser/whois.rotld.ro.rb +1 -1
  182. data/lib/whois/record/parser/whois.samoanic.ws.rb +1 -1
  183. data/lib/whois/record/parser/whois.sgnic.sg.rb +1 -1
  184. data/lib/whois/record/parser/whois.sk-nic.sk.rb +1 -1
  185. data/lib/whois/record/parser/whois.smallregistry.net.rb +2 -2
  186. data/lib/whois/record/parser/whois.srs.net.nz.rb +1 -1
  187. data/lib/whois/record/parser/whois.sx.rb +50 -32
  188. data/lib/whois/record/parser/whois.tcinet.ru.rb +2 -2
  189. data/lib/whois/record/parser/whois.thnic.co.th.rb +5 -5
  190. data/lib/whois/record/parser/whois.tld.ee.rb +2 -2
  191. data/lib/whois/record/parser/whois.tonic.to.rb +1 -6
  192. data/lib/whois/record/parser/whois.twnic.net.tw.rb +1 -1
  193. data/lib/whois/record/parser/whois.tznic.or.tz.rb +2 -2
  194. data/lib/whois/record/parser/whois.ua.rb +1 -6
  195. data/lib/whois/record/parser/whois.usp.ac.fj.rb +1 -1
  196. data/lib/whois/record/parser/whois.za.net.rb +1 -1
  197. data/lib/whois/record/parser/whois.za.org.rb +1 -1
  198. data/lib/whois/record/parser/whois1.nic.bi.rb +5 -1
  199. data/lib/whois/record/part.rb +1 -1
  200. data/lib/whois/record/registrar.rb +1 -1
  201. data/lib/whois/record/scanners/base.rb +1 -1
  202. data/lib/whois/record/scanners/base_afilias.rb +1 -1
  203. data/lib/whois/record/scanners/base_shared1.rb +1 -1
  204. data/lib/whois/record/scanners/base_shared2.rb +1 -2
  205. data/lib/whois/record/scanners/base_whoisd.rb +4 -4
  206. data/lib/whois/record/scanners/iana.rb +1 -1
  207. data/lib/whois/record/scanners/{ast.rb → nodable.rb} +4 -4
  208. data/lib/whois/record/scanners/verisign.rb +1 -1
  209. data/lib/whois/record/scanners/whois.ati.tn.rb +1 -1
  210. data/lib/whois/record/scanners/whois.audns.net.au.rb +1 -1
  211. data/lib/whois/record/scanners/whois.cctld.by.rb +3 -1
  212. data/lib/whois/record/scanners/whois.centralnic.com.rb +1 -1
  213. data/lib/whois/record/scanners/whois.cira.ca.rb +1 -1
  214. data/lib/whois/record/scanners/whois.cnnic.cn.rb +6 -3
  215. data/lib/whois/record/scanners/whois.denic.de.rb +1 -1
  216. data/lib/whois/record/scanners/whois.dns.hr.rb +1 -1
  217. data/lib/whois/record/scanners/whois.domainregistry.ie.rb +3 -1
  218. data/lib/whois/record/scanners/whois.nc.rb +1 -1
  219. data/lib/whois/record/scanners/whois.nic.dm.rb +1 -1
  220. data/lib/whois/record/scanners/whois.nic.hu.rb +1 -1
  221. data/lib/whois/record/scanners/whois.nic.it.rb +1 -1
  222. data/lib/whois/record/scanners/whois.registry.net.za.rb +103 -0
  223. data/lib/whois/record/scanners/whois.rnids.rs.rb +1 -1
  224. data/lib/whois/record/scanners/whois.smallregistry.net.rb +1 -1
  225. data/lib/whois/record/scanners/whois.sx.rb +14 -46
  226. data/lib/whois/record/super_struct.rb +1 -1
  227. data/lib/whois/server.rb +18 -4
  228. data/lib/whois/server/adapters/afilias.rb +8 -13
  229. data/lib/whois/server/adapters/arpa.rb +1 -1
  230. data/lib/whois/server/adapters/base.rb +24 -44
  231. data/lib/whois/server/adapters/formatted.rb +1 -1
  232. data/lib/whois/server/adapters/none.rb +1 -1
  233. data/lib/whois/server/adapters/not_implemented.rb +1 -1
  234. data/lib/whois/server/adapters/standard.rb +1 -1
  235. data/lib/whois/server/adapters/verisign.rb +11 -19
  236. data/lib/whois/server/adapters/web.rb +2 -5
  237. data/lib/whois/server/socket_handler.rb +66 -0
  238. data/lib/whois/version.rb +3 -3
  239. data/whois.gemspec +11 -11
  240. metadata +24 -29
  241. data/lib/whois/core_ext/date_time/conversions.rb +0 -14
  242. data/lib/whois/definitions/ipv4.rb +0 -240
  243. data/lib/whois/definitions/ipv6.rb +0 -32
  244. data/lib/whois/definitions/tlds.rb +0 -367
  245. data/lib/whois/record/parser/saudinic.net.sa.rb +0 -23
  246. data/lib/whois/record/parser/whois.ausregistry.net.au.rb +0 -23
  247. data/lib/whois/record/parser/whois.centralnic.net.rb +0 -25
  248. data/lib/whois/record/parser/whois.cnnic.net.cn.rb +0 -23
  249. data/lib/whois/record/parser/whois.coza.net.za.rb +0 -76
  250. data/lib/whois/record/parser/whois.ficora.fi.rb +0 -24
  251. data/lib/whois/record/parser/whois.hkdnr.net.hk.rb +0 -23
  252. data/lib/whois/record/parser/whois.net.ua.rb +0 -24
  253. data/lib/whois/record/parser/whois.nic.or.kr.rb +0 -24
  254. data/lib/whois/record/parser/whois.publicinterestregistry.net.rb +0 -23
  255. data/lib/whois/record/parser/whois.ripn.net.rb +0 -23
data/CHANGELOG.md CHANGED
@@ -1,5 +1,148 @@
1
1
  # Changelog
2
2
 
3
+
4
+ ## Release 3.0.0
5
+
6
+ - SERVER: Added .AX TLD definition.
7
+
8
+ - SERVER: Updated .AZ, .BA, .CO.ZA, .FM, .MC, .HN, .PH, .PW, .RW, .SA, .TD, .COM.UY, .VN TLD definitions.
9
+
10
+ - SERVER: Added .XN--MGBX4CD0AB (.مليسيا, Malaysia) IDN TLD definition.
11
+
12
+ - SERVER: Removed .XN--MGBA3A4F16A IDN TLD definition.
13
+
14
+ - NEW: ruby-whois learned the -h option to pass whois hostname on the fly
15
+
16
+ - NEW: Ability to pass a custom query_handler to the Server adapter (GH-189)
17
+
18
+ - NEW: Added full whois.nic.pw parser.
19
+
20
+ - NEW: Support for non-deep querying (GH-112)
21
+
22
+ - NEW: Added full whois.dns.pl parser.
23
+
24
+ - NEW: kero.yachay.pe parser now recognizes throttled responses.
25
+
26
+ - NEW: Added whois.ax parser.
27
+
28
+ - NEW: whois.eu parser now recognizes throttled responses.
29
+
30
+ - NEW: Added full whois.nic.us parser.
31
+
32
+ - NEW: Added full whois.nic.travel parser.
33
+
34
+ - NEW: Added full whois.nic.tel parser.
35
+
36
+ - CHANGED: Dropped support for Ruby 1.8
37
+
38
+ - CHANGED: Renamed Whois::Record::Scanners::Ast to Renamed Whois::Record::Scanners::Nodable
39
+
40
+ - CHANGED: Definitions are now stored as JSON.
41
+
42
+ - CHANGED: Updated whois.nic.af parser to the new response format.
43
+
44
+ - CHANGED: Updated whois.nic.cx parser to the new response format.
45
+
46
+ - CHANGED: Updated whois.nic.gs parser to the new response format.
47
+
48
+ - CHANGED: Updated whois.nic.ht parser to the new response format.
49
+
50
+ - CHANGED: Updated whois.nic.ki parser to the new response format.
51
+
52
+ - CHANGED: Updated whois.nic.mu parser to the new response format.
53
+
54
+ - CHANGED: Updated whois.nic.net.nf parser to the new response format.
55
+
56
+ - CHANGED: Updated whois.nic.net.sb parser to the new response format.
57
+
58
+ - CHANGED: Updated whois.nic.tl parser to the new response format.
59
+
60
+ - CHANGED: Updated whois.registry.gy parser to the new response format.
61
+
62
+ - CHANGED: Updated whois.cmc.iq parser to the new response format.
63
+
64
+ - CHANGED: Updated whois.na-nic.com.na parser to the new response format.
65
+
66
+ - CHANGED: Updated whois.nic.net.ng parser to the new response format.
67
+
68
+ - CHANGED: Whois::Server#query renamed to Whois::Server#lookup
69
+
70
+ - CHANGED: :referral_whois and :referral_url no longer exist as properties.
71
+
72
+ - CHANGED: Removed parser aliases.
73
+
74
+ - CHANGED: Removed deprecated options[:web] for :web adapter.
75
+
76
+ - CHANGED: Updated whois.nic.pr parser to the new response format.
77
+
78
+ - CHANGED: Updated whois.sx parser to the new response format.
79
+
80
+ - CHANGED: Updated whois.cnnic.cn parser to the new response format.
81
+
82
+ - CHANGED: Updated whois.thnic.co.th parser to the new response format (GH-194). [Thanks @ATimofeev]
83
+
84
+ - CHANGED: Updated whois.nic.ms parser to the new response format.
85
+
86
+ - CHANGED: whois.coza.net.za became whois.registry.net.za (GH-191). [Thanks @rorymckinley]
87
+
88
+ - CHANGED: Definitions are now stored as JSON.
89
+
90
+ - CHANGED: Deprecate Whois::Client#query in favor of Whois::Client#lookup
91
+
92
+ - CHANGED: Renamed Whois::Record#property_supported? and Whois::Record::Parser#property_supported? to #property_any_supported?
93
+
94
+ - CHANGED: Renamed Whois::PropertyNotSupported to Whois::AttributeNotSupported.
95
+
96
+ - CHANGED: Renamed Whois::PropertyNotImplemented to Whois::AttributeNotImplemented.
97
+
98
+ - FIXED: whois.domainregistry.ie should support status `Active - LOCKED`.
99
+
100
+ - FIXED: whois.nic.uk fails to parse registrars without URL (GH-188).
101
+
102
+ - FIXED: whois.nic.cz should support status `To be deleted`.
103
+
104
+ - FIXED: whois.nic.cz should support multiple status (GH-190).
105
+
106
+ - FIXED: whois.nic.lk crashes when the creation date is 'null'.
107
+
108
+ - FIXED: whois.domainregistry.ie may return a contact entry with no details.
109
+
110
+ - FIXED: whois.jprs.jp should support status `Deleted`.
111
+
112
+ - FIXED: whois.nic.kz crashes when last update date is blank.
113
+
114
+ - FIXED: whois.nic.cz crashes when keyset node is present in the whois response.
115
+
116
+ - FIXED: whois.nic.cz crashes when nsset node has the same ID of a contact.
117
+
118
+ - FIXED: whois.register.com fails to parse name servers in some cases (GH-207). [Thanks @stormsilver]
119
+
120
+ - FIXED: whois.nc crashes when the address is missing the state.
121
+
122
+ - FIXED: Whois::Record#respond_to? doesn't recognize property? of method? methods.
123
+
124
+
125
+ ### Backward Incompatibilities
126
+
127
+ - Removed compatibility with Ruby 1.8
128
+
129
+ - Renamed Whois::Record::Scanners::Ast to Renamed Whois::Record::Scanners::Nodable
130
+
131
+ - Whois::Server#query has been renamed to Whois::Server#lookup
132
+
133
+ - :referral_whois and :referral_url no longer exist as properties.
134
+ The parsers where the propertie was supported still supports the property
135
+ by providing a corresponding method.
136
+
137
+ However, you cannot call the method on the response anymore.
138
+ Instead, you have to invoke the method directly on the parser instance.
139
+
140
+ - The exceptions raised in case of not supported property changed from -> to
141
+ - Whois::PropertyNotSupported -> Whois::AttributeNotSupported
142
+ - Whois::PropertyNotImplemented -> Whois::AttributeNotImplemented
143
+ - Whois::PropertyNotAvailable -> Whois::AttributeNotImplemented
144
+
145
+
3
146
  ## Release 2.7.0
4
147
 
5
148
  * SERVER: Added .IQ TLD server (GH-171).
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
1
+ Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -22,25 +22,23 @@ An extensive test suite is available to verify the library correctness but you m
22
22
 
23
23
  ## Features
24
24
 
25
- * Ability to query registry data for [IPv4, IPv6, TLDs, and domain names](http://www.ruby-whois.org/manual/usage.html#usage-objects)
26
- * Ability to [parse WHOIS responses](http://www.ruby-whois.org/manual/parser.html)
27
- * Flexible and extensible interface (e.g. You can define [custom servers](http://www.ruby-whois.org/manual/server.html) on the fly)
28
- * Object oriented design, featuring 10 different design patterns
29
- * Pure Ruby library, without any external dependency other than Ruby itself
30
- * Compatible with [Ruby 1.8.7 and greater](http://www.ruby-whois.org/manual/installing.html#installation-requirements), including Ruby 1.9 branch
31
- * Successfully tested against several [Ruby implementations](http://www.ruby-whois.org/manual/interpreters.html)
25
+ - Ability to query registry data for [IPv4, IPv6, TLDs, and domain names](http://www.ruby-whois.org/manual/usage/#usage-objects)
26
+ - Ability to [parse WHOIS responses](http://www.ruby-whois.org/manual/parser/)
27
+ - Flexible and extensible interface (e.g. You can define [custom servers](http://www.ruby-whois.org/manual/server/) on the fly)
28
+ - Object oriented design, featuring 10 different design patterns
29
+ - Pure Ruby library, without any external dependency other than Ruby itself
30
+ - Successfully tested against several [Ruby implementations](http://www.ruby-whois.org/manual/interpreters/)
32
31
 
33
32
 
34
33
  ## Requirements
35
34
 
36
- * Ruby >= 1.8.7
35
+ * Ruby >= 1.9.2
37
36
 
38
- *Whois* >= 1.5 requires Ruby 1.8.7 or newer.
39
- For older versions of Ruby, see the CHANGELOG.rdoc file.
37
+ For older versions of Ruby, see the [CHANGELOG](CHANGELOG.md) file.
40
38
 
41
39
  In addition to the standard Ruby interpreter (MRI),
42
40
  Whois has been successfully tested against several
43
- [Ruby implementations](http://www.ruby-whois.org/manual/interpreters.html).
41
+ [Ruby implementations](http://www.ruby-whois.org/manual/interpreters/).
44
42
 
45
43
 
46
44
  ## Installation
@@ -52,20 +50,9 @@ The best way to install *Whois* is via [RubyGems](https://rubygems.org/).
52
50
  You might need administrator privileges on your system to install the gem.
53
51
 
54
52
 
55
- ## Upgrade
56
-
57
- Install the newer version via RubyGems.
58
-
59
- $ gem install whois
60
-
61
- Minor and bugfix releases normally won't break backwards-compatibility. You can read the CHANGELOG.md file to learn about the changes in each release.
62
-
63
- Read the [Upgrading](http://www.ruby-whois.org/manual/upgrading.html) documentation page for detailed information about incompatible changes and further instructions.
64
-
65
-
66
53
  ## Getting Started
67
54
 
68
- Note. This section covers only the essentials for getting started with the Whois library. The [documentation](http://www.ruby-whois.org/documentation.html) provides a more accurate explanation including tutorials, more examples and technical details about the client/server/record/parser architecture.
55
+ Note. This section covers only the essentials for getting started with the Whois library. The [documentation](http://www.ruby-whois.org/documentation/) provides a more accurate explanation including tutorials, more examples and technical details about the client/server/record/parser architecture.
69
56
 
70
57
  ### Querying the Server
71
58
 
@@ -75,46 +62,46 @@ Check out the following examples:
75
62
 
76
63
  # Domain WHOIS
77
64
  w = Whois::Client.new
78
- w.query("google.com")
65
+ w.lookup("google.com")
79
66
  # => #<Whois::Record>
80
67
 
81
68
  # TLD WHOIS
82
69
  w = Whois::Client.new
83
- w.query(".com")
70
+ w.lookup(".com")
84
71
  # => #<Whois::Record>
85
72
 
86
73
  # IPv4 WHOIS
87
74
  w = Whois::Client.new
88
- w.query("74.125.67.100")
75
+ w.lookup("74.125.67.100")
89
76
  # => #<Whois::Record>
90
77
 
91
78
  # IPv6 WHOIS
92
79
  w = Whois::Client.new
93
- w.query("2001:db8::1428:57ab")
80
+ w.lookup("2001:db8::1428:57ab")
94
81
  # => #<Whois::Record>
95
82
 
96
83
  The query method is stateless. For this reason, you can safely re-use the same client instance for multiple queries.
97
84
 
98
85
  w = Whois::Client.new
99
- w.query("google.com")
100
- w.query(".com")
101
- w.query("74.125.67.100")
102
- w.query("2001:db8::1428:57ab")
103
- w.query("google.it")
86
+ w.lookup("google.com")
87
+ w.lookup(".com")
88
+ w.lookup("74.125.67.100")
89
+ w.lookup("2001:db8::1428:57ab")
90
+ w.lookup("google.it")
104
91
 
105
92
  If you just need a WHOIS response and you don't care about a full control of the WHOIS client, the {Whois} module provides an all-in-one method called {Whois.whois}. This is the simplest way to send a WHOIS request.
106
93
 
107
- Whois.whois("google.com")
94
+ Whois.lookup("google.com")
108
95
  # => #<Whois::Record>
109
96
 
110
97
  Did I mention you can even use blocks?
111
98
 
112
99
  Whois::Client.new do |w|
113
- w.query("google.com")
114
- w.query(".com")
115
- w.query("74.125.67.100")
116
- w.query("2001:db8::1428:57ab")
117
- w.query("google.it")
100
+ w.lookup("google.com")
101
+ w.lookup(".com")
102
+ w.lookup("74.125.67.100")
103
+ w.lookup("2001:db8::1428:57ab")
104
+ w.lookup("google.it")
118
105
  end
119
106
 
120
107
  ### Consuming the Record
@@ -160,7 +147,7 @@ Off course, you can customize the timeout value setting a different value. If ti
160
147
  w.timeout = 5
161
148
  w.timeout # => 5
162
149
 
163
- w.query("google.com")
150
+ w.lookup("google.com")
164
151
 
165
152
 
166
153
  ## Acknowledgments
@@ -196,7 +183,7 @@ Report issues or feature requests to [GitHub Issues](https://github.com/weppos/w
196
183
 
197
184
  - [Homepage](http://www.ruby-whois.org/)
198
185
  - [Repository](https://github.com/weppos/whois)
199
- - [Documentation](http://www.ruby-whois.org/documentation.html) - The official documentation, see also the [API Documentation](http://www.ruby-whois.org/api).
186
+ - [Documentation](http://www.ruby-whois.org/documentation/) - The official documentation, see also the [API Documentation](http://www.ruby-whois.org/api).
200
187
  - [Discussion Group](http://groups.google.com/group/ruby-whois)
201
188
 
202
189
 
@@ -207,4 +194,4 @@ See the [CHANGELOG](CHANGELOG.md) file for details.
207
194
 
208
195
  ## License
209
196
 
210
- Copyright (c) 2009-2012 Simone Carletti. This is Free Software distributed under the MIT license.
197
+ Copyright (c) 2009-2013 Simone Carletti. This is Free Software distributed under the MIT license.
data/bin/ruby-whois CHANGED
@@ -3,11 +3,10 @@
3
3
  $:.unshift(File.expand_path("../../lib", __FILE__))
4
4
 
5
5
  require 'optparse'
6
- require 'ostruct'
7
6
  require 'whois'
8
7
 
9
8
 
10
- options = OpenStruct.new
9
+ options = {}
11
10
  OptionParser.new do |opts|
12
11
  opts.banner = "Whois: an intelligent pure Ruby Whois client"
13
12
  opts.define_head "Usage: ruby-whois [options] object"
@@ -18,16 +17,24 @@ OptionParser.new do |opts|
18
17
  opts.separator ""
19
18
  opts.separator "Options:"
20
19
 
21
- opts.on("-t", "--timeout [SECONDS]", Integer, "specify the timeout value") do |seconds|
22
- options.timeout = seconds
20
+ opts.on("-t", "--timeout [SECONDS]", Integer, "set the timeout") do |seconds|
21
+ options[:timeout] = seconds
23
22
  end
24
23
 
25
- opts.on_tail("--help", "Show this message") do
24
+ opts.on("-h", "--host [HOST]", String, "connect to server HOST") do |host|
25
+ options[:host] = host
26
+ end
27
+
28
+ opts.on("--[no-]referral", "skip referral queries") do |boolean|
29
+ options[:referral] = boolean
30
+ end
31
+
32
+ opts.on_tail("--help", "show this help and exit") do
26
33
  puts opts
27
34
  exit
28
35
  end
29
36
 
30
- opts.on_tail("-v", "--version", "show version") do
37
+ opts.on_tail("--version", "output version information and exit") do
31
38
  puts "#{Whois::NAME} #{Whois::VERSION}"
32
39
  exit
33
40
  end
@@ -48,7 +55,7 @@ end
48
55
  object = ARGV.shift
49
56
 
50
57
  begin
51
- @client = Whois::Client.new(:timeout => options.timeout)
58
+ @client = Whois::Client.new(options)
52
59
  puts @client.query(object)
53
60
  rescue Whois::Error => e
54
61
  abort(e.message)
data/data/ipv4.json ADDED
@@ -0,0 +1,723 @@
1
+ {
2
+ "0.0.0.0/8": {
3
+ "host": null,
4
+ "adapter": "none"
5
+ },
6
+ "1.0.0.0/8": {
7
+ "host": "whois.apnic.net"
8
+ },
9
+ "2.0.0.0/8": {
10
+ "host": "whois.ripe.net"
11
+ },
12
+ "5.0.0.0/8": {
13
+ "host": "whois.ripe.net"
14
+ },
15
+ "14.0.0.0/8": {
16
+ "host": "whois.apnic.net"
17
+ },
18
+ "24.132.0.0/14": {
19
+ "host": "whois.ripe.net"
20
+ },
21
+ "27.0.0.0/8": {
22
+ "host": "whois.apnic.net"
23
+ },
24
+ "31.0.0.0/8": {
25
+ "host": "whois.ripe.net"
26
+ },
27
+ "36.0.0.0/8": {
28
+ "host": "whois.apnic.net"
29
+ },
30
+ "37.0.0.0/8": {
31
+ "host": "whois.ripe.net"
32
+ },
33
+ "39.0.0.0/8": {
34
+ "host": "whois.apnic.net"
35
+ },
36
+ "41.0.0.0/8": {
37
+ "host": "whois.afrinic.net"
38
+ },
39
+ "42.0.0.0/8": {
40
+ "host": "whois.apnic.net"
41
+ },
42
+ "43.0.0.0/8": {
43
+ "host": "whois.nic.ad.jp"
44
+ },
45
+ "46.0.0.0/8": {
46
+ "host": "whois.ripe.net"
47
+ },
48
+ "49.0.0.0/8": {
49
+ "host": "whois.apnic.net"
50
+ },
51
+ "51.0.0.0/8": {
52
+ "host": "whois.ripe.net"
53
+ },
54
+ "59.0.0.0/11": {
55
+ "host": "whois.nic.or.kr"
56
+ },
57
+ "58.0.0.0/7": {
58
+ "host": "whois.apnic.net"
59
+ },
60
+ "61.72.0.0/13": {
61
+ "host": "whois.nic.or.kr"
62
+ },
63
+ "61.80.0.0/14": {
64
+ "host": "whois.nic.or.kr"
65
+ },
66
+ "61.84.0.0/15": {
67
+ "host": "whois.nic.or.kr"
68
+ },
69
+ "61.112.0.0/12": {
70
+ "host": "whois.nic.ad.jp"
71
+ },
72
+ "61.192.0.0/12": {
73
+ "host": "whois.nic.ad.jp"
74
+ },
75
+ "61.208.0.0/13": {
76
+ "host": "whois.nic.ad.jp"
77
+ },
78
+ "60.0.0.0/7": {
79
+ "host": "whois.apnic.net"
80
+ },
81
+ "62.0.0.0/8": {
82
+ "host": "whois.ripe.net"
83
+ },
84
+ "77.0.0.0/8": {
85
+ "host": "whois.ripe.net"
86
+ },
87
+ "78.0.0.0/7": {
88
+ "host": "whois.ripe.net"
89
+ },
90
+ "80.0.0.0/4": {
91
+ "host": "whois.ripe.net"
92
+ },
93
+ "101.0.0.0/8": {
94
+ "host": "whois.apnic.net"
95
+ },
96
+ "102.0.0.0/8": {
97
+ "host": "whois.afrinic.net"
98
+ },
99
+ "103.0.0.0/8": {
100
+ "host": "whois.apnic.net"
101
+ },
102
+ "105.0.0.0/8": {
103
+ "host": "whois.afrinic.net"
104
+ },
105
+ "106.0.0.0/8": {
106
+ "host": "whois.apnic.net"
107
+ },
108
+ "109.0.0.0/8": {
109
+ "host": "whois.ripe.net"
110
+ },
111
+ "110.0.0.0/7": {
112
+ "host": "whois.apnic.net"
113
+ },
114
+ "112.160.0.0/11": {
115
+ "host": "whois.nic.or.kr"
116
+ },
117
+ "115.0.0.0/12": {
118
+ "host": "whois.nic.or.kr"
119
+ },
120
+ "115.16.0.0/13": {
121
+ "host": "whois.nic.or.kr"
122
+ },
123
+ "118.32.0.0/11": {
124
+ "host": "whois.nic.or.kr"
125
+ },
126
+ "119.192.0.0/11": {
127
+ "host": "whois.nic.or.kr"
128
+ },
129
+ "112.0.0.0/5": {
130
+ "host": "whois.apnic.net"
131
+ },
132
+ "121.128.0.0/10": {
133
+ "host": "whois.nic.or.kr"
134
+ },
135
+ "125.128.0.0/11": {
136
+ "host": "whois.nic.or.kr"
137
+ },
138
+ "120.0.0.0/6": {
139
+ "host": "whois.apnic.net"
140
+ },
141
+ "124.0.0.0/7": {
142
+ "host": "whois.apnic.net"
143
+ },
144
+ "126.0.0.0/8": {
145
+ "host": "whois.apnic.net"
146
+ },
147
+ "0.0.0.0/1": {
148
+ "host": "whois.arin.net"
149
+ },
150
+ "133.0.0.0/8": {
151
+ "host": "whois.nic.ad.jp"
152
+ },
153
+ "139.20.0.0/14": {
154
+ "host": "whois.ripe.net"
155
+ },
156
+ "139.24.0.0/14": {
157
+ "host": "whois.ripe.net"
158
+ },
159
+ "139.28.0.0/15": {
160
+ "host": "whois.ripe.net"
161
+ },
162
+ "141.0.0.0/10": {
163
+ "host": "whois.ripe.net"
164
+ },
165
+ "141.86.0.0/16": {
166
+ "host": "whois.arin.net"
167
+ },
168
+ "141.64.0.0/11": {
169
+ "host": "whois.ripe.net"
170
+ },
171
+ "141.96.0.0/14": {
172
+ "host": "whois.ripe.net"
173
+ },
174
+ "141.100.0.0/16": {
175
+ "host": "whois.ripe.net"
176
+ },
177
+ "145.0.0.0/8": {
178
+ "host": "whois.ripe.net"
179
+ },
180
+ "146.48.0.0/16": {
181
+ "host": "whois.ripe.net"
182
+ },
183
+ "149.202.0.0/15": {
184
+ "host": "whois.ripe.net"
185
+ },
186
+ "149.204.0.0/16": {
187
+ "host": "whois.ripe.net"
188
+ },
189
+ "149.206.0.0/15": {
190
+ "host": "whois.ripe.net"
191
+ },
192
+ "149.208.0.0/12": {
193
+ "host": "whois.ripe.net"
194
+ },
195
+ "149.224.0.0/12": {
196
+ "host": "whois.ripe.net"
197
+ },
198
+ "149.240.0.0/13": {
199
+ "host": "whois.ripe.net"
200
+ },
201
+ "149.248.0.0/14": {
202
+ "host": "whois.ripe.net"
203
+ },
204
+ "150.183.0.0/16": {
205
+ "host": "whois.nic.or.kr"
206
+ },
207
+ "150.254.0.0/16": {
208
+ "host": "whois.ripe.net"
209
+ },
210
+ "150.0.0.0/8": {
211
+ "host": "whois.apnic.net"
212
+ },
213
+ "151.0.0.0/10": {
214
+ "host": "whois.ripe.net"
215
+ },
216
+ "151.64.0.0/11": {
217
+ "host": "whois.ripe.net"
218
+ },
219
+ "151.96.0.0/14": {
220
+ "host": "whois.ripe.net"
221
+ },
222
+ "151.100.0.0/16": {
223
+ "host": "whois.ripe.net"
224
+ },
225
+ "153.128.0.0/9": {
226
+ "host": "whois.nic.ad.jp"
227
+ },
228
+ "153.0.0.0/8": {
229
+ "host": "whois.apnic.net"
230
+ },
231
+ "154.0.0.0/8": {
232
+ "host": "whois.afrinic.net"
233
+ },
234
+ "155.232.0.0/13": {
235
+ "host": "whois.afrinic.net"
236
+ },
237
+ "155.240.0.0/16": {
238
+ "host": "whois.afrinic.net"
239
+ },
240
+ "160.216.0.0/14": {
241
+ "host": "whois.ripe.net"
242
+ },
243
+ "160.220.0.0/16": {
244
+ "host": "whois.ripe.net"
245
+ },
246
+ "160.44.0.0/14": {
247
+ "host": "whois.ripe.net"
248
+ },
249
+ "160.48.0.0/12": {
250
+ "host": "whois.ripe.net"
251
+ },
252
+ "160.115.0.0/16": {
253
+ "host": "whois.afrinic.net"
254
+ },
255
+ "160.116.0.0/14": {
256
+ "host": "whois.afrinic.net"
257
+ },
258
+ "160.120.0.0/14": {
259
+ "host": "whois.afrinic.net"
260
+ },
261
+ "160.124.0.0/16": {
262
+ "host": "whois.afrinic.net"
263
+ },
264
+ "163.156.0.0/14": {
265
+ "host": "whois.ripe.net"
266
+ },
267
+ "163.160.0.0/12": {
268
+ "host": "whois.ripe.net"
269
+ },
270
+ "163.195.0.0/16": {
271
+ "host": "whois.afrinic.net"
272
+ },
273
+ "163.196.0.0/14": {
274
+ "host": "whois.afrinic.net"
275
+ },
276
+ "163.200.0.0/14": {
277
+ "host": "whois.afrinic.net"
278
+ },
279
+ "163.0.0.0/8": {
280
+ "host": "whois.apnic.net"
281
+ },
282
+ "164.0.0.0/11": {
283
+ "host": "whois.ripe.net"
284
+ },
285
+ "164.32.0.0/13": {
286
+ "host": "whois.ripe.net"
287
+ },
288
+ "164.40.0.0/16": {
289
+ "host": "whois.ripe.net"
290
+ },
291
+ "164.128.0.0/12": {
292
+ "host": "whois.ripe.net"
293
+ },
294
+ "164.146.0.0/15": {
295
+ "host": "whois.afrinic.net"
296
+ },
297
+ "164.148.0.0/14": {
298
+ "host": "whois.afrinic.net"
299
+ },
300
+ "165.143.0.0/16": {
301
+ "host": "whois.afrinic.net"
302
+ },
303
+ "165.144.0.0/14": {
304
+ "host": "whois.afrinic.net"
305
+ },
306
+ "165.148.0.0/15": {
307
+ "host": "whois.afrinic.net"
308
+ },
309
+ "169.208.0.0/12": {
310
+ "host": "whois.apnic.net"
311
+ },
312
+ "171.16.0.0/12": {
313
+ "host": "whois.ripe.net"
314
+ },
315
+ "171.32.0.0/15": {
316
+ "host": "whois.ripe.net"
317
+ },
318
+ "171.0.0.0/8": {
319
+ "host": "whois.apnic.net"
320
+ },
321
+ "175.192.0.0/10": {
322
+ "host": "whois.nic.or.kr"
323
+ },
324
+ "175.0.0.0/8": {
325
+ "host": "whois.apnic.net"
326
+ },
327
+ "176.0.0.0/8": {
328
+ "host": "whois.ripe.net"
329
+ },
330
+ "177.0.0.0/8": {
331
+ "host": "whois.lacnic.net"
332
+ },
333
+ "178.0.0.0/8": {
334
+ "host": "whois.ripe.net"
335
+ },
336
+ "179.0.0.0/8": {
337
+ "host": "whois.lacnic.net"
338
+ },
339
+ "180.0.0.0/8": {
340
+ "host": "whois.apnic.net"
341
+ },
342
+ "181.0.0.0/8": {
343
+ "host": "whois.lacnic.net"
344
+ },
345
+ "183.96.0.0/11": {
346
+ "host": "whois.nic.or.kr"
347
+ },
348
+ "182.0.0.0/7": {
349
+ "host": "whois.apnic.net"
350
+ },
351
+ "185.0.0.0/8": {
352
+ "host": "whois.ripe.net"
353
+ },
354
+ "186.0.0.0/7": {
355
+ "host": "whois.lacnic.net"
356
+ },
357
+ "188.0.0.0/8": {
358
+ "host": "whois.ripe.net"
359
+ },
360
+ "189.0.0.0/8": {
361
+ "host": "whois.lacnic.net"
362
+ },
363
+ "190.0.0.0/7": {
364
+ "host": "whois.lacnic.net"
365
+ },
366
+ "128.0.0.0/2": {
367
+ "host": "whois.arin.net"
368
+ },
369
+ "192.71.0.0/16": {
370
+ "host": "whois.ripe.net"
371
+ },
372
+ "192.72.253.0/24": {
373
+ "host": "whois.arin.net"
374
+ },
375
+ "192.72.254.0/24": {
376
+ "host": "whois.arin.net"
377
+ },
378
+ "192.72.0.0/16": {
379
+ "host": "whois.apnic.net"
380
+ },
381
+ "192.106.0.0/16": {
382
+ "host": "whois.ripe.net"
383
+ },
384
+ "192.114.0.0/15": {
385
+ "host": "whois.ripe.net"
386
+ },
387
+ "192.116.0.0/15": {
388
+ "host": "whois.ripe.net"
389
+ },
390
+ "192.118.0.0/16": {
391
+ "host": "whois.ripe.net"
392
+ },
393
+ "192.162.0.0/16": {
394
+ "host": "whois.ripe.net"
395
+ },
396
+ "192.164.0.0/14": {
397
+ "host": "whois.ripe.net"
398
+ },
399
+ "192.0.0.0/8": {
400
+ "host": "whois.arin.net"
401
+ },
402
+ "193.0.0.0/8": {
403
+ "host": "whois.ripe.net"
404
+ },
405
+ "194.0.0.0/7": {
406
+ "host": "whois.ripe.net"
407
+ },
408
+ "196.0.0.0/7": {
409
+ "host": "whois.afrinic.net"
410
+ },
411
+ "198.0.0.0/7": {
412
+ "host": "whois.arin.net"
413
+ },
414
+ "200.17.0.0/16": {
415
+ "host": "whois.nic.br"
416
+ },
417
+ "200.18.0.0/15": {
418
+ "host": "whois.nic.br"
419
+ },
420
+ "200.20.0.0/16": {
421
+ "host": "whois.nic.br"
422
+ },
423
+ "200.96.0.0/13": {
424
+ "host": "whois.nic.br"
425
+ },
426
+ "200.128.0.0/9": {
427
+ "host": "whois.nic.br"
428
+ },
429
+ "200.0.0.0/7": {
430
+ "host": "whois.lacnic.net"
431
+ },
432
+ "202.11.0.0/16": {
433
+ "host": "whois.nic.ad.jp"
434
+ },
435
+ "202.13.0.0/16": {
436
+ "host": "whois.nic.ad.jp"
437
+ },
438
+ "202.15.0.0/16": {
439
+ "host": "whois.nic.ad.jp"
440
+ },
441
+ "202.16.0.0/14": {
442
+ "host": "whois.nic.ad.jp"
443
+ },
444
+ "202.20.128.0/17": {
445
+ "host": "whois.nic.or.kr"
446
+ },
447
+ "202.23.0.0/16": {
448
+ "host": "whois.nic.ad.jp"
449
+ },
450
+ "202.24.0.0/15": {
451
+ "host": "whois.nic.ad.jp"
452
+ },
453
+ "202.26.0.0/16": {
454
+ "host": "whois.nic.ad.jp"
455
+ },
456
+ "202.30.0.0/15": {
457
+ "host": "whois.nic.or.kr"
458
+ },
459
+ "202.32.0.0/14": {
460
+ "host": "whois.nic.ad.jp"
461
+ },
462
+ "202.48.0.0/16": {
463
+ "host": "whois.nic.ad.jp"
464
+ },
465
+ "202.39.128.0/17": {
466
+ "host": "whois.twnic.net"
467
+ },
468
+ "202.208.0.0/12": {
469
+ "host": "whois.nic.ad.jp"
470
+ },
471
+ "202.224.0.0/11": {
472
+ "host": "whois.nic.ad.jp"
473
+ },
474
+ "203.0.0.0/10": {
475
+ "host": "whois.apnic.net"
476
+ },
477
+ "203.66.0.0/16": {
478
+ "host": "whois.twnic.net"
479
+ },
480
+ "203.69.0.0/16": {
481
+ "host": "whois.twnic.net"
482
+ },
483
+ "203.74.0.0/15": {
484
+ "host": "whois.twnic.net"
485
+ },
486
+ "203.136.0.0/14": {
487
+ "host": "whois.nic.ad.jp"
488
+ },
489
+ "203.140.0.0/15": {
490
+ "host": "whois.nic.ad.jp"
491
+ },
492
+ "203.178.0.0/15": {
493
+ "host": "whois.nic.ad.jp"
494
+ },
495
+ "203.180.0.0/14": {
496
+ "host": "whois.nic.ad.jp"
497
+ },
498
+ "203.224.0.0/11": {
499
+ "host": "whois.nic.or.kr"
500
+ },
501
+ "202.0.0.0/7": {
502
+ "host": "whois.apnic.net"
503
+ },
504
+ "204.0.0.0/14": {
505
+ "host": "rwhois.gin.ntt.net"
506
+ },
507
+ "204.0.0.0/6": {
508
+ "host": "whois.arin.net"
509
+ },
510
+ "208.0.0.0/7": {
511
+ "host": "whois.arin.net"
512
+ },
513
+ "209.94.192.0/19": {
514
+ "host": "whois.lacnic.net"
515
+ },
516
+ "210.59.128.0/17": {
517
+ "host": "whois.twnic.net"
518
+ },
519
+ "210.61.0.0/16": {
520
+ "host": "whois.twnic.net"
521
+ },
522
+ "210.62.252.0/22": {
523
+ "host": "whois.twnic.net"
524
+ },
525
+ "210.65.0.0/16": {
526
+ "host": "whois.twnic.net"
527
+ },
528
+ "210.71.128.0/16": {
529
+ "host": "whois.twnic.net"
530
+ },
531
+ "210.90.0.0/15": {
532
+ "host": "whois.nic.or.kr"
533
+ },
534
+ "210.92.0.0/14": {
535
+ "host": "whois.nic.or.kr"
536
+ },
537
+ "210.96.0.0/11": {
538
+ "host": "whois.nic.or.kr"
539
+ },
540
+ "210.128.0.0/11": {
541
+ "host": "whois.nic.ad.jp"
542
+ },
543
+ "210.160.0.0/12": {
544
+ "host": "whois.nic.ad.jp"
545
+ },
546
+ "210.178.0.0/15": {
547
+ "host": "whois.nic.or.kr"
548
+ },
549
+ "210.180.0.0/14": {
550
+ "host": "whois.nic.or.kr"
551
+ },
552
+ "210.188.0.0/14": {
553
+ "host": "whois.nic.ad.jp"
554
+ },
555
+ "210.196.0.0/14": {
556
+ "host": "whois.nic.ad.jp"
557
+ },
558
+ "210.204.0.0/14": {
559
+ "host": "whois.nic.or.kr"
560
+ },
561
+ "210.216.0.0/13": {
562
+ "host": "whois.nic.or.kr"
563
+ },
564
+ "210.224.0.0/12": {
565
+ "host": "whois.nic.ad.jp"
566
+ },
567
+ "210.240.0.0/16": {
568
+ "host": "whois.twnic.net"
569
+ },
570
+ "210.241.0.0/15": {
571
+ "host": "whois.twnic.net"
572
+ },
573
+ "210.241.224.0/19": {
574
+ "host": "whois.twnic.net"
575
+ },
576
+ "210.242.0.0/15": {
577
+ "host": "whois.twnic.net"
578
+ },
579
+ "210.248.0.0/13": {
580
+ "host": "whois.nic.ad.jp"
581
+ },
582
+ "211.0.0.0/12": {
583
+ "host": "whois.nic.ad.jp"
584
+ },
585
+ "211.16.0.0/14": {
586
+ "host": "whois.nic.ad.jp"
587
+ },
588
+ "211.20.0.0/15": {
589
+ "host": "whois.twnic.net"
590
+ },
591
+ "211.22.0.0/16": {
592
+ "host": "whois.twnic.net"
593
+ },
594
+ "211.32.0.0/11": {
595
+ "host": "whois.nic.or.kr"
596
+ },
597
+ "211.75.0.0/16": {
598
+ "host": "whois.twnic.net"
599
+ },
600
+ "211.72.0.0/16": {
601
+ "host": "whois.twnic.net"
602
+ },
603
+ "211.104.0.0/13": {
604
+ "host": "whois.nic.or.kr"
605
+ },
606
+ "211.112.0.0/13": {
607
+ "host": "whois.nic.or.kr"
608
+ },
609
+ "211.120.0.0/13": {
610
+ "host": "whois.nic.ad.jp"
611
+ },
612
+ "211.128.0.0/13": {
613
+ "host": "whois.nic.ad.jp"
614
+ },
615
+ "211.168.0.0/13": {
616
+ "host": "whois.nic.or.kr"
617
+ },
618
+ "211.176.0.0/12": {
619
+ "host": "whois.nic.or.kr"
620
+ },
621
+ "211.192.0.0/10": {
622
+ "host": "whois..net"
623
+ },
624
+ "210.0.0.0/7": {
625
+ "host": "whois.apnic.net"
626
+ },
627
+ "213.154.32.0/19": {
628
+ "host": "whois.afrinic.net"
629
+ },
630
+ "213.154.64.0/19": {
631
+ "host": "whois.afrinic.net"
632
+ },
633
+ "212.0.0.0/7": {
634
+ "host": "whois.ripe.net"
635
+ },
636
+ "214.0.0.0/7": {
637
+ "host": "whois.arin.net"
638
+ },
639
+ "216.0.0.0/8": {
640
+ "host": "whois.arin.net"
641
+ },
642
+ "217.0.0.0/8": {
643
+ "host": "whois.ripe.net"
644
+ },
645
+ "218.36.0.0/14": {
646
+ "host": "whois.nic.or.kr"
647
+ },
648
+ "218.40.0.0/13": {
649
+ "host": "whois.nic.ad.jp"
650
+ },
651
+ "218.48.0.0/13": {
652
+ "host": "whois.nic.or.kr"
653
+ },
654
+ "219.96.0.0/11": {
655
+ "host": "whois.nic.ad.jp"
656
+ },
657
+ "218.144.0.0/12": {
658
+ "host": "whois.nic.or.kr"
659
+ },
660
+ "218.160.0.0/12": {
661
+ "host": "whois.twnic.net"
662
+ },
663
+ "218.216.0.0/13": {
664
+ "host": "whois.nic.ad.jp"
665
+ },
666
+ "218.224.0.0/13": {
667
+ "host": "whois.nic.ad.jp"
668
+ },
669
+ "218.232.0.0/13": {
670
+ "host": "whois.nic.or.kr"
671
+ },
672
+ "219.240.0.0/15": {
673
+ "host": "whois.nic.or.kr"
674
+ },
675
+ "219.248.0.0/13": {
676
+ "host": "whois.nic.or.kr"
677
+ },
678
+ "218.0.0.0/7": {
679
+ "host": "whois.apnic.net"
680
+ },
681
+ "220.64.0.0/11": {
682
+ "host": "whois.nic.or.kr"
683
+ },
684
+ "220.96.0.0/14": {
685
+ "host": "whois.nic.ad.jp"
686
+ },
687
+ "220.103.0.0/16": {
688
+ "host": "whois.nic.or.kr"
689
+ },
690
+ "220.104.0.0/13": {
691
+ "host": "whois.nic.ad.jp"
692
+ },
693
+ "220.149.0.0/16": {
694
+ "host": "whois.nic.or.kr"
695
+ },
696
+ "221.138.0.0/13": {
697
+ "host": "whois.nic.or.kr"
698
+ },
699
+ "221.144.0.0/12": {
700
+ "host": "whois.nic.or.kr"
701
+ },
702
+ "221.160.0.0/13": {
703
+ "host": "whois.nic.or.kr"
704
+ },
705
+ "222.96.0.0/12": {
706
+ "host": "whois.nic.or.kr"
707
+ },
708
+ "222.112.0.0/13": {
709
+ "host": "whois.nic.or.kr"
710
+ },
711
+ "222.120.0.0/15": {
712
+ "host": "whois.nic.or.kr"
713
+ },
714
+ "222.122.0.0/16": {
715
+ "host": "whois.nic.or.kr"
716
+ },
717
+ "222.232.0.0/13": {
718
+ "host": "whois.nic.or.kr"
719
+ },
720
+ "220.0.0.0/6": {
721
+ "host": "whois.apnic.net"
722
+ }
723
+ }