Página 1 de 1

[Tk-Ruby] Ruby whois by strup

Publicado: 21 Dic 2012, 20:12
por strup
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

Re: [Tk-Ruby] Ruby whois by strup

Publicado: 21 Dic 2012, 22:00
por KHC
Lindo trabajo! Felicidades, pocos invierten su tiempo en lenguajes tan elegantes como este!

Re: [Tk-Ruby] Ruby whois by strup

Publicado: 22 Dic 2012, 04:28
por strup
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

Re: [Tk-Ruby] Ruby whois by strup

Publicado: 22 Dic 2012, 05:07
por KHC
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 ;)