[ruby-it] Ruby ha un nuovo Whois

Simone Carletti weppos a gmail.com
Lun 10 Ago 2009 10:05:20 CEST


Ciao Paolo

2009/8/10 Paolo Montrasio <paolo a paolomontrasio.com>

> Mi piacerebbe infatti avere una risposta automatica sull'esistenza o meno
> del dominio e poter estrarre delle informazioni dalla risposta del
> server.


hai perfettamente ragione ed è il prossimo macro obiettivo, l'unico infatti
che ho voluto inserire nella Roadmap nella documentazione della lib.


> Non è semplice, dato che ogni registrar presenta i dati in un formato
> diverso,


Il punto è proprio questo. Inoltre si somma un problema. Quando il whois
server è di tipo thin, come nel caso dei .com o .tv, esistono due risposte:
quella del whois padre e quella del whois specifico.
Entrambe sono ovviamente in formati specifici.

Non solo, GoDaddy risponde in modo diverso da Tucows dunque anche
all'interno della stessa estensione esistono differenze sostanziali.


> Probabilmente l'euristica per estrarre le informazioni andrebbe messa in
> una serie di adapter per i vari registrar (ora riesce ad estrarre
> informazioni solo in pochi casi) e sicuramente si tratta di un
> lavoraccio. Tuttavia se il progetto coinvolgesse molti sviluppatori ed
> ognuno si scrivesse l'adapter per uno dei propri registrar lo sforzo per
> il singolo sarebbe ragionevole. La cosa difficile sarà coordinare gli
> sviluppi stabilendo l'organizzazione delle informazioni estratte.


In realtà il mio obiettivo sarebbe quello di non presentare un sistema
euristico bensì dotare la libreria di un parser per ogni whois server.
Fortunatamente, ogni whois ha una risposta univoca per cui la mia idea era
di ritornare come risposta un oggetto che estende stringa (per compatibilità
con l'implementazione attuale) che salvi al suo interno anche l'oggetto
@server.

Si potrà quindi fare

d = Whois::Client.new.query("weppos.com")
# => stringa registry

d = Whois::Client.new.find("weppos.com")
# => oggetto decomposto
d.available?
# => false
d.contacts.first.name
# => Simone Carletti
d.nameservers
# => ["192.168.0.1", "192.168.0.1"]
...

L'API è provvisoria. L'idea è quella di avere una lista di oggetti/attributi
normalzzati al quale ricondurre ogni risposta del whois. Ovviamente ci
saranno alcuni shortcut come

Whois.whois("weppos.com")
# => stringa
Whois.available?("weppos.com")
# => false


> Nota
> poi che il client whois di linux già fa un'aggregazione perché spesso
> prima della risposta del server presenta un riassunto con un minimo di
> informazioni. Ad esempio:


Sì, è un bug noto. Al momento non concateno le risposte nel caso di un thin
server.
http://code.simonecarletti.com/issues/show/259

Che ne dici? Comunque è già un buon progetto perché se non lo fosse non
> ci si potrebbe costruire sopra del sw in un'oretta, post sul forum
> incluso :-)
>

Grazie! :)

-- 
Simone Carletti

Site & Blog: http://www.simonecarletti.com
Email: weppos a weppos.net
LinkedIn: http://linkedin.com/in/weppos
Nick: weppos | Skype: weppos


More information about the Ml mailing list