Comunidad de diseño web y desarrollo en internet online

Como crear tu propio servicio de WHOIS con Flash y AMFPHP

Citar            
MensajeEscrito el 13 Mar 2006 12:41 am
Ok, primero vamos a ver la definición de WHOIS en la wikipedia:

Wikipedia escribió:

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
- 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.


Documentación:
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:

Código :

<?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:

Código :

<?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
El contenido de este MovieClip debe ser:
- itDomain:TextInput
- clTLDs:ComboBox
- btnFind:Button
- dtMessage:DynamicText
- taDomainData:TextArea

Documentación
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 nuestro directorio de clases de AS 2.0, crearemos la siguiente(dentro de la carpeta Danonino):

Código :

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. :lol:

Espero y sea de su interés este tema.

Saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser
Citar            
MensajeEscrito el 13 Mar 2006 08:51 am
Excelente aporte Dano, ¿No debería ser un tutorial y estar en la sección de tutoriales?

:?

Por La100rra

Claber

5776 de clabLevel

11 tutoriales
4 articulos

Genero:Masculino  

Cd. Juárez, Chihuahua, México.

clabbrowser
Citar            
MensajeEscrito el 13 Mar 2006 01:51 pm
Patience old BOFH... patience.

Por NEO_JP

BOFH

5724 de clabLevel

13 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Premio_Secretos Team Cristalab

Front-end Developer en Washington, DC

clabbrowser
Citar            
MensajeEscrito el 06 Abr 2006 09:46 am
Me da un error en el archivo WhoIs dice que no existe el metodo Delegate,
Supongo que tendra q ver con import mx.utils.Delegate; alguna idea?? de donde importa Delegate?? estoy mirando en la ayuda de macromedia y no encuentro nada GRACIAS.

Por sulfuric

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Abr 2006 12:49 am
Se supone que con esto, se soluciona!

Código :

import mx.utils.Delegate;



Saludos :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.