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,83 @@
|
|
|
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.monic.mo server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisMonicMo < Base
|
|
22
|
+
|
|
23
|
+
property_not_supported :disclaimer
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
property_supported :domain do
|
|
27
|
+
if content_for_scanner =~ /Domain Name:\s+(.+)\n/
|
|
28
|
+
::Regexp.last_match(1).downcase
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
property_not_supported :domain_id
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
property_supported :status do
|
|
36
|
+
if available?
|
|
37
|
+
:available
|
|
38
|
+
else
|
|
39
|
+
:registered
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
property_supported :available? do
|
|
44
|
+
!!(content_for_scanner =~ /No match for/)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
property_supported :registered? do
|
|
48
|
+
!available?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
property_not_supported :created_on
|
|
53
|
+
|
|
54
|
+
property_not_supported :updated_on
|
|
55
|
+
|
|
56
|
+
property_not_supported :expires_on
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
property_supported :registrar do
|
|
60
|
+
if content_for_scanner =~ /Registrar:\s+(.+)\n/
|
|
61
|
+
Parser::Registrar.new(
|
|
62
|
+
:name => ::Regexp.last_match(1)
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
property_not_supported :registrant_contacts
|
|
68
|
+
|
|
69
|
+
property_not_supported :admin_contacts
|
|
70
|
+
|
|
71
|
+
property_not_supported :technical_contacts
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
property_supported :nameservers do
|
|
75
|
+
content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |name|
|
|
76
|
+
Parser::Nameserver.new(:name => name.downcase)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
#
|
|
17
|
+
# = whois.museum parser
|
|
18
|
+
#
|
|
19
|
+
# Parser for the whois.museum server.
|
|
20
|
+
#
|
|
21
|
+
# NOTE: This parser is just a stub and provides only a few basic methods
|
|
22
|
+
# to check for domain availability and get domain status.
|
|
23
|
+
# Please consider to contribute implementing missing methods.
|
|
24
|
+
# See WhoisNicIt parser for an explanation of all available methods
|
|
25
|
+
# and examples.
|
|
26
|
+
#
|
|
27
|
+
class WhoisMuseum < Base
|
|
28
|
+
|
|
29
|
+
property_supported :status do
|
|
30
|
+
if available?
|
|
31
|
+
:available
|
|
32
|
+
else
|
|
33
|
+
:registered
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
property_supported :available? do
|
|
38
|
+
!!(content_for_scanner =~ /NOT FOUND/)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
property_supported :registered? do
|
|
42
|
+
!available?
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
property_supported :created_on do
|
|
47
|
+
if content_for_scanner =~ /Created On:(.*?)\n/
|
|
48
|
+
parse_time(::Regexp.last_match(1))
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
property_supported :updated_on do
|
|
53
|
+
if content_for_scanner =~ /Last Updated On:(.*?)\n/
|
|
54
|
+
parse_time(::Regexp.last_match(1))
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
property_supported :expires_on do
|
|
59
|
+
if content_for_scanner =~ /Expiration Date:(.*?)\n/
|
|
60
|
+
parse_time(::Regexp.last_match(1))
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Nameservers are listed in the following formats:
|
|
65
|
+
#
|
|
66
|
+
# Name Server: nic.frd.se
|
|
67
|
+
# Name Server: nic.museum 130.242.24.5
|
|
68
|
+
#
|
|
69
|
+
property_supported :nameservers do
|
|
70
|
+
content_for_scanner.scan(/Name Server:\s+(.+)\n/).flatten.map do |line|
|
|
71
|
+
name, ipv4 = line.split(/\s+/)
|
|
72
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#++
|
|
4
|
+
|
|
5
|
+
require_relative 'whois.nic.mx.rb'
|
|
6
|
+
|
|
7
|
+
module Whois
|
|
8
|
+
class Parsers
|
|
9
|
+
|
|
10
|
+
# The registry currently advertises whois.mx. Keep the existing parser
|
|
11
|
+
# implementation shared with the historical whois.nic.mx hostname.
|
|
12
|
+
class WhoisMx < WhoisNicMx
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
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.mynic.my 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 Whois::Parsers::Example
|
|
23
|
+
# The Example parser for the list of all available methods.
|
|
24
|
+
class WhoisMynicMy < Base
|
|
25
|
+
|
|
26
|
+
property_supported :status do
|
|
27
|
+
if available?
|
|
28
|
+
:available
|
|
29
|
+
else
|
|
30
|
+
:registered
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
property_supported :available? do
|
|
35
|
+
!!(content_for_scanner =~ /Domain Name [^ ]+ does not exist in database/ ||
|
|
36
|
+
content_for_scanner =~ /^>>> Domain .+ is available for registration$/)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
property_supported :registered? do
|
|
40
|
+
!available?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# MYNIC includes a normal informational "query limit is 500 per day"
|
|
44
|
+
# footer in successful responses. Only classify explicit limit failures,
|
|
45
|
+
# never that policy text, so a denied lookup cannot look registered.
|
|
46
|
+
def response_throttled?
|
|
47
|
+
content_for_scanner.match?(/^(?:\s*(?:%|#)\s*)?(?:whois\s+)?query\s+(?:rate\s+)?limit\s+exceeded\b/i) ||
|
|
48
|
+
content_for_scanner.match?(/^(?:\s*(?:%|#)\s*)?you\s+have\s+exceeded\s+your\s+(?:daily|monthly)(?:\s+\w+){0,2}\s+(?:api\s+)?(?:rate\s+)?limit\b/i) ||
|
|
49
|
+
content_for_scanner.match?(/^(?:\s*(?:%|#)\s*)?maximum\s+query\s+rate\s+reached\b/i)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def response_unavailable?
|
|
53
|
+
content_for_scanner.match?(/^(?:\s*(?:%|#)\s*)?(?:requests of this client are not permitted|access to the whois service is denied)\b/i)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
property_supported :created_on do
|
|
58
|
+
if content_for_scanner =~ /\[Record Created\]\s+(.+?)\n/
|
|
59
|
+
parse_time(::Regexp.last_match(1))
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
property_supported :updated_on do
|
|
64
|
+
if content_for_scanner =~ /\[Record Last Modified\]\s+(.+?)\n/
|
|
65
|
+
parse_time(::Regexp.last_match(1))
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
property_supported :expires_on do
|
|
70
|
+
if content_for_scanner =~ /\[Record Expired\]\s+(.+?)\n/
|
|
71
|
+
parse_time(::Regexp.last_match(1))
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
property_supported :nameservers do
|
|
77
|
+
content_for_scanner.scan(/\[(?:Primary|Secondary) Name Server\](?:.+?)\n(.+\n)/).flatten.map do |line|
|
|
78
|
+
name, ipv4 = line.strip.split(/\s+/)
|
|
79
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
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.na-nic.com.na server.
|
|
17
|
+
class WhoisNaNicComNa < BaseCocca2
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
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 'whois/scanners/whois.nc.rb'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module Whois
|
|
15
|
+
class Parsers
|
|
16
|
+
|
|
17
|
+
# Parser for the whois.nc server.
|
|
18
|
+
#
|
|
19
|
+
# @see Whois::Parsers::Example
|
|
20
|
+
# The Example parser for the list of all available methods.
|
|
21
|
+
#
|
|
22
|
+
class WhoisNc < Base
|
|
23
|
+
include Scanners::Scannable
|
|
24
|
+
|
|
25
|
+
self.scanner = Scanners::WhoisNc
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
property_not_supported :disclaimer
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
property_supported :domain do
|
|
32
|
+
node("Domain")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
property_not_supported :domain_id
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
property_supported :status do
|
|
39
|
+
if available?
|
|
40
|
+
:available
|
|
41
|
+
else
|
|
42
|
+
:registered
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
property_supported :available? do
|
|
47
|
+
!!node("status:available")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
property_supported :registered? do
|
|
51
|
+
!available?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
property_supported :created_on do
|
|
56
|
+
node("Created on") { |value| parse_time(value) }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
property_supported :updated_on do
|
|
60
|
+
node("Last updated on") { |value| parse_time(value) }
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
property_supported :expires_on do
|
|
64
|
+
node("Expires on") { |value| parse_time(value) }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
property_not_supported :registrar
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
property_supported :registrant_contacts do
|
|
72
|
+
node("Registrant name") do |str|
|
|
73
|
+
address = []
|
|
74
|
+
index = 1
|
|
75
|
+
while line = node("Registrant address #{index}")
|
|
76
|
+
address << line
|
|
77
|
+
index += 1
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
lines = address.dup
|
|
81
|
+
country = lines[-1] =~ /(\d+)/ ? nil : lines.pop
|
|
82
|
+
zip, city = lines.pop.match(/(\d+) (.+)/)[1, 2]
|
|
83
|
+
|
|
84
|
+
Parser::Contact.new(
|
|
85
|
+
:type => Parser::Contact::TYPE_REGISTRANT,
|
|
86
|
+
:id => nil,
|
|
87
|
+
:name => node("Registrant name"),
|
|
88
|
+
:organization => nil,
|
|
89
|
+
:address => lines.join("\n"),
|
|
90
|
+
:city => city,
|
|
91
|
+
:zip => zip,
|
|
92
|
+
:state => nil,
|
|
93
|
+
:country => country,
|
|
94
|
+
:phone => nil,
|
|
95
|
+
:fax => nil,
|
|
96
|
+
:email => nil
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
property_not_supported :admin_contacts
|
|
102
|
+
|
|
103
|
+
property_not_supported :technical_contacts
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
property_supported :nameservers do
|
|
107
|
+
nameservers = []
|
|
108
|
+
index = 1
|
|
109
|
+
while line = node("Domain server #{index}")
|
|
110
|
+
nameservers << line
|
|
111
|
+
index += 1
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
nameservers.map do |name|
|
|
115
|
+
Parser::Nameserver.new(:name => name)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
122
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
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_cocca'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.netcom.cm server.
|
|
17
|
+
class WhoisNetcomCm < BaseCocca
|
|
18
|
+
|
|
19
|
+
status_mapping.merge!({
|
|
20
|
+
"suspended" => :registered,
|
|
21
|
+
"active https://icann.org/epp#active" => :registered,
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
property_supported :domain do
|
|
25
|
+
content_for_scanner[/^Domain Name:\s*(\S+)/i, 1]&.downcase || super()
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
property_supported :status do
|
|
29
|
+
return :available if available?
|
|
30
|
+
|
|
31
|
+
value = content_for_scanner[/^Domain Status:\s*(.+)$/i, 1]
|
|
32
|
+
if value
|
|
33
|
+
normalized = value.downcase.sub(%r{\s+https?://.*\z}, '')
|
|
34
|
+
return self.class.status_mapping[normalized] if self.class.status_mapping.key?(normalized)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
super()
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
property_supported :available? do
|
|
41
|
+
!!(content_for_scanner =~ /^(?:The queried object does not exist:\s*No Object Found|Status:\s*Not Registered)$/i)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
property_supported :nameservers do
|
|
45
|
+
current = content_for_scanner.scan(/^Name Server:\s*(\S+)/i).flatten.map do |name|
|
|
46
|
+
Parser::Nameserver.new(name: name.downcase)
|
|
47
|
+
end
|
|
48
|
+
current.empty? ? super() : current
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
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_icann_compliant'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.networksolutions.com server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNetworksolutionsCom < BaseIcannCompliant
|
|
22
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
23
|
+
pattern_available: /^No match for "[\w.]+"\.\n/,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def build_contact(element, type)
|
|
29
|
+
if (contact = super) && !contact.state.present?
|
|
30
|
+
contact.state = node("#{element} State")
|
|
31
|
+
end
|
|
32
|
+
contact
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
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_icb'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.ac server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicAc < BaseIcb
|
|
22
|
+
|
|
23
|
+
# The registry currently uses the same absence wording as Identity
|
|
24
|
+
# Digital's other WHOIS services, in addition to the older `NOT FOUND`
|
|
25
|
+
# response handled by BaseIcb.
|
|
26
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
27
|
+
pattern_available: /^(?:NOT FOUND|Domain not found\.)/i,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
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.af server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisNicAf < 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,33 @@
|
|
|
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_afilias'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.nic.ag server.
|
|
17
|
+
class WhoisNicAg < BaseAfilias
|
|
18
|
+
|
|
19
|
+
# Current .ag responses begin directly with key/value fields and append
|
|
20
|
+
# a long policy footer after the registry's update marker. Avoid the
|
|
21
|
+
# legacy disclaimer heuristic and parse only the registry record.
|
|
22
|
+
self.scanner = Scanners::BaseAfilias, {
|
|
23
|
+
pattern_disclaimer: /^Access to CCTLD WHOIS information is provided/,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
def content
|
|
27
|
+
super.sub(/\n>>> Last update of WHOIS database:.*\z/m, "\n")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
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.ai 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 Whois::Parsers::Example
|
|
23
|
+
# The Example parser for the list of all available methods.
|
|
24
|
+
#
|
|
25
|
+
class WhoisNicAi < Base
|
|
26
|
+
|
|
27
|
+
property_supported :status do
|
|
28
|
+
if available?
|
|
29
|
+
:available
|
|
30
|
+
else
|
|
31
|
+
:registered
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
property_supported :available? do
|
|
36
|
+
!!(content_for_scanner =~ /(?:^Domain (.+?) not registred\.|^Domain not found\.)/)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
property_supported :registered? do
|
|
40
|
+
!available?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
property_not_supported :created_on
|
|
45
|
+
|
|
46
|
+
property_not_supported :updated_on
|
|
47
|
+
|
|
48
|
+
property_not_supported :expires_on
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
property_supported :nameservers do
|
|
52
|
+
if content_for_scanner =~ /Nameservers\n((.+\n)+)\n/
|
|
53
|
+
::Regexp.last_match(1).split("\n").select { |e| e =~ /Server Hostname/ }.map do |line|
|
|
54
|
+
Parser::Nameserver.new(:name => line.split(":").last.strip)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
end
|