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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative 'whois.nic.as'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# The .tatar registry uses the ICANN key/value record layout and an
|
|
6
|
+
# object-specific no-entry sentence.
|
|
7
|
+
class WhoisNicTatar < WhoisNicAs
|
|
8
|
+
property_supported :available? do
|
|
9
|
+
super() || content_for_scanner.match?(/^The queried object does not exist:\s+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.tatar\s*$/i)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def registered_evidence?
|
|
15
|
+
super && content_for_scanner.match?(/^(?:Registry Domain ID|Creation Date|Registrar):\s+\S+/i)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_relative 'base_top1000_icann'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# The .top registry uses the shared ICANN record shape and returns the full
|
|
6
|
+
# queried .top name in its exact no-record response.
|
|
7
|
+
class WhoisNicTop < BaseTop1000Icann
|
|
8
|
+
property_supported :available? do
|
|
9
|
+
super() || content_for_scanner.match?(
|
|
10
|
+
/^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])?\.top\s*$/i
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -19,6 +19,36 @@ module Whois
|
|
|
19
19
|
# The Example parser for the list of all available methods.
|
|
20
20
|
#
|
|
21
21
|
class WhoisNicUs < BaseShared2
|
|
22
|
+
# The .us registry says a missing record does not establish availability.
|
|
23
|
+
# Keep its no-record responses unknown and require record status evidence
|
|
24
|
+
# before reporting a domain as registered.
|
|
25
|
+
property_supported :status do
|
|
26
|
+
statuses = Array.wrap(node("Domain Status"))
|
|
27
|
+
registered_evidence? ? statuses : :unknown
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
property_supported :available? do
|
|
31
|
+
false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
property_supported :registered? do
|
|
35
|
+
registered_evidence?
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def registered_evidence?
|
|
41
|
+
domain_name = node("Domain Name").to_s.strip
|
|
42
|
+
statuses = Array.wrap(node("Domain Status")).reject { |value| value.to_s.strip.empty? }
|
|
43
|
+
|
|
44
|
+
domain_name.match?(/\A\S+\.us\z/i) && statuses.any? { |status| epp_status?(status) }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def epp_status?(status)
|
|
48
|
+
status.to_s.strip.match?(
|
|
49
|
+
%r{\A(?<status>(?:client|server|pending)[A-Z][A-Za-z]*)(?:\s+https?://icann\.org/epp#\k<status>)?\z}
|
|
50
|
+
)
|
|
51
|
+
end
|
|
22
52
|
end
|
|
23
53
|
|
|
24
54
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_relative 'base_centralnic_icann'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# The .дети registry uses the same CentralNic ICANN record shape, with
|
|
6
|
+
# `DOMAIN NOT FOUND` as its authoritative absence marker.
|
|
7
|
+
class WhoisNicXnD1acj3b < BaseCentralnicIcann
|
|
8
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
9
|
+
pattern_available: /^The queried object does not exist:\s+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.xn--d1acj3b\s*$/i,
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
const_set('WhoisNicXn_d1acj3b', WhoisNicXnD1acj3b)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative 'base_top1000_icann'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# Host-to-parser conversion preserves the punycode separator.
|
|
6
|
+
# rubocop:disable-next Naming/ClassAndModuleCamelCase
|
|
7
|
+
class WhoisNicXn_mk1bu44c < BaseTop1000Icann
|
|
8
|
+
property_supported :available? do
|
|
9
|
+
super() || !!(content_for_scanner =~ /^No match for "[^"]+"\.\s*$/i)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require_relative 'whois.verisign-grs.com'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
# The .コム endpoint exposes the VeriSign response shape, but this
|
|
7
|
+
# adapter keeps unknown bodies out of the registered result.
|
|
8
|
+
class WhoisNicXnTckwe < WhoisVerisignGrsCom
|
|
9
|
+
include RegistryResponseSafety
|
|
10
|
+
|
|
11
|
+
property_supported :status do
|
|
12
|
+
if available?
|
|
13
|
+
:available
|
|
14
|
+
elsif registered_evidence?
|
|
15
|
+
:registered
|
|
16
|
+
else
|
|
17
|
+
:unknown
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
property_supported :registered? do
|
|
22
|
+
status == :registered
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def response_unavailable?
|
|
26
|
+
super || response_incomplete?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def registered_evidence?
|
|
32
|
+
content_for_scanner.match?(/^\s*Domain Name:\s*\S+/i) &&
|
|
33
|
+
content_for_scanner.match?(/^\s*(?:Registry Domain ID|Creation Date|Registrar):\s*\S+/i)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
const_set('WhoisNicXn_tckwe', WhoisNicXnTckwe)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative 'base_nic_fr'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# AFNIC-format parser for the .yt registry.
|
|
6
|
+
class WhoisNicYt < BaseNicFr
|
|
7
|
+
property_supported :available? do
|
|
8
|
+
content_for_scanner.match?(/^%% NOT FOUND\s*$/i)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
property_supported :created_on do
|
|
12
|
+
parse_time(content_for_scanner[/^created:\s+(.+)\s*$/i, 1])
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
property_supported :updated_on do
|
|
16
|
+
parse_time(content_for_scanner[/^last-update:\s+(.+)\s*$/i, 1])
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
property_supported :expires_on do
|
|
20
|
+
parse_time(content_for_scanner[/^Expiry Date:\s+(.+)\s*$/i, 1])
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
require_relative 'base_identity_digital'
|
|
2
|
+
module Whois
|
|
3
|
+
class Parsers
|
|
4
|
+
class WhoisOnlineRsCorenicNet < 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,70 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Ruby Whois
|
|
3
|
+
#++
|
|
4
|
+
|
|
5
|
+
require_relative 'base'
|
|
6
|
+
require_relative 'registry_response_safety'
|
|
7
|
+
|
|
8
|
+
module Whois
|
|
9
|
+
class Parsers
|
|
10
|
+
|
|
11
|
+
# Parser for PKNIC's port-43 service.
|
|
12
|
+
#
|
|
13
|
+
# PKNIC identifies positive registration and availability results with
|
|
14
|
+
# separate status lines. Keep other responses unknown rather than
|
|
15
|
+
# inferring absence from an incomplete "Not Registered" message.
|
|
16
|
+
class WhoisPknicNetPk < Base
|
|
17
|
+
include RegistryResponseSafety
|
|
18
|
+
|
|
19
|
+
property_supported :domain do
|
|
20
|
+
echoed_domain
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
property_supported :status do
|
|
24
|
+
registered = registered_evidence?
|
|
25
|
+
available = available_evidence?
|
|
26
|
+
|
|
27
|
+
if registered && !available
|
|
28
|
+
:registered
|
|
29
|
+
elsif available && !registered
|
|
30
|
+
:available
|
|
31
|
+
else
|
|
32
|
+
:unknown
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
property_supported :available? do
|
|
37
|
+
available_evidence? && !registered_evidence?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
property_supported :registered? do
|
|
41
|
+
registered_evidence? && !available_evidence?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
property_not_supported :created_on
|
|
45
|
+
property_not_supported :updated_on
|
|
46
|
+
property_not_supported :expires_on
|
|
47
|
+
property_not_supported :registrant_contacts
|
|
48
|
+
property_not_supported :admin_contacts
|
|
49
|
+
property_not_supported :technical_contacts
|
|
50
|
+
property_not_supported :nameservers
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def echoed_domain
|
|
55
|
+
content_for_scanner[/^Domain:\s*((?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+pk)\s*$/i, 1]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def registered_evidence?
|
|
59
|
+
!!(echoed_domain && content_for_scanner.match?(/^Status: Domain is Registered\s*$/))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def available_evidence?
|
|
63
|
+
!!(echoed_domain &&
|
|
64
|
+
content_for_scanner.match?(/^Status: Not Registered, and may be available if valid\s*$/) &&
|
|
65
|
+
content_for_scanner.match?(/^Available: Yes\.\s*$/))
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative 'base_identity_digital'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# Identity Digital key/value records with the Ryce registry's short
|
|
6
|
+
# `Available` absence response.
|
|
7
|
+
class WhoisRyceRspCom < BaseIdentityDigital
|
|
8
|
+
self.scanner = Scanners::BaseIcannCompliant, {
|
|
9
|
+
pattern_available: /^Available\s*$/i,
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require_relative 'base_top1000_icann'
|
|
2
|
+
|
|
3
|
+
module Whois
|
|
4
|
+
class Parsers
|
|
5
|
+
# Beijing Tele-info serves both .在线 and .yun with ICANN-style records.
|
|
6
|
+
class WhoisTeleinfoCn < BaseTop1000Icann
|
|
7
|
+
property_supported :domain do
|
|
8
|
+
content_for_scanner[/^Domain Name:\s*(\S+)/i, 1]&.downcase
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
property_supported :available? do
|
|
12
|
+
super() || !!(content_for_scanner =~ /^No matching record\.\s*$/i)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|