[Tk-Ruby] Ruby whois by strup
Publicado: 21 Dic 2012, 20:12
Saludos, me puse a darle al diseño de interfaces graficas en ruby y se me courrio hacer este whois con gui, con la gema whois 2.7.0
o programe para que saque asta la partida de nacimiento , el code tiene muchas lineas puesto que en ruby como en otros lenguajes todo es a puro codigo y la interfaz es a puro code, algo que se suele hacer tedioso, espero le den buen uso, ya saben que si alguno lo va a usar no tiene mas que coger y descargarse la gema whois 2.7.0 (solo para los que tienen el interprete de ruby), bueno no me enrollo mas xD, una imagen que vale mas que 1000 palabras xD,
el diseño de los resultados os lo dejo ver a vosotros
el Code:
gem install whois --version 2.7.0
como pueden ver obtiene los datos y los guarda en un txt llamado log en el mismo directorio donde se ejecuto el script, y despues los muestra en la consola como vista previa, un saludo y espero os guste el code
o programe para que saque asta la partida de nacimiento , el code tiene muchas lineas puesto que en ruby como en otros lenguajes todo es a puro codigo y la interfaz es a puro code, algo que se suele hacer tedioso, espero le den buen uso, ya saben que si alguno lo va a usar no tiene mas que coger y descargarse la gema whois 2.7.0 (solo para los que tienen el interprete de ruby), bueno no me enrollo mas xD, una imagen que vale mas que 1000 palabras xD,
[spoiler]
[/spoiler]

el diseño de los resultados os lo dejo ver a vosotros
el Code:
#encoding: utf-8
=begin
*************************************************
*Ruby Whois *
*Autor: strup *
*Lenguaje: Ruby *
*Proposito: Extraer los datos de un servidor *
*4:31 20/12/2012 *
*Actualizado: 19:54 21/12/2012 *
*************************************************
=end
require 'whois'
require 'tk'
root=TkRoot.new("title"=>"Whois by strup") do
bg "black"
end
espacios=" "*22
dominio=TkVariable.new()
TkLabel.new(root) do
text espacios+"www."
bg "black"
fg "green"
pack("side"=>"left")
place("height"=>15)
end
TkLabel.new(root) do
text " Whois coded by strup"
bg "black"
fg "green"
pack("side"=>"left","side"=>"bottom")
end
TkEntry.new(root) do
textvariable(dominio)
bd 0
bg "black"
fg "green"
insertbackground "red"
pack("side"=>"top")
end
TkButton.new(root) do
text "Whois Tradicional"
bd 8
width 15
fg "green"
bg "black"
activeforeground "black"
activebackground "green"
relief "sunken"
pack("side"=>"left","pady"=>80,"padx"=>30)
command(proc{mostrar(whois(dominio.value))})
end
TkButton.new(root) do
text "Whois"
bd 8
width 10
fg "green"
bg "black"
activeforeground "black"
activebackground "green"
relief "sunken"
pack("side"=>"right","pady"=>80,"padx"=>30)
command(proc{mostrarme(dominio.value)})
end
def mostrar(cadena)
texto=TkText.new(root) do
bd 1
width 115
height 50
bg "black"
fg "green"
insertbackground "red"
pack("side"=>"top")
end
texto.insert('end',linea=cadena.to_s)
TkButton.new(root) do
text "Obtener Datos Personales"
bd 8
width 25
fg "green"
bg "black"
activeforeground "black"
activebackground "green"
pack("side"=>"bottom")
command(proc{extraer(linea)})
end
texto.yscrollcommand (proc{|pri,ult| TkScrollbar.new(root) do command(proc{ |*args| texto.yview(*args)}).place("height"=>"772","x"=>"981")end.set(pri,ult)})
end
def mostrarme(cadena)
texto=TkText.new(root) do
bd 0
width 100
height 40
bg "black"
fg "green"
insertbackground "red"
pack("side"=>"top")
end
registri=Whois::query(cadena).registered?.to_s
reg=lambda do
unless registri == true
"Esta registrado"
else
"No esta registrado"
end
end
texto.insert('end',Whois::query(cadena).domain.to_s)
texto.insert('end',"\n\nRegistrar:\n"<<Whois::query(cadena).registrar.to_s)
texto.insert('end',"\n\nServer:\n"<<Whois::query(cadena).referral_url.to_s)
texto.insert('end',"\n\nServer whois:\n"<<Whois::query(cadena).referral_whois.to_s)
texto.insert('end',"\n\nIP server:\n"<<IPSocket::getaddress(cadena).to_s)
texto.insert('end',"\n\nTipo de server:\n"<<Whois::query(cadena).server.type.to_s)
texto.insert('end',"\n\nAlojado en:\n"<<Whois::query(cadena).nameservers.to_s.gsub(/, ipv4=nil, ipv6=nil>/,"").gsub(/#<struct Whois::Record::Nameserver name=/,""))
texto.insert('end',"\n\nCreado el:\n"<<Whois::query(cadena).created_on.to_s)
texto.insert('end',"\n\nExpira el:\n"<<Whois::query(cadena).expires_on.to_s)
texto.insert('end',"\n\nUltima actualización:\n"<<Whois::query(cadena).updated_on.to_s)
texto.insert('end',"\n\nRegistrado:\n"<<reg.call)
texto.insert('end',"\n\nStatus:\n"<<Whois::query(cadena).status.to_s)
texto.insert('end',"\n\nDatos Personales:\n"<<Whois::query(cadena).contacts.to_s)
end
def whois(domain)
Whois::query(domain)
end
def extraer(datos)
File.open('log.txt','w') do |dat|
datos.each_line do |dats|
if dats =~ /\d{5,50}|@+|c\/|C\/|[+]|([*9])|Admin|Tech|Own|street|Street|call|Call|city|City|provin|Provin/
dat.puts dats
end
end
end
prin=IO.readlines('log.txt')
for i in(0..prin.length)
puts prin[i]
end
end
Tk.mainloop
para instalar la gema whois solo ahi que tener el interprete de ruby y ejecutar en el cmd el siguiente comandogem install whois --version 2.7.0
como pueden ver obtiene los datos y los guarda en un txt llamado log en el mismo directorio donde se ejecuto el script, y despues los muestra en la consola como vista previa, un saludo y espero os guste el code