Gérer ses noms de domaine avec Net::DRI
Un logiciel libre pour les noms de domaine
Patrick Mevzek
Net::DRI
Net::DRI est aux noms de domaine...
- ... ce que
DBI est aux bases de données.
- (sauf que les équivalents de JDBC/ODBC n'existent pas !)
Sommaire
- Pourquoi ?
- Pour qui ?
- Comment ? Net::DRI !
- Démonstrations
Pourquoi ? (TLDs)
- gTLDs historiques : COM NET ORG (ARPA GOV MIL EDU INT)
- 2000 : AERO BIZ COOP INFO MUSEUM NAME POST PRO (TEL) (TRAVEL)
- 2004 : ASIA CAT JOBS (MAIL) MOBI TEL TRAVEL (XXX)
- et ccTLDs : FR DE NL UK AT SE ES PT BE BR CN SI ... EU
Pourquoi ? (nouveaux TLDs)
- + 600 nouveaux TLDs/an à partir de 2010 ? (300000 pre-réservations/mois ?)
- ECO RADIO VIN GAY POL HEALTH MOVIE MUSIC SPORT XXX WEB GREEN FAM GOLF SEX BLOG NEWS FOOTBALL
- geo/city TLD : LONDON NYC PARIS BZH SCO BERLIN BCN KÖLN MUNICH PDX AFRICA BAYERN CYM ENG GAL KER LLI LAT MED QUE VLA YKS ARAB EUS INDIGI
- corp/brand TLD : IBM HP APPLE DELOITTE MSN GOOGLE OVH ...
- IDN ccTLDs : 测试 δοκιμή परीक्षा テスト испытание ...
Pourquoi ? (protocoles)
- RRP puis EPP (IPv6, IDN, DNSSEC, E164/ENUM)
- Whois
- DAS/DAC
- IRIS : DCHK, DREG, AREG, etc.
- Protocoles "propriétaires" : emails du .FR, RRI du .DE, automate du .UK, etc.
- Interfaces Web
Pourquoi ? (prestataires)
- registres : ~300
- bureaux d'enregistrement : 1000 (gTLDs), 500 à 2500 (ccTLDs)
- revendeurs : > 10000
Pour qui ?
- Les registres
- Les bureaux d'enregistrement
- Les revendeurs de bureaux d'enregistrement
- Les clients des bureaux d'enregistrement
- Le public
Pour les registres/bureaux
- client EPP, avec des dizaines d'extension
- client autres protocoles (RRI, RRP, Email, WS...)
- normalisation progressive des registres, mais disparités + explosion à venir
Pour les clients/revendeurs
- OpenSRS/Tucows & eNom : XML sur HTTPS
- Gandi : XML-RPC
- BookMyName : SOAP
- OVH : SOAP WSDL
Pour le public
- client Whois
- client DAC/DAS (EU BE UK NL)
- client IRIS DCHK
Comment ? Net::DRI !
- Domain Registration Interface (et plus !)
- bibliothèque purement Perl orientée objet, code sous GPL
- 49926 (32894) lignes, 273 modules, 2134 fonctions, en ~ 4 ans (22 versions jusqu'à 0.92_01)
- ~20 collaborateurs extérieurs (correction de bug ou extension complète)
- seule boîte à outils libre avec toutes les extensions EPP, RRP, Whois, IRIS, etc.
- Plate-formes : linux, *BSD, solaris, windows... iPhone !
Net::DRI Protocoles
- RRP
- EPP : GracePeriod, SecDNS, ENUM, ENUM Validation... (10 RFCs)
- Whois
- DAS
- IRIS (3 RFCs)
- AFNIC (email/WS), DENIC (RRI)
- BookMyName/Gandi/OVH (WS)
- OpenSRS (XCP)
Net::DRI Transports
- UDP/TCP/TLS
- HTTP/HTTPS
- SOAP/WSDL/XML-RPC
- SMTP
TLDs gérés par Net::DRI
- COM NET ORG BIZ INFO MOBI COOP NAME TRAVEL CAT ASIA PRO JOBS AERO MUSEUM TEL
- EU CC TV LU NU BE AU US DE CH LI HN SC VC AG BZ LC MN ME CZ BR SE AT NO FR WS PL PT UK CX GS TL KI MS MU NF HT NA (TW CN)
- CentralNIC : UK.COM DE.COM EU.COM etc.
- IENUM +43
- API Revendeurs : Tucows, Gandi, OVH, BookMyName
API uniforme de Net::DRI (1)
add_registry registry=CoCCA
add_current_profile name=p1 type=epp client_login=X client_password=Y
domain_info whatever.cx
- On réalise une requête EPP domain:info !
API uniforme de Net::DRI (1 bis)
- Ou en programmant « réellemment » :
$dri=Net::DRI->new({cache_ttl=>10, logging=>'files'});
$rc=$dri->add_registry('CoCCA', {clid=>'XXXXX'});
$rc=$dri->add_current_profile('p1','epp', {client_login=>'XXXXXX', client_password=>'YYYYY'});
$rc=$dri->domain_info('whatever.cx');
- On réalise une requête EPP domain:info !
API uniforme de Net::DRI (2)
add_registry registry=AT
add_current_profile name=p1 type=whois
domain_info whatever.at
- On réalise une requête Whois !
API uniforme de Net::DRI (3)
add_registry registry=DENIC
add_current_profile name=p1 type=dchk
domain_info whatever.de
- On réalise une requête IRIS DCHK !
API uniforme de Net::DRI (4)
add_registry registry=Gandi
add_current_profile name=p1 type=ws
domain_info whatever.com
- On réalise une requête via l'API WS de Gandi !
API uniforme de Net::DRI (5)
add_registry registry=BookMyName
add_current_profile name=p1 type=ws
domain_info whatever.com
- On réalise une requête via l'API WS de BookMyName !
API uniforme de Net::DRI (6)
add_registry registry=OVH
add_current_profile name=p1 type=ws
domain_info whatever.com
- On réalise une requête via l'API WS d'OVH !
API uniforme de Net::DRI (7)
add_registry registry=OpenSRS
add_current_profile name=p1 type=xcp
domain_info whatever.com
- On réalise une requête via l'API XML d'OpenSRS !
Et après ?
- ccTLDs passant à EPP
- nouveaux TLDs, en 2010 ?
- ENUM (succès du .TEL ?)
- IDN
- IRIS
- Compléter/Ajouter API revendeurs (aide bienvenue !)
- autres idées/suggestions ?
Questions ?
Net::DRI
Bonus : Architecture
| ... | ... | ... |
| EPP | Socket | ICANN |
| Whois | SMTP | VNDS |
| Gandi/WS | Dummy | AFNIC |
| IRIS/DCHK | HTTP | Gandi |
| Net::DRI::Protocol | Net::DRI::Transport | Net::DRI::DRD |
| Net::DRI::Registry |
| Net::DRI |
| Application | Net::DRI::Shell |
- Net::DRI::Data : Contact, Hosts, Changes, ContactSet, Raw, StatusList
- Net::DRI::Logging / Net::DRI::Protocol::ResultStatus
Bonus : Performances
- « Perl est lent ! »
- jusqu'à 100 opérations/s en local
- goulot = transport + traitement côté registre