whois-parser-next 0.1.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +80 -0
- data/CODE_OF_CONDUCT.md +30 -0
- data/CONTRIBUTING.md +80 -0
- data/GOVERNANCE.md +59 -0
- data/LICENSE.txt +22 -0
- data/MAINTAINERS.md +44 -0
- data/README.md +123 -0
- data/RELEASING.md +43 -0
- data/ROADMAP.md +59 -0
- data/SECURITY.md +41 -0
- data/lib/whois/parser/contact.rb +56 -0
- data/lib/whois/parser/errors.rb +46 -0
- data/lib/whois/parser/nameserver.rb +39 -0
- data/lib/whois/parser/registrar.rb +25 -0
- data/lib/whois/parser/super_struct.rb +50 -0
- data/lib/whois/parser/version.rb +6 -0
- data/lib/whois/parser.rb +447 -0
- data/lib/whois/parser_extensions/whois.rb +83 -0
- data/lib/whois/parser_extensions/whois_parser.rb +24 -0
- data/lib/whois/parser_extensions/whois_record.rb +236 -0
- data/lib/whois/parser_extensions.rb +3 -0
- data/lib/whois/parsers/base.rb +413 -0
- data/lib/whois/parsers/base_afilias.rb +144 -0
- data/lib/whois/parsers/base_afilias2.rb +145 -0
- data/lib/whois/parsers/base_cocca.rb +97 -0
- data/lib/whois/parsers/base_cocca2.rb +93 -0
- data/lib/whois/parsers/base_icann_compliant.rb +158 -0
- data/lib/whois/parsers/base_icb.rb +51 -0
- data/lib/whois/parsers/base_iisse.rb +113 -0
- data/lib/whois/parsers/base_nic_fr.rb +175 -0
- data/lib/whois/parsers/base_shared1.rb +112 -0
- data/lib/whois/parsers/base_shared2.rb +130 -0
- data/lib/whois/parsers/base_shared3.rb +131 -0
- data/lib/whois/parsers/base_unsupported_registry.rb +30 -0
- data/lib/whois/parsers/base_verisign.rb +106 -0
- data/lib/whois/parsers/base_whoisd.rb +150 -0
- data/lib/whois/parsers/blank.rb +35 -0
- data/lib/whois/parsers/capetown-whois.registry.net.za.rb +25 -0
- data/lib/whois/parsers/ccwhois.ksregistry.net.rb +25 -0
- data/lib/whois/parsers/ccwhois.verisign-grs.com.rb +25 -0
- data/lib/whois/parsers/coza-whois.registry.net.za.rb +25 -0
- data/lib/whois/parsers/durban-whois.registry.net.za.rb +25 -0
- data/lib/whois/parsers/example.rb +163 -0
- data/lib/whois/parsers/joburg-whois.registry.net.za.rb +25 -0
- data/lib/whois/parsers/kero.yachay.pe.rb +97 -0
- data/lib/whois/parsers/org-whois.registry.net.za.rb +25 -0
- data/lib/whois/parsers/registry_response_safety.rb +29 -0
- data/lib/whois/parsers/tvwhois.verisign-grs.com.rb +25 -0
- data/lib/whois/parsers/vunic.vu.rb +11 -0
- data/lib/whois/parsers/whois.1und1.info.rb +28 -0
- data/lib/whois/parsers/whois.35.com.rb +23 -0
- data/lib/whois/parsers/whois.aeda.net.ae.rb +65 -0
- data/lib/whois/parsers/whois.aero.rb +58 -0
- data/lib/whois/parsers/whois.afilias-grs.info.rb +33 -0
- data/lib/whois/parsers/whois.afilias-srs.net.rb +16 -0
- data/lib/whois/parsers/whois.afilias.net.rb +41 -0
- data/lib/whois/parsers/whois.amnic.net.rb +81 -0
- data/lib/whois/parsers/whois.ascio.com.rb +29 -0
- data/lib/whois/parsers/whois.ati.tn.rb +120 -0
- data/lib/whois/parsers/whois.auda.org.au.rb +12 -0
- data/lib/whois/parsers/whois.audns.net.au.rb +118 -0
- data/lib/whois/parsers/whois.ax.rb +64 -0
- data/lib/whois/parsers/whois.biz.rb +34 -0
- data/lib/whois/parsers/whois.bnnic.bn.rb +77 -0
- data/lib/whois/parsers/whois.cat.rb +75 -0
- data/lib/whois/parsers/whois.cctld.by.rb +98 -0
- data/lib/whois/parsers/whois.cctld.uz.rb +83 -0
- data/lib/whois/parsers/whois.cdmon.com.rb +23 -0
- data/lib/whois/parsers/whois.centralnic.com.rb +144 -0
- data/lib/whois/parsers/whois.cira.ca.rb +227 -0
- data/lib/whois/parsers/whois.cmc.iq.rb +25 -0
- data/lib/whois/parsers/whois.cnnic.cn.rb +108 -0
- data/lib/whois/parsers/whois.co.ca.rb +74 -0
- data/lib/whois/parsers/whois.co.pl.rb +82 -0
- data/lib/whois/parsers/whois.co.ug.rb +93 -0
- data/lib/whois/parsers/whois.comlaude.com.rb +113 -0
- data/lib/whois/parsers/whois.corporatedomains.com.rb +28 -0
- data/lib/whois/parsers/whois.denic.de.rb +164 -0
- data/lib/whois/parsers/whois.dk-hostmaster.dk.rb +88 -0
- data/lib/whois/parsers/whois.dns.be.rb +120 -0
- data/lib/whois/parsers/whois.dns.hr.rb +119 -0
- data/lib/whois/parsers/whois.dns.lu.rb +125 -0
- data/lib/whois/parsers/whois.dns.pl.rb +151 -0
- data/lib/whois/parsers/whois.dns.pt.rb +92 -0
- data/lib/whois/parsers/whois.domain-registry.nl.rb +133 -0
- data/lib/whois/parsers/whois.domainregistry.ie.rb +128 -0
- data/lib/whois/parsers/whois.domreg.lt.rb +68 -0
- data/lib/whois/parsers/whois.donuts.co.rb +59 -0
- data/lib/whois/parsers/whois.dot.cf.rb +71 -0
- data/lib/whois/parsers/whois.dot.tk.rb +70 -0
- data/lib/whois/parsers/whois.dotgov.gov.rb +58 -0
- data/lib/whois/parsers/whois.dotmobiregistry.net.rb +21 -0
- data/lib/whois/parsers/whois.dotpostregistry.net.rb +25 -0
- data/lib/whois/parsers/whois.dreamhost.com.rb +23 -0
- data/lib/whois/parsers/whois.educause.edu.rb +198 -0
- data/lib/whois/parsers/whois.eenet.ee.rb +72 -0
- data/lib/whois/parsers/whois.enom.com.rb +34 -0
- data/lib/whois/parsers/whois.eu.org.rb +58 -0
- data/lib/whois/parsers/whois.eu.rb +130 -0
- data/lib/whois/parsers/whois.fi.rb +119 -0
- data/lib/whois/parsers/whois.gandi.net.rb +36 -0
- data/lib/whois/parsers/whois.gg.rb +93 -0
- data/lib/whois/parsers/whois.godaddy.com.rb +42 -0
- data/lib/whois/parsers/whois.gov.za.rb +60 -0
- data/lib/whois/parsers/whois.hkirc.hk.rb +71 -0
- data/lib/whois/parsers/whois.iana.org.rb +102 -0
- data/lib/whois/parsers/whois.id.rb +26 -0
- data/lib/whois/parsers/whois.iedr.ie.rb +18 -0
- data/lib/whois/parsers/whois.iis.nu.rb +46 -0
- data/lib/whois/parsers/whois.iis.se.rb +26 -0
- data/lib/whois/parsers/whois.in.ua.rb +75 -0
- data/lib/whois/parsers/whois.inregistry.net.rb +27 -0
- data/lib/whois/parsers/whois.isnic.is.rb +70 -0
- data/lib/whois/parsers/whois.isoc.org.il.rb +75 -0
- data/lib/whois/parsers/whois.ja.net.rb +75 -0
- data/lib/whois/parsers/whois.je.rb +75 -0
- data/lib/whois/parsers/whois.jprs.jp.rb +103 -0
- data/lib/whois/parsers/whois.kenic.or.ke.rb +93 -0
- data/lib/whois/parsers/whois.kg.rb +77 -0
- data/lib/whois/parsers/whois.kr.rb +79 -0
- data/lib/whois/parsers/whois.markmonitor.com.rb +36 -0
- data/lib/whois/parsers/whois.marnet.mk.rb +20 -0
- data/lib/whois/parsers/whois.monic.mo.rb +83 -0
- data/lib/whois/parsers/whois.museum.rb +79 -0
- data/lib/whois/parsers/whois.mx.rb +16 -0
- data/lib/whois/parsers/whois.mynic.my.rb +86 -0
- data/lib/whois/parsers/whois.na-nic.com.na.rb +21 -0
- data/lib/whois/parsers/whois.nc.rb +122 -0
- data/lib/whois/parsers/whois.netcom.cm.rb +54 -0
- data/lib/whois/parsers/whois.networksolutions.com.rb +37 -0
- data/lib/whois/parsers/whois.nic.ac.rb +33 -0
- data/lib/whois/parsers/whois.nic.af.rb +32 -0
- data/lib/whois/parsers/whois.nic.ag.rb +33 -0
- data/lib/whois/parsers/whois.nic.ai.rb +62 -0
- data/lib/whois/parsers/whois.nic.ar.rb +54 -0
- data/lib/whois/parsers/whois.nic.art.rb +9 -0
- data/lib/whois/parsers/whois.nic.as.rb +73 -0
- data/lib/whois/parsers/whois.nic.asia.rb +112 -0
- data/lib/whois/parsers/whois.nic.at.rb +68 -0
- data/lib/whois/parsers/whois.nic.best.rb +9 -0
- data/lib/whois/parsers/whois.nic.bj.rb +127 -0
- data/lib/whois/parsers/whois.nic.bo.rb +82 -0
- data/lib/whois/parsers/whois.nic.business.rb +8 -0
- data/lib/whois/parsers/whois.nic.cat.rb +23 -0
- data/lib/whois/parsers/whois.nic.cd.rb +38 -0
- data/lib/whois/parsers/whois.nic.cfd.rb +9 -0
- data/lib/whois/parsers/whois.nic.ch.rb +109 -0
- data/lib/whois/parsers/whois.nic.chat.rb +10 -0
- data/lib/whois/parsers/whois.nic.ci.rb +74 -0
- data/lib/whois/parsers/whois.nic.cl.rb +76 -0
- data/lib/whois/parsers/whois.nic.cloud.rb +15 -0
- data/lib/whois/parsers/whois.nic.club.rb +15 -0
- data/lib/whois/parsers/whois.nic.co.rb +25 -0
- data/lib/whois/parsers/whois.nic.college.rb +25 -0
- data/lib/whois/parsers/whois.nic.coop.rb +70 -0
- data/lib/whois/parsers/whois.nic.cr.rb +64 -0
- data/lib/whois/parsers/whois.nic.cx.rb +25 -0
- data/lib/whois/parsers/whois.nic.cz.rb +42 -0
- data/lib/whois/parsers/whois.nic.delivery.rb +9 -0
- data/lib/whois/parsers/whois.nic.design.rb +30 -0
- data/lib/whois/parsers/whois.nic.direct.rb +9 -0
- data/lib/whois/parsers/whois.nic.dm.rb +39 -0
- data/lib/whois/parsers/whois.nic.domains.rb +8 -0
- data/lib/whois/parsers/whois.nic.dz.rb +67 -0
- data/lib/whois/parsers/whois.nic.ec.rb +44 -0
- data/lib/whois/parsers/whois.nic.es.rb +114 -0
- data/lib/whois/parsers/whois.nic.fm.rb +18 -0
- data/lib/whois/parsers/whois.nic.fo.rb +69 -0
- data/lib/whois/parsers/whois.nic.fr.rb +25 -0
- data/lib/whois/parsers/whois.nic.fun.rb +13 -0
- data/lib/whois/parsers/whois.nic.games.rb +9 -0
- data/lib/whois/parsers/whois.nic.gd.rb +31 -0
- data/lib/whois/parsers/whois.nic.gl.rb +49 -0
- data/lib/whois/parsers/whois.nic.group.rb +8 -0
- data/lib/whois/parsers/whois.nic.gs.rb +31 -0
- data/lib/whois/parsers/whois.nic.hn.rb +49 -0
- data/lib/whois/parsers/whois.nic.host.rb +37 -0
- data/lib/whois/parsers/whois.nic.ht.rb +25 -0
- data/lib/whois/parsers/whois.nic.hu.rb +78 -0
- data/lib/whois/parsers/whois.nic.icu.rb +12 -0
- data/lib/whois/parsers/whois.nic.im.rb +66 -0
- data/lib/whois/parsers/whois.nic.ink.rb +12 -0
- data/lib/whois/parsers/whois.nic.io.rb +52 -0
- data/lib/whois/parsers/whois.nic.ir.rb +70 -0
- data/lib/whois/parsers/whois.nic.it.rb +159 -0
- data/lib/whois/parsers/whois.nic.jobs.rb +25 -0
- data/lib/whois/parsers/whois.nic.ki.rb +25 -0
- data/lib/whois/parsers/whois.nic.kz.rb +69 -0
- data/lib/whois/parsers/whois.nic.la.rb +32 -0
- data/lib/whois/parsers/whois.nic.li.rb +68 -0
- data/lib/whois/parsers/whois.nic.life.rb +10 -0
- data/lib/whois/parsers/whois.nic.link.rb +13 -0
- data/lib/whois/parsers/whois.nic.lk.rb +109 -0
- data/lib/whois/parsers/whois.nic.ltd.rb +8 -0
- data/lib/whois/parsers/whois.nic.lv.rb +69 -0
- data/lib/whois/parsers/whois.nic.ly.rb +78 -0
- data/lib/whois/parsers/whois.nic.market.rb +8 -0
- data/lib/whois/parsers/whois.nic.md.rb +101 -0
- data/lib/whois/parsers/whois.nic.me.rb +85 -0
- data/lib/whois/parsers/whois.nic.mg.rb +35 -0
- data/lib/whois/parsers/whois.nic.ms.rb +37 -0
- data/lib/whois/parsers/whois.nic.mu.rb +25 -0
- data/lib/whois/parsers/whois.nic.mw.rb +33 -0
- data/lib/whois/parsers/whois.nic.mx.rb +79 -0
- data/lib/whois/parsers/whois.nic.name.rb +68 -0
- data/lib/whois/parsers/whois.nic.net.bw.rb +11 -0
- data/lib/whois/parsers/whois.nic.net.ng.rb +27 -0
- data/lib/whois/parsers/whois.nic.net.sa.rb +74 -0
- data/lib/whois/parsers/whois.nic.net.sb.rb +35 -0
- data/lib/whois/parsers/whois.nic.news.rb +8 -0
- data/lib/whois/parsers/whois.nic.nf.rb +50 -0
- data/lib/whois/parsers/whois.nic.ninja.rb +8 -0
- data/lib/whois/parsers/whois.nic.one.rb +41 -0
- data/lib/whois/parsers/whois.nic.online.rb +39 -0
- data/lib/whois/parsers/whois.nic.org.uy.rb +75 -0
- data/lib/whois/parsers/whois.nic.plus.rb +8 -0
- data/lib/whois/parsers/whois.nic.pm.rb +25 -0
- data/lib/whois/parsers/whois.nic.pr.rb +84 -0
- data/lib/whois/parsers/whois.nic.priv.at.rb +62 -0
- data/lib/whois/parsers/whois.nic.pub.rb +8 -0
- data/lib/whois/parsers/whois.nic.pw.rb +25 -0
- data/lib/whois/parsers/whois.nic.re.rb +29 -0
- data/lib/whois/parsers/whois.nic.rocks.rb +8 -0
- data/lib/whois/parsers/whois.nic.run.rb +8 -0
- data/lib/whois/parsers/whois.nic.sh.rb +25 -0
- data/lib/whois/parsers/whois.nic.site.rb +62 -0
- data/lib/whois/parsers/whois.nic.sl.rb +80 -0
- data/lib/whois/parsers/whois.nic.sm.rb +84 -0
- data/lib/whois/parsers/whois.nic.sn.rb +119 -0
- data/lib/whois/parsers/whois.nic.so.rb +71 -0
- data/lib/whois/parsers/whois.nic.software.rb +9 -0
- data/lib/whois/parsers/whois.nic.solutions.rb +9 -0
- data/lib/whois/parsers/whois.nic.space.rb +25 -0
- data/lib/whois/parsers/whois.nic.st.rb +76 -0
- data/lib/whois/parsers/whois.nic.store.rb +15 -0
- data/lib/whois/parsers/whois.nic.studio.rb +8 -0
- data/lib/whois/parsers/whois.nic.systems.rb +8 -0
- data/lib/whois/parsers/whois.nic.tc.rb +25 -0
- data/lib/whois/parsers/whois.nic.tech.rb +33 -0
- data/lib/whois/parsers/whois.nic.technology.rb +8 -0
- data/lib/whois/parsers/whois.nic.tel.rb +25 -0
- data/lib/whois/parsers/whois.nic.tg.rb +49 -0
- data/lib/whois/parsers/whois.nic.tl.rb +32 -0
- data/lib/whois/parsers/whois.nic.tm.rb +101 -0
- data/lib/whois/parsers/whois.nic.today.rb +8 -0
- data/lib/whois/parsers/whois.nic.tools.rb +9 -0
- data/lib/whois/parsers/whois.nic.tr.rb +159 -0
- data/lib/whois/parsers/whois.nic.travel.rb +25 -0
- data/lib/whois/parsers/whois.nic.tv.rb +15 -0
- data/lib/whois/parsers/whois.nic.uk.rb +177 -0
- data/lib/whois/parsers/whois.nic.us.rb +25 -0
- data/lib/whois/parsers/whois.nic.ve.rb +94 -0
- data/lib/whois/parsers/whois.nic.vg.rb +16 -0
- data/lib/whois/parsers/whois.nic.video.rb +10 -0
- data/lib/whois/parsers/whois.nic.vip.rb +13 -0
- data/lib/whois/parsers/whois.nic.website.rb +9 -0
- data/lib/whois/parsers/whois.nic.wf.rb +29 -0
- data/lib/whois/parsers/whois.nic.win.rb +10 -0
- data/lib/whois/parsers/whois.nic.work.rb +10 -0
- data/lib/whois/parsers/whois.nic.works.rb +8 -0
- data/lib/whois/parsers/whois.nic.world.rb +10 -0
- data/lib/whois/parsers/whois.nic.xxx.rb +42 -0
- data/lib/whois/parsers/whois.nic.xyz.rb +25 -0
- data/lib/whois/parsers/whois.nixiregistry.in.rb +15 -0
- data/lib/whois/parsers/whois.norid.no.rb +61 -0
- data/lib/whois/parsers/whois.ovh.com.rb +12 -0
- data/lib/whois/parsers/whois.pairnic.com.rb +28 -0
- data/lib/whois/parsers/whois.pandi.or.id.rb +25 -0
- data/lib/whois/parsers/whois.pir.org.rb +90 -0
- data/lib/whois/parsers/whois.pnina.ps.rb +31 -0
- data/lib/whois/parsers/whois.register.bg.rb +86 -0
- data/lib/whois/parsers/whois.register.com.rb +30 -0
- data/lib/whois/parsers/whois.register.si.rb +73 -0
- data/lib/whois/parsers/whois.registre.ma.rb +65 -0
- data/lib/whois/parsers/whois.registro.br.rb +126 -0
- data/lib/whois/parsers/whois.registry.co.rb +19 -0
- data/lib/whois/parsers/whois.registry.gy.rb +32 -0
- data/lib/whois/parsers/whois.registry.hm.rb +72 -0
- data/lib/whois/parsers/whois.registry.om.rb +40 -0
- data/lib/whois/parsers/whois.registry.qa.rb +25 -0
- data/lib/whois/parsers/whois.ricta.org.rw.rb +16 -0
- data/lib/whois/parsers/whois.ripe.net.rb +68 -0
- data/lib/whois/parsers/whois.rnids.rs.rb +135 -0
- data/lib/whois/parsers/whois.rotld.ro.rb +65 -0
- data/lib/whois/parsers/whois.rrpproxy.net.rb +32 -0
- data/lib/whois/parsers/whois.safenames.net.rb +48 -0
- data/lib/whois/parsers/whois.schlund.info.rb +34 -0
- data/lib/whois/parsers/whois.sgnic.sg.rb +92 -0
- data/lib/whois/parsers/whois.sk-nic.sk.rb +111 -0
- data/lib/whois/parsers/whois.smallregistry.net.rb +131 -0
- data/lib/whois/parsers/whois.srs.net.nz.rb +177 -0
- data/lib/whois/parsers/whois.sx.rb +127 -0
- data/lib/whois/parsers/whois.tcinet.ru.rb +114 -0
- data/lib/whois/parsers/whois.thnic.co.th.rb +80 -0
- data/lib/whois/parsers/whois.tld.ee.rb +134 -0
- data/lib/whois/parsers/whois.tld.sy.rb +34 -0
- data/lib/whois/parsers/whois.tonic.to.rb +100 -0
- data/lib/whois/parsers/whois.tonicregistry.to.rb +12 -0
- data/lib/whois/parsers/whois.trabis.gov.tr.rb +58 -0
- data/lib/whois/parsers/whois.tucows.com.rb +28 -0
- data/lib/whois/parsers/whois.twnic.net.tw.rb +72 -0
- data/lib/whois/parsers/whois.tznic.or.tz.rb +36 -0
- data/lib/whois/parsers/whois.ua.rb +242 -0
- data/lib/whois/parsers/whois.udag.net.rb +28 -0
- data/lib/whois/parsers/whois.uniregistry.net.rb +71 -0
- data/lib/whois/parsers/whois.usp.ac.fj.rb +72 -0
- data/lib/whois/parsers/whois.verisign-grs.com.rb +49 -0
- data/lib/whois/parsers/whois.vunic.vu.rb +14 -0
- data/lib/whois/parsers/whois.website.ws.rb +79 -0
- data/lib/whois/parsers/whois.wildwestdomains.com.rb +37 -0
- data/lib/whois/parsers/whois.yoursrs.com.rb +125 -0
- data/lib/whois/parsers/whois.za.net.rb +72 -0
- data/lib/whois/parsers/whois.za.org.rb +72 -0
- data/lib/whois/parsers/whois.zicta.zm.rb +13 -0
- data/lib/whois/parsers/whois1.nic.bi.rb +25 -0
- data/lib/whois/parsers/za_central_registry.rb +80 -0
- data/lib/whois/parsers.rb +1 -0
- data/lib/whois/safe_record.rb +170 -0
- data/lib/whois/scanners/base.rb +114 -0
- data/lib/whois/scanners/base_afilias.rb +51 -0
- data/lib/whois/scanners/base_cocca2.rb +58 -0
- data/lib/whois/scanners/base_icann_compliant.rb +45 -0
- data/lib/whois/scanners/base_iisse.rb +36 -0
- data/lib/whois/scanners/base_shared1.rb +31 -0
- data/lib/whois/scanners/base_shared2.rb +35 -0
- data/lib/whois/scanners/base_shared3.rb +37 -0
- data/lib/whois/scanners/base_whoisd.rb +44 -0
- data/lib/whois/scanners/iana.rb +89 -0
- data/lib/whois/scanners/scannable.rb +65 -0
- data/lib/whois/scanners/verisign.rb +100 -0
- data/lib/whois/scanners/whois.ati.tn.rb +32 -0
- data/lib/whois/scanners/whois.audns.net.au.rb +32 -0
- data/lib/whois/scanners/whois.cctld.by.rb +35 -0
- data/lib/whois/scanners/whois.centralnic.com.rb +32 -0
- data/lib/whois/scanners/whois.cira.ca.rb +72 -0
- data/lib/whois/scanners/whois.cnnic.cn.rb +42 -0
- data/lib/whois/scanners/whois.denic.de.rb +103 -0
- data/lib/whois/scanners/whois.dns.hr.rb +30 -0
- data/lib/whois/scanners/whois.domainregistry.ie.rb +51 -0
- data/lib/whois/scanners/whois.fi.rb +66 -0
- data/lib/whois/scanners/whois.nc.rb +32 -0
- data/lib/whois/scanners/whois.nic.cz.rb +22 -0
- data/lib/whois/scanners/whois.nic.it.rb +92 -0
- data/lib/whois/scanners/whois.pir.org.rb +17 -0
- data/lib/whois/scanners/whois.rnids.rs.rb +52 -0
- data/lib/whois/scanners/whois.smallregistry.net.rb +50 -0
- data/lib/whois/scanners/whois.srs.net.nz.rb +23 -0
- data/lib/whois/scanners/whois.sx.rb +37 -0
- data/lib/whois/scanners/whois.tld.ee.rb +47 -0
- data/lib/whois/scanners/whois.tucows.com.rb +23 -0
- data/lib/whois/scanners/whois.yoursrs.com.rb +24 -0
- data/lib/whois-parser.rb +10 -0
- metadata +507 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base_shared2'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.tel server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicTel < BaseShared2
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative 'base'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
# Togo's JWhoisServer emits a repeated, label-aligned record rather than
|
|
7
|
+
# the key/value layout used by most modern gTLDs.
|
|
8
|
+
class WhoisNicTg < Base
|
|
9
|
+
include RegistryResponseSafety
|
|
10
|
+
|
|
11
|
+
property_supported :domain do
|
|
12
|
+
content_for_scanner[/^Domain:\.*\s*(\S+)\s*$/i, 1]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
property_supported :status do
|
|
16
|
+
if content_for_scanner.match?(/^NO OBJECT FOUND!\s*$/i)
|
|
17
|
+
:available
|
|
18
|
+
elsif content_for_scanner.match?(/^Domain:\.*\s*\S+/i) &&
|
|
19
|
+
content_for_scanner.match?(/^Status:\.*\s*Activ(?:é|é)/i)
|
|
20
|
+
:registered
|
|
21
|
+
else
|
|
22
|
+
:unknown
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
property_supported :available? do
|
|
27
|
+
status == :available
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
property_supported :registered? do
|
|
31
|
+
status == :registered
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
property_supported :created_on do
|
|
35
|
+
parse_time(content_for_scanner[/^Activation:\.*\s*(\S+)\s*$/i, 1])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
property_supported :expires_on do
|
|
39
|
+
parse_time(content_for_scanner[/^Expiration:\.*\s*(\S+)\s*$/i, 1])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
property_supported :nameservers do
|
|
43
|
+
content_for_scanner.scan(/^Name Server \(DB\):\.*\s*(\S+)\s*$/i).flatten.map do |name|
|
|
44
|
+
Parser::Nameserver.new(name: name.downcase)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base_cocca2'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.tl server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicTl < BaseCocca2
|
|
22
|
+
property_supported :status do
|
|
23
|
+
if content_for_scanner.match?(/^The queried object does not exist: No Object Found\s*$/i)
|
|
24
|
+
:available
|
|
25
|
+
else
|
|
26
|
+
super()
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base'
|
|
11
|
+
require_relative 'registry_response_safety'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module Whois
|
|
15
|
+
class Parsers
|
|
16
|
+
|
|
17
|
+
# Parser for the whois.nic.tm server.
|
|
18
|
+
#
|
|
19
|
+
# @see Whois::Parsers::Example
|
|
20
|
+
# The Example parser for the list of all available methods.
|
|
21
|
+
#
|
|
22
|
+
class WhoisNicTm < Base
|
|
23
|
+
include RegistryResponseSafety
|
|
24
|
+
|
|
25
|
+
property_not_supported :disclaimer
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
property_supported :domain do
|
|
29
|
+
if registered?
|
|
30
|
+
content_for_scanner.match(/^Domain : (.+)\n/)[1]
|
|
31
|
+
elsif available?
|
|
32
|
+
content_for_scanner.match(/^Domain (.+) is available/)[1]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
property_not_supported :domain_id
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
property_supported :status do
|
|
40
|
+
if available?
|
|
41
|
+
:available
|
|
42
|
+
elsif content_for_scanner.match?(/^Domain :\s*\S+/i)
|
|
43
|
+
:registered
|
|
44
|
+
else
|
|
45
|
+
:unknown
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
property_supported :available? do
|
|
50
|
+
!!(content_for_scanner =~ /^Domain \S+ is available for purchase\s*$/i)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
property_supported :registered? do
|
|
54
|
+
status == :registered
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
property_not_supported :created_on
|
|
59
|
+
|
|
60
|
+
property_not_supported :updated_on
|
|
61
|
+
|
|
62
|
+
property_supported :expires_on do
|
|
63
|
+
if content_for_scanner =~ /Expiry : (.+?)\n/
|
|
64
|
+
parse_time(::Regexp.last_match(1))
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
property_not_supported :registrar
|
|
70
|
+
|
|
71
|
+
property_supported :registrant_contacts do
|
|
72
|
+
lines = content_for_scanner.scan(/^Owner\s+: (.+)\n/).flatten
|
|
73
|
+
return if lines.empty?
|
|
74
|
+
|
|
75
|
+
Parser::Contact.new(
|
|
76
|
+
type: Parser::Contact::TYPE_REGISTRANT,
|
|
77
|
+
name: lines[0],
|
|
78
|
+
organization: lines[1],
|
|
79
|
+
address: lines[2],
|
|
80
|
+
zip: nil,
|
|
81
|
+
state: lines[4],
|
|
82
|
+
city: lines[3],
|
|
83
|
+
country: lines[5]
|
|
84
|
+
)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
property_not_supported :admin_contacts
|
|
88
|
+
|
|
89
|
+
property_not_supported :technical_contacts
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
property_supported :nameservers do
|
|
93
|
+
content_for_scanner.scan(/^NS \d\s+: (.+)/).flatten.map do |name|
|
|
94
|
+
Parser::Nameserver.new(name: name)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.tr server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicTr < Base
|
|
22
|
+
|
|
23
|
+
property_not_supported :disclaimer
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
property_not_supported :domain
|
|
27
|
+
|
|
28
|
+
property_not_supported :domain_id
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
property_supported :status do
|
|
32
|
+
# NEWSTATUS invalid
|
|
33
|
+
if invalid?
|
|
34
|
+
:invalid
|
|
35
|
+
elsif available?
|
|
36
|
+
:available
|
|
37
|
+
else
|
|
38
|
+
:registered
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
property_supported :available? do
|
|
43
|
+
!invalid? && !!(content_for_scanner =~ /No match found for "(.+)"/)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
property_supported :registered? do
|
|
47
|
+
!invalid? && !available?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
property_supported :created_on do
|
|
52
|
+
if content_for_scanner =~ /Created on\.+:\s+(.+)\n/
|
|
53
|
+
time = parse_time(::Regexp.last_match(1))
|
|
54
|
+
Time.utc(time.year, time.month, time.day)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
property_not_supported :updated_on
|
|
59
|
+
|
|
60
|
+
property_supported :expires_on do
|
|
61
|
+
if content_for_scanner =~ /Expires on\.+:\s+(.+)\n/
|
|
62
|
+
time = parse_time(::Regexp.last_match(1))
|
|
63
|
+
Time.utc(time.year, time.month, time.day)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
property_not_supported :registrar
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
property_supported :registrant_contacts do
|
|
72
|
+
textblock = content_for_scanner.slice(/^\*\* Registrant:\n((?:\s+.+\n)+)/, 1)
|
|
73
|
+
return unless textblock
|
|
74
|
+
|
|
75
|
+
lines = textblock.lines.map(&:strip)
|
|
76
|
+
|
|
77
|
+
name = lines[0]
|
|
78
|
+
address = lines[1..2].delete_if(&:blank?).join("\n")
|
|
79
|
+
city, country = if lines[3] == "Out of Turkey,"
|
|
80
|
+
[nil, lines[4]]
|
|
81
|
+
else
|
|
82
|
+
[lines[3].chomp(","), lines[4]]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
Parser::Contact.new(
|
|
86
|
+
type: Parser::Contact::TYPE_REGISTRANT,
|
|
87
|
+
name: name,
|
|
88
|
+
address: address,
|
|
89
|
+
city: city,
|
|
90
|
+
country: country,
|
|
91
|
+
email: lines[5],
|
|
92
|
+
phone: lines[6],
|
|
93
|
+
fax: lines[7]
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
property_supported :admin_contacts do
|
|
98
|
+
build_contact("Administrative Contact", Parser::Contact::TYPE_ADMINISTRATIVE)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
property_supported :technical_contacts do
|
|
102
|
+
build_contact("Technical Contact", Parser::Contact::TYPE_TECHNICAL)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
property_supported :nameservers do
|
|
107
|
+
if content_for_scanner =~ /Domain Servers:\n((.+\n)+)\n/
|
|
108
|
+
::Regexp.last_match(1).split("\n").map do |line|
|
|
109
|
+
name, ipv4 = line.split(/\s+/)
|
|
110
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def response_error?
|
|
117
|
+
content_for_scanner =~ /Invalid input/
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
# NEWPROPERTY invalid?
|
|
122
|
+
def invalid?
|
|
123
|
+
cached_properties_fetch :invalid? do
|
|
124
|
+
response_error?
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
private
|
|
130
|
+
|
|
131
|
+
def build_contact(element, type)
|
|
132
|
+
textblock = content_for_scanner.slice(/^\*\* #{element}:\n((?:.+\n)+)\n/, 1)
|
|
133
|
+
return unless textblock
|
|
134
|
+
|
|
135
|
+
lines = []
|
|
136
|
+
textblock.lines.each do |line|
|
|
137
|
+
if line =~ /^\s+.+/
|
|
138
|
+
lines.last.last << "\n" << line.strip
|
|
139
|
+
else
|
|
140
|
+
lines << line.match(/([^\t]+)\t+:\s+(.+)/).to_a[1..2]
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
lines = lines.to_h
|
|
144
|
+
|
|
145
|
+
Parser::Contact.new(
|
|
146
|
+
type: type,
|
|
147
|
+
id: lines["NIC Handle"],
|
|
148
|
+
name: lines["Person"],
|
|
149
|
+
organization: lines["Organization Name"],
|
|
150
|
+
address: lines["Address"],
|
|
151
|
+
phone: lines["Phone"],
|
|
152
|
+
fax: lines["Fax"]
|
|
153
|
+
)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
end
|
|
159
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base_shared2'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.travel server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicTravel < BaseShared2
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_relative 'base_icann_compliant'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
# Parser for the whois.nic.tv server.
|
|
7
|
+
class WhoisNicTv < BaseIcannCompliant
|
|
8
|
+
include RegistryResponseSafety
|
|
9
|
+
|
|
10
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
11
|
+
pattern_available: /^No Data Found\n/,
|
|
12
|
+
}
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.uk server.
|
|
17
|
+
#
|
|
18
|
+
# @note This parser is just a stub and provides only a few basic methods
|
|
19
|
+
# to check for domain availability and get domain status.
|
|
20
|
+
# Please consider to contribute implementing missing methods.
|
|
21
|
+
#
|
|
22
|
+
# @see http://www.nominet.org.uk/other/whois/detailedinstruct/
|
|
23
|
+
#
|
|
24
|
+
class WhoisNicUk < Base
|
|
25
|
+
|
|
26
|
+
# == Values for Status
|
|
27
|
+
#
|
|
28
|
+
# @see http://www.nominet.org.uk/registrars/systems/data/regstatus/
|
|
29
|
+
# @see http://www.nominet.org.uk/registrants/maintain/renew/status/
|
|
30
|
+
#
|
|
31
|
+
property_supported :status do
|
|
32
|
+
if content_for_scanner =~ /\s+Registration status:\s+(.+?)\n/
|
|
33
|
+
case ::Regexp.last_match(1).downcase
|
|
34
|
+
when "registered until expiry date."
|
|
35
|
+
:registered
|
|
36
|
+
when "registration request being processed."
|
|
37
|
+
:registered
|
|
38
|
+
when "renewal request being processed."
|
|
39
|
+
:registered
|
|
40
|
+
when "no longer required"
|
|
41
|
+
:registered
|
|
42
|
+
when "no registration status listed."
|
|
43
|
+
:reserved
|
|
44
|
+
# NEWSTATUS redemption (https://github.com/weppos/whois/issues/5)
|
|
45
|
+
when "renewal required."
|
|
46
|
+
:registered
|
|
47
|
+
else
|
|
48
|
+
Whois::Parser.bug!(ParserError, "Unknown status `#{::Regexp.last_match(1)}'.")
|
|
49
|
+
end
|
|
50
|
+
elsif invalid?
|
|
51
|
+
:invalid
|
|
52
|
+
else
|
|
53
|
+
:available
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
property_supported :available? do
|
|
58
|
+
!!(content_for_scanner =~ /This domain name has not been registered/)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
property_supported :registered? do
|
|
62
|
+
!available?
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
property_supported :created_on do
|
|
67
|
+
if content_for_scanner =~ /\s+Registered on:\s+(.+)\n/
|
|
68
|
+
parse_time(::Regexp.last_match(1))
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
property_supported :updated_on do
|
|
73
|
+
if content_for_scanner =~ /\s+Last updated:\s+(.+)\n/
|
|
74
|
+
parse_time(::Regexp.last_match(1))
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
property_supported :expires_on do
|
|
79
|
+
if content_for_scanner =~ /\s+Expiry date:\s+(.+)\n/
|
|
80
|
+
parse_time(::Regexp.last_match(1))
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
# @see http://www.nic.uk/other/whois/instruct/
|
|
86
|
+
property_supported :registrar do
|
|
87
|
+
if content_for_scanner =~ /Registrar:\n((.+\n)+)\n/
|
|
88
|
+
content = ::Regexp.last_match(1).strip
|
|
89
|
+
id = name = org = url = nil
|
|
90
|
+
|
|
91
|
+
if content =~ /Tag =/
|
|
92
|
+
name, id = (content =~ /(.+) \[Tag = (.+)\]/) && [::Regexp.last_match(1).strip, ::Regexp.last_match(2).strip]
|
|
93
|
+
org, name = name.split(" t/a ")
|
|
94
|
+
url = (content =~ /URL: (.+)/) && ::Regexp.last_match(1).strip
|
|
95
|
+
elsif content =~ /This domain is registered directly with Nominet/
|
|
96
|
+
name = "Nominet"
|
|
97
|
+
org = "Nominet UK"
|
|
98
|
+
url = "http://www.nic.uk/"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
Parser::Registrar.new(
|
|
102
|
+
:id => id,
|
|
103
|
+
:name => name || org,
|
|
104
|
+
:organization => org,
|
|
105
|
+
:url => url
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
property_supported :registrant_contacts do
|
|
112
|
+
if content_for_scanner =~ /Registrant's address:\n((.+\n)+)\n/
|
|
113
|
+
lines = ::Regexp.last_match(1).split("\n").map(&:strip)
|
|
114
|
+
address = lines[0..-5]
|
|
115
|
+
city = lines[-4]
|
|
116
|
+
state = lines[-3]
|
|
117
|
+
zip = lines[-2]
|
|
118
|
+
country = lines[-1]
|
|
119
|
+
|
|
120
|
+
Parser::Contact.new(
|
|
121
|
+
:type => Parser::Contact::TYPE_REGISTRANT,
|
|
122
|
+
:name => content_for_scanner[/Registrant:\n\s*(.+)\n/, 1],
|
|
123
|
+
:address => address.join("\n"),
|
|
124
|
+
:city => city,
|
|
125
|
+
:state => state,
|
|
126
|
+
:zip => zip,
|
|
127
|
+
:country => country
|
|
128
|
+
)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
property_supported :nameservers do
|
|
134
|
+
if content_for_scanner =~ /Name servers:\n((.+\n)+)\n/
|
|
135
|
+
::Regexp.last_match(1).split("\n").reject { |value| value =~ /No name servers listed/ }.map do |line|
|
|
136
|
+
name, ipv4, ipv6 = line.strip.split(/\s+/)
|
|
137
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4, :ipv6 => ipv6)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
# Checks whether the response has been throttled.
|
|
144
|
+
#
|
|
145
|
+
# @return [Boolean]
|
|
146
|
+
#
|
|
147
|
+
# @example
|
|
148
|
+
# The WHOIS query quota for 127.0.0.1 has been exceeded
|
|
149
|
+
# and will be replenished in 50 seconds.
|
|
150
|
+
#
|
|
151
|
+
def response_throttled?
|
|
152
|
+
!!(content_for_scanner =~ /The WHOIS query quota for .+ has been exceeded/)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
# NEWPROPERTY
|
|
157
|
+
def valid?
|
|
158
|
+
cached_properties_fetch(:valid?) do
|
|
159
|
+
!invalid?
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# NEWPROPERTY
|
|
164
|
+
def invalid?
|
|
165
|
+
cached_properties_fetch(:invalid?) do
|
|
166
|
+
!!(content_for_scanner =~ /This domain cannot be registered/)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# NEWPROPERTY
|
|
171
|
+
# def suspended?
|
|
172
|
+
# end
|
|
173
|
+
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
|
177
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#
|
|
4
|
+
# An intelligent pure Ruby WHOIS client and parser.
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2009-2022 Simone Carletti <weppos@weppos.net>
|
|
7
|
+
#++
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
require_relative 'base_shared2'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.us server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicUs < BaseShared2
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|