Hace tiempo tenía un problema en el inicio de sesión de mi computadora con Ubuntu Linux, el detalle es que las letras se veían demasiado grandes, que solo 2 ó 3 renglones ocupaban toda la pantalla y no daba cuál era el error, pero como no me afectaba mucho ya que por default al iniciar sesión el cursor se coloca en el login y password, pues solo tecleaba mi login y mi contraseña, entraba a KDE y todo normal..
Pero hace unos días quise instalar NetBeans 6.5 y al ejecutar el instalador lanzaba una ventana gráfica que igual me mostraba las letras muy grandes de tal forma que solo la palabra Next me ocupaba toda la ventana, y cuándo quería leer las condiciones para aceptarlas no podía, por lo que me puse a buscar cuál era el error de las benditas fuentes grandotototas y encontré la respuesta en el siguiente blog: http://www.vicente-navarro.com/blog/2007/10/27/los-dpi-en-pantalla-en-windows-y-linux/
El detalle fué que los DPI estaban mal configurados en mis gestor de inicio de sesión KDM, para esto lo único que tuve que hacer fué editar el siguiente archivo:
/etc/kde3/kdm/kdmrc
Y en el valor ServerArgsLocal
Agregar al final
-dpi 100
de tal forma que quedó así
ServerArgsLocal=-nolisten tcp -dpi 100
Con esto ya asigné los DPI(Dots Per Inch) al servidor X Windows, con esto ya resolví mi problema de las letras GRANDOTOTOTAS en el inicio de sesión y ya pude instalar NetBeans 6.5 con todos los plugins para empezar a usarlo en vez de Eclipse.
Leyendo hace unos días sobre los 25 errores más graves de la programación web en http://www.sans.org/top25errors/#cat1, veo que uno de los primeros es no validar datos de entrada y de ahí que pueda darse la inyección de código, inyección sql, ejecución de comandos sobre el servidor entre otras cosas..
Una forma rápida de evitar la inyección de código es crear sentencias de escape sobre los datos capturados, esto para que no se pueda crear una finalización de consulta sql, por ejemplo:
En php para validar un login y password es muy común hacer esto:
" select * from users where login=\"$_POST[login]\" and password=md5($_POST[\"password\"]) "
Si no validamos los datos de entrada aquí estuviera un posible error y agujero de seguridad para inyección sql, por lo que el primer paso que se me ocurre rápidamente es agregar sentencias de escape tal como en el siguiente código..
Este código se tendría que llamar al principio de cada archivo php que use variables por POST o GET, de tal forma que su uso sería
$_POST = escapeInputData($_POST);
$_GET = escapeInputData($_GET);
Con esto estamos procesando los valores de POST y GET y les agregamos sentencias de escape cuándo asi lo amerite..
Tutorial de como instalar la última versión de Asterisk PBX 1.4.23.1 y el administrador web FreePBX 2.5.1 para crear un conmutador de Voz sobre IP Open Source con soporte de IVRs, DISA, Fax Virtual, Grupos de Marcación, Marcación por Horarios, Troncales VoIP, DAHDI, Correos de Voz, Grabación de llamadas, Ruteo de llamadas entrantes y salientes entre otras muchas características de este gran magnífico conmutador de VoIP Asterisk y la mancuerna perfecta FreePBX para su administración desde una aplicación web.
#Procedimiento para Instalar Asterisk VoIP en Ubuntu Server # Servidor: Ubuntu Server 8.04 TLS # Conmutador de VoIP : Asterisk asterisk-1.4.23.1 # Admninistrador Web : FreePBX 2.5.1 #Cambiamos el password de root despues de instalar Ubuntu Server
~$ sudopasswd root #Actualizamos el repositorio de Ubuntu
~$ sudoapt-get update #Lo primero que instalamos es un servidor SSH para que podamos conectarnos desde cualquier parte
~$ sudoapt-getinstall--yes openssh-server ssh openssl #Creamos un directorio dónde descargaremos los archivos necesarios para la instalación
~$ mkdir asterisk
~$ cd asterisk # Instalar librerias para acceso via SSH sudoapt-getinstall--yes openssl libssl-dev ssh # librerías de compilación de software, sirve para compilar Asterisk sudoapt-getinstall--yesgccmakeg++ # verificar que versiones de kernel tengo instalado en el servidor uname-a # el comando me regresa algo como esto
Linux CloudVooxServer 2.6.27-7-generic #1 SMP Fri Oct 24 06:42:44 UTC 2008 i686 GNU/Linux
# Buscar las fuentes del kernel con las versiones instaladas en el server 2.6.17 apt-cache search 2.6.27-7-generic # Instalamos los encabezados para el kernel 2.6.17 especificos para el procesador (linux-headers-2.6.17-10-generic , linux-source-2.6.17 , linux-image-2.6.17-10-generic ) sudoapt-getinstall--yes linux-headers-2.6.27-7-generic linux-source-2.6.27 linux-image-2.6.27-7-generic # Instalamos algunas utilerias de linux, Lynx es un navegador web de texto, nmap es sniffer depuertos, emacs es un editor de textos potente aunque puedes usar editor instalado ya en Ubuntu y sencillo de usar sudoapt-getinstall--yesnmaplynx emacs21 # Festival son paquetes para el manejo de texto a voz en diversos Idiomas, y funcionará con asterisk para hacer aplicaciones de texto a voz sudoapt-getinstall--yes festival festival-dev # Librerias para poder usar la consola de asterisk sudoapt-getinstall--yes ncurses-base ncurses-bin ncurses-term libncurses5 libncursesw5 libncurses5-dev libncursesw5-dev # Librerias de compresion para Asterisk sudoapt-getinstall--yes zlib1g zlib1g-dev # librerias requeridas por el servicio web de FreePBX sudoapt-getinstall--yesbison bison-doc libxml2 libxml2-dev libtiff4 libtiff4-dev # librerias requeridas por el servicio web de FreePBX sudoapt-getinstall--yes libasound2 libgsm1 libltdl7 libpq5 libspeex1 libsqlite0 libtonezone1 libaudiofile0 libaudiofile-dev mpg123 # En caso que se vaya a usar una tarjeta sangoma, se requiere instalar flex para que funcione el driver wanpipe sudoapt-getinstall--yesflex # Librerias requeridas por Asterisk para el manejo de ayuda y de extraccion de archivos del CVS sudoapt-getinstall--yes subversion curl doxygen # librerias requeridas por el servicio web de FreePBX sudoapt-getinstall--yes libnet-telnet-perl mime-construct libipc-signal-perl libmime-types-perl libproc-waitstat-perl #Si desean incorporar envios de SMS desde Asterisk sudoapt-getinstall libgnokii3 libgnokii3-dev gnokii gnokii-common gnokii-cli gnokii-smsd gnokii-smsd-mysq # Servidor web para FreePBX sudoapt-getinstall--yes apache2 # Librerias requeridas por el servicio web de FreePBX sudoapt-getinstall--yes php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-curl ph5-gd php-db # Base de datos para el CDR y FreePBX sudoapt-getinstall--yes mysql-client-5.0 mysql-server-5.0 libmysqlclient15-dev
****
2da Parte.. Compilacion e Instalacion de Asterisk 1.4 + FreePBX
** # creamos un repositorio local para almacenar los archivos fuente de asterisk mkdir ~/asterisk cd asterisk # Comenzamos a obtener los archivos y los almacenamos en el directorio creado requeridos para Asterisk # Obtenemos los archivos para Asterisk 1.4, ir al directorio http://asterisk.org/downloads y descargar los archivos de la version 1.4 #asterisk-perl wget http://www.cpan.org/modules/by-category/25_Bundles/Asterisk/asterisk-perl-0.10.tar.gz #sox wget http://superb-east.dl.sourceforge.net/sourceforge/sox/sox-14.2.0.tar.gz #lame wget http://internap.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz #freepbx wget http://mirror.freepbx.org/freepbx-2.5.1.tar.gz #asterisk wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.23.1.tar.gz #sounds wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-gsm-current.tar.gz && wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz && wget http://downloads.digium.com/pub/telephony/sounds/asterisk-moh-freeplay-gsm.tar.gz #DAHDI wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz && wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz #addons wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz #libpri wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz #spandsp wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.3.tgz #obtenemos func_devstate.c wget http://svn.digium.com/view/asterisk/trunk/funcs/func_devstate.c?revision=81784&view=co&pathrev=81784 mv http://svn.digium.com/view/asterisk/trunk/funcs/func_devstate.c?revision=81784&view=co&pathrev=81784 func_devstate.c ###**Descarga conjunta**** wget http://www.cpan.org/modules/by-category/25_Bundles/Asterisk/asterisk-perl-0.10.tar.gz && wget http://superb-east.dl.sourceforge.net/sourceforge/sox/sox-14.2.0.tar.gz && wget http://internap.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz && wget http://mirror.freepbx.org/freepbx-2.5.1.tar.gz && wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.23.1.tar.gz && wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-gsm-current.tar.gz && wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz && wget http://downloads.digium.com/pub/telephony/sounds/asterisk-moh-freeplay-gsm.tar.gz && wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz && wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz && wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz && wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz && wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.3.tgz ###**Descarga conjunta****
# Instalamos el manipulador de Sonidos para Asterisk cd/usr/src/&& sudotar-xvzf ~/asterisk/lame-398-2.tar.gz && cd lame-398-2&& sudo ./configure --prefix=/usr --sysconfdir=/etc && sudomake&&sudomakeinstall # Instalamos SOX, utileria para manejar los archivos de sonido en Asterisk cd/usr/src/&& sudotar-xzvf ~/asterisk/sox-14.2.0.tar.gz && cd sox-14.2.0 && sudo ./configure && sudomake&&sudomakeinstall # Instalamos el gateway entre Asterisk y FreePBX cd/usr/src/&& sudotar-xzvf ~/asterisk/asterisk-perl-0.10.tar.gz && cd asterisk-perl-0.10&& sudoperl Makefile.PL && sudomake all && sudomakeinstall
# Instalamos SpanDSP/softfax y parchamos asterisk cd/usr/src/&& sudotar-xzvf/home/cloudvoox/asterisk/spandsp-0.0.3.tgz && cd spandsp-0.0.3 && sudo ./configure && sudomake&&sudomakeinstall
#Agregar el directorio /usr/local/lib/ al LD_LIBRARY_PATH y también al archivo /etc/ld.so.conf y despues correr ldconfig sudo emacs /etc/ld.so.conf
include /usr/local/lib/ sudo ldconfig # Instalamos FreeBX el Administrador Web de Asterisk, aqui podemos tambien instalar la version 2.2.1 en vez de la 2.1.1 cd/usr/src && sudotar-xzvf ~/asterisk/freepbx-2.5.1.tar.gz && cd freepbx-2.5.1/ # Comenzamos a instalar la Base de Datos para el Administrador Web FreePBX y para los CDR. # Iniciacilizacion de la implementacion de Bases de Datos en Mysql para Asterisk # Accedemos a MySQL si no han configurado su 4st3r1sk de root mysql, solo presionar Enter
mysql -u root -p
ENTER
show databases;
use mysql ;
show tables; select* from user; # Creamos las bases de datos para FreePBX y para el CDR, cambiamos los 4st3r1sk de root y creamos un usuario para Asterisk
update user set 4st3r1sk = 4st3r1sk("4st3r1sk") where user = "root";
create database asteriskcdrdb;
create database asterisk;
grant all privileges on asteriskcdrdb.* to asterisk@localhost identified by "4st3r1sk";
grant all privileges on asterisk.* to asterisk@localhost identified by "4st3r1sk";
flush privileges; exit; # Pasamos el esquema y la informacion de los scripts de bases de datos por default de FreePBX
mysql -u asterisk -p4st3r1sk asterisk </usr/src/freepbx-2.5.1/SQL/newinstall.sql &&
mysql -u asterisk -p4st3r1sk asteriskcdrdb </usr/src/freepbx-2.5.1/SQL/cdr_mysql_table.sql # Termina la implementacion de Bases de Datos en Mysql para Asterisk # creacion del usuario y grupo que manejara los procesos de asterisk sudo groupadd asterisk sudo useradd -c"Asterisk PBX"-d/var/lib/asterisk -g asterisk asterisk sudomkdir/var/run/asterisk sudochown asterisk:asterisk /var/run/asterisk # Cambiamo el usuario propietario de Apache ,para guardar presionar ctrl+x ctrl+s, para salir ctr+x, ctr+c sudo emacs /etc/group
www-data:x:33:asterisk # editamos el archivo de apache sudo emacs /etc/apache2/envvars #en emacs para buscar, presionar Ctrl+s y cambiar de www-data a asterisk exportAPACHE_RUN_USER=www-data exportAPACHE_RUN_GROUP=www-data # por exportAPACHE_RUN_USER=asterisk exportAPACHE_RUN_GROUP=asterisk # guardamos para guardar es presionar ctrl+x ctrl+s, para salir ctr+x, ctr+c # cambiamos los permisos para el directorio de sesiones de PHP sudochown-R asterisk /var/lib/php5 # edicion de php para aumentar el tama?o de archivos que se suben al servidor web sudo emacs /etc/php5/apache2/php.ini
default_charset = "utf8"
# creamos un directorio para la instalacion de los paquetes de Asterisk sudomkdir/usr/src/asterisk cd/usr/src/asterisk # libreria o drivers para tarjetas line PRI en caso de que se usen tarjetas de ese tipo sudotar-xzvf ~/asterisk/libpri-1.4-current.tar.gz # librerias o drivers para tarjetas ZAPTEL en caso de que se usen tarjetas digium sudotar-xzvf ~/asterisk/dahdi-linux-current.tar.gz && ~/asterisk/dahdi-tools-current.tar.gz # El PBX Asterisk sudotar-xzvf ~/asterisk/asterisk-1.4.23.1.tar.gz # utilerias de asterisk(cdr, rep music on hold. etc) sudotar-xzvf ~/asterisk/asterisk-addons-1.4-current.tar.gz # archivos de IVR por default sudomkdir sounds && cd sounds && sudotar-xzvf ~/asterisk/asterisk-core-sounds-en-gsm-current.tar.gz && sudotar-xzvf ~/asterisk/asterisk-moh-freeplay-gsm.tar.gz && sudotar-xzvf ~/asterisk/asterisk-extra-sounds-en-gsm-current.tar.gz # Iniciamos la compilacion de las librerias PRI (aunque no se usaran) cd/usr/src/asterisk && cd/usr/src/asterisk/libpri-1.4.9/&& sudomake&sudomakeinstall # Compilamos las librerias de DAHDI cd/usr/src/asterisk/dahdi-linux-2.1.0.3/&& sudomake clean && sudomake&&sudomakeinstall
cd/usr/src/asterisk/dahdi-tools-2.1.0.2/&&
./configure && sudomake&& sudomakeinstall&& sudomake config # compilacion de Asterisk cd/usr/src/asterisk/asterisk-1.4.23.1 && sudocp ~/asterisk/func_devstate.c apps/func_devstate.c && sudomake clean && sudo ./configure && sudomake&&sudomakeinstall&& sudomake samples &&sudomake progdocs # compilacion de Utilerias de Asterisk cd/usr/src/asterisk/asterisk-addons-1.4.7 && sudo ./configure && sudomake&&sudomakeinstall&& sudomake samples # reiniciamos el servidor web apache sudo/etc/init.d/apache2 restart # creamos directorios temporales para asterisk sudomkdir/var/lib/asterisk/tmp && sudochown-R asterisk:asterisk /var/lib/asterisk/tmp # Editamos el archivo de configuraci?n de Asterisk sudo emacs /etc/asterisk/asterisk.conf
# Y editamos la siguiente línea para que quede de la siguiente forma
ASTRUNDIR =>/var/run/asterisk RUNASTERISK=/var/run/asterisk # continuamos con la instalacion de FreePBX cd/usr/src/freepbx-2.5.1/ sudo pear install db sudo pear install mdb2 #en caso de que no se pueda hacer la instalación automática de pear-db, descargar el paquete e instalarlo manualmente sudo pear install db.17.0.0.tgz #wget http://download.pear.php.net/package/DB-1.7.13.tgz
sudomkdir/var/www/asterisk/&& sudomkdir/var/www/asterisk/cgi-bin && sudochown-R asterisk:asterisk /var/www/asterisk # Ejecutamos el script de asterisk antes de instalar freepbx sudo asterisk start #Obtenemos la IP del servidor ifconfig | grep"inet" #Ejecutamos el script de instalacion y configuracion de asterisk, si existe una configuracion previa de FreePBX, eliminar el archivo en/etc/amportal.conf sudo ./install_amp #La instalacion de Asterisk pedira los siguientes valores
Enter your USERNAME to connect to the 'asterisk' database:
asterisk
Enter your 4st3r1sk to connect to the 'asterisk' database:
4st3r1sk
Enter the hostname of the 'asterisk' database:
localhost
Enter a USERNAME to connect to the Asterisk Manager interface:
asterisk
Enter a 4st3r1sk to connect to the Asterisk Manager interface:
4st3r1sk
Enter the path to use for your AMP web root: /var/www/asterisk
Enter the IP ADDRESS or hostname used to access the AMP web-admin:
192.168.10.129
Enter a 4st3r1sk to perform call transfers with the Flash Operator Panel:
4st3r1sk
Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]?
extensions
Enter directory inwhich to store AMP executable scripts: /var/lib/asterisk/bin
Enter directory inwhich to store super-user scripts: /usr/sbin /etc/amportal.conf writtenAssuming new install, --install-moh added to command line
OK
Reading /etc/amportal.conf..OK
Checking for/etc/asterisk/asterisk.conf..OK
Reading /etc/asterisk/asterisk.conf..OK
Using asterisk as PBX Engine
Checking for Asterisk version..Checking for selinux..OK
Connecting to database..OK
Checking current version of AMP..2.3.0beta1
Installing new FreePBX files..OK (328 files copied, 0 skipped)
Configuring installfor your environment..OK
Setting permissions on files..OK
Checking for upgrades..0 found
Checking framework.. already at 2.3.0beta1.0
Checking core.. already at 2.3.0beta1.2
Generating AMP configs..
Generating Configurations.conf, (if Asterisk is not running, you will get an error
In case of error, start Asterisk and hit the red bar in the GUI to generate the Configuraions.conf files
Checking for PEAR DB..OK
Checking for PEAR Console::Getopt..OK
Running module install.php and install.sql scripts
Checking for/etc/amportal.conf..OK
Reading /etc/amportal.conf..OK
Reading /etc/asterisk/asterisk.conf..OK
Connecting to database..OK
Connecting to Asterisk manager interface..Mon, 02 Jul 2007 02:02:25-0500 - Unable to connect to manager 127.0.0.1:5038(111): Connection refused
FAILED [FATAL] Cannot connect to manager interface
Generating AMP configs..OK
Restarting Flash Operator Panel..op_server.pl: no process killed
OK
Please update your modules and reload Asterisk by visiting http://192.168.1.4/asterisk/ #*** #* Note: It's possible that if you click the red 'Update Now' bar BEFORE * #* updating your modules, your machine will start dropping calls. Ensure * #* that all modules are up to date BEFORE YOU CLICK THE RED BAR. As long * #* as this is observed, your machine will be fully functional whilst the * #* upgrade is in progress. * #*** #Probablemente la primera vez envie un error como este [FATAL] Cannot connect to manager interface,debido que aun no se ha ejecutado Asterisk para que escuche en el pueto de AMI # si marcara otro error ./installamp revisar usuarios de base de datos, librerías de php y de mysql, reiniciar apache y peardb, php-db # en caso de que tuviera un error al ejecutar FreePBX para reconfigurarlo previamente elimine el archivo de configuracion en /etc/amportal.conf #Despues de que se haya instalado freepbx, creamos un enlace dinámico en el directorio root del servidor web, esto para que se pueda ver el panel desde el menú de freepbx en nuetro conmutador cd/var/www sudoln-s/var/www/asterisk/panel /var/www/panel sudoln-s/var/www/asterisk/recordings /var/www/recordings sudochown asterisk.asterisk /var/www/ # creamos la carpeta donde se almacenaran los sonidos del IVR y configuramos los permisos para el directorio de Asterisk sudomkdir/var/lib/asterisk/sounds/custom && sudochown-R asterisk:asterisk /var/lib/asterisk/
#Creamos el directorio para almacenar los archivos grabados sudomkdir/var/lib/asterisk/recordings sudochown-R asterisk.asterisk /var/lib/asterisk/recordings
# Editamos el siguiente archivo /etc/amportal y cambiamos la siguiente linea AUTHTYPE=none a database, esto para que pida autenticación de administración de usuarios sudo emacs /etc/amportal.conf AUTHTYPE=database
#guardamos y ejecutamos el siguiente comando sudo/usr/src/freepbx-2.5.1/apply_conf.sh # Si al ejecutar amportal enviara un error parecido "error: Bad fd number", entonces editamos el archivo /usr/sbin/safe_asterisk y cambiamos la primera linea de /bin/sh a /bin/bash # Si al ejecutar amportal enviara un error parecido "/op_server.pl: not found", entonces editamos el archivo /var/www/asterisk/panel/safe_opserver ó /var/www/asterisk/safe_opserver y cambiamos la primera linea de #!/usr/bin/env sh a #!/usr/bin/env bash #Editamos el siguiente archivo y modificamos la siguiente línea sudo emacs /etc/default/asterisk RUNASTERISK=yes
# ejecutamos amportal sudo amportal stop sudo amportal start # verificamos que efectivamente se haya ejecutado correctamente y deberiamos ver algo parecido ps aux
asterisk 23800.00.13852724 pts/1 S 16:53 0:00 /bin/bash/usr/sbin/safe_asterisk -U asterisk -G asterisk
asterisk 23870.01.8193768388 pts/1 Sl 16:53 0:00 /usr/sbin/asterisk -f-U asterisk -G asterisk -vvvg-c
asterisk 24190.00.11756500 pts/1 S 16:53 0:00 sh/var/www/asterisk/panel/safe_opserver
asterisk 24200.11.8110768356 pts/1 S 16:53 0:00 /usr/bin/perl-w/var/www/asterisk/panel/op_server.pl # Abrir en un navegador de preferencia Firefox la direccion del servidor Asterisk por ejemplo que el servidor corra en una IP 192.168.1.4
http://192.168.1.76/asterisk/ #Introducimos el login y password (4st3r1sk) configurado:
asterisk
4st3r1sk #Ahora tenemos habilitado El conmutador de Voz Sobre IP Asterisk #Y el administrador Web de Asterisk FreePBX. #Descargar modulos de administracion de Asterisk.
#***Instalando voces en español*****# cd ~/asterisk && sudowget http://www.voipnovatos.es/voces/voipnovatos-core-sounds-es-gsm-1.4.tar.gz && sudowget http://www.voipnovatos.es/voces/voipnovatos-extra-sounds-es-gsm-1.4.tar.gz && cd/var/lib/asterisk/sounds/&& sudomkdir es && cd es && sudotar-xzvf ~/asterisk/voipnovatos-core-sounds-es-gsm-1.4.tar.gz && sudotar-xzvf ~/asterisk/voipnovatos-extra-sounds-es-gsm-1.4.tar.gz && mv es/* . && rm-rf es && mv digits/es/* digits && mv dictate/es/* dictate && mv phonetic/es/* phonetic && mv letters/es/* letters && mv followme/es/* followme && mv silence/es/* silence #***Instalando voces en español*******#
SJPhone desarrollado por la empresa SJ Labs fué uno de los primeros Softphones gratuitos que salieron hace algunos años, estos softphones son compatibles con el protocolo SIP por lo que no hay problemas para usarlos con Asterisk.
Los Softphones lo que permites es hacer llamadas vía VoIP, por lo que desde una página web es posible llamar a un teléfono de casa, a un celular ó a otro teléfono IP.
Ahora me encuentro con que SJLabs saco hace tiempo un Softphone compatible con Firefox aunque este Softphone solo funciona para versiones 2.0.0.X y anteriores de Firefox pero no dudo que pronto haya una versión FireFox 3.0, lo interesante de este Softphone es que es posible tener un Telefono IP desde nuestro navegador, por lo que permitiría a diversos usuarios remotos instalarlo sin tantas pegas en el navegador.
Para tenerlo funcionando solo basta instalar la extensión firefox y se puede hacer desde la siguiente URL: https://addons.mozilla.org/es-ES/firefox/addon/2589
Hace unos días leyendo un blog sobre seguridad informática vi un post sobre los 25 errores de programación web más peligrosos, artículo que me llamó mucho la atención por lo cuál pongo aquí la liga original por si alguien quiere verificarlo http://www.sans.org/top25errors/#cat1
En esta página clasifican a los errores de 3 formas
Interacción entre componentes de forma insegura (9 Errores)
Administración de recursos riesgoso( 9 Errores)
Defensa porosa.(9 Errores) Interacción entre componentes de forma insegura (9 Errores)
CWE-89: Falla en la preservación de la estructura de sentencias SQL (Aka Inyeccción SQL)
CWE-20: Validación de entrada de datos inadecuada
CWE-116: Escape y codificación de salida inadecuada
CWE-79: Falla para la presenvación de la estructura de páginas web(Aka Cross Scripting)
CWE-78: Falla en la presevación de Comandos del Sistema Operativo.
CWE-319: Transmisión de datos sensibles en texto plano.
CWE-352: Falsificación de peticiones de sitios web.
CWE-362: RaceCondition
CWE-209: Mensajes de errores nulos Administración de recursos riesgoso( 9 Errores)
CWE-119: Falla en las reglas de operación de los límites de los buffers de memoria
CWE-642: Control Externo de Estado de Datos críticos
CWE-73: Control Externo de nombre ó rutas de archivo.
CWE-426: Busqueda de rutas no confiables.
CWE-94: Falla en el control de generación de código (Aka Inyección de código)
CWE-494: Descarga de código sin verificación de integridad.
CWE-404: Inapropiado recurso de cierre ó liberación
CWE-665: Inapropiada inicialización.
CWE-682: Cálculos incorrectos. Defensa porosa.(9 Errores)
CWE-285: Inapropiado control de accesos(Autorización)
CWE-327: Uso de Algoritmos ya rotos ó criptografía riesgosa.
CWE-259: Contraseñas sencillas
CWE-732: Asignación de permisos inseguros para asignación de recursos críticos.
CWE-330: Uso de insuficiente valores aleatorios.
CWE-250: Ejecución con privilegios innecesarios.
CWE-602: Refuerzo de la seguridad del cliente desde el servidor.
El artículo es muy interesante y ayuda a tener una visión de los errores que cometemos muchas veces por falta de experiencia o por una profesionalización más especializada en el arte de la programación.
La idea de mostrar estos errores aquí en mi blog es irlos desmenuzando uno a uno para entenderlos, descubrilos y dar una posible solución.
Acabo de probar el set de voces que la empresa Nucleum liberó para Asterisk, un detallazo de Juán Carlos Huerta y la empresa para la cuál trabaja... Con esto ya es grato escuchar voces en español para asterisk mexicanizados.
Para poder poner Asterisk a español mexicano solo basta descargar el siguiente archivo de la página de Nucleum: http://nucleum.com.mx/extras/asterisk-sounds-1.4-Hombre.tar.gz
De ahí ir al directorio dónde se encuentran los archivos de sonidos de Asterisk
cd /var/lib/asterisk/sounds
Y a continuación solo descomprimir los archivos de sonido
sudo tar -xzvf asterisk-sounds-1.4-Hombre.tar.gz
Esto creará un directorio asterisk-sounds
Lo importante está en asterisk-sounds/sounds/
Ahí se verán los siguientes directorios
dictate digits es letters phonetic
Copiar todos los directorios a /var/lib/asterisk/sounds
Por alguna razón no me funcionó poner los directorios debajo del directorio /var/lib/asterisk/sounds directamente, ya que haciendo esto al configurar el sistema de Asterisk a español los mensajes del IVR si me los manda en español, pero las letras, números y demas me los sigue diciendo en ingles, por lo que tuve que modificar el path original de como vienen en el paquete a la siguiente forma:
Copiando los directorios como vienen en el paquete proveído por Nucleum al directorio sounds quedaŕian de la siguiente manera:
/var/lib/asterisk/sounds/
/var/lib/asterisk/sounds/es
/var/lib/asterisk/sounds/letters/es
/var/lib/asterisk/sounds/phonetic/es
/var/lib/asterisk/sounds/dictate/es
/var/lib/asterisk/sounds/digits/es
El detalle del asterisco cuándo configuro en sip_general_additional.conf la opción de
language=es
Los IVR en español que están bajo el directorio /var/lib/asterisk/sounds/es funcionan, el detalle es que los números, letras y demás me los sigue dando en ingles.
Para esto lo que hice fué mover los directorios siguientes
/var/lib/asterisk/sounds/digits/es => /var/lib/asterisk/sounds/es/digits
Ya con esto mi sistema de Asterisk quedó completamente en español.
Igual y mi configuración estaba mal que no reconoció el path que usa Nucleum, pero ya moviendo los directorios debajo del directorio /var/lib/asterisk/sounds/es ya ahora si todos los IVRs son en español..
Gracias por la contribución..
Pongo a continuación una entrevista que me envío y que realizó Gerardo Cabero del grupo SuperWaba de Argentina al creador del proyecto SuperWaba y ahora el renovado TotalCross hablo de Guillermo Campos Hazan.
Nota de Gerardo Cabero: Desde hace mucho tiempo queria entrevistar a Guillermo Campos Hazan , lider del los proyecto TotalCross y Superwaba, hace un par de dias tube la oportunidad de poder realizarle una entrevista. En ella nos cuenta que es TotalCross, cuales son los principales ventajas sobre Superwaba , y nos deja entrever cual fueron los impulsante para el nuevo cambio de modelo de negocio. En lo personal a sido muy gratificante haber podido entrevistar a Guich pueso que llevo muchos años trabajando con Superwaba ....Espero que la entrevista sea de sus agrado un Fuerte Abrazo a Todos
Gerardo Antonio Cabero Gerardo Cabero : @Nos podrias decir tu nombre ? Y como comenzaste en el mundo de las aplicaciones Moviles? ¿Como Nace Superwaba ? Guillerme C. Hazan: Mi nombre es Guilherme Campos Hazan. El apodo proviene de las iniciales del nombre de pila. La historia de como mi inicie con SuperWaba se puede leer aquí:
http://www.clubepda.com.br/SuperWaba1.htm Gerardo Cabero : @ Sabemos que dentro de poco des largar una nuevo SDK para el desarrollo Movil, pero hay mucha gente que no conoce el nuevo producto ¿Que es TotalCross ? Y cuales son Sus Ventajas ? y cual es la diferencias ante Superwaba ? Guillerme C. Hazan: SuperWaba procedia de otro proyecto de software libre. Lamentablemente, después de 7 años de software libre, llega a la conclusión de que el modelo de venta de suscripciones es insostenible: o bien mudabamos el modelo o cerrabamos las puertas. Sin embargo, incluso con permiso escrito del autor de WABA, el Rick Wild, a nuestro juicio, el deseo de cambiar el modelo.
Despues de haber realizado un master en PUC-Río de lenguajes de programación, el resultado de mi tesis fue la especificación utilizada en el desarrollo de TotalCross.
"TotalCross, portanto, nao é apenas um novo SDK, mas sim, principalmente, uma nova maquina virtual, codificada a partir do ZERO absoluto""
El TotalCross, por lo tanto, no es sólo un nuevo SDK, es sobre todo una nueva máquina virtual, fue codificada a partir de CERO, es decir, que "escribí la primera línea de código, sin mirar nada de la VM SuperWaba.". Se trato de un trabajo intenso que duró 2 años. Confieso que al día de hoy, ver todo el trabajo, ver que todo funcione bien, me hace sentir muy satisfecho, porque a veces pensé que no podía con el proyecto. En TotalCross han tratado de resolver todos los problemas que se sabía que existía en la máquina virtual de WABA, no sólo de funciones, sino también de ingeniería de software, la codificación, la división del código y así sucesivamente. Gerardo Cabero : @De manera corta y sencilla, cuáles son las ventajas de TotalCross antes de la SuperWaba? Guillerme C. Hazan: El TC resolverá todos los problemas que los usuarios tenían en SuperWaba. Todo es simple, completa y, sobre todo, robusto, no tolerar el fracaso. Gerardo Cabero : @ Con la inmiente lanzamiento de TotalCross, Como Afectara a la aplicaciones echas en Superwaba ? Existira Forma de Migrar la misma al nuevo soporte ? Guillerme C. Hazan: Hay una herramienta llamada tc.tools.SW2TC que convierte el 90% de los programas. El resto debe hacerse por el desarrollador Gerardo Cabero : @ Por que se eligio el nombre de TotalCross ? ¿Con que sorpresas nos econtraremos en el SDK De TotalCross ? Guillerme C. Hazan: TotalCross quiere decir: totalmente de desarrollo de plataforma cruzada. O bien, totalmente multiplataforma. Es seguro que el programa se ejecute sin modificaciones en todas las plataformas soportadas, siempre que este correctamente escrito, tal como se describe en la documentación. Gerardo Cabero : @ ¿Nos podrias comentar un poco sobre la nuevas caracterista de la VM y de
las Librerias incluidas en SDK? Guillerme C. Hazan: El VM es un "registro basado en máquina virtual", es decir, la opcodes son como si se tratara de un ensamblador de computadoras de hoy, en colaboración con los solicitantes de registro, y no en la pila como en Java. El. Clase Java se convierten en nuestros "ensamblador" durante Desplegar, todo muy rápidamente. Nuestro. Clase se comprimen, y la tabla de constantes (constante piscina) se reparte entre todos. Esto hace que la AP archivos de hasta 1 / 4 el tamaño original de Java.
En cuanto a la SDK, tiene todo lo que los usuarios siempre soñó. Puedo citar, por ejemplo, las clases de árbol, FileChooser, MultiListBox, serversocket, Registro (para acceder al Registro de Windows y Palm), Gráfico (skins, línea, columna), pizarra (para recoger firmas), Slider, ScrollContainer, Edit con máscara, Button con texto E imagen. Y multi-tareas Multihilos.
Uno de los principales cambios en TotalCross en relación con SuperWaba , no permita al desarrollor cometer cualquier tipo de error, se trata de despedir a una excepción. Esto es válido para parámetros no válidos, o de otros tipos de errores que pueden ocurrir en el SDK, o el nativo de la biblioteca.. Asi tambien todas las clases están empaquetados en un único archivo, TCBase.tcz, que se encuentra actualmente en 310Kb (en SuperWaba, que más o menos 1 M. Gerardo Cabero : @ ¿Qué nivel de dificultad tiene el SDK, como si la parte que gestiona los gráficos? ¿Cuáles son los nuevos dipositvos que soportaran? Guillerme C. Hazan: Hemos intentado hacer coincidir los nombres estándar de Java, y también corregir los nombres de las clases y métodos. Para un usuario SuperWaba, puede dar una buena lectura a la documentacion (que está siendo reescrito), identificar las nuevas clases y nuevas características de las clases mayores. Es esperctacular
La parte gráfica fue también completamente reescrita, ahora se emula correctamente los gráficos de las resoluciones de 8, 16, 24 y 32 bpp en los distintos dispositivos. Un color, que anteriormente era designado por la clase color, ahora sólo es un int, que mantiene el color en el RRGGBB. La clase color es ahora sólo una clase con herramientas útiles tales como la oscuridad, más brillante, y así sucesivamente.
La clase imagen sólo admite archivos JPEG PNG y en el dispositivo, y PNG, JPEG, BMP (ahora con 24bpp) y GIF en el escritorio. En el momento de desplegar, el BMP y GIF se convierten automáticamente a PNG. Para el desarrollador, es todo transparente. Por lo tanto, por la práctica "new imagen (" imagen.gif ")," este archivo se convertirá a desplegar en PNG y el momento de leer vm "imagen.gif" en el dispositivo, que ya se ha cargado correctamente la "imagem.png" convertidos. Es decir que no es necesario realizar mezclas extrañas de codigo. Los Gif seran correctametne traducidos .
Por último, las fuentes de caracteres están ahora con las esquinas redondeadas (antialiasing), lo que los hace mucho más hermoso la aplicacion en el dispositivo. Debido a que, también, las pantallas ya hechas al SuperWaba debe "mover un poco" cuando se cargan en TotalCross. La fuente predeterminada es ahora utilizado para Tahoma, que tiene una ancho un poco más cerca de las antiguas fuentes de SuperWaba (es decir, es ahora cosa más en la pantalla). Otra innovación importante es el apoyo de diversos tamaños de fuentes, el 8-22, normal y en negrita. Así, usted puede cambiar el tamaño de la voluntad en los programas.
El TotalCross trabaja sobre Palm OS, Windows CE (2.x-6.x), BlackBerry y iPhone. Queremos portalo para Symbian y Android (a inicios) en 2009. Gerardo Cabero : @ ¿Cuántos desarrolladores estarán involucrados en la creación de TotalCross? ¿Cual fue la parte mas complicacada durante el desarrollo del SDK? Guillerme C. Hazan: Durante la fase más crítica, fuimos 7 personas. Actualmente, somos 4. Creemos que con la puesta en marcha, podemos aumentar el equipo de nuevo. Lo más difícil fue la creación de threads preemptivas. Incluso pense en dejarlo. En última instancia, la solución es terriblemente simple: un soporte a los therard en mentodos de 30 líneas de código para cada plataforma.Un soporte para la concurrencia, también generó un gran dolor de cabeza el recolector de basura, el cual tuvo que ser cambiado alrededor de 6 veces hasta que paso todas las condiciones de los entornos. Gerardo Cabero : @ Para los que no conocen ¿Que es LiteBase ?, ¿Funciona de la misma forma de PDBdriver ? ¿o es una evolucion del mismo? Guillerme C. Hazan: El Litebase 1.x ya está en el mercado tiene 2 años. La diferencia en la version 2.0 ahora soporta joins simples, de palabras compuestas, blob y varchar (en realidad, todos los caracteres son ahora varchar). Sin embargo, se ha utilizado al rededor de 4 meses para liberar un prodcuto más estable. Ahora, por ejemplo, "antes era posible corromper a un índice" (esto ocurre cuando no hay registro o memoria ),
pero ahora se advierte al usuario atravez de un una excepción para el cual reconstrulle el índice cuando se reinicia la aplicación. Con esto la base de datos no sera dañada en ningun modo, solo a ser que el dipositivo tenga una falla de hardware. Gerardo Cabero : @ ¿Desde el punto de vista comercial, cual es razón por la que optar por cambiar el Modelo de negocio? y la forma de distribución de la máquina virtual? ¿Cuál será el precio de la máquina virtual? Guillerme C. Hazan: El modelo de suscripción anual, aprobado en 2005 no se conviertan en lo posible, por dos razones. La primera de ellas, la mayoría de los usuarios que compraron un abono sólo una vez. La segunda, que una empresa como Itaipu Binacional paga lo mismo que José, propietario de una pescaderia en una esquina . En otras palabras, no era posible crecer como empresa. si no se cambiaba de modelo, o se deberían de cerras las puertas, puesto que ese modelo era solvéntale. Los que discrepan, que abran un negocio y traten de sobrevivir en las suscripciones; va invariablemente a morir de hambre (Traducción Adaptada) "Quem discordar disso, que abra uma empresa e tente viver de subscricoes; vai invariavelmente morrer de fome."
Ahora, el SDK se distribuirá gratuitamente en forma plena (con todas las características), y el usuario tendrá la licencia vm sólo cuando el producto se pone en producción. El vm se cargará el PDA. El cliente compra un nr x licencias, y cada vez que un VM se instala en un nuevo PDA, debe estar habilitado en nuestro servidor. El PDA luego recibir un archivo de activación. Este archivo sólo será válida para una pda. Si al sufrir el pda un Had-reset, puede ser reactivado de forma gratuita, o copiando de nuevo el archivo para la PDA, que es el acceso a nuestro servidor. El SDK es vm acompaña a la versión de prueba, que aparece en una popup y también está limitado por el tiempo (80 horas de uso). Después de esto, usted puede hacer una hard-resert en el dispositivo y ejecutar otro 80 horas, esto es permitido por nosotros, sin violación de la licencia.
Para las grandes empresas (más de 10.000 dispositivos), donde existe un sistema de dispositivos de control de auditoría externa, podemos eliminar la fase de activación, y todas regidas por contrato. Gerardo Cabero : @ Uno de los principales problemas que hemos tenido con SuperWaba, es el
la falta de capacitación y certificación en español, en este nuevo giro de 360 Grados, que está dando el proyecto incorporarán ¿Si el sistema de formación y Certificación? Guillerme C. Hazan: Esperamos poner en el aire una WEB de formación en línea durante 2009. y Un programa de la certificación , es un paso natural a segir. Gerardo Cabero : @ ¿Cual es la Fecha mas proxima de lanzamiento del SDK TotalCross? Guillerme C. Hazan: Tal vez la 2 ª semana de enero, la más probable es la 3 ª semana de enero de 2009. Gerardo Cabero : @ Una pregunta a Futuro, ¿Es Posible que en algún momento un SDK TotalCross comunitario o Lite, tal como exite Superwaba comunitaria? Guillerme C. Hazan: El SDK es total y completamente libre. La diferencia ahora es la vm. Cuando alguien es la concesión de licencias del producto, que gana sólo nuevos VMS, y no un nuevo SDK. El SDK es el mismo que antes. Gerardo Cabero : @ ¿Como vez el futuro de TotalCross frente al J2me , Android ? Cuales son
los Obstaculos por vencer a corto plazo? Guillerme C. Hazan: El problema no es Android, el TotalCross será portado a él. En cuanto a la JME, ellos tienen la api, y nostros tenemos la nuestra. El mercado es muy grande, hay espacio para todos. Gerardo Cabero : @ Hablemos un poco de la comunidad, papel de la comunidad latinoamericana hacer contribuciones a los proyectos SuperWaba y / o TotalCross? Y como Argentina se posiciona frente al resto de los países de los países de habla hispana? Guillerme C. Hazan: Bueno, ya que al cambiar el modelo de negocio en 2005, la comunidad casi a desaparecido. Todas las contribuciones han cesado. Esperamos que con este nuevo modelo la comunidad a de resurgir. Tenemos también un gran interés en el fomento de asociaciones con universidades, de modo que los estudiantes se formen en las nuevas tecnologías. Gerardo Cabero : Finalmente me gusta el agradecerte que Allas dado un poco de usted tiempo para impugnar un par de preguntas, que en este último sabemos ocupado el período demasiado francamente creo que agradecemos Para Finalizar algunas palabras para la Comunidad de Superwaba Argentina y SuperWaba - Latino ... Guillerme C. Hazan: Tratar de corregir los errores del pasado con nuestro nuevo producto. Espero que la gente entienda que somos una empresa y no un Zen comunidad que vive la base de Santo Daime Cha. Todo el esfuerzo de organizar una nueva máquina virtual de costo miles de horas de arduo trabajo, la privación de los fines de semana, vacaciones, y el estar con la familia. Nuestro objetivo es entregar a la comunidad y un sólido producto que permite a la gente entrar en el mundo de la tecnologia movil se más agradable posible.
Quiero hacer un llamado a la comunidad, una vez más, a contribuir con el proyecto. Las clases son de código abierto y estan escritas en el lenjuge Java, por lo que siempre es posible mejorar lo que se hace. No se olvide de leer todo lo que está escrito en www.totalcross.com
Leyendo la página web de Red5 que es un proyecto Open Source que funciona como servidor de Aplicaciones Flash, hay un documento que habla de la diferencia de Free y Open Source.
Free en el idioma anglosajón puede tomar 2 acepciones, Free de Libre.. ó Free de Gratis, cómo en cerveza gratis.
El documento me gustó porque aclara la diferencia que hay entre Free y Open Source, ya que actualmente hay una diferencia interna entre algunos líderes del Software Libre como Richard Stallman y otros que apoyan al Open Source.
Básicamente el documento comenta lo siguiente:
"Free" Refiere a si un desarrollador de una pieza de software requiere ó no remuneración económica( Ej. dinero) por ello. Si el desarrollador(Individuo, Compañía, etc) no quieren dinero ó alguna otra forma de compensación financiera por su software,entonces ese software se dice que es "free" de Gratuito. No implica si el código fuente es abierto ó cerrado.
Cuándo nos referimos a una pieza de software(aplicación), usualmente nos referimos a los binarios. Estos son los programas de computadora que al final se entregan compilados. En computación moderna, los desarrolladores escriben sus programas(aplicaciones/software) en lenguajes de Alto-Nivel que son entonces compilados dentro de un código que la computadora pueda entender. El código inicial escrito por el programador es llamado "código fuente". Esto es la propiedad intelectual del desarrollador y el ó ella puede escoger si quiere liberar su código fuente separadamente de la aplicación/programa/software misma.
Si el desarrollador escoge liberar el código fuente de su aplicación, la aplicación se dice ser "Fuente Abierta" ó "Código Abierto" (Open Source). Indicando que el código fuente está disponible para descarga, escrutinio público, mejoramiento, etc. Una aplicación puede ser de Código Abierto (Open Source) y no ser "Free"( de Gratis). Los dos conceptos en el idioma anglosajón no están relacionados (Free y Open Source)
Pro lo tanto, una aplicación puede ser alguna de las siguientes cosas (ó combinacion de ellas):
Free de Gratis, Código Cerrado
Free de Libre ó Gratis, Código Abierto
Comercial, Código Cerrado
Comercial, Código Abierto.
No es inusual ver una aplicación siendo ofrecida bajo licencias duales (Incluso más que 2 licencias).
Espero no haber confundido más, pero la idea básicamente es comentar que una aplicación puede ser de código abierto pero no gratis.. muchos piensan que por ser de código abierto tiene que se gratuito hasta el soporte.. así como también que una aplicación sea gratis no significa que pueda entrar a modificar el código..
Total Cross es un entorno de desarrollo para dispositivos móviles tales como WindowsCE, WindowsMobile, PocketPC, PalmOS, BlackBerry, Symbian y próximamente Android e iPhone. Su antecesor SuperWaba tenía una versión libre para la comunidad por lo que imagino que TotalCross seguirá con esta filosofía, algo que interesante a TotalCross es LiteBase que es una parte propietaria del proyecto pero que permite integrar bases de datos empotradas al código mediante sentencias SQL, lo que amplia su potencial de TotalCross, aparte que TC está rediseñado desde cero con respecto a su antecesor SuperWaba.
Auguro mucho éxito para TotalCross más con la venida de nuevas tecnologías móviles. Se anuncia que para mediados de enero del 2009 ya estará disponible un release de TotalCross asi que creo que valdrá la pena repasar esta tecnología y ver si es posible sacar provecho de ella,
Algunos amigos me han preguntado como publicar su sitio web usando su propio internet y su máquina como servidor de páginas web para publicar su blog, alguna página o hacer sus pininos con esto de la programación web, les he comentado sobre como hacerlo con DynDNS. y por ello público este post para comentar a grandes rasgos como publicar sitios webs usando las IP Públicas Dinámicas que nos proveen el servicio de Prodigy, eGo o algun otro proveedor de internet. Lo básico
Antes hay que comenzar con lo básico saber que es una IP Pública y una IP Privada, pero antes de eso ¿Qué es una IP?
IP significa "Internet Protocol", qué es el mecanismo que usan las computadoras para poder identificarse en internet y en una red local.
Una IP es cómo un número de teléfono por ejemplo, para poder llamar a la casa de mis padres a Oaxaca marco su número telefónico, al igual que para poder marcar a mis conocidos aquí en el D.F. igual marco un número de celular ó fijo el cuál es único y no se repite, igual es una IP es un número con el cuál las computadoras se conectan entre si en internet, solo que también aparte de tener ese número las computadoras también tienen nombres que nos ayudan a recordar de manera más fácil que los números, asi por ejemplo podemos identificar gmail.com, phylevn.binniza.com, mozilla.org, OpenOffice.org de tal forma que es más fácil aprendernos los nombres ó dominios que los números de IP.
Una IP está conformado por 4 números de 8 bits. 8 bits es la representación binaria de un número de 0 hasta 255. Por lo tanto en las ips podemos tener números como:
75.126.179.110 para una ip pública
192.168.1.1 para una ip privada por ejemplo
¿Qué es una IP Pública y que es una IP Privada ? IP Pública
Volviendo al ejemplo de los teléfonos, una IP Pública es una dirección que puede accederse directamente desde cualquier parte de internet, al igual que un número de teléfono puede marcarse desde cualquier casa, ciudad ó pais, entonces podemos entrar a SourceForge por su nombre http://www.sourceforge.net ó por su IP 216.34.181.60. IP Privada
Una IP Privada es una dirección de uso interno en una red local, por ejemplo en un cybercafé, en una oficina, en tú casa, las IP que regularmente usan tús máquinas son IPs privadas. Estas IP no pueden accederse directamente desde internet, usando el ejemplo del teléfono una IP Privada sería como un número de extensión por ejempo el 5055, 1012, etc. las extensiones no pueden marcarse directamente desde otra casa, ciudad ó pais, primero se marca el número y despues la extensión. Por lo que una IP Privada se puede repetir en otras redes locales pero no en la misma, al igual que una extensión no se repite en la misma oficina, pero en otras empresas seguro pueden estar usando la misma numeración de extensiones. ¿Qué es una IP Dinámica?
Las IP Dinámicas pueden ser usadas tanto en IP Públicas como fijas, una IP Dinámica es una dirección que alguien nos asigna automáticamente al conectarnos a una red, esta dirección puede ir cambiando cada vez que nos conectemos a internet, o por ejemplo en el caso de los routers ó modems de Infinitum, Ego o de algún otro proveedor cada vez que lo reiniciemos estaría cambiando de dirección, volviendo al ejemplo de los teléfonos es como si dijéramos que cada que conéctaramos el teléfono a la línea nos cambiara de número telefónico.
Para el caso de una IP Dinámica cambiar de IP constantemente no representa problema a que si cambiáramos de número telefónico todos los días, esto porque a nuestras PC nadie se conecta directamente, pues nosotros somos los que nos conectams a paginas wes, messenger, chat, y otros servicios y al conectarnos abrimos un canal de comunicación.
Pero que pasa si quisiéramos que alguien se conectara directamente a nuestra máquina en algún momento ? entonces si sería un caos eso de que nuestra IP cambiara todos los días, al igual que si alguien quisiera llamarnos y nuestro número cambiara. ¿Como permitir que se conecten a nuestra máquina si tengo una IP Dinámica ?
Supongamos el siguiente caso:
Tenemos un router módem (2Wire) de Infinitum que nos dá la IP Pública189.181.154.37, Para saber qué IP Pública usa tú router entra a http://www.tuip.info, pues cada vez que entras a una página de internet se registra la IP Pública del router a traves del cuál sales a internet, no tú IP Privada.
Ese router lo tenemos en la casa en dónde hay 4 máquinas con las siguientes IP privadas:
Máquina IP Privada
A 192.168.1.90
B 192.168.1.101
C 192.168.1.103
phylevnMobile 192.168.1.176
router 192.168.1.254
Lo que quiero hacer es que desde cualquier parte de internet puedan entrar a una página web que tengo instalada en la máquina de PhylevnMobile.
Si alguien teclea en alguna otra parte de internet directamente en la barra de direcciones de su navegador firefox192.168.1.176 probablemente vea un error, ya que es una IP privada que en este caso uso dentro de mi red local.
Para que alguien pueda acceder a mi página web desde otra parte de internet primero tendría que decirle al router que cuándo alguien pregunte por el puerto 80 lo mande a mi dirección IP, volviendo al ejemplo telefónico para con los números telefónico y las extensiones, para que alguien de fuera pueda entrar a una extensión, entonces el agente externo marca al número telefónico de la empresa y el que redirecciona la llamada es el conmutador, que en este caso análogamente es el caso de un router para con las IP y Puertos. ¿Qué es un puerto ? ¿Porqué el puerto 80?
Las máquinas aparte de tener direcciones IP, tiene puertos, un puerto es la forma de acceder a un servicio de una computadora, por ejemplo para bajar archivos, para poder enviarle un mensaje en el chat, para ver páginas web que hay en la máquina, para poder ver una cámara conectada a la PC, para poder apagar la computadora desde otra máquina, etc., los ejemplos que estoy mencionando coloquialmente se llaman servicios, porque son los que sirve la computadora a otras computadoras.
Entonces el puerto 80 es el puerto estándar para brindar servicios web a otras computadoras, igualmente puede usarse algún otro puerto pero vámonos por la fácil .
Entonces para poder mostrar al mundo mi página web colocada en mi computadora, tengo que decirle al router que cuándo alguien pregunte por el puerto 80 lo mánde a la IP de mi máquina de phylevnMobile que tiene la IP 192.168.1.176.
Para esto usando el más común de los routers los 2Wires de Prodigy Infinitum, bastaría con ir a la dirección IP 192.168.1.254 que es la IP default del servicio de Prodigy para el router.
Seleccionar Bloqueo de Intrusos->Configuración del bloqueo de intrusos
Pedirá un password que es la clave WEP del router.
En la página en dónde dice Seleccionar una computadora, seleccionaremos el nombre de nuestra máquina, en este caso phylevnMobile. -esto no es muy práctico, prefiero otros routers como los que usan el firmware dd-wrt dónde de un mismo paso indico la IP local, el puerto remoto y a que puerto local irá, pero en fin sigamos-
Seleccionamos abajo del listado de aplicaciones de la página la opción que dice : Agregar una nueva aplicación definida por el usuario
Y nos aparecerá una nueva página dónde daremos los siguientes datos:
Nombre de aplicación: Servicio Web local
Protocolo: TCP -Generalmente es TCP salvo algunos casos se usa UDP(VPNs, Streaming, etc) -
Puerto (o intervalo): De: 80 A:80 -Aqui decimos el puerto externo que usaremos, generalmente es el mismo que el interno, a menos que tengamos ya apartado el puerto 80 para otra máquina, si ya se definió un puerto no es válido repetirlo-
Tiempo de espera del protocolo (segundos): 86400
Asignar al puerto de host: 80-Aqui introducimos el puerto que usa internamente nuestro servicio en este caso 80, pero por ejemplo si es un VNC 5900, un FTP 21,un SSH 23, etc.
Tipo de Aplicación: Ninguno
Y para finalizar presionamos el botón que dice Agregar Definición y esperar unos segundos.
Despues de presionar el botón al final de la página se mostrará el servicio agregado:
Protocolo Puerto (o intervalo) Puerto de host Tiempo de espera (seg.)
TCP 80 80 86400
Presionamos el botón atras y volveremos a la página de configuración del sistema de bloqueo de intrusos
Seleccionar Permitir aplicaciones individuales y escogemos del listado Servicio Web Local y presionamos el botón agregar para pasarlo al listado de aplicaciones alojadas.
Presionamos el botón Aceptar y veremos una página como la que sigue:
Configuración actual: Personalizada
Dispositivo Aplicaciones permitidas
PhylevnMobile Servicio Web Local 192.168.1.64
Si la damos ver detalles veremos algo como lo siguiente:
Configuración actual: Personalizada
Dispositivo Aplicaciones permitidas Tipo de aplicación Protocolo Números de puerto IP Pública
PhylevnMobile Servicio Web Local - TCP 80 189.181.154.37
Con esto ya cualquiera puede acceder desde internet a nuestra página local introduciendo la IP 189.181.154.37 en su Navegador Web de FireFox. Peroooooooooo
189.181.154.37 es una IP Dinámica, ¿ Que pasa si al rato cambia de IP el router ? obviamente ya no podrían entrar nuestros amigos con la IP que les dimos ó igual entrarían al servicio de alguna otra máquina que no sería la nuestra, porqué ya no es nuestra IP.
Para resolver esto usaremos el servicio de DynDNS.org ¿Qué es lo que hace DynDNS.org?
DynDns lo que hace es darle un nombre a tú máquina, por ejemplo phylevnmobile.dyndns.org
Dónde dyndns.org es el nombre global del servicio.
phylevnmobile es el nombre que elegirías y que no debería ser usado por otros usuarios de dyndns.org.
Ya con el nombre ó subdominio asignado, entonces usando alguna de las herramientas de DynDNS cada vez que la IP de tú máquina cambie entonces DynDNS.org redireccionara tú subdominio a la nueva IP.
Por ejemplo hoy amaneciste con la IP.
189.181.154.37 DynDNS apuntará phylevnmobile.dyndns.org a esa IP, entonces cuándo alguien entré a phylevnmobile.dyndns.org irá a 189.181.154.37.
Si mañana cambiá tú IP a 189.181.150.42, DynDns nuevamente redireccionará tú subdominio phylevnmobile.dyndns.org a la ip 189.181.150.42, y asi sucesivamente.
De tal forma que en internet entrarán a traves de phylevnmobile.dyndns.org a tu página sin importar que todos los días tú IP Pública cambié. ¿Cómo me registro en DynDNS?
Muy fácil..
Vé a Dyndns.org y selecciona "create account".
Da tus datos de registro y despues de eso confima el registro dandole click a la url que te llega al correo que diste.
Válidate en el servicio de DynDNS con tu login y password y ve a: Services->DNS Services->Dynamic DNS(DDNS)->Manage Hosts->Add New HostName
Y ahí te pedirá los datos para crear tú dominio dinámico:
Hostname: phylevnMobile -puedes poner el que gustes-, selecciona igual el servidor de tú gusto
WildCard: Seleccionalo si quieres tener subdominios.
Service Type: Host with Ip Address
IP Address: Pon aquí tú IP Pública abajo del text box mostrará tú ip pública. También la puedes conocer a traves de http://www.tuip.info
Mail Routing: Para este ejemplo no aplica, pero es útil en otros casos.
Solo Presionar el botón Create host para guardar los cambios.
Con esto ya tendríamos configurado el servicio DDNS, para verificar solo basta hacer un ping a phylevn.dyndns.org ó al dominio creado, y veremos que al hacer ping nos responderá nuestra IP Pública.
Con esto ya pueden acceder desde internet usando por ejemplo el dominio phylevn.dyndns.org.
Ahora solo faltaría ver como actualizar la IP en DynDNS cada vez que el router cambie de IP, para esto DynDNS provee algunas herramientas: https://www.dyndns.com/support/tools/
En otros routers ya incorporan el protocolo DDNS que es compatible con DynDNS y solo es necesario dar el login y password de DynDNS.
Espero haya servido de algo la explicación que aqui pongo, cualquier duda escribanlo aquí abajo como comentario.
Comentarios Recientes