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,144 @@
|
|
|
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
|
+
require 'whois/scanners/whois.centralnic.com.rb'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
module Whois
|
|
16
|
+
class Parsers
|
|
17
|
+
|
|
18
|
+
# Parser for the whois.centralnic.com server.
|
|
19
|
+
class WhoisCentralnicCom < Base
|
|
20
|
+
include RegistryResponseSafety
|
|
21
|
+
include Scanners::Scannable
|
|
22
|
+
|
|
23
|
+
self.scanner = Scanners::WhoisCentralnicCom
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
property_supported :disclaimer do
|
|
27
|
+
node("field:disclaimer")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
property_supported :domain do
|
|
32
|
+
node("Domain Name") { |str| str.downcase }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
property_supported :domain_id do
|
|
36
|
+
node("Domain ID")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
property_supported :status do
|
|
41
|
+
# OK, RENEW PERIOD, ...
|
|
42
|
+
Array.wrap(
|
|
43
|
+
node("Status") ||
|
|
44
|
+
node("Domain Status")
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
property_supported :available? do
|
|
49
|
+
!!node("status:available")
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
property_supported :registered? do
|
|
53
|
+
!available? && !Array.wrap(node("Status") || node("Domain Status")).empty? &&
|
|
54
|
+
!node('Domain Name').to_s.strip.empty? &&
|
|
55
|
+
Array.wrap(node("Status") || node("Domain Status")).none? { |value| value.to_s.strip.casecmp('unknown').zero? }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
property_supported :created_on do
|
|
60
|
+
node("Created On") { |str| parse_time(str) } ||
|
|
61
|
+
node("Creation Date") { |str| parse_time(str) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
property_supported :updated_on do
|
|
65
|
+
node("Last Updated On") { |str| parse_time(str) } ||
|
|
66
|
+
node("Updated Date") { |str| parse_time(str) }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
property_supported :expires_on do
|
|
70
|
+
node("Expiration Date") { |str| parse_time(str) } ||
|
|
71
|
+
node("Registry Expiry Date") { |str| parse_time(str) }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
property_supported :registrar do
|
|
76
|
+
node("Sponsoring Registrar ID") do
|
|
77
|
+
Parser::Registrar.new(
|
|
78
|
+
:id => node("Sponsoring Registrar ID"),
|
|
79
|
+
:name => nil,
|
|
80
|
+
:organization => node("Sponsoring Registrar Organization"),
|
|
81
|
+
:url => node("Sponsoring Registrar Website")
|
|
82
|
+
)
|
|
83
|
+
end ||
|
|
84
|
+
node("Sponsoring Registrar IANA ID") do
|
|
85
|
+
Parser::Registrar.new(
|
|
86
|
+
:id => node("Sponsoring Registrar IANA ID"),
|
|
87
|
+
:name => node("Sponsoring Registrar"),
|
|
88
|
+
:organization => nil,
|
|
89
|
+
:url => nil
|
|
90
|
+
)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
property_supported :registrant_contacts do
|
|
95
|
+
build_contact("Registrant", Parser::Contact::TYPE_REGISTRANT)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
property_supported :admin_contacts do
|
|
99
|
+
build_contact("Admin", Parser::Contact::TYPE_ADMINISTRATIVE)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
property_supported :technical_contacts do
|
|
103
|
+
build_contact("Tech", Parser::Contact::TYPE_TECHNICAL)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
property_supported :nameservers do
|
|
108
|
+
Array.wrap(node("Name Server")).map do |name|
|
|
109
|
+
Parser::Nameserver.new(:name => name.downcase.chomp("."))
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
private
|
|
115
|
+
|
|
116
|
+
def build_contact(element, type)
|
|
117
|
+
node("#{element} ID") do
|
|
118
|
+
address = [nil, 1, 2, 3]
|
|
119
|
+
.map { |i| node("#{element} Street#{i}") }
|
|
120
|
+
.delete_if { |i| i.nil? || i.empty? }
|
|
121
|
+
.join("\n")
|
|
122
|
+
address = nil if address.empty?
|
|
123
|
+
|
|
124
|
+
Parser::Contact.new(
|
|
125
|
+
:type => type,
|
|
126
|
+
:id => node("#{element} ID"),
|
|
127
|
+
:name => node("#{element} Name"),
|
|
128
|
+
:organization => node("#{element} Organization"),
|
|
129
|
+
:address => address,
|
|
130
|
+
:city => node("#{element} City"),
|
|
131
|
+
:zip => node("#{element} Postal Code"),
|
|
132
|
+
:state => node("#{element} State/Province"),
|
|
133
|
+
:country_code => node("#{element} Country"),
|
|
134
|
+
:phone => node("#{element} Phone"),
|
|
135
|
+
:fax => node("#{element} FAX") || node("#{element} Fax"),
|
|
136
|
+
:email => node("#{element} Email")
|
|
137
|
+
)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
end
|
|
144
|
+
end
|
|
@@ -0,0 +1,227 @@
|
|
|
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.cira.ca.rb'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module Whois
|
|
15
|
+
class Parsers
|
|
16
|
+
|
|
17
|
+
# Parser for the whois.cira.ca server.
|
|
18
|
+
#
|
|
19
|
+
# @see Whois::Parsers::Example
|
|
20
|
+
# The Example parser for the list of all available methods.
|
|
21
|
+
#
|
|
22
|
+
class WhoisCiraCa < Base
|
|
23
|
+
include Scanners::Scannable
|
|
24
|
+
|
|
25
|
+
self.scanner = Scanners::WhoisCiraCa
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
property_supported :disclaimer do
|
|
29
|
+
node("field:disclaimer")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
property_supported :domain do
|
|
34
|
+
node("Domain name") || node("Domain Name")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
property_not_supported :domain_id
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
property_supported :status do
|
|
41
|
+
status_value = node("Domain status") || node("Domain Status")
|
|
42
|
+
|
|
43
|
+
if status_value
|
|
44
|
+
case Array.wrap(status_value).map { |value| value.to_s.downcase.sub(%r{\s+https?://.*\z}, "") }
|
|
45
|
+
when ["registered"]
|
|
46
|
+
:registered
|
|
47
|
+
when ["redemption"]
|
|
48
|
+
:registered
|
|
49
|
+
when ["auto-renew grace"]
|
|
50
|
+
:registered
|
|
51
|
+
when ["to be released"]
|
|
52
|
+
:registered
|
|
53
|
+
when ["pending delete"]
|
|
54
|
+
:registered
|
|
55
|
+
when ["available"]
|
|
56
|
+
:available
|
|
57
|
+
when ["unavailable"]
|
|
58
|
+
:invalid
|
|
59
|
+
else
|
|
60
|
+
epp_statuses = Array.wrap(status_value).map { |value| value.to_s.downcase.sub(%r{\s+https?://.*\z}, "") }
|
|
61
|
+
if epp_statuses.all? { |value| value.match?(/\A(?:client|server)(?:delete|transfer|update|renew)prohibited\z/) }
|
|
62
|
+
:registered
|
|
63
|
+
else
|
|
64
|
+
Whois::Parser.bug!(ParserError, "Unknown status `#{epp_statuses.join(', ')}'.")
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
elsif content_for_scanner =~ /^Not found:\s+/i
|
|
68
|
+
:available
|
|
69
|
+
elsif content_for_scanner =~ /Domain status:\s+(.+?)\n/
|
|
70
|
+
case node("Domain status", &:downcase)
|
|
71
|
+
when "registered"
|
|
72
|
+
:registered
|
|
73
|
+
when "redemption"
|
|
74
|
+
:registered
|
|
75
|
+
when "auto-renew grace"
|
|
76
|
+
:registered
|
|
77
|
+
when "to be released"
|
|
78
|
+
:registered
|
|
79
|
+
when "pending delete"
|
|
80
|
+
:registered
|
|
81
|
+
when "available"
|
|
82
|
+
:available
|
|
83
|
+
when "unavailable"
|
|
84
|
+
:invalid
|
|
85
|
+
else
|
|
86
|
+
Whois::Parser.bug!(ParserError, "Unknown status `#{::Regexp.last_match(1)}'.")
|
|
87
|
+
end
|
|
88
|
+
else
|
|
89
|
+
Whois::Parser.bug!(ParserError, "Unable to parse status.")
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
property_supported :available? do
|
|
94
|
+
status == :available
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
property_supported :registered? do
|
|
98
|
+
status == :registered
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
property_supported :created_on do
|
|
103
|
+
value = node("Creation date") || node("Creation Date")
|
|
104
|
+
parse_time(value) if value
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
property_supported :updated_on do
|
|
108
|
+
value = node("Updated date") || node("Updated Date")
|
|
109
|
+
parse_time(value) if value
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
property_supported :expires_on do
|
|
113
|
+
value = node("Expiry date") || node("Registry Expiry Date")
|
|
114
|
+
parse_time(value) if value
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
property_supported :registrar do
|
|
119
|
+
node("Registrar") do |value|
|
|
120
|
+
if value.is_a?(Hash)
|
|
121
|
+
Parser::Registrar.new(
|
|
122
|
+
id: value["Number"],
|
|
123
|
+
name: value["Name"],
|
|
124
|
+
organization: value["Name"]
|
|
125
|
+
)
|
|
126
|
+
else
|
|
127
|
+
Parser::Registrar.new(name: value, organization: value)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
property_supported :registrant_contacts do
|
|
134
|
+
build_contact("Registrant", Parser::Contact::TYPE_REGISTRANT)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
property_supported :admin_contacts do
|
|
138
|
+
build_contact("Administrative contact", Parser::Contact::TYPE_ADMINISTRATIVE)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
property_supported :technical_contacts do
|
|
142
|
+
build_contact("Technical contact", Parser::Contact::TYPE_TECHNICAL)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
property_supported :nameservers do
|
|
147
|
+
Array.wrap(node("nserver") || node("Name Server") || node("field:nameservers")).map do |line|
|
|
148
|
+
name, ipv4 = line.split(/\s+/)
|
|
149
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
# Nameservers are listed in the following formats:
|
|
155
|
+
#
|
|
156
|
+
# ns1.google.com
|
|
157
|
+
# ns2.google.com
|
|
158
|
+
#
|
|
159
|
+
# ns1.google.com 216.239.32.10
|
|
160
|
+
# ns2.google.com 216.239.34.10
|
|
161
|
+
#
|
|
162
|
+
property_supported :nameservers do
|
|
163
|
+
Array.wrap(node("field:nameservers") || node("Name Server") || node("nserver")).map do |line|
|
|
164
|
+
name, ipv4 = line.strip.split(/\s+/)
|
|
165
|
+
Parser::Nameserver.new(:name => name, :ipv4 => ipv4)
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
# Attempts to detect and returns the version.
|
|
171
|
+
#
|
|
172
|
+
# TODO: This is very empiric.
|
|
173
|
+
# Use the available status in combination with the creation date label.
|
|
174
|
+
#
|
|
175
|
+
# NEWPROPERTY
|
|
176
|
+
def version
|
|
177
|
+
cached_properties_fetch :version do
|
|
178
|
+
version = if content_for_scanner =~ /^% \(c\) (.+?) Canadian Internet Registration Authority/
|
|
179
|
+
case ::Regexp.last_match(1)
|
|
180
|
+
when "2007" then "1"
|
|
181
|
+
when "2010" then "2"
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
version || Whois::Parser.bug!(ParserError, "Unable to detect version.")
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# NEWPROPERTY
|
|
189
|
+
def valid?
|
|
190
|
+
cached_properties_fetch(:valid?) do
|
|
191
|
+
!invalid?
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# NEWPROPERTY
|
|
196
|
+
def invalid?
|
|
197
|
+
cached_properties_fetch(:invalid?) do
|
|
198
|
+
status == :invalid
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
private
|
|
204
|
+
|
|
205
|
+
def build_contact(element, type)
|
|
206
|
+
node(element) do |hash|
|
|
207
|
+
Parser::Contact.new(
|
|
208
|
+
:type => type,
|
|
209
|
+
:id => nil,
|
|
210
|
+
:name => hash["Name"],
|
|
211
|
+
:organization => nil,
|
|
212
|
+
:address => hash["Postal address"],
|
|
213
|
+
:city => nil,
|
|
214
|
+
:zip => nil,
|
|
215
|
+
:state => nil,
|
|
216
|
+
:country => nil,
|
|
217
|
+
:phone => hash["Phone"],
|
|
218
|
+
:fax => hash["Fax"],
|
|
219
|
+
:email => hash["Email"]
|
|
220
|
+
)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
end
|
|
227
|
+
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_cocca2'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
module Whois
|
|
14
|
+
class Parsers
|
|
15
|
+
|
|
16
|
+
# Parser for the whois.cmc.iq server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisCmcIq < BaseCocca2
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
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.cnnic.cn.rb'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
module Whois
|
|
15
|
+
class Parsers
|
|
16
|
+
|
|
17
|
+
# Parser for the whois.cnnic.cn server.
|
|
18
|
+
class WhoisCnnicCn < Base
|
|
19
|
+
include Scanners::Scannable
|
|
20
|
+
|
|
21
|
+
self.scanner = Scanners::WhoisCnnicCn
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
property_not_supported :disclaimer
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
property_supported :domain do
|
|
28
|
+
node("Domain Name", &:downcase)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
property_supported :domain_id do
|
|
32
|
+
node("ROID")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
property_supported :status do
|
|
37
|
+
Array.wrap node("Domain Status")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
property_supported :available? do
|
|
41
|
+
!!node("status:available")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
property_supported :registered? do
|
|
45
|
+
!reserved? && !available?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
property_supported :created_on do
|
|
50
|
+
node("Registration Time") { |value| parse_time(value) }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
property_not_supported :updated_on
|
|
54
|
+
|
|
55
|
+
property_supported :expires_on do
|
|
56
|
+
node("Expiration Time") { |value| parse_time(value) }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
property_supported :registrar do
|
|
61
|
+
node("Sponsoring Registrar") do |value|
|
|
62
|
+
Parser::Registrar.new(
|
|
63
|
+
:id => value,
|
|
64
|
+
:name => value
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
property_supported :registrant_contacts do
|
|
70
|
+
build_contact("Registrant", Parser::Contact::TYPE_REGISTRANT)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
property_supported :admin_contacts do
|
|
74
|
+
build_contact("Administrative", Parser::Contact::TYPE_ADMINISTRATIVE)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
property_not_supported :technical_contacts
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
property_supported :nameservers do
|
|
81
|
+
Array.wrap(node("Name Server")).map do |name|
|
|
82
|
+
Parser::Nameserver.new(name: name.downcase)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# NEWPROPERTY
|
|
88
|
+
def reserved?
|
|
89
|
+
!!node("status:reserved")
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
private
|
|
94
|
+
|
|
95
|
+
def build_contact(element, type)
|
|
96
|
+
node("#{element}") do |value|
|
|
97
|
+
Parser::Contact.new(
|
|
98
|
+
:type => type,
|
|
99
|
+
:id => node("#{element} ID"),
|
|
100
|
+
:name => value,
|
|
101
|
+
:email => node("#{element} Contact Email")
|
|
102
|
+
)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
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.co.ca 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 WhoisCoCa < Base
|
|
26
|
+
|
|
27
|
+
property_supported :status do
|
|
28
|
+
case
|
|
29
|
+
when available? then :available
|
|
30
|
+
when reserved? then :reserved
|
|
31
|
+
else :registered
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
property_supported :available? do
|
|
36
|
+
!!(content_for_scanner =~ /^(.+) is available/)
|
|
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 =~ /date_approved:\s+(.+)\n/
|
|
46
|
+
parse_time(::Regexp.last_match(1))
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
property_not_supported :updated_on
|
|
51
|
+
|
|
52
|
+
property_supported :expires_on do
|
|
53
|
+
if content_for_scanner =~ /date_renewal:\s+(.+)\n/
|
|
54
|
+
parse_time(::Regexp.last_match(1))
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
property_supported :nameservers do
|
|
60
|
+
content_for_scanner.scan(/ns\d_hostname:\s+(.+)\n/).flatten.map do |name|
|
|
61
|
+
Parser::Nameserver.new(:name => name)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# NEWPROPERTY
|
|
67
|
+
def reserved?
|
|
68
|
+
!!(content_for_scanner =~ /^Domain is not available or is reserved by the registry/)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
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.co.pl server.
|
|
17
|
+
#
|
|
18
|
+
# @see Whois::Parsers::Example
|
|
19
|
+
# The Example parser for the list of all available methods.
|
|
20
|
+
#
|
|
21
|
+
class WhoisCoPl < Base
|
|
22
|
+
|
|
23
|
+
property_not_supported :disclaimer
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
property_supported :domain do
|
|
27
|
+
if content_for_scanner =~ /domain:\s+(.+?)\n/
|
|
28
|
+
::Regexp.last_match(1)
|
|
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 =~ /^% Unfortunately, No Results Were Found/)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
property_supported :registered? do
|
|
48
|
+
!available?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
property_not_supported :created_on
|
|
53
|
+
|
|
54
|
+
property_supported :updated_on do
|
|
55
|
+
if content_for_scanner =~ /changed:\s+(.+?)\n/
|
|
56
|
+
parse_time(::Regexp.last_match(1))
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
property_not_supported :expires_on
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
property_not_supported :registrar
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
property_not_supported :registrant_contacts
|
|
67
|
+
|
|
68
|
+
property_not_supported :admin_contacts
|
|
69
|
+
|
|
70
|
+
property_not_supported :technical_contacts
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
property_supported :nameservers do
|
|
74
|
+
content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
|
|
75
|
+
Parser::Nameserver.new(:name => name)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
end
|