whois-parser-next 0.1.0 → 0.3.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 +4 -4
- data/CHANGELOG.md +59 -1
- data/README.md +31 -12
- data/RELEASING.md +2 -2
- data/ROADMAP.md +20 -15
- data/SECURITY.md +2 -2
- data/lib/whois/parser/version.rb +1 -1
- data/lib/whois/parsers/base_centralnic_icann.rb +12 -0
- data/lib/whois/parsers/base_cira_registry.rb +19 -0
- data/lib/whois/parsers/base_icann_compliant.rb +1 -1
- data/lib/whois/parsers/base_identity_digital.rb +12 -0
- data/lib/whois/parsers/base_jwhois.rb +48 -0
- data/lib/whois/parsers/base_nic_reserved_available.rb +17 -0
- data/lib/whois/parsers/base_reserved_registry.rb +27 -0
- data/lib/whois/parsers/base_top1000_icann.rb +39 -0
- data/lib/whois/parsers/base_top1000_retired.rb +26 -0
- data/lib/whois/parsers/base_unsupported_registry.rb +1 -1
- data/lib/whois/parsers/cwhois.cnnic.cn.rb +10 -0
- data/lib/whois/parsers/registry_response_safety.rb +2 -0
- data/lib/whois/parsers/whois.ax.rb +15 -3
- data/lib/whois/parsers/whois.cctld.uz.rb +50 -14
- data/lib/whois/parsers/whois.cnnic.cn.rb +31 -3
- data/lib/whois/parsers/whois.dominio.gq.rb +11 -0
- data/lib/whois/parsers/whois.dotukr.com.rb +23 -0
- data/lib/whois/parsers/whois.gtld.knet.cn.rb +10 -0
- data/lib/whois/parsers/whois.kyregistry.ky.rb +10 -0
- data/lib/whois/parsers/whois.madrid.rs.corenic.net.rb +8 -0
- data/lib/whois/parsers/whois.mediaserv.net.rb +9 -0
- data/lib/whois/parsers/whois.ngtld.cn.rb +8 -0
- data/lib/whois/parsers/whois.nic.academy.rb +8 -0
- data/lib/whois/parsers/whois.nic.accountant.rb +8 -0
- data/lib/whois/parsers/whois.nic.actor.rb +8 -0
- data/lib/whois/parsers/whois.nic.agency.rb +8 -0
- data/lib/whois/parsers/whois.nic.airforce.rb +8 -0
- data/lib/whois/parsers/whois.nic.amsterdam.rb +8 -0
- data/lib/whois/parsers/whois.nic.apartments.rb +8 -0
- data/lib/whois/parsers/whois.nic.army.rb +8 -0
- data/lib/whois/parsers/whois.nic.associates.rb +8 -0
- data/lib/whois/parsers/whois.nic.auction.rb +8 -0
- data/lib/whois/parsers/whois.nic.aw.rb +33 -0
- data/lib/whois/parsers/whois.nic.baby.rb +8 -0
- data/lib/whois/parsers/whois.nic.bank.rb +29 -0
- data/lib/whois/parsers/whois.nic.bar.rb +8 -0
- data/lib/whois/parsers/whois.nic.barcelona.rb +8 -0
- data/lib/whois/parsers/whois.nic.barclays.rb +8 -0
- data/lib/whois/parsers/whois.nic.bargains.rb +8 -0
- data/lib/whois/parsers/whois.nic.basketball.rb +8 -0
- data/lib/whois/parsers/whois.nic.bayern.rb +8 -0
- data/lib/whois/parsers/whois.nic.beauty.rb +8 -0
- data/lib/whois/parsers/whois.nic.beer.rb +8 -0
- data/lib/whois/parsers/whois.nic.berlin.rb +8 -0
- data/lib/whois/parsers/whois.nic.bible.rb +8 -0
- data/lib/whois/parsers/whois.nic.bid.rb +8 -0
- data/lib/whois/parsers/whois.nic.bike.rb +8 -0
- data/lib/whois/parsers/whois.nic.bingo.rb +8 -0
- data/lib/whois/parsers/whois.nic.blog.rb +34 -0
- data/lib/whois/parsers/whois.nic.bmw.rb +8 -0
- data/lib/whois/parsers/whois.nic.bond.rb +8 -0
- data/lib/whois/parsers/whois.nic.boston.rb +8 -0
- data/lib/whois/parsers/whois.nic.broker.rb +8 -0
- data/lib/whois/parsers/whois.nic.build.rb +8 -0
- data/lib/whois/parsers/whois.nic.builders.rb +8 -0
- data/lib/whois/parsers/whois.nic.buzz.rb +8 -0
- data/lib/whois/parsers/whois.nic.bzh.rb +32 -0
- data/lib/whois/parsers/whois.nic.cafe.rb +8 -0
- data/lib/whois/parsers/whois.nic.cam.rb +8 -0
- data/lib/whois/parsers/whois.nic.camera.rb +8 -0
- data/lib/whois/parsers/whois.nic.canon.rb +11 -0
- data/lib/whois/parsers/whois.nic.capital.rb +8 -0
- data/lib/whois/parsers/whois.nic.cards.rb +8 -0
- data/lib/whois/parsers/whois.nic.careers.rb +8 -0
- data/lib/whois/parsers/whois.nic.casa.rb +8 -0
- data/lib/whois/parsers/whois.nic.cash.rb +8 -0
- data/lib/whois/parsers/whois.nic.center.rb +8 -0
- data/lib/whois/parsers/whois.nic.ceo.rb +8 -0
- data/lib/whois/parsers/whois.nic.ch.rb +6 -2
- data/lib/whois/parsers/whois.nic.charity.rb +8 -0
- data/lib/whois/parsers/whois.nic.city.rb +8 -0
- data/lib/whois/parsers/whois.nic.claims.rb +8 -0
- data/lib/whois/parsers/whois.nic.cleaning.rb +8 -0
- data/lib/whois/parsers/whois.nic.coach.rb +8 -0
- data/lib/whois/parsers/whois.nic.codes.rb +8 -0
- data/lib/whois/parsers/whois.nic.coffee.rb +8 -0
- data/lib/whois/parsers/whois.nic.computer.rb +8 -0
- data/lib/whois/parsers/whois.nic.condos.rb +8 -0
- data/lib/whois/parsers/whois.nic.construction.rb +8 -0
- data/lib/whois/parsers/whois.nic.contractors.rb +8 -0
- data/lib/whois/parsers/whois.nic.cooking.rb +8 -0
- data/lib/whois/parsers/whois.nic.cool.rb +8 -0
- data/lib/whois/parsers/whois.nic.coop.rb +18 -3
- data/lib/whois/parsers/whois.nic.creditcard.rb +8 -0
- data/lib/whois/parsers/whois.nic.cruises.rb +8 -0
- data/lib/whois/parsers/whois.nic.cyou.rb +8 -0
- data/lib/whois/parsers/whois.nic.dance.rb +8 -0
- data/lib/whois/parsers/whois.nic.data.rb +8 -0
- data/lib/whois/parsers/whois.nic.deals.rb +8 -0
- data/lib/whois/parsers/whois.nic.degree.rb +8 -0
- data/lib/whois/parsers/whois.nic.democrat.rb +8 -0
- data/lib/whois/parsers/whois.nic.diamonds.rb +8 -0
- data/lib/whois/parsers/whois.nic.digital.rb +8 -0
- data/lib/whois/parsers/whois.nic.directory.rb +8 -0
- data/lib/whois/parsers/whois.nic.doctor.rb +8 -0
- data/lib/whois/parsers/whois.nic.dog.rb +8 -0
- data/lib/whois/parsers/whois.nic.dvag.rb +8 -0
- data/lib/whois/parsers/whois.nic.eco.rb +8 -0
- data/lib/whois/parsers/whois.nic.education.rb +8 -0
- data/lib/whois/parsers/whois.nic.email.rb +8 -0
- data/lib/whois/parsers/whois.nic.energy.rb +8 -0
- data/lib/whois/parsers/whois.nic.engineer.rb +8 -0
- data/lib/whois/parsers/whois.nic.equipment.rb +8 -0
- data/lib/whois/parsers/whois.nic.estate.rb +8 -0
- data/lib/whois/parsers/whois.nic.eus.rb +8 -0
- data/lib/whois/parsers/whois.nic.expert.rb +8 -0
- data/lib/whois/parsers/whois.nic.exposed.rb +8 -0
- data/lib/whois/parsers/whois.nic.express.rb +8 -0
- data/lib/whois/parsers/whois.nic.family.rb +8 -0
- data/lib/whois/parsers/whois.nic.fan.rb +8 -0
- data/lib/whois/parsers/whois.nic.fans.rb +8 -0
- data/lib/whois/parsers/whois.nic.feedback.rb +8 -0
- data/lib/whois/parsers/whois.nic.film.rb +8 -0
- data/lib/whois/parsers/whois.nic.fish.rb +8 -0
- data/lib/whois/parsers/whois.nic.fishing.rb +8 -0
- data/lib/whois/parsers/whois.nic.florist.rb +8 -0
- data/lib/whois/parsers/whois.nic.football.rb +8 -0
- data/lib/whois/parsers/whois.nic.forex.rb +8 -0
- data/lib/whois/parsers/whois.nic.foundation.rb +8 -0
- data/lib/whois/parsers/whois.nic.fox.rb +8 -0
- data/lib/whois/parsers/whois.nic.fr.rb +3 -0
- data/lib/whois/parsers/whois.nic.frl.rb +8 -0
- data/lib/whois/parsers/whois.nic.furniture.rb +8 -0
- data/lib/whois/parsers/whois.nic.futbol.rb +8 -0
- data/lib/whois/parsers/whois.nic.fyi.rb +8 -0
- data/lib/whois/parsers/whois.nic.gal.rb +8 -0
- data/lib/whois/parsers/whois.nic.gd.rb +4 -0
- data/lib/whois/parsers/whois.nic.ge.rb +74 -0
- data/lib/whois/parsers/whois.nic.gent.rb +8 -0
- data/lib/whois/parsers/whois.nic.giving.rb +8 -0
- data/lib/whois/parsers/whois.nic.glass.rb +8 -0
- data/lib/whois/parsers/whois.nic.gmbh.rb +8 -0
- data/lib/whois/parsers/whois.nic.graphics.rb +8 -0
- data/lib/whois/parsers/whois.nic.gratis.rb +8 -0
- data/lib/whois/parsers/whois.nic.guru.rb +8 -0
- data/lib/whois/parsers/whois.nic.hamburg.rb +8 -0
- data/lib/whois/parsers/whois.nic.haus.rb +8 -0
- data/lib/whois/parsers/whois.nic.holdings.rb +8 -0
- data/lib/whois/parsers/whois.nic.holiday.rb +8 -0
- data/lib/whois/parsers/whois.nic.house.rb +8 -0
- data/lib/whois/parsers/whois.nic.immo.rb +8 -0
- data/lib/whois/parsers/whois.nic.immobilien.rb +8 -0
- data/lib/whois/parsers/whois.nic.inc.rb +8 -0
- data/lib/whois/parsers/whois.nic.institute.rb +8 -0
- data/lib/whois/parsers/whois.nic.insure.rb +8 -0
- data/lib/whois/parsers/whois.nic.international.rb +8 -0
- data/lib/whois/parsers/whois.nic.jewelry.rb +8 -0
- data/lib/whois/parsers/whois.nic.kaufen.rb +8 -0
- data/lib/whois/parsers/whois.nic.kiwi.rb +8 -0
- data/lib/whois/parsers/whois.nic.kn.rb +8 -0
- data/lib/whois/parsers/whois.nic.kyoto.rb +8 -0
- data/lib/whois/parsers/whois.nic.land.rb +8 -0
- data/lib/whois/parsers/whois.nic.lat.rb +8 -0
- data/lib/whois/parsers/whois.nic.lawyer.rb +8 -0
- data/lib/whois/parsers/whois.nic.lease.rb +8 -0
- data/lib/whois/parsers/whois.nic.legal.rb +8 -0
- data/lib/whois/parsers/whois.nic.limited.rb +8 -0
- data/lib/whois/parsers/whois.nic.limo.rb +8 -0
- data/lib/whois/parsers/whois.nic.live.rb +8 -0
- data/lib/whois/parsers/whois.nic.london.rb +8 -0
- data/lib/whois/parsers/whois.nic.love.rb +8 -0
- data/lib/whois/parsers/whois.nic.luxury.rb +8 -0
- data/lib/whois/parsers/whois.nic.maison.rb +8 -0
- data/lib/whois/parsers/whois.nic.makeup.rb +8 -0
- data/lib/whois/parsers/whois.nic.man.rb +8 -0
- data/lib/whois/parsers/whois.nic.management.rb +8 -0
- data/lib/whois/parsers/whois.nic.mba.rb +8 -0
- data/lib/whois/parsers/whois.nic.media.rb +8 -0
- data/lib/whois/parsers/whois.nic.memorial.rb +8 -0
- data/lib/whois/parsers/whois.nic.men.rb +8 -0
- data/lib/whois/parsers/whois.nic.miami.rb +8 -0
- data/lib/whois/parsers/whois.nic.mobile.rb +8 -0
- data/lib/whois/parsers/whois.nic.moda.rb +8 -0
- data/lib/whois/parsers/whois.nic.moe.rb +8 -0
- data/lib/whois/parsers/whois.nic.money.rb +8 -0
- data/lib/whois/parsers/whois.nic.monster.rb +8 -0
- data/lib/whois/parsers/whois.nic.mortgage.rb +8 -0
- data/lib/whois/parsers/whois.nic.moscow.rb +8 -0
- data/lib/whois/parsers/whois.nic.museum.rb +8 -0
- data/lib/whois/parsers/whois.nic.net.sa.rb +28 -9
- data/lib/whois/parsers/whois.nic.network.rb +8 -0
- data/lib/whois/parsers/whois.nic.nrw.rb +8 -0
- data/lib/whois/parsers/whois.nic.observer.rb +8 -0
- data/lib/whois/parsers/whois.nic.okinawa.rb +17 -0
- data/lib/whois/parsers/whois.nic.ooo.rb +8 -0
- data/lib/whois/parsers/whois.nic.partners.rb +8 -0
- data/lib/whois/parsers/whois.nic.photography.rb +8 -0
- data/lib/whois/parsers/whois.nic.photos.rb +8 -0
- data/lib/whois/parsers/whois.nic.pizza.rb +8 -0
- data/lib/whois/parsers/whois.nic.place.rb +8 -0
- data/lib/whois/parsers/whois.nic.plumbing.rb +8 -0
- data/lib/whois/parsers/whois.nic.pm.rb +3 -0
- data/lib/whois/parsers/whois.nic.press.rb +8 -0
- data/lib/whois/parsers/whois.nic.properties.rb +8 -0
- data/lib/whois/parsers/whois.nic.quebec.rb +8 -0
- data/lib/whois/parsers/whois.nic.quest.rb +8 -0
- data/lib/whois/parsers/whois.nic.racing.rb +8 -0
- data/lib/whois/parsers/whois.nic.radio.rb +8 -0
- data/lib/whois/parsers/whois.nic.realty.rb +8 -0
- data/lib/whois/parsers/whois.nic.recipes.rb +8 -0
- data/lib/whois/parsers/whois.nic.reisen.rb +8 -0
- data/lib/whois/parsers/whois.nic.rent.rb +8 -0
- data/lib/whois/parsers/whois.nic.rentals.rb +8 -0
- data/lib/whois/parsers/whois.nic.republican.rb +8 -0
- data/lib/whois/parsers/whois.nic.rest.rb +8 -0
- data/lib/whois/parsers/whois.nic.restaurant.rb +8 -0
- data/lib/whois/parsers/whois.nic.review.rb +8 -0
- data/lib/whois/parsers/whois.nic.rip.rb +8 -0
- data/lib/whois/parsers/whois.nic.rodeo.rb +8 -0
- data/lib/whois/parsers/whois.nic.ruhr.rb +8 -0
- data/lib/whois/parsers/whois.nic.saarland.rb +8 -0
- data/lib/whois/parsers/whois.nic.salon.rb +8 -0
- data/lib/whois/parsers/whois.nic.sap.rb +8 -0
- data/lib/whois/parsers/whois.nic.sarl.rb +8 -0
- data/lib/whois/parsers/whois.nic.sbs.rb +8 -0
- data/lib/whois/parsers/whois.nic.schule.rb +8 -0
- data/lib/whois/parsers/whois.nic.schwarz.rb +8 -0
- data/lib/whois/parsers/whois.nic.scot.rb +8 -0
- data/lib/whois/parsers/whois.nic.security.rb +8 -0
- data/lib/whois/parsers/whois.nic.select.rb +8 -0
- data/lib/whois/parsers/whois.nic.services.rb +8 -0
- data/lib/whois/parsers/whois.nic.shoes.rb +8 -0
- data/lib/whois/parsers/whois.nic.shopping.rb +8 -0
- data/lib/whois/parsers/whois.nic.skin.rb +8 -0
- data/lib/whois/parsers/whois.nic.soccer.rb +8 -0
- data/lib/whois/parsers/whois.nic.solar.rb +8 -0
- data/lib/whois/parsers/whois.nic.sport.rb +8 -0
- data/lib/whois/parsers/whois.nic.ss.rb +36 -0
- data/lib/whois/parsers/whois.nic.storage.rb +8 -0
- data/lib/whois/parsers/whois.nic.study.rb +8 -0
- data/lib/whois/parsers/whois.nic.style.rb +8 -0
- data/lib/whois/parsers/whois.nic.support.rb +8 -0
- data/lib/whois/parsers/whois.nic.surf.rb +8 -0
- data/lib/whois/parsers/whois.nic.surgery.rb +8 -0
- data/lib/whois/parsers/whois.nic.swiss.rb +8 -0
- data/lib/whois/parsers/whois.nic.taipei.rb +8 -0
- data/lib/whois/parsers/whois.nic.tatar.rb +19 -0
- data/lib/whois/parsers/whois.nic.team.rb +8 -0
- data/lib/whois/parsers/whois.nic.tennis.rb +8 -0
- data/lib/whois/parsers/whois.nic.theater.rb +8 -0
- data/lib/whois/parsers/whois.nic.tickets.rb +8 -0
- data/lib/whois/parsers/whois.nic.tienda.rb +8 -0
- data/lib/whois/parsers/whois.nic.tips.rb +8 -0
- data/lib/whois/parsers/whois.nic.tires.rb +8 -0
- data/lib/whois/parsers/whois.nic.tirol.rb +8 -0
- data/lib/whois/parsers/whois.nic.top.rb +15 -0
- data/lib/whois/parsers/whois.nic.town.rb +8 -0
- data/lib/whois/parsers/whois.nic.toyota.rb +8 -0
- data/lib/whois/parsers/whois.nic.toys.rb +8 -0
- data/lib/whois/parsers/whois.nic.trade.rb +8 -0
- data/lib/whois/parsers/whois.nic.training.rb +8 -0
- data/lib/whois/parsers/whois.nic.university.rb +8 -0
- data/lib/whois/parsers/whois.nic.uno.rb +8 -0
- data/lib/whois/parsers/whois.nic.us.rb +30 -0
- data/lib/whois/parsers/whois.nic.vet.rb +8 -0
- data/lib/whois/parsers/whois.nic.viajes.rb +8 -0
- data/lib/whois/parsers/whois.nic.villas.rb +8 -0
- data/lib/whois/parsers/whois.nic.voyage.rb +8 -0
- data/lib/whois/parsers/whois.nic.webcam.rb +8 -0
- data/lib/whois/parsers/whois.nic.wedding.rb +8 -0
- data/lib/whois/parsers/whois.nic.wien.rb +8 -0
- data/lib/whois/parsers/whois.nic.wiki.rb +8 -0
- data/lib/whois/parsers/whois.nic.wtf.rb +8 -0
- data/lib/whois/parsers/whois.nic.xin.rb +8 -0
- data/lib/whois/parsers/whois.nic.xn--80adxhks.rb +8 -0
- data/lib/whois/parsers/whois.nic.xn--d1acj3b.rb +15 -0
- data/lib/whois/parsers/whois.nic.xn--mk1bu44c.rb +13 -0
- data/lib/whois/parsers/whois.nic.xn--t60b56a.rb +8 -0
- data/lib/whois/parsers/whois.nic.xn--tckwe.rb +39 -0
- data/lib/whois/parsers/whois.nic.yoga.rb +8 -0
- data/lib/whois/parsers/whois.nic.yokohama.rb +8 -0
- data/lib/whois/parsers/whois.nic.yt.rb +24 -0
- data/lib/whois/parsers/whois.online.rs.corenic.net.rb +8 -0
- data/lib/whois/parsers/whois.pknic.net.pk.rb +70 -0
- data/lib/whois/parsers/whois.publicinterestregistry.net.rb +8 -0
- data/lib/whois/parsers/whois.ryce-rsp.com.rb +13 -0
- data/lib/whois/parsers/whois.teleinfo.cn.rb +16 -0
- metadata +285 -1
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
require_relative 'base'
|
|
11
|
+
require_relative 'registry_response_safety'
|
|
11
12
|
require 'whois/scanners/whois.cnnic.cn.rb'
|
|
12
13
|
|
|
13
14
|
|
|
@@ -16,10 +17,13 @@ module Whois
|
|
|
16
17
|
|
|
17
18
|
# Parser for the whois.cnnic.cn server.
|
|
18
19
|
class WhoisCnnicCn < Base
|
|
20
|
+
include RegistryResponseSafety
|
|
19
21
|
include Scanners::Scannable
|
|
20
22
|
|
|
21
23
|
self.scanner = Scanners::WhoisCnnicCn
|
|
22
24
|
|
|
25
|
+
RESPONSE_MARKER = /(?:^No matching record\.?\s*$|^The domain you requested is prohibited\.?\s*$|^Sorry, The domain you requested is in the reserved list\.?\s*$|^Domain Name:\s*\S+)/i
|
|
26
|
+
|
|
23
27
|
|
|
24
28
|
property_not_supported :disclaimer
|
|
25
29
|
|
|
@@ -34,15 +38,26 @@ module Whois
|
|
|
34
38
|
|
|
35
39
|
|
|
36
40
|
property_supported :status do
|
|
37
|
-
|
|
41
|
+
return [] if available? || reserved?
|
|
42
|
+
return :unknown unless recognized_response?
|
|
43
|
+
|
|
44
|
+
statuses = Array.wrap node("Domain Status")
|
|
45
|
+
if statuses.empty?
|
|
46
|
+
:unknown
|
|
47
|
+
else
|
|
48
|
+
statuses
|
|
49
|
+
end
|
|
38
50
|
end
|
|
39
51
|
|
|
40
52
|
property_supported :available? do
|
|
53
|
+
return true if content_for_scanner.match?(/^No matching record\.?\s*$/i)
|
|
54
|
+
return false unless recognized_response?
|
|
55
|
+
|
|
41
56
|
!!node("status:available")
|
|
42
57
|
end
|
|
43
58
|
|
|
44
59
|
property_supported :registered? do
|
|
45
|
-
|
|
60
|
+
status.is_a?(Array) && !status.empty? && registered_evidence?
|
|
46
61
|
end
|
|
47
62
|
|
|
48
63
|
|
|
@@ -86,12 +101,25 @@ module Whois
|
|
|
86
101
|
|
|
87
102
|
# NEWPROPERTY
|
|
88
103
|
def reserved?
|
|
104
|
+
return true if content_for_scanner.match?(/^The domain you requested is prohibited\.?\s*$/i)
|
|
105
|
+
return true if content_for_scanner.match?(/^Sorry, The domain you requested is in the reserved list\.?\s*$/i)
|
|
106
|
+
return false unless recognized_response?
|
|
107
|
+
|
|
89
108
|
!!node("status:reserved")
|
|
90
109
|
end
|
|
91
110
|
|
|
92
|
-
|
|
93
111
|
private
|
|
94
112
|
|
|
113
|
+
def registered_evidence?
|
|
114
|
+
!node("Domain Name").to_s.strip.empty? &&
|
|
115
|
+
!Array.wrap(node("Domain Status")).empty?
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def recognized_response?
|
|
119
|
+
content_for_scanner.match?(RESPONSE_MARKER)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
|
|
95
123
|
def build_contact(element, type)
|
|
96
124
|
node("#{element}") do |value|
|
|
97
125
|
Parser::Contact.new(
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require_relative 'base_unsupported_registry'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
class WhoisDominioGq < BaseUnsupportedRegistry
|
|
6
|
+
def response_unavailable?
|
|
7
|
+
super || content_for_scanner.match?(/\AThe domain you requested is not known in Freenoms database\.\n\nThis TLD has no whois server\./i)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require_relative 'base'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
# The .укр registry uses an exact "No match for domain" response.
|
|
7
|
+
class WhoisDotukrCom < Base
|
|
8
|
+
include RegistryResponseSafety
|
|
9
|
+
|
|
10
|
+
property_supported :status do
|
|
11
|
+
available? ? :available : :unknown
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
property_supported :available? do
|
|
15
|
+
!!(content_for_scanner =~ /^No match for domain\s+\S+\.?\s*$/i)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
property_supported :registered? do
|
|
19
|
+
false
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require_relative 'base_identity_digital'
|
|
2
|
+
module Whois
|
|
3
|
+
class Parsers
|
|
4
|
+
class WhoisGtldKnetCn < BaseIdentityDigital
|
|
5
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
6
|
+
pattern_available: /^The queried object does not exist:\s+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)+\s*$/i,
|
|
7
|
+
}
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
require_relative 'base_identity_digital'
|
|
2
|
+
module Whois
|
|
3
|
+
class Parsers
|
|
4
|
+
class WhoisMadridRsCorenicNet < BaseIdentityDigital
|
|
5
|
+
self.scanner = Scanners::BaseIcannCompliant, { pattern_available: /^The queried object does not exist: no matching objects found\s*$/i }
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require_relative 'base'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
# Parser for the Aruba registry's compact port-43 response.
|
|
7
|
+
class WhoisNicAw < Base
|
|
8
|
+
include RegistryResponseSafety
|
|
9
|
+
|
|
10
|
+
property_supported :domain do
|
|
11
|
+
content_for_scanner[/^Domain name:\s*(\S+)/i, 1]&.downcase
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
property_supported :status do
|
|
15
|
+
if available?
|
|
16
|
+
:available
|
|
17
|
+
elsif content_for_scanner.match?(/^Status:\s*active\s*$/i)
|
|
18
|
+
:registered
|
|
19
|
+
else
|
|
20
|
+
:unknown
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
property_supported :available? do
|
|
25
|
+
!!(content_for_scanner =~ /^\S+\s+is free\s*$/i)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
property_supported :registered? do
|
|
29
|
+
status == :registered
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require_relative 'base_icann_compliant'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
class WhoisNicBank < BaseIcannCompliant
|
|
6
|
+
property_supported :status do
|
|
7
|
+
if no_data_found?
|
|
8
|
+
:available
|
|
9
|
+
else
|
|
10
|
+
super()
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
property_supported :available? do
|
|
15
|
+
status == :available
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
property_supported :registered? do
|
|
19
|
+
status == :registered
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def no_data_found?
|
|
25
|
+
content_for_scanner.lines.first.to_s.strip.casecmp?('No Data Found')
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require_relative 'whois.cira.ca'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
# The .blog registry uses the CIRA response layout and an exact
|
|
7
|
+
# `Not found:` absence marker.
|
|
8
|
+
class WhoisNicBlog < WhoisCiraCa
|
|
9
|
+
include RegistryResponseSafety
|
|
10
|
+
|
|
11
|
+
property_supported :status do
|
|
12
|
+
if content_for_scanner.match?(/^Not found:\s+/i)
|
|
13
|
+
:available
|
|
14
|
+
elsif content_for_scanner.match?(/^Domain Status:\s+\S+/i)
|
|
15
|
+
:registered
|
|
16
|
+
else
|
|
17
|
+
:unknown
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
property_supported :available? do
|
|
22
|
+
status == :available
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
property_supported :registered? do
|
|
26
|
+
status == :registered
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def response_unavailable?
|
|
30
|
+
super || content_for_scanner.match?(/^Error code:\s*\S+/i)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require_relative 'base_icann_compliant'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# The .bzh registry uses the ICANN key/value record layout and AFNIC's
|
|
6
|
+
# compact `%% NOT FOUND` absence marker.
|
|
7
|
+
class WhoisNicBzh < BaseIcannCompliant
|
|
8
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
9
|
+
pattern_available: /^%% NOT FOUND\s*$/i,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
property_supported :status do
|
|
13
|
+
if content_for_scanner.match?(/^%% NOT FOUND\s*$/i)
|
|
14
|
+
:available
|
|
15
|
+
elsif content_for_scanner.match?(/^Domain Name:\s+\S+/i) &&
|
|
16
|
+
content_for_scanner.match?(/^Domain Status:\s+\S+/i)
|
|
17
|
+
:registered
|
|
18
|
+
else
|
|
19
|
+
:unknown
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
property_supported :available? do
|
|
24
|
+
status == :available
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
property_supported :registered? do
|
|
28
|
+
status == :registered
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require_relative 'base_unsupported_registry'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
class WhoisNicCanon < BaseUnsupportedRegistry
|
|
6
|
+
def response_unavailable?
|
|
7
|
+
super || content_for_scanner.match?(/\ANotice: .*WHOIS service has been retired/i)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|