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,75 @@
|
|
|
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.isoc.org.il parser
|
|
18
|
+
#
|
|
19
|
+
# Parser for the whois.isoc.org.il 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 WhoisIsocOrgIl < Base
|
|
28
|
+
|
|
29
|
+
property_supported :status do
|
|
30
|
+
if content_for_scanner =~ /status:\s+(.*?)\n/
|
|
31
|
+
case ::Regexp.last_match(1).downcase
|
|
32
|
+
when "transfer locked"
|
|
33
|
+
:registered
|
|
34
|
+
when "transfer allowed"
|
|
35
|
+
:registered
|
|
36
|
+
else
|
|
37
|
+
Whois::Parser.bug!(ParserError, "Unknown status `#{::Regexp.last_match(1)}'.")
|
|
38
|
+
end
|
|
39
|
+
else
|
|
40
|
+
:available
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
property_supported :available? do
|
|
45
|
+
status == :available
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
property_supported :registered? do
|
|
49
|
+
!available?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
# TODO: first changed record
|
|
54
|
+
property_not_supported :created_on
|
|
55
|
+
|
|
56
|
+
property_supported :updated_on do
|
|
57
|
+
if content_for_scanner =~ /changed:\s+(.+)\n/
|
|
58
|
+
t = content_for_scanner.scan(/changed:\s+(?:.+?) (\d+) \(.+\)\n/).flatten.last
|
|
59
|
+
parse_time(t)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
property_not_supported :expires_on
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
property_supported :nameservers do
|
|
67
|
+
content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
|
|
68
|
+
Parser::Nameserver.new(:name => name.strip)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
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.ja.net 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 WhoisJaNet < 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 =~ /^No such domain (.+)/)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
property_supported :registered? do
|
|
40
|
+
!available?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
property_supported :created_on do
|
|
45
|
+
if content_for_scanner =~ /^Entry created:\n\s+(.+?)\n/
|
|
46
|
+
parse_time(::Regexp.last_match(1))
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
property_supported :updated_on do
|
|
51
|
+
if content_for_scanner =~ /^Entry updated:\n\s+(.+?)\n/
|
|
52
|
+
parse_time(::Regexp.last_match(1))
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
property_supported :expires_on do
|
|
57
|
+
if content_for_scanner =~ /^Renewal date:\n\s+(.+?)\n/
|
|
58
|
+
parse_time(::Regexp.last_match(1))
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
property_supported :nameservers do
|
|
64
|
+
if content_for_scanner =~ /Servers:\n((.+\n)+)\n/
|
|
65
|
+
::Regexp.last_match(1).split("\n").map do |line|
|
|
66
|
+
name, ipv4 = line.strip.downcase.split("\t")
|
|
67
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
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.je server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisJe < BaseCocca
|
|
22
|
+
property_supported :domain do
|
|
23
|
+
if (value = content_for_scanner[/\ADomain:\s*\n\s*(\S+)\s*$/i, 1])
|
|
24
|
+
value.downcase
|
|
25
|
+
else
|
|
26
|
+
super()
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
property_supported :status do
|
|
31
|
+
if content_for_scanner.strip.match?(/\ANOT FOUND\z/i)
|
|
32
|
+
:available
|
|
33
|
+
elsif content_for_scanner.match?(/\ADomain:\s*\n\s*\S+/i)
|
|
34
|
+
:registered
|
|
35
|
+
else
|
|
36
|
+
super()
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
property_supported :available? do
|
|
41
|
+
status == :available
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
property_supported :registered? do
|
|
45
|
+
status == :registered
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
property_supported :created_on do
|
|
49
|
+
if content_for_scanner =~ /^\s*Registered on (\d{1,2})(?:st|nd|rd|th)\s+([A-Za-z]+)\s+(\d{4})/i
|
|
50
|
+
parse_time("#{::Regexp.last_match(1)} #{::Regexp.last_match(2)} #{::Regexp.last_match(3)}")
|
|
51
|
+
else
|
|
52
|
+
super()
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
property_supported :registrar do
|
|
57
|
+
if (value = content_for_scanner[%r{^Registrar:\s*(.+?)\s*\((https?://[^)]+)\)}i, 1])
|
|
58
|
+
Parser::Registrar.new(name: value.strip)
|
|
59
|
+
else
|
|
60
|
+
super()
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
property_supported :nameservers do
|
|
65
|
+
current = content_for_scanner.scan(/^\s*(ns\d+\.\S+)\s*$/i).flatten
|
|
66
|
+
if current.empty?
|
|
67
|
+
super()
|
|
68
|
+
else
|
|
69
|
+
current.map { |name| Parser::Nameserver.new(name: name.downcase) }
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
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.jprs.jp 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 WhoisJprsJp < Base
|
|
26
|
+
|
|
27
|
+
property_supported :status do
|
|
28
|
+
if content_for_scanner =~ /\[Status\]\s+(.+)\n/
|
|
29
|
+
case ::Regexp.last_match(1).downcase
|
|
30
|
+
when "active"
|
|
31
|
+
:registered
|
|
32
|
+
when "reserved"
|
|
33
|
+
:reserved
|
|
34
|
+
when "to be suspended"
|
|
35
|
+
:redemption
|
|
36
|
+
when "suspended"
|
|
37
|
+
:expired
|
|
38
|
+
else
|
|
39
|
+
Whois::Parser.bug!(ParserError, "Unknown status `#{::Regexp.last_match(1)}'.")
|
|
40
|
+
end
|
|
41
|
+
elsif content_for_scanner =~ /\[State\]\s+(.+)\n/
|
|
42
|
+
case ::Regexp.last_match(1).split(" ").first.downcase
|
|
43
|
+
when "connected", "registered"
|
|
44
|
+
:registered
|
|
45
|
+
when "deleted"
|
|
46
|
+
:suspended
|
|
47
|
+
when "reserved"
|
|
48
|
+
:reserved
|
|
49
|
+
else
|
|
50
|
+
Whois::Parser.bug!(ParserError, "Unknown status `#{::Regexp.last_match(1)}'.")
|
|
51
|
+
end
|
|
52
|
+
else
|
|
53
|
+
:available
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
property_supported :available? do
|
|
58
|
+
!!(content_for_scanner =~ /No match!!/)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
property_supported :registered? do
|
|
62
|
+
!available?
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# TODO: timezone ('Asia/Tokyo')
|
|
67
|
+
property_supported :created_on do
|
|
68
|
+
if content_for_scanner =~ /\[(?:Created on|Registered Date)\][ \t]+(.*)\n/
|
|
69
|
+
::Regexp.last_match(1).empty? ? nil : parse_time(::Regexp.last_match(1))
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# TODO: timezone ('Asia/Tokyo')
|
|
74
|
+
property_supported :updated_on do
|
|
75
|
+
if content_for_scanner =~ /\[Last Updated?\][ \t]+(.*)\n/
|
|
76
|
+
::Regexp.last_match(1).empty? ? nil : parse_time(::Regexp.last_match(1))
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# TODO: timezone ('Asia/Tokyo')
|
|
81
|
+
property_supported :expires_on do
|
|
82
|
+
if content_for_scanner =~ /\[(?:Expires on|State)\][ \t]+(.*)\n/
|
|
83
|
+
::Regexp.last_match(1).empty? ? nil : parse_time(::Regexp.last_match(1))
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
property_supported :nameservers do
|
|
89
|
+
content_for_scanner.scan(/\[Name Server\][\s\t]+([^\s\n]+?)\n/).flatten.map do |name|
|
|
90
|
+
Parser::Nameserver.new(:name => name)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# NEWPROPERTY
|
|
96
|
+
def reserved?
|
|
97
|
+
status == :reserved
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
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.kenic.or.ke 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 WhoisKenicOrKe < Base
|
|
26
|
+
|
|
27
|
+
property_supported :status do
|
|
28
|
+
if content_for_scanner =~ /Status:\s+(.+?)\n/
|
|
29
|
+
case ::Regexp.last_match(1).strip.downcase
|
|
30
|
+
when /\Aactive(?:\s|\z)/
|
|
31
|
+
:registered
|
|
32
|
+
when /\Anot registered\z/
|
|
33
|
+
:available
|
|
34
|
+
when "this whois server does not have any records for that zone."
|
|
35
|
+
:invalid
|
|
36
|
+
else
|
|
37
|
+
:unknown
|
|
38
|
+
end
|
|
39
|
+
elsif content_for_scanner.match?(/^The queried object does not exist: No Object Found\s*$/i)
|
|
40
|
+
:available
|
|
41
|
+
else
|
|
42
|
+
:unknown
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
property_supported :available? do
|
|
47
|
+
status == :available
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
property_supported :registered? do
|
|
51
|
+
status == :registered
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
property_supported :created_on do
|
|
56
|
+
if content_for_scanner =~ /Created:\s+(.+?)\n/
|
|
57
|
+
parse_time(::Regexp.last_match(1))
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
property_supported :updated_on do
|
|
62
|
+
if content_for_scanner =~ /Modified:\s+(.+?)\n/
|
|
63
|
+
parse_time(::Regexp.last_match(1))
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
property_supported :expires_on do
|
|
68
|
+
if content_for_scanner =~ /Expires:\s+(.+?)\n/
|
|
69
|
+
parse_time(::Regexp.last_match(1))
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
property_supported :nameservers do
|
|
75
|
+
if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
|
|
76
|
+
::Regexp.last_match(1).split("\n").map do |name|
|
|
77
|
+
Parser::Nameserver.new(:name => name.strip)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# NEWPROPERTY
|
|
84
|
+
def invalid?
|
|
85
|
+
cached_properties_fetch(:invalid?) do
|
|
86
|
+
status == :invalid
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
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.kg server.
|
|
18
|
+
#
|
|
19
|
+
# @note This parser is just a stub and provides only a few basic methods
|
|
20
|
+
# to check for domain availability and get domain status.
|
|
21
|
+
# Please consider to contribute implementing missing methods.
|
|
22
|
+
#
|
|
23
|
+
# @see Whois::Parsers::Example
|
|
24
|
+
# The Example parser for the list of all available methods.
|
|
25
|
+
class WhoisKg < Base
|
|
26
|
+
include RegistryResponseSafety
|
|
27
|
+
|
|
28
|
+
property_supported :status do
|
|
29
|
+
if available?
|
|
30
|
+
:available
|
|
31
|
+
elsif content_for_scanner.match?(/^Record created:/i)
|
|
32
|
+
:registered
|
|
33
|
+
else
|
|
34
|
+
:unknown
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
property_supported :available? do
|
|
39
|
+
!!(content_for_scanner =~ /^Data not found\. This domain is available for registration\.\s*$/i)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
property_supported :registered? do
|
|
43
|
+
status == :registered
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
property_supported :created_on do
|
|
48
|
+
if content_for_scanner =~ /Record created: (.+?)\n/
|
|
49
|
+
parse_time(::Regexp.last_match(1))
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
property_supported :updated_on do
|
|
54
|
+
if content_for_scanner =~ /Record last updated on (.+?)\n/
|
|
55
|
+
parse_time(::Regexp.last_match(1))
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
property_supported :expires_on do
|
|
60
|
+
if content_for_scanner =~ /Record expires on (.+?)\n/
|
|
61
|
+
parse_time(::Regexp.last_match(1))
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
property_supported :nameservers do
|
|
67
|
+
if content_for_scanner =~ /Name servers in the listed order:\n\n((.+\n)+)\n/
|
|
68
|
+
::Regexp.last_match(1).split("\n").map do |name|
|
|
69
|
+
Parser::Nameserver.new(:name => name.downcase)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
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
|
+
# Parser for the whois.kr 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 WhoisKr < 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 =~ /(?:^Above domain name is not registered to KRNIC|^The requested domain was not found in the Registry or Registrar’s WHOIS Server\.)/)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
property_supported :registered? do
|
|
40
|
+
!available?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
property_supported :created_on do
|
|
45
|
+
if content_for_scanner =~ /Registered Date\s+:\s+(.+)\n/
|
|
46
|
+
parse_time(::Regexp.last_match(1))
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
property_supported :updated_on do
|
|
51
|
+
if content_for_scanner =~ /Last Updated Date\s+:\s+(.+)\n/
|
|
52
|
+
parse_time(::Regexp.last_match(1))
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
property_supported :expires_on do
|
|
57
|
+
if content_for_scanner =~ /Expiration Date\s+:\s+(.+)\n/
|
|
58
|
+
parse_time(::Regexp.last_match(1))
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
property_supported :nameservers do
|
|
64
|
+
content_for_scanner.scan(/^\w+ Name Server\n((?:.+\n)+)\n/).flatten.map do |group|
|
|
65
|
+
Parser::Nameserver.new.tap do |nameserver|
|
|
66
|
+
if group =~ /\s+Host Name\s+:\s+(.+)\n/
|
|
67
|
+
nameserver.name = ::Regexp.last_match(1)
|
|
68
|
+
end
|
|
69
|
+
if group =~ /\s+IP Address\s+:\s+(.+)\n/
|
|
70
|
+
nameserver.ipv4 = ::Regexp.last_match(1)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
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.markmonitor.com server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisMarkmonitorCom < BaseIcannCompliant
|
|
22
|
+
|
|
23
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
24
|
+
pattern_available: /^No match for/,
|
|
25
|
+
pattern_throttled: /^You have exceeded your quota of queries\./,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def response_throttled?
|
|
30
|
+
!!node("response:throttled")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'base_whoisd'
|
|
4
|
+
|
|
5
|
+
module Whois
|
|
6
|
+
class Parsers
|
|
7
|
+
# Parser for the whois.marnet.mk server.
|
|
8
|
+
class WhoisMarnetMk < BaseWhoisd
|
|
9
|
+
property_supported :status do
|
|
10
|
+
if available?
|
|
11
|
+
:available
|
|
12
|
+
elsif node('domain') && [node('registered'), node('registrar'), node('expire')].any?(&:present?)
|
|
13
|
+
:registered
|
|
14
|
+
else
|
|
15
|
+
:unknown
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|