Comunidad de diseño web y desarrollo en internet

Como crear tu propio servicio de WHOIS con Flash y AMFPHP

Ok, primero vamos a ver la definición de WHOIS en la wikipedia:

WHOIS es un protocolo TCP basado en preguntas/repuestas que es usado para consultar de una base de datos para determinar el propietario de un nombre de dominio o una dirección IP en la Internet. Las consultas WHOIS se han realizado tradicionalmente usando una interfaz de línea de comandos, pero actualmente existen multitud de páginas web que permiten realizar estas consultas. Estas páginas siguen dependiendo internamente del protocolo WHOIS para conectar a un servidor WHOIS y hacer las peticiones. Los clientes de línea de comandos siguen siendo muy usados por los administradores de sistemas.

Generalmente este servicio(WhoIs) es útil para las empresas que se dedican a la venta de dominios, antes de proceder con la venta, verifican si el domino esta registrado. Así que si tu vendes dominios y no tienes tu propio servicio de WhoIs, este tutorial es para tí.

Como sabemos, con php, podemos realizar cualquier tipo de comunicación utilizando el protocolo TCP/IP, whois no es la excepción. Bien, este tutorial tratará de explicar de forma sencilla, como crear tu propio servicio de WHOIS, con Flash Remoting y AMFPHP.

¿Qué debe saber para completar este tutorial?

  • Flash remoting, nivel medio a Avanzado (En nuestra sección de bases de datos hay varios tutoriales)
  • AMFPHP, nivel medio a Avanzado
  • Conocimiento de OOP

¿Qué requiero para completar el tutorial?

  • Servidor Web, Apache es una buena opción
  • PHP 4 o superior
  • Compilador de swf, como el IDE de Flash. Si esto te confunde, Flash el que siempre usas, es lo que necesitas.
  • Editor de php, NotePad++, por ejemplo.
  • La clase de AS 2.0 Danonino.FRemoting

Creando el servicio para AMFPHP

Crea en tu carpeta de servicios, una carpeta con el nombre Danonino. Dentro de esta debes crear un arhivo de nombre WhoIs.php y otro de nombre tlds.php.

Estas son las especificicaciones y el codigo de esos archivos:

Nombre de la Clase: WhoIs
Métodos:

  • getTLDs: Nos regresa la lista de TLD(Top Level Domain) que podemos utilizar, estos los saca del arhivo externo tlds.php.
  • find: Búsca la información del dominio en el servidor. Para esto se conecta al servidor por el puerto estándar para el servicio de whois(Puerto 43). Recibe la respuesta y la envía a Flash.

Código de WhoIs.php:

<?php
class WhoIs{
function WhoIs(){
$this->methodTable = array(
"getTLDs" => array(
"description" => "Regresa la lista de TLDs disponibles",
"access" => "remote", // Posibles valores private, public, remote
"arguments" => "Ninguno"
),
"find" => array(
"description" => "Búsca el registro de un dominio",
"access" => "remote", // Posibles valores private, public, remote
"arguments" => "Nombre de dominio, TLD"
)
);
}
function getTLDs(){
include_once("tlds.php");
return getArrayOfTlds();
}
function find($domainName, $NIC){
$serverWhoIs = fsockopen($NIC,43);
fputs($serverWhoIs, $domainName . "\r\n");
$answer = '';
while(!feof($serverWhoIs))
$answer .= fgets($serverWhoIs,128);
fclose($serverWhoIs);
$answer = str_replace("\r\n", "\n", $answer);
return $answer;
}
}
?>

 

En el archivo tlds.php es donde podemos agregar/quitar los tipos de dominios que aceptaremos en nuestra búsqueda. Se debe definir la extensión, y el servidor regresará la información. Es importante mencionar, que antes de agregar un servidor whois TLD, debe consultar si usted tiene y puede usar dicho servicio. Los que en este ejemplo se utilizan, no tienen otro fin, mas que ser eso, un ejemplo.

Código de tlds.php:

<?php
function getArrayOfTlds(){
$alTLD[0]["tld"] = ".com";
$alTLD[0]["nic"] = "whois.internic.com";
//
$alTLD[1]["tld"] = ".org";
$alTLD[1]["nic"] = "whois.pir.org";
//
$alTLD[2]["tld"] = ".com.mx";
$alTLD[2]["nic"] = "whois.nic.mx";
//
$alTLD[3]["tld"] = ".org.mx";
$alTLD[3]["nic"] = "whois.nic.mx";
//
$alTLD[4]["tld"] = ".edu.mx";
$alTLD[4]["nic"] = "whois.nic.mx";
//
return $alTLD;
}
?>

Creando el servicio en Flash

Crearemos un nuevo MovieClip, al cual le asignaremos la siguiente clase:
Danonino.WhoIs

Dentro del Movieclip, tendras que colocar una interfaz usando los componentes de Flash que tenga los siguientes elementos:

  • itDomain:TextInput
  • clTLDs:ComboBox
  • btnFind:Button
  • dtMessage:DynamicText
  • taDomainData:TextArea

Nombre de la clase: Danonino.WhoIs
Constructor: Leé la lista de DTLs, y asigna los eventos a bótones. Inicializa valores default.
Métodos:

  • find, búsca la información del dominio que fué introducido en itDomain(TextInput). Para esto se conecta a nuestro servicio AMFPHP, recién creado.

En la misma carpeta donde tienes el .FLA, creas una carpeta llamada Danonino y ahi, crearemos el archivo "Whois.as"(dentro de la carpeta Danonino):

import Danonino.FRemoting;
import mx.controls.TextInput;
import mx.controls.ComboBox;
import mx.utils.Delegate;
class Danonino.WhoIs extends MovieClip{
static var slGatewayURL = "amfphp/gateway.php";
var slWhoIS:FRemoting;
var itDomain;
var btnFind;
var clTLDs;
var taDomainData;
var dtMessage;
function WhoIs(){
  itDomain.restrict = "0-9A-Za-z-";
  slWhoIS = new FRemoting(slGatewayURL,"Danonino.WhoIs");
  slWhoIS.events._parent = this;
  slWhoIS.events.onGetTLDs = function( data ){
      var llTLDs:Array = data;
      for(var i in llTLDs){
              llTLDs[i]["label"] = llTLDs[i]["tld"];
              llTLDs[i]["data"] = llTLDs[i]["nic"];
              delete llTLDs[i]["tld"]
      }
      clTLDs.dataProvider = llTLDs;
      dtMessage.text = "Listo, introduzca su nombre de dominio";
      btnFind._visible = true;
  }
  slWhoIS.process("getTLDs");
  dtMessage.text ="Leyendo TLDs...";
  btnFind.onRelease = Delegate.create(this,find);
}
function onCreate(){
  btnFind._visible = false;
}
function find(){
  taDomainData.text = "";
  if(itDomain.text.length > 0){
      var DomainName:String = itDomain.text + clTLDs.selectedItem.label;
      slWhoIS.events.onFind = function(data){
              taDomainData.text = data;
              btnFind._visible = true;
              dtMessage.text = "¡Datos leídos, eso es c00l!";
      }
      dtMessage.text = "Leyendo información!";
      slWhoIS.process("find",[DomainName, clTLDs.selectedItem.data]);
      btnFind._visible = false;
  }else{
      dtMessage.text ="Oye wey, escribe el nombre de dominio";
  }
}
}

Ejemplo del tutorial:
http://www.danonino.org/whois/whois.html
Preguntas, en el foro. Si no quieres hacer nada, y quieres comprar un servicio completo para tu sitio, contactame. Riendo

Espero y sea de su interés este tema.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate