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,

[spoiler]
Imagen
[/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 comando
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
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Lindo trabajo! Felicidades, pocos invierten su tiempo en lenguajes tan elegantes como este!
1337 & culture!
KHC escribió:Lindo trabajo! Felicidades, pocos invierten su tiempo en lenguajes tan elegantes como este!
Gracias crack, la verdad es que ruby me tiene enganchadisimo, ahi como una relacion entre ruby y yo ,saludos
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
jajajaj no lo dudo @strup lo he manejado un poco y es bastante cómodo! Pero hay que dedicarle tiempo -- mas que a una mujer -- xD
Espero ver mas cositas tuyas y échale ganas! Igual y te ponen una zona de ruby ;)
1337 & culture!
Responder

Volver a “Fuentes”