Jueves 22 de septiembre de 2016

Alejandro Torres

Alejandro Torres
Voipers Network

MINUTOS POR INTERNET PARA EMPRESAS

Nuestras asociaciones con operadores de telefonía colombianos y nuestros socios tecnológicos, nos proveer minutos IP para empresas.

Nuestro producto de minutos IP esta soportando por infraestructura clase telco con enlaces directos a los operadores lo cual nos permite tener excelente calidad y muy bajos precios.



Podemos aprovisionar servicios a cualquier planta IP o a una planta convencional usando gateways.

Características importantes de nuestro servicio:

  • Sin Cargo Fijo.
  • Sin Clausula de permanencia.
  • Los minutos no vencen.
  • Sin limite de llamadas simultaneas.
  • Compatibles con cualquier planta IP.
  • múltiples formas de pago, incluyendo tarjetas de credito.




*Las tarifas pueden variar según la variación del dólar, *todas las llamadas son trasportadas por operadores legales, *aplican descuentos por formas de pago y volumen.

Puedes adquirir un primer paquete de cop$200.000 y nos contactaremos para ayudarte a configurar el servicio.


Martes 13 de septiembre de 2016

Alejandro Torres

Alejandro Torres
Voipers Network

CLASES DE SOFTSWITCH

Muchas veces escuchamos que el prestador de servicios tiene un switch clase 4 o clase 5 y lo primero que nos preguntamos es que quiere decir que sea clase 4 o clase 5 y la siguiente pregunta lógica seria, si hay un clase 4, seguro tambien hay clase 3 y clase 2.

así que ya que hay muy pocos artículos sobre este tema, decidí hacer uno buscando explicar el tema.

Espesemos por lo mas básico y es que es un softswitch.
un softswitch es un switch de comunicaciones pero gracias a la tecnologia, basado en software, asi que todas las funciones de conmutación de una compañía telefónica, ahora las realiza un computador.

Al estas computadoras cumplir las mismas funciones que un equipó de conmutación tradicional, se clasifican de la misma manera. 

Para organizar sus operaciones la American Telephone & Telegraph, Si señores AT&T empezó a clasificar  organizar sus equipos según la funcion que cumplen.

Así que espesaremos en orden.

Clase 1, Estos solo intercambian trafico fuera del país con equipos del mismo nivel, así que solo preguntan a que país va el trafico y de que país va el trafico y su funcion es los grandes volúmenes y entregarle trafico ya clasificado a los clase 2.

Clase 2, Estos equipos intercambian trafico entre regiones, y desagregan el trafico para entregárselo a los clase 3.

Clase 3, Estos equipos son los que prestan servicios entre ciudades y grandes centros de población para entregarle el trafico aun mas desagregado a los switch clase 4.

Clase 4, Estos equipos reparten trafico a diferentes áreas de la ciudad o a pueblos.

Hasta aquí pareciera que todos hacen lo mismo, solo miran como empieza el numero y según eso lo envían por una ruta o por otra, así que para que necesitar tantos tipos de conmutadores.

hay dos tipos de variables a tener en cuenta, la cantidad del trafico y la complejidad de este.

Entre menor sea la clase del switch, mas trafico maneja, pero es menos complejo, ya que solo mira los dos primeros dígitos, que serian el código del país en E164 y según eso toma su decisión, desde ese nivel hasta la clase 4, miran los 5 primeros dígitos, que corresponderían a el país y el área donde se encuentra el abonado, pero ninguno de estos switch entrega trafico a un suscriptor.


Clase 5, aquí es donde los switch se ponen mas interesantes, ya que los clase 5 son los únicos que toca a los usuarios y por esto pueden dar riqueza de funciones, no solo conmutación de llamadas.

los primeros servicios que se le dieron a los usuarios por allá en los años 60 fueron los de PBX, para esto se usaban los equipos centrex ya que eran equipos muy costosos, las empresas no los compraban, si no que los alquilaban de sus operadores. Aquí el concepto era igual al de las centrales telefónicas en la nube, solo que esta es la versión de los años 60.

Conforme a pasado el tiempo, estos servicios clase 5 que prestan los operadores, son mucho mas completos y económicos, ya que no solo te entregan servicios de voz, sino que la tecnologia actual les permite entregar vídeo y colaboración, como parte del servicio.

aquí el termino centrex se cambio por uno mucho mas moderno, como telefonía en la nube, IP-centrex, hosted PBX, y muchos otros términos que al final del día usan la misma idea, que en los años 60 impulso el servicio de centrex.

un ejemplo de esto lo podrá encontrar en www.virtualtelco.co el cual es un operador de telefonía  en la nube, según los estándares actuales.






Viernes 09 de septiembre de 2016

Alejandro Torres

Alejandro Torres
Voipers Network

QUE ES UN TELCO-OTT

En la mayoría de los países, las licencias de los diversos tipos de operadores de servicios son tecnológicamente neutras, esto quiere decir que la licencia te la dan para prestar un servicio pero no te limitan la tecnología que utilices para prestarlo.

Esto resuelve dos cosas, primero reduce el problema que por lo general se presenta, que las regulaciones están siempre atrás de las posibilidades de la tecnología y segundo facilita la innovación pudiendo los operadores usar su creatividad para ser más económicos o mejorar sus servicios, sin caer en el riesgo de volverse un commodity y enfrentarse al inexorable descremado, de la competencia por precio.

Esto les permitió resolver un paradigma que históricamente mantuvo altos los precios. Y es el tener que resolver como entregar el servicio al usuario que lo va a consumir, ya que no solo prestas un servicio, sino que tienes que trasportarlo hasta el usuario lo cual condenaba al usuario a que lleguen a su predio una enorme cantidad de cables y asumir su respectivo costo. Hay que ser claro, cuando un operador dice que te dará algo gratis, es que te lo cobrara por cuotas.

En este punto de la historia, apareció una de esas tecnologías que cambian el mundo de manera irreversible y fue el Internet, una red que era capaz de trasmitir más de un tipo de servicio al mismo tiempo y por el mismo costo.

Aquí nació una oportunidad de oro para diversos tipos de operadores y servicios, ya que no tenían que tener un cable hasta la casa de cada suscriptor, poner un CPE y definir un demarcation point, esto no solo les reduce costos, sino que les permite aprovisionar mucho más rápido.

Aquí aparecieron muchos tipos de servicios que se montaron en esta hola, televisión, cine, seguridad, gestión remota y muchos otros servicios, se empezaron a entregar por Internet y las empresas que no entendieron, desaparecieron.

Aquí es donde aparece el termino OTT (On The Top), operadores que funcionan sobre la infraestructura de otros, en este caso los operadores de Internet. 
Este tipo de operadores, puede entregar diversos tipos de servicios y el operador de internet, solo recibe dinero por el acceso. Lo demás se vuelve cualquier otro contenido que consumes por internet. 

Al poner un poco más de creatividad y flexibilidad para consumirlo, nace el término la nube, donde están englobando muchos tipos de servicios que consumes a través de Internet. De manera flexible.

De la misma manera que otro tipo de operadores, aparecen los telco-OTT, un Telco OTT es por primero un telco virtual o real, pero que no tienen cableado para entregar su servicio, este se consume a través de Internet, así que tendrías servicios de telecomunicaciones que puedes consumir desde cualquier lugar y de manera muy flexible, también las posibilidades de la tecnología, permiten entregar diversos tipos de servicios que antes no se podrían ofrecer con los cableados de cobre de los telcos convencionales, estos servicios ya no serían solo voz, serían vídeo, mensajería instantánea, compartir el escritorio, conavegar en una página web  telefonía clase 5 y muchos otros servicios, mas allá de la voz.

Un ejemplo de este tipo de compañías es www.virtualtelco.co


Lunes 29 de agosto de 2016

David Moreno

David Moreno
dm's blog

Webhook Setup with Facebook::Messenger::Bot

The documentation for the Facebook Messenger API points out how to setup your initial bot webhook. I just committed a quick patch that would make it very easy to setup a quick script to get it done using the unreleased and still in progress Perl’s Facebook::Messenger::Bot:

use Facebook::Messenger::Bot;

use constant VERIFY_TOKEN => 'imsosecret';

my $bot = Facebook::Messenger::Bot->new(); # no config specified!
$bot->expect_verify_token( VERIFY_TOKEN );
$bot->spin();

This should get you sorted. What endpoint would that be, though? Well that depends on how you’re giving Facebook access to your Plack’s .psgi application.

Domingo 21 de agosto de 2016

David Moreno

David Moreno
dm's blog

WIP: Perl bindings for Facebook Messenger

A couple of weeks ago I started looking into wrapping the Facebook Messenger API into Perl. Since all the calls are extremely simple using a REST API, I thought it could be easier and simpler even, to provide a small framework to hook bots using PSGI/Plack.

So I started putting some things together and with a very simple interface you could do a lot:

use strict;
use warnings;
use Facebook::Messenger::Bot;

my $bot = Facebook::Messenger::Bot->new({
    access_token   => '...',
    app_secret     => '...',
    verify_token   => '...'
});

$bot->register_hook_for('message', sub {
    my $bot = shift;
    my $message = shift;

    my $res = $bot->deliver({
        recipient => $message->sender,
        message => { text => "You said: " . $message->text() }
    });
    ...
});

$bot->spin();

You can hook a script like that as a .psgi file and plug it in to whatever you want.

Once you have some more decent user flow and whatnot, you can build something like:



…using a simple script like this one.

The work is not finished and not yet CPAN-ready but I’m posting this in case someone wants to join me in this mini-project or have suggestions, the work in progress is here.

Thanks!

David Moreno

David Moreno
dm's blog

Cosmetic changes to my posts archive

I’ve been doing a lot of cosmetic/layout changes to the nearly 750 posts in my blog’s archive. I apologize if this has broken some feed readers or aggregators. It appears like Hexo still needs better syndication support.

Miércoles 03 de agosto de 2016

Bryan Stiven López Chaparro

Bryan Stiven López Chaparro
Bryan López - Reportero Software Libre Linux

Los Mejores Videos de 2016 Junio Julio | Bryan López YT

Viernes 22 de julio de 2016

Camilo Uribe

Camilo Uribe
Random Thoughts

Como vengarse de la EPS

Si su eps abusa de usted entonces hágala perder dinero:
  1. Ponga la queja en la eps y pida el numero de radicado y fecha de respuesta(máximo 15 días hábiles), generalmente el medio mas sencillo para hacer esto es por teléfono.
  2. Si no le contestan a tiempo o no le gusta lo que le contestan entonces vaya al paso 3
  3. Eleve su queja a la supersalud y alla ellos le van cobrando una multa a la eps por hacerse la pendeja, para esto el medio mas sencillo es el chat, pero también se puede por teléfono: medios de contacto de la supersalud

Miércoles 20 de julio de 2016

Camilo Uribe

Camilo Uribe
Random Thoughts

Which versions of internet explorer should I support?

Support from industry leaders

Jquery: IE 9+
Angular: IE9+
Bootstrap 4: IE9+
CSS Flexible Box Layout: IE11+
Google apps: IE11+
Microsoft: IE11+


Percentage of desktop users of internet explorer at June 2016

According to netmarketshare.com right now the percentage of desktop users of internet explorer is:
IE 11 22.05%
IE 10 3.40%
IE 9 4.32%
IE 8 6.87%
IE 7 0.63%

How many users you lose:


Conclussion

For most companies it makes sense at this time to support IE9+ but I'm in the process of learning CSS and trying to learn a hack-free one so I'm going the flexbox way and with that IE11+
Camilo Uribe

Camilo Uribe
Random Thoughts

Zed A. Shaw - The Web Will Die When OOP Dies

Jueves 07 de julio de 2016

Jhosman Lizarazo

Jhosman Lizarazo
Jhosman.com

Descargar Pokemon GO para Android y iPhone

Click en PLAY STORE para descargar!

VIDEO PROMOCIONAL

Viaja por el mundo real y el mundo virtual de Pokémon con Pokémon GO, para iPhone y dispositivos Android. Con Pokémon GO, descubrirás Pokémon en un mundo completamente nuevo: ¡tu mundo! Pokémon GO está creado en la plataforma de juego del mundo real de Niantic y utiliza ubicaciones reales para animar a los jugadores a que salgan a explorar a lo largo y ancho del mundo en búsqueda de Pokémon. Pokémon GO permitirá a los jugadores encontrar y atrapar más de un centenar de Pokémon diferentes a medida que los jugadores exploren los lugares del entorno en que se encuentren.

La serie de videojuegos de Pokémon ha utilizado lugares del mundo real, como Nueva York, París o las regiones japonesas de Hokkaido y Kanto, como fuente de inspiración para crear los escenarios fantásticos en los que se desarrollan. ¡Esta vez, en cambio, el mundo real será el propio escenario!

Ponte en pie y sal afuera para encontrar y atrapar Pokémon salvajes. Explora ciudades y pueblos cerca de donde vives y por todo el mundo para capturar tantos Pokémon como puedas. A medida que te muevas, tu smartphone vibrará para hacerte saber que estás cerca de un Pokémon. Una vez que te hayas encontrado con un Pokémon, apunta en la pantalla táctil de tu smartphone y lanza una Poké Ball para atraparlo. Ten cuidado cuando intentes atraparlo, ¡porque podría salir huyendo! También puedes buscar Poképaradas situadas en algunos de los lugares más interesantes del mundo, como instalaciones de arte, puntos históricos y monumentos públicos, donde puedes recoger más Poké Balls y otros objetos.

Personaliza tu Entrenador

Cuando juegues a Pokémon GO por primera vez, podrás personalizar la apariencia de tu Entrenador, eligiendo prendas y accesorios para darle un look guay. Tu avatar personalizado aparecerá cuando te muevas por el mapa y también en tu perfil. Además, otros jugadores verán tu avatar cuando visiten un Gimnasio que controles tú.

Completa tu Pokédex

En Pokémon GO, ganarás niveles como Entrenador, y, cuanto mayor sea tu nivel, más poderosos serán los Pokémon que podrás atrapar para completar tu Pokédex. También tendrás acceso a objetos más poderosos, como Super Balls, para que tengas más probabilidades de atrapar Pokémon. ¡Sigue explorando y encontrándote con Pokémon para subir de nivel!

Existen otras maneras de añadir Pokémon a tu lista. A medida que exploras, puede que encuentres Huevos Pokémon en Poképaradas, que eclosionarán después de que hayas andado una cierta distancia. Cuando eclosionen, ¡puede que encuentres Pokémon que no hayas visto antes en el juego!

Algunos Pokémon salvajes aparecerán más a menudo en ciertos lugares cerca de donde vives o alrededor del mundo. Por ejemplo, algunos Pokémon de tipo Agua puede que aparezcan solo cerca de lagos y océanos. Si estás lejos de casa, ¡asegúrate de mantenerte alerta para ver Pokémon con los que normalmente no te encontrarías!

Si atrapas Pokémon de la misma especie con bastante frecuencia, uno de ellos podrá evolucionar. Esto es útil para hacerte con Pokémon que no encuentres fácilmente en estado salvaje. Por ejemplo, si hay muchos Poliwag por tu área, pero los Poliwhirl son difíciles de encontrar, atrapa muchos Poliwag para poder, más adelante, hacer que uno de ellos evolucione a Poliwhirl.

Únete a un equipo y combate

En un cierto punto del juego, te pedirán que te unas a uno de tres equipos. Una vez que te unas a un equipo, podrás asignar un Pokémon que hayas atrapado a un Gimnasio vacío o a uno donde un miembro de tu equipo haya colocado uno de sus Pokémon. Al igual que las Poképaradas, los Gimnasios pueden encontrarse en lugares reales del mundo y, como cada jugador puede colocar solo un Pokémon en un Gimnasio en particular, los miembros del equipo deberán trabajar juntos para lograr una defensa fuerte.

Si un Gimnasio ya ha sido reclamado por otro equipo, puedes desafiar ese Gimnasio usando tus propios Pokémon. Elegirás un Pokémon que hayas capturado y combatirás contra los Pokémon defensores en el Gimnasio. ¡Los combates son desafíos emocionantes! Usa los dos movimientos de tus Pokémon para combatir contra los Pokémon defensores. También puedes esquivar los ataques de los Pokémon defensores deslizando el dedo a izquierda o derecha. Si tu Pokémon gana el combate, entonces el prestigio del Gimnasio se reduce. Si el prestigio del Gimnasio llega a cero, el equipo defensor pierde el control del Gimnasio, y tú u otro jugador podéis, entonces, tomar el control asignando un Pokémon para protegerlo. A su vez, una vez que tu equipo tiene el control del Gimnasio, puedes subir el nivel de su prestigio entrenando a tus Pokémon con los Pokémon defensores. A medida que el nivel del Gimnasio sube, tu equipo tiene la posibilidad de asignar más Pokémon para defenderlo. También puedes unirte a tus amigos para combatir juntos en un Gimnasio rival para derrotar más rápido a otros Gimnasios más fuertes.

Hay disponibles una amplia variedad de retos que destacan muchos logros diferentes, como, por ejemplo, el número de Pokémon que has atrapado y la distancia que has recorrido. Cuando consigas estos logros, desbloquearás insignias que aparecerán en tu perfil. ¡Dalo todo para desbloquear tantas insignias como puedas!

Pokémon GO Plus

Un pequeño dispositivo llamado Pokémon GO Plus permite a los jugadores dePokémon GO disfrutar del juego incluso cuando no estén usando sus smartphones. El dispositivo se conecta al teléfono móvil a través de Bluetooth y, mediante un led y vibraciones, notifica al jugador de acontecimientos del juego, como, por ejemplo, la aparición de un Pokémon en las proximidades. Además, los jugadores pueden atrapar Pokémon o realizar otras acciones sencillas simplemente presionando el botón en el dispositivo. ¡No te pierdas el lanzamiento del accesorio Pokémon GO Plus a finales de julio de 2016!

¡Resérvalo ya!

¡Juega de forma gratuita!

Pokémon GO podrá descargarse de forma gratuita en el App Store y Google Play. Jugar a Pokémon GO es gratis, con montones de cosas divertidas que hacer y Pokémon que descubrir en cada esquina. Los jugadores que quieran mejorar su experiencia con Pokémon GO aún más podrán acceder a ciertos objetos y funciones mediante compras en la aplicación. Los jugadores podrán gastar dinero real en Pokémonedas, la moneda dentro de Pokémon GO. Después, las Pokémonedas pueden ser intercambiadas por mejoras, objetos extra y otras cosas.

Mientras el juego Pokémon GO está aún en fase de desarrollo activo, están en marcha pruebas de campo del juego solo en Estados Unidos, Japón, Australia y Nueva Zelanda. Las funciones, idiomas disponibles, diseño y apariencia en general no son definitivos. Estate pendiente para obtener más información sobre la extensión de estas pruebas a otros países.

¡Diviértete haciendo fotos!

Cuando te encuentres con un Pokémon salvaje, podrás encender la función de la cámara para que el Pokémon aparezca en el lugar real al que apunta tu cámara. Después, podrás capturar el momento con la cámara que hay en el juego dentro de tu Bolsa. Centra la imagen y dale al botón para sacar la foto. La imagen se guardará con las fotos de tu teléfono para que la puedas compartir como quieras.

Música de Junichi Masuda

En Pokémon GO habrá música nueva compuesta por Junichi Masuda, de GAME FREAK. El Sr. Masuda ha trabajado en juegos Pokémon desde sus orígenes y ha compuesto muchas de las canciones, clásicas y memorables, que han servido de inspiración a nuestros fans durante décadas.

Jueves 16 de junio de 2016

Jhosman Lizarazo

Jhosman Lizarazo
Jhosman.com

Cambiar hostname en Centos 7

centos7

 

Para poder cambiar el hostname en la máquina solo basta seguir los siguientes pasos:

# hostnamectl set-hostname Your-New-Host-Name-Here
# hostnamectl set-hostname "Your New Host Name Here" --pretty
# hostnamectl set-hostname Your-New-Host-Name-Here --static
# hostnamectl set-hostname Your-New-Host-Name-Here --transient

En este caso solamente usaremos:

hostnamectl set-hostname Your-New-Host-Name-Here --static

Aunque si desea hacerlo de una mejor manera y mas sencillo utiliza el comando nmtui en la consola:

nmtui

Y ya luego aparecerá el asistente:

nmtui

Viernes 03 de junio de 2016

Carlos Andrés Roldán

Carlos Andrés Roldán
STUFF uid=1000(x1nux)

Switching bettween PHP7.0 and PHP5.6 Ubuntu 14.04.4

Installing php5 and apache2 support:

root@dv1:#apt-get install apache2 apache2-mpm-prefork apache2-utils apache2.2-bin libapache2-mod-php5 php-pear php5-cgi php5-cli php5-common php5-curl php5-dev php5-gd php5-imagick php5-interbase php5-mcrypt php5-memcache php5-memcached php5-mysql php5-odbc php5-pgsql php5-sqlite php5-sybase php5-xcache php5-json -y


Restarting apache2:

root@dv1:#service apache2 stop
root@dv1:#service apache2 start


Checking apache2 and php5 support:

root@dv1:#vi /var/www/html/info.php

add follow lines:

<?php
phpinfo()
?>

Save file  (ESC + : + wq)



Testing apache2 service and php5 support:

 Open a browser and ... ...

http://localhost/info.php







Installing php7 and apache2 support:


root@dv1:#apt-get install python-software-properties
root@dv1:#add-apt-repository ppa:ondrej/php
root@dv1:#apt-get update


root@dv1:#apt-get install php7.0-common libapache2-mod-php7.0 php7.0-cgi php7.0-cli php7.0-dev php7.0-curl php7.0-gd php7.0-interbase php7.0-mcrypt php7.0-readline php7.0-odbc php7.0-xmlrpc php7.0-xsl php7.0 php7.0-json php-all-dev php7.0-sybase php7.0-sqlite3 php7.0-mysql php7.0-opcache php7.0-bz2 php7.0-bcmath php7.0-mbstring php7.0-soap php7.0-xml php7.0-zip



Restarting apache2:

root@dv1:#service apache2 stop
root@dv1:#service apache2 start


Testing apache2 service and php7 support:

 Open a browser and ... ...

http://localhost/info.php







Now ......

Switching bettween PHP7 and PHP5:



From php5.6 to php7.0:

# For php in web apps
root@dv1:#a2dismod php5
root@dv1:#a2enmod php7.0
root@dv1:#service apache2 restart

# For php-cli in the command line

root@dv1:#ln -sfn /usr/bin/php7.0 /etc/alternatives/php

Or from php7.0 to php5.6:

# For php in web apps
root@dv1:#a2dismod php7.0
root@dv1:#a2enmod php5.6
root@dv1:#service apache2 restart

# For php-cli in the command line
root@dv1:#ln -sfn /usr/bin/php5.6 /etc/alternatives/php



Done !!! enjoy !!
Bryan Stiven López Chaparro

Bryan Stiven López Chaparro
Bryan López - Reportero Software Libre Linux

LOS VÍDEOS MÁS VIRALES DE 2016 | BRYAN LÓPEZ



Jueves 02 de junio de 2016

Carlos Andrés Roldán

Carlos Andrés Roldán
STUFF uid=1000(x1nux)

How to enable bind mount inside lxc container



Replay the error:

root@lxc1:# mount -t cifs //1.1.1.1/test  /mnt/test  -o username=user,password=pass


mount error 13 = Permission denied 


root@lxc1:# dmesg

[2911493.990084] type=1400 audit(1464884158.208:53): apparmor="DENIED" operation="mount" info="failed type match" error=-13 profile="lxc-container-default" name="/mnt/test" pid=7891 comm="mount.cifs" fstype="cifs" srcname="//1.1.1.1/test" flags="rw"


Solution:


root@lxc1:# vi /etc/apparmor.d/lxc/lxc-default

and add:

mount options=(rw, bind),
 
 
 
Save and restart apparmor:

root@lxc1:# /etc/init.d/apparmor restart

Viernes 27 de mayo de 2016

Bryan Stiven López Chaparro

Bryan Stiven López Chaparro
Bryan López - Reportero Software Libre Linux

LA PEOR ESCENA DE ACCIÓN DEL MUNDO | BRYAN LÓPEZ 2016

Viernes 06 de mayo de 2016

Carlos Andrés Roldán

Carlos Andrés Roldán
STUFF uid=1000(x1nux)

Ubuntu server 14.04.4 PXE Installation

Ubuntu server 14.04.4  PXE Installation or Ubuntu installation via Network


PXEInstallServer

 Introduction



This will guide you through running an Ubuntu server as PXE install server. You'll need to run a DHCP server on your network, not necessarily this server but you do need one.

Installing needed packages

You'll need to install the following packages inetutils-inetd  and tftpd-hpa.

If this is also going to be your DHCP server, install dhcp server contained in the follwing package:  isc-dhcp-server




Configure tftpd-hpa

You'll need to tell tftpd-hpa to start its daemon (which it doesn't by default). To do this, edit the /etc/default/tftpd-hpa file, and make sure that it looks something like this:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"


Stop the service:

#service tftpd-hpa stop


tftpd-hpa is called from inetd. The options passed to tftpd-hpa when it starts are thus found in /etc/inetd.conf

The defaults are fine for us, your /etc/inetd.conf should have an entry like this


tftp    dgram   udp    wait    root    /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot


 Configure dhcpd


#vi /etc/dhcp/dhcpd.conf

And make sure that it looks something like this:

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2  192.168.0.3;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
}

allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.0.1;
filename "pxelinux.0";



NOTE: This server is  192.168.0.1





Ubuntu download iso and needed files:


Download .iso from ubuntu, and mount the iso file:

#mount -o loop ubuntu.iso /mnt

Now we'll copy the needed files from the Ubuntu CD:

 #cp -r /mnt/install/netboot/* /var/lib/tftpboot/

 NOTE: If your dhcp server issues correct network info and your pxe clients will have network access, then at this point you will be able to do an Ubuntu install using internet repositories.






Install apache2 service: 

#apt-get install apache2


Copying Ubuntu files to apache2 DocumentRoot:

#mkdir /var/www/ubuntu
#cp -r /mnt/* /var/www/ubuntu/




Customising the install with kickstart files:


#vi /var/www/html/ubuntu/ks.cfg

and, And make sure that it looks something like this:

install
url --url http://192.168.0.1/ubuntu/




In order for your network Ubuntu install to use your kickstart file, you have to tell it where to find it.

 Edit /var/lib/tftpboot/pxelinux.cfg/default and make sure that it looks something like this:

include ubuntu-installer/amd64/boot-screens/menu.cfg
default ubuntu-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 0
label linux
        kernel ubuntu-installer/amd64/linux
        append ks=http://192.168.0.1/ubuntu/ks.cfg vga=normal initrd=ubuntu-installer/amd64/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw  --





then ... Boot and install ....

Viernes 29 de abril de 2016

Jhosman Lizarazo

Jhosman Lizarazo
Jhosman.com

Instalar y configurar un 3Nodo con #Ceph y #Ubuntu

ceph

Ceph File System es un sistema de archivos distribuido libre, está diseñado para el uso con gran cantidad de datos, está muy enfocado para el uso con Big Data. Ceph tiene como objetivo ser POSIX-compatible y completamente distribuido sin ningún punto de fallo. Los datos tienen replicación libre de errores, haciéndolo tolerante a fallos.

Ceph emplea tres tipos diferentes de daemons:

  • Monitores de clúster (ceph-mon), mantienen un control de actividad y fallos en los nodos del clúster
  • Servidores de metadatos (ceph-mds), almacenan los metadatos de inodos y directorios.
  • Dispositivos de Almacenamiento de Objetos (ceph-osds), actualmente es el que almacena el contenido de los archivos. Idealmente, el ceph-osds debería almacenar los datos en un sistema de archivos BTRFS local, pero también pueden utilizarse otros sistemas de archivo local.

Todos los demonios funcionan totalmente distribuidos, y pueden ejecutarse en el mismo ambiente de servidores, mientras los clientes interactuarán directamente entre ellos.

Ceph distribuye los segmentos de los archivos individuales a través de los múltiples nodos para así conseguir un incremento de rendimiento, de manera similar como lo hace el agrupamiento de discos en RAID0 segmenta los datos en las diferentes porciones de múltiples disco duros. Su balanceo de carga es autoadaptable por lo cual soporta la frecuencia de acceso a objetos replicancolos sobre mas nodos.

Documentación Oficial en: http://ceph.com/docs/master/

Comparación de las tecnologías de almacenamiento

Como se puede ver Ceph es la solución más flexible pero todavía requieren algunas mejoras antes de ser calificado como listos para la producción en el frente Cephfs.

Arquitectura

Instalación y configuración

Inicialmente usamos fdisk para visualizar el estado de nuestros discos para así mismo poder trabajar, en este caso usaremos 3 servidores Ubuntu.

sudo fdisk -l

Para facilitar la tarea vamos a definir los nombres de host para realizar todo el proceso mediante nombres y no por IP, para ello editamos el archivo:

nano /etc/hosts

Luego en este archivo adicionamos las IP’s de los otros servidores y colocamos los nombres de cada uno, por ejemplo:

192.168.0.11 ceph1
192.168.0.12 ceph2
192.168.0.13 ceph3

Posteriormente debemos crear llaves SSH para que los 3 servidores se autentiquen automáticamente entre ellos para poder realizar comunicación y además de esto los 3 deben tener instalado, configurado y sincronizado el servicio NTP. En los 3 servidores vamos a hacer lo siguiente:

ssh-keygen -t rsa
ssh-copy-id [usuario]@[servidordestino]

Esto debe hacerse con los servidores a los que vayamos a trabajar, en este caso debo compartir la llave cada servidor a los dos adicionales. Una vez realizado el proceso intentamos hacer ssh entre servidores y deberán autenticarse automáticamente.

Ahora se debe instalar el servicio NTP en todos los servidores

sudo apt-get install ntp

Es tiempo de instalar ceph-deploy (admin) en nuestro nodo principal en este caso será ceph1, reemplazar en la línea 2 de estos comandos {ceph-stable-release} por la versión que desees usar (ver: http://docs.ceph.com/docs/master/releases/) en mi caso usaré firefly por ser la versión LTS mas antigua.

Para RedHat ver: http://docs.ceph.com/docs/hammer/start/quick-start-preflight/#red-hat-package-manager-rpm

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt-get update && sudo apt-get install ceph-deploy

Ahora creamos el primer clúster de almacenamiento Ceph y especifique el primer servidor de la agrupación ya sea por el nombre de host o la dirección IP [SERVIDOR].

ceph-deploy new ceph1

Ahora se debe desplegar Ceph en todos los nodos que se van a utilizar para el almacenamiento Ceph. Colocar el nombre de host o la dirección IP del clúster Ceph incluyendo el host que está ejecutando el comando.

ceph-deploy install ceph1 ceph2 ceph3 [ceph...]

En este momento debemos instalar el monitor Ceph y aceptar el aviso clave que se generan claves.  Generamos llaves de Ceph para nuestro Cluster

ceph-deploy mon create-initial

Deberá aparecer un mensaje como este:

{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring

Se debe en este momento añadir los OSD (Object Storage Daemon), A manera rápida usamos directorios en vez de un disco o partición.

ssh ceph2
sudo mkdir /var/local/osd0
exit

ssh ceph3
sudo mkdir /var/local/osd1
exit

Entonces, desde el nodo de principal, usamos ceph-deploy para preparar los OSD.

ceph-deploy osd prepare ceph2:/var/local/osd0 ceph3:/var/local/osd1

Finalmente activamos el OSD con:

ceph-deploy osd activate ceph2:/var/local/osd0 ceph3:/var/local/osd1

Utilice ceph-deploy para copiar el archivo de configuración y llave de administración a su nodo de administración y sus nodos Ceph para que pueda utilizar la CLI ceph sin tener que especificar la dirección de monitor y ceph.client.admin.keyring cada vez que se ejecuta un comando.

ceph-deploy admin ceph1 ceph2 ceph3

Cuando ceph-deploy está hablando con el anfitrión local del admin (ceph1), que debe ser accesible por su nombre de host. Por esto desde el inicio se editó el archivo /etc/hosts, ahora se debe verificar de que tiene los permisos correctos para la ceph.client.admin.keyring.

sudo chmod +r /etc/ceph/ceph.client.admin.keyring

Revisar el estado del clúster.

ceph health

Deberá devolver un mensaje como:  active + clean o similares, ahora pondremos en operación nuestro cluster.

Comandos que nos serán útiles para el manejo del cluster:

Full documentation can be found at: http://ceph.com/ceph-deploy/docs

optional arguments:
 -h, --help show this help message and exit
 -v, --verbose be more verbose
 -q, --quiet be less verbose
 --version the current installed version of ceph-deploy
 --username USERNAME the username to connect to the remote host
 --overwrite-conf overwrite an existing conf file on remote host (if
 present)
 --cluster NAME name of the cluster

commands:
 COMMAND description
 new Start deploying a new cluster, and write a CLUSTER.conf
 and keyring for it.
 install Install Ceph packages on remote hosts.
 mds Deploy ceph MDS on remote hosts.
 mon Deploy ceph monitor on remote hosts.
 gatherkeys Gather authentication keys for provisioning new nodes.
 disk Manage disks on a remote host.
 osd Prepare a data disk on remote host.
 admin Push configuration and client.admin key to a remote
 host.
 config Push configuration file to a remote host.
 uninstall Remove Ceph packages from remote hosts.
 purgedata Purge (delete, destroy, discard, shred) any Ceph data
 from /var/lib/ceph
 purge Remove Ceph packages from remote hosts and purge all
 data.
 forgetkeys Remove authentication keys from the local directory.
 pkg Manage packages on remote hosts.
 calamari Install and configure Calamari nodes

Uso de Ceph

Ceph Object Storage Device (OSD)

Muestra la estructura del cluster mediante un mapeo de todos sus discos (storage).

# ceph osd tree
# id weight type name up/down reweight
-1 2 root default
-4 2 datacenter dc
-5 2  room laroom
-6 2    row larow
-3 2      rack lerack
-2 2           host ceph
0 1                osd.0 up 1
1 1                osd.1 up 1

Vemos que en el host ceph tenemos dos OSD corriendo (osd.0 y osd.1)

Ceph monitors (MONs)

Consultamos los monitors tienen armado el cluster:

# ceph mon_status

Metadata Server (MDS)

Consultamos el estado del servidor MDS:

# ceph mds stat 

e1: 0/0/1 up

Dispositivo de bloques

Esta funcionalidad permite que Ceph cree un espacio de almacenamiento que es presentado al cliente como un dispositivo de bloques (disco) al que se puede particionar, dar formato, clonar, realizar snapshots (instantáneas) y obviamente montar y usar como un disco cualquiera.

El siguiente esquema muestra cómo es un dispositivo de bloques generado en Ceph:

cepth cluster

rbd es el comando necesario para administrar dispositivos de bloques en el cluster.

Pedimos al cluster la creación de un dispositivo de bloques de 512MB.

rbd create cliente1-rdb1 --size 512

Luego listamos los rbd creados:

# rbd ls 

cliente1-rdb1

Luego consultamos la información del volumen creado:

# rbd --image cliente1-rdb1 info

rbd image 'cliente1-rdb1':
    size 512 MB in 128 objects
    order 22 (4096 kB objects)
    block_name_prefix: rb.0.1081.74b0dc51
    format: 1

Si dos damos cuenta, en las otras máquinas dentro del cluster el volumen será visible con el mismo comando indicando anteriormente.

Hacemos que el kernel Linux de nuestro cliente genere un dispositivo (/dev) que respresente el dispositivo en el cluster. Esta opción de mapeo requiere del módulo rbd cargado (modprobe rbd), en este caso deseo usar mi tercera máquina ceph3

# rbd map --image cliente1-rdb1

Para visualizar los dispositivos mapeados en esta máquina, debemos usar el siguiente comando:

# rbd showmapped

id pool image         snap device    
0  rbd  cliente1-rdb1 -    /dev/rbd0 

Ahora tenemos un disco /dev/rbd0 que podemos utilizar de forma normal como cualquier disco, para lo cual daremos formato ext3, o el tipo de partición deseada:

# mkfs.ext3 /dev/rbd0

mke2fs 1.42.7 (21-Jan-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1024 blocks, Stripe width=1024 blocks
32768 inodes, 131072 blocks
6553 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=134217728
4 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Ahora realizamos el montaje de nuestra partición

# mkdir /home/volumen1-ceph
# mount /dev/rbd0 /home/volumen1-ceph/

Finalmente verificamos el estado de nuestros discos con el comando habitual de df -h

# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       197G  6.3G  183G   4% /
devtmpfs        3.4G     0  3.4G   0% /dev
tmpfs           3.4G     0  3.4G   0% /dev/shm
tmpfs           3.4G  228K  3.4G   1% /run
tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
tmpfs           3.4G     0  3.4G   0% /tmp
/dev/rbd0 488M 416K 462M 1% /home/volumen1-ceph

Cambiar tamaño del volumen Ceph

Inicialmente se debe desmontar la unidad:


# umount /dev/rbd0 

Y posteriormente realizar la ampliación del volumen, en este caso lo aumentaremos 2GB:

# rbd resize --image cliente1-rdb1 --size 2048

Resizing image: 100% complete...done.

Y se valida el tamaño del nuevo volumen:

# rbd info --image cliente1-rdb1

rbd image 'cliente1-rdb1':
size 2048 MB in 512 objects
order 22 (4096 kB objects)
block_name_prefix: rb.0.1081.74b0dc51
format: 1

Luego de esto debemos extender la partición como cuando sucede con cualquier distribución Linux:

# e2fsck -f /dev/rbd0

e2fsck 1.42.7 (21-Jan-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/rbd0: 11/32768 files (9.1% non-contiguous), 6262/131072 blocks
# resize2fs /dev/rbd0

resize2fs 1.42.7 (21-Jan-2013)
Resizing the filesystem on /dev/rbd0 to 524288 (4k) blocks.
The filesystem on /dev/rbd0 is now 524288 blocks long.

Posteriormente se realiza el montaje del volumen y verificamos el espacio del archivo:

# mount /dev/rbd0 /home/volumen1-ceph/

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       197G  6.3G  183G   4% /
devtmpfs        3.4G     0  3.4G   0% /dev
tmpfs           3.4G     0  3.4G   0% /dev/shm
tmpfs           3.4G  228K  3.4G   1% /run
tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
tmpfs           3.4G     0  3.4G   0% /tmp
/dev/rbd0       2.0G  788K  1.9G   1% /home/volumen1-ceph

He realizado un cluster de 300GB con varios discos 🙂 y todo funciona de maravilla.

# df -h
 Filesystem Size Used Avail Use% Mounted on
 /dev/vda1 197G 11G 178G 6% /
 devtmpfs 3.4G 0 3.4G 0% /dev
 tmpfs 3.4G 0 3.4G 0% /dev/shm
 tmpfs 3.4G 232K 3.4G 1% /run
 tmpfs 3.4G 0 3.4G 0% /sys/fs/cgroup
 tmpfs 3.4G 0 3.4G 0% /tmp
 /dev/rbd0 289G 876K 274G 1% /home/volumen1-ceph

Algo así sería la arquitectura 😛

ceph

Domingo 10 de abril de 2016

Álvaro Montes

Álvaro Montes
TECDIGESTIÓN

Privacidad: la guerra apenas empieza

Caso cerrado en el pleito entre el FBI y Apple; pero fue solo un episodio del conflicto entre gobiernos versus industria por el derecho a la privacidad. Continue reading

Domingo 27 de marzo de 2016

Álvaro Montes

Álvaro Montes
TECDIGESTIÓN

Pisadas de animal grande

¿Qué tienen en común Uber, Airbnb y el bitcoin? Son ejemplos de la llamada” economía colaborativa”, la nueva amenaza para los negocios tradicionales que vino de la mano con la era digital. Un fantasma recorre el mundo: el fantasma de … Continue reading
Álvaro Montes

Álvaro Montes
TECDIGESTIÓN

Furia de titanes

En una esquina Claro, Telefónica y Directv, y en la otra Facebook, Google y Netflix. Crece el malestar entre los operadores de telecomunicaciones por el éxito de las empresas de Internet que florecen a expensas suyas, según afirman. Las empresas … Continue reading

Miércoles 09 de marzo de 2016

Bernardo Molina

Bernardo Molina
CIBOLA

Identificación de herramientas básicas para la aplicación de la minería de datos en la solución de problemas empresariales

Comparto con ustedes la edición de la revista digital Revista Ontare: Nuevas tendencias y procesos en ingeniería, publicación de la Facultad de Ingenierías de la Universidad EAN. En el cual se publica un articulo en el cual soy coautor con el Doctor Jahir Alexander Gutiérrez Ossa los invito a leer y revisar las paginas 33-52 el articulo Identificación de herramientas básicas para la aplicación de la minería de datos en la solución de problemas empresariales: Enlace a la Revista Ontare Vol. 3 No. 2: 
Enlace a la Revista Ontare Vol. 3 No. 2:
http://edicionesean.ean.edu.co/index.php/revistas/revistas-impresas/ontare/23-publicaciones/469-revista-ontare-volumen-3-numero-2-julio-a-diciembre-de-2015

Lunes 22 de febrero de 2016

Bernardo Molina

Bernardo Molina
CIBOLA

portafolio bermoz

Bernardo Molina

Bernardo Molina
CIBOLA

Casos de Éxito Sitios Web - Bermoz

Martes 26 de enero de 2016

Rodrigo Carreño

Rodrigo Carreño
Rodrigo C@rreño

FlyEx - Publicidad Efectiva!

Gana dinero recibiendo información de acuerdo a lo que te guste!


¿Qué debo hacer?
¡Es muy sencillo! Para poder ser parte de FlyEx, debes tener un Smartphone o Tablet con sistema operativo Android y una conexión a internet. Descarga nuestra aplicación desde la Google Play, registrate ingresando los datos solicitados y comienza a ganar dinero.

Te enviaremos periódicamente promociones, descuentos y otros volantes que se ajusten a tus intereses y ubicación. Simplemente debes interactuar con ellos y listo!

¿Por qué me pagan?
FlyEx comparte una porción de las utilidades de cada campaña con sus usuarios. Nos gusta ver nuestros usuarios motivados y que mejor manera que compartir con ellos nuestras ganancias.


Modelo de compensación
Aunque no lo creas, FlyEx no sólo te paga por los volantes con los que interactúas, también te paga por las interacciones de tus referidos.

¿Referidos? Siii... puedes invitar a todos tus amigos y familiares a que se unan a FlyEx y comiencen a ganar dinero contigo.

¿Crees que eso es todo? NO!!! FlyEx también te paga por las interacciones de los referidos de tus referidos ¡Es genial!. Recibe dinero hasta 5 niveles debajo de ti.

Te pagamos $15 pesos por cada volante con el que interactues y $10 por cada uno con los que interactúan tus referidos, hasta 5 niveles debajo de ti e ilimitado horizontalmente!

Cuando tu saldo supere $50.000 pesos, puedes solicitarnos el desembolso y te enviaremos un giro por Efecty/Western Union con tu dinero.

¡Hey Despierta! qué estas esperando... Comienza ahora mismo! .

¿Cómo empezar?
En tal solo 5 minutos puedes comenzar a recibir los beneficios de FlyEx.

1. Descarga la App
Desde tu Smartphone o Tablet, descarga e instala nuestra aplicación Android.

2. Regístrate y elige las categorías que te interesen
Ingresa tu información básica y selecciona tus intereses.

3. Invita a todos tus amigos
Obten tu código de usuario e invita a todos tus amigos y familiares. Entre más referidos tengas, más dinero vas a ganar.

CODIGO AFILIACION: 123064


Martes 19 de enero de 2016

Rodrigo Carreño

Rodrigo Carreño
Rodrigo C@rreño

Google Redirect Virus Removal Tool



Ese software le ayudará a eliminar todos los rastros del virus de redirección.

Limpia el virus de la redirección de sus computadoras.
Si usted consigue redirigidas al buscar en Google, Yahoo o Bing ... probablemente es que tenga en su "búsqueda el virus de redirección"

Mayor información:

Click Aqui



Martes 13 de octubre de 2015

¿Que es QRDA? #QRDA @QRDAve

QRDA nace bajo la idea de proveer soluciones tecnológicas a distintas organizaciones sin fines de lucro, a través del apoyo de twitter.com/delbosquetech y con el respaldo de la Comunidad del Software Libre en Venezuela.

Esta idea la propone Luis Ortiz, gran amigo y compañero de trabajo. Se desarrolla en una reunión social (agua, cerveza, jugos, refresco, pizza) por lo que es considerado un evento entre panas que buscamos un mismo fin: dar apoyo con nuestro conocimiento tecnológico para desarrollar proyectos determinados.

Luis en la Charla de Inicio de QRDA

Luego de establecer las bases que sustentarían este proyecto, se fueron creando diferentes tickets en github que permitieran establecer un orden a las actividades que se van desarrollando, para luego crear las diferentes listas de correo y comenzar a trabajar.

Al final de la actividad pudimos compartir con personas que se acercaron de diferentes parte de Venezuela y que integran la Comunidad del Software Libre, gente con la cual me identifico y que se ha ganado mi respeto.

La lista de agradecimiento es extensa, son muchos los involucrados en este maravilloso proyecto que, aún y cuando está comenzando, podría asegurar que ayudará a muchas personas y tendrá un crecimiento positivo. Muchas gracias a todos.

Les dejo las redes sociales de QRDA para que también puedan seguir este proyecto y, si lo desean, puedan unirse a nosotros:

https://twitter.com/QRDAve/
https://instagram.com/qrda.ve
https://www.facebook.com/QRDA.com.ve
http://qrda.com.ve

Nuevamente Gracias por venir.

Lunes 14 de septiembre de 2015

La accesibilidad web para personas con discapacidad visual

“La Accesibilidad” hoy en día es una de las palabras más utilizadas cuando nos referimos a las persona con alguna discapacidad, más específicamente la discapacidad visual. Ésta no solamente abarca los aspectos de software y hardware, sino que además se centra en la vida misma de estas personas, cómo puede hacerse más fácil la tarea de convivir con personas que no tienen este tipo de desventaja; debido a esto, las instituciones del Estado se han interesado y comprometido a realizar medios más accesibles para ellos, así por ejemplo tenemos los pasos peatonales, incluso hoy en día hablamos de la creación de páginas web o sistemas de información accesibles. Es importante resaltar que se debe hacer un buen uso de la tecnología para poder romper las barreras que se presentan.
La construcción de estos sistemas o páginas web son de gran ayuda para las personas que viven con esta discapacidad debido a que han sido de alguna forma discriminados, sin dejar a un lado que este grupo está ya formado por más de 30 mil personas en nuestro país, esto de acuerdo a las cifras arrojadas en el censo realizado por CONAPDIS (Consejo Nacional para las Personas con Discapacidad). Es por ello que en estos momentos se debe luchar por incluir a todas estas personas en las actividades cotidianas del hombre, más específicamente en el mundo de las tecnologías, permitiéndoles conocer, por medio de páginas web por ejemplo, todo el contenido que puede ser de su interés y así pueda salir adelante de una mejor manera. El objetivo principal es que estos sistemas estén disponibles para todas estas personas y que sean incluidas en el aparato productivo de nuestro país, además de que la misión es producir, transformar e implantar bienes y servicios lo suficientemente accesibles para ellos.
La tiflotecnología ha logrado grandes avances; a nivel mundial existen organizaciones dentro de las cuales podemos mencionar a La Once (Organización Nacional de Ciegos Españoles), la cual ha sido pionera en el uso de herramientas o dispositivos que ayudan a las personas con esta discapacidad, a ser independientes. También existen escuelas destinadas a la enseñanza completa de estas personas, como son la Lighthouse International en Estados Unidos, encargada de enseñar de manera completa con la finalidad de lograr el desenvolmiento de estos; les proporcionan ayuda en cuanto a la orientación, el uso del computador, el uso del bastón, además de otras actividades, todo con la finalidad de que cada uno de ellos no pase a ser una carga para sus familias, sino que sean personas independientes y capaces de desenvolverse tanto tecnológicamente como en las relaciones de su vida diaria.
La metodología aplicada en esta investigación es documental, ya que trata de ver lo que existe hoy en día, cómo se puede mejorar y cómo se pueden crear herramientas que verdaderamente sean útiles para el trabajo diario, ya que no tendría ningún sentido desarrollar aplicaciones sin tomar en cuenta a los usuarios interesados acerca de cómo se les puede ayudar.
Palabras Claves: Hardware, Software, Software Libre, Tiflotecnología, Discapacidad, Discapacidad Visual.

Este es uno de los tantos articulo arbitrado realizado en el proceso de postgrado, luego explicare las fases y las herramientas a usar.

Sábado 12 de septiembre de 2015

Instalar Samba en Debian

Primero que nada hacemos la instalación del paquete
root@orthanc:/home/julioh# aptitude install samba

En nuestro home creamos el nombre de una carpeta que vamos a usar para compartir
mkdir share
chmod 777 share

Luego modificamos el archivo de configuración de samba

root@orthanc:/home/julioh# nano /etc/samba/smb.conf


# Samba config file created using SWAT
# from UNKNOWN (192.168.42.219)
# Date: 2014/05/15 14:19:36
[global]
server string = %h server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
hosts allow = 127.0.0.1, 192.168.41.0/24, 192.168.40.0/24
#hosts deny = 0.0.0.0/0
#Comentamos el HostDeny para que me acepte los rangos de ip #de nuestra red interna
#[homes]
# comment = Home Directories
# valid users = %S
# create mask = 0700
# directory mask = 0700
# browseable = No

#[printers]
# comment = All Printers
# path = /var/spool/samba
# create mask = 0777
# printable = Yes
# print ok = Yes
# browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[SALA]
comment = Archivos Compartidos
path = /home/julioh/share
#admin users = root, SalaP, sala01, sala02
#username = root
#hosts allow = 192.168.41.0
#read list = @users
#public = yes
#only guest = yes
#Le descomentamos para que puedan escribir
writable = yes
read only = yes
valid users = SalaP, root, sala01, sala02
write list = SalaP, root, sala01, sala02
# Lineas agregadas
# crear archivos con permisos rxw
create mask = 0700
# crear directorios con permisos rxw
directory mask = 0700

Luego Detenemos el demonio y lo volvemos a levantar
root@orthanc:/home/julioh# /etc/init.d/samba restart
[ ok ] Stopping NetBIOS name server: nmbd.
[ ok ] Starting NetBIOS name server: nmbd.
[ ok ] Stopping SMB/CIFS daemon: smbd.
[ ok ] Starting SMB/CIFS daemon: smbd.
[ ok ] Stopping Samba AD DC daemon: samba

Luego de esos podremos compartir archivos en un directorio seguro para una red interna.

Domingo 05 de julio de 2015

David Gómez

David Gómez
emsLinux

3 Tablets con distintos SO

Las tablets son dispositivos móviles que son la unión perfecta entre un teléfono celular de última generación y un ordenador portátil. Gracias a la diversidad de aplicaciones y configuraciones que posee el dispositivo, es considerado como una de las herramientas de estudio y de trabajo más utilizadas en la actualidad. Hay una gran diversidad de modelos de tablets y sistemas operativos, pero los más resaltantes de todo son: La surface 2 de Microsoft, es una tablets desarrollada por la gigante de las computaciones, Microsoft. Los directivos de la empresa al ver los beneficios que estaban trayendo la venta de tablets, […]

The post 3 Tablets con distintos SO appeared first on emsLinux • El mundo según Linux.

Jueves 04 de junio de 2015

David Gómez

David Gómez
emsLinux

Cómo reparar la pantalla del iPhone 5

Los iPhone son teléfonos inteligentes que se han convertido en uno de los dispositivos móviles más populares de su tipo. Aunque estos teléfonos cuentan con una extensa variedad de aplicaciones y configuraciones que lo hacen ver como un terminal multifacético, también es cierto que el dispositivo es uno de los más sensibles en comparación con el resto. Empezando por su diseño táctil, la pantalla del teléfono es mucho más sensible que las pantallas de los tradicionales móviles, por lo que es muy común ver daños en la misma al momento de una caída o incluso por “mal uso” del Smartphone […]

The post Cómo reparar la pantalla del iPhone 5 appeared first on emsLinux • El mundo según Linux.

David Gómez

David Gómez
emsLinux

Presentan cliente de Mega para Linux, conocido como MEGAsync

Recientemente han dado a conocer la presentación del nuevo cliente del servicio de almacenamiento en la nube MEGA, el cual será completamente compatible con GNU/Linux. Se trata de una aplicación llamada MEGAsync, la cual es completamente gratuita, y permitirá a los usuarios el poder gestionar todo lo referido a las descargas y a las subidas a los servidores de esta empresa que se realicen con la ayuda de esta plataforma, ofreciéndonos una gran cantidad de datos sobre la cola de descargas pendiente, como es el caso de la velocidad de descarga, el tiempo restante que queda para obtener un archivo, […]

The post Presentan cliente de Mega para Linux, conocido como MEGAsync appeared first on emsLinux • El mundo según Linux.

Lunes 20 de abril de 2015

Guillermo Morales

Guillermo Morales
lobo

soy una perra

soy la mas puta

Martes 02 de diciembre de 2014

Comunidad DragonJAR: Samurai, Entorno de trabajo para el testing de seguridad a aplicativos Web

Domingo 30 de noviembre de 2014

Rodrigo Carreño

Rodrigo Carreño
Rodrigo C@rreño

Limpiador de paginas web

Winclear - History Eraser

Miércoles 22 de octubre de 2014

DriveDroid; cómo arrancar cualquier Linux desde nuestro smartphone

logo-DriveDroid¿Cuantas veces has tenido que iniciar un Live CD de Linux para instalar o recuperar un sistema y no has tenido el lapiz USB preparado? ¿y cuantas veces no has tenido siquiera un lapiz USB a mano? Y ni mencionar de aquellas en las que no has tenido conexión a Internet para descargarte la ISO. Pues bien DriveDroid ha venido a solucionarnos esos problemas. Es un aplicación para Android que nos permite arrancar cualquier sistema operativo con base Linux (he visto por ahi que alguien ha arrancado Windows) desde nuestro teléfono móvil. Por que si hay algo que no olvidamos al salir de nuestra casa eso el… el móvil y el tabaco.

Puede resultar una aplicación muy cómoda para geeks y no tan geeks, tener la posibilidad de arrancar cualquier distribución de Linux simplemente sacado el smartphone de nuestro bolsillo me resulta cuanto menos estupendo y funcional:

  1. Es muy funcional cuando usamos ordenadores que no son nuestros y no queremos dejar constancia de que hemos estado allí.
  2. Es muy cómodo para cuando se nos rompe algo en nuestro sistema operativo.
  3. Hace algunos años que llevo en mi mochila un pendrive con Tails, por privacidad, con esta aplicación puedo olvidar el pendrive o simplemente sacarlo de la mochila.

Y como vamos a ver en esta entrada es muy simple. Solo tenemos que instalar la aplicación y seguir los sencillos pasos para la primera configuración, eso si, tenemos que tener el terminal rooteado. Pero eso no va a ser un problema para ningún geek. Posteriormente elegiremos cuales son, o cual es, la distribución de Linux que queremos tener en nuestro smartphone y ya lo tenemos listo, lo podéis ver en la galería de imágenes asociada a esta entrada 😉

La lista no es precisamente corta, aunque parezca mentira nos ofrece descargar e iniciar unas cuantas de las distribuciones mas importantes de Linux. Debian, Fedora, Ubuntu, System Rescue CD… o incluso las que podamos crear nosotros mismos usando imágenes en blanco.

Screenshot_2014-10-22-22-49-39 Screenshot_2014-10-22-22-49-51 Screenshot_2014-10-22-22-49-58 Screenshot_2014-10-22-22-50-06 Screenshot_2014-10-22-22-50-22 Screenshot_2014-10-22-22-50-29 Screenshot_2014-10-22-22-50-54 Screenshot_2014-10-22-22-51-14 Screenshot_2014-10-22-22-51-24 Screenshot_2014-10-22-22-51-30 Screenshot_2014-10-22-22-51-44 Screenshot_2014-10-22-22-54-41 Screenshot_2014-10-22-22-54-17

Desde luego una aplicación que ami me ha parecido mas que interesante y que quiero mantener en mi smartphone 😉

Lunes 01 de septiembre de 2014

Alejandro Ríos P.

Alejandro Ríos P.
Alerios

Competencias de un Ingeniero para afrontar el mercado laboral

Me pregunta un viejo amigo que está trabajando como coordinador de un programa de Ingeniería en una Universidad del suroccidente, con el fin  estructurar mejor el contenido del programa y graduar mejores ingenieros:

¿Cuál consideras que serían las competencias que debería tener todo ingeniero en electrónica y telecomunicaciones para que pueda afrontar el mercado laboral? 

Quiero compartir mi respuesta, que fue la siguiente:

Hola,

Muchas gracias por tenerme en cuenta para esto, para mí el cierre de la brecha entre empresa y academia siempre ha sido una preocupación desde que estaba en la universidad.

Hay varias cosas que en mi experiencia los ingenieros de hoy en día deben aprender y que las agrupo en 3 categorías:

1. Habilidades técnicas:

Lo de siempre, los ingenieros deben saber cómo resolver un problema, analizándo todos los requisitos a cumplir de manera sistémica. Hoy en día es más importante saber cómo buscar la información necesaria para resolver los problemas que aprenderla de memoria, ser capaces de llegar al fondo de cómo funcionan las cosas, un ingeniero debe tener tanto una visión global de todas las tecnologías, como un conocimiento profundo de alguna de ellas en particular. Y sobretodo, leer la Carta a García.

Una habilidad que es importante inculcar, es la de publicar, compartir, crear un portafolio de proyectos que son la carta de presentación, participar en comunidades, tener un repositorio de código, contribuir a un proyecto open source, publicar en blogs, etc.  Ojalá todo en INGLES

Pero lo más importante sería enseñarles todas las variables que hacen que un producto sea de gran calidad: desde el diseño, pasando por la creación, pero no quedarse ahi, sino pensar también cómo eso se inserta en un entorno de producción escalable, cómo se debe probar, documentar y mantener en la vida real.

2. Habilidades de negocios


En un mundo globalizado no solo se requiere generar soluciones, sino saber cómo éstas se llevan al mercado. Los ingenieros de hoy deben entender cómo se gestiona un proyecto con herramientas como el PMBOK, pero también con AGILE, Scrum, etc.  Hay que enseñarles a que sepan plantear un proyecto como un caso de negocio, que piensen como emprendedores, que no se queden solo en una idea, sino que sepan cómo llevar esa idea a satisfacer un mercado (Lean Startup), cómo vender, cómo manejar un presupuesto.

3. Habilidades humanas

Finalmente, los ingenieros tienden a ser muy cuadrículados y encerrados en su mundo. Hay que cultivar habilidades de comunicación, oral y escrita, habilidades gráficas, cómo hacer una presentación agradable a la vista, que comunique las ideas, cómo diseñar interfaces de usuario agradables, usables, deseables.  Cómo interactuar con un equipo multidisciplinario, cómo mantener un ritmo de vida productivo y saludable.

Lo más importante es que sepan cuál es su pasión. Un ejercicio interesante que se me ocurre, sería ponerlos a investigar ofertas laborales en bolsas de empleo, o perfiles de gente muy dura en LinkedIN, que ellos vean un perfil o Biografía de alguien que sea su modelo a seguir. Y luego que afronten su aprendizaje con ese perfil en mente. Que cuando salgan, estén ya perfilados hacia una meta de carrera real.

Son muchos los retos de un ingeniero en la vida real, espero que esta información te sea de utilidad,

Un abrazo,

Alejandro Rios.

Miércoles 30 de julio de 2014

Rafael Ortíz

Tastypie filtering

Tastypie is a django restful api

Here is a little recipe to show only the last resource of eache model exposed as WS:



class RequestResource (ModelResource):
    """ Request webservice
    """
    class Meta:
        queryset1 = Request.objects.order_by('-id')
        queryset = queryset1.all()[:1]
        resource_name = 'requestresource'
        authorization = Authorization()

Another recipe to show also a foreing key in a given resource:

class EmployeeResource (ModelResource):
    """ Employee webservice
    """
    user = fields.ForeignKey(UserResource,'user',full=True,null=False,blank=False)

    class Meta:
        queryset = Employee.objects.all()
        resource_name = 'employeeresource'
        authorization = Authorization()

Rafael Ortíz

Git for Sugar

One of the firsts walls or obstacles to enter Sugar development is learn our favourite control version system [git http://git-scm.com/], although somewhat counter-intuitive at the beginning, git is a very powerful tool, I wish there could be another way to have a collaborative way of development for kids, but we are not yet there.(could be other ways?)

For starters you would have to go to our web-ui git instance called [gitorious
http://gitorious.org/],

http://git.sugarlabs.org

you can clone

git clone git://git.sugarlabs.org/yourproject/mainline.git

or make a personal clone of a project of your election on the web-ui.

keep your project up-to-date with

git pull

you can also make a patch and sent it ot the developer

git format-patch HEAD^

Note: is preferable that you generate your patch from the root directory of your project.

if you want more visibility or reviews you can also send your patch to sugar-dev mail list.

git format-patch -s -1
git send-email --to maintainer --cc mailing-list filename
For example:

git send-email --to=sugar-devel@lists.sugarlabs.org 0001*.patch

as a maintainer you can apply patches, sent by others, in this case you have
a file called sugar_fixes.patch

git apply --stat sugar_fixes.patch
git apply --check sugar_fixes.patch
git apply --apply sugar_fixes.patch or git am --signoff

o make merge requests using gitorious ui.

Some commands may seem very hard, but it's a matter of practice, and the combination of command line interface and gitorious ui, could be very practical both for development in terms of code maintain and for coordinated and collaborative development between various people.




References
http://wiki.sugarlabs.org/go/Activity_Team/Git_FAQ
http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/


Rafael Ortíz

Python-Msql connection

I've gathered some python-mysql simple connection scripts on:

https://github.com/RafaelOrtiz/python-mysqlcon

You can desing a mysql db with the available graphic tools and then use these kind of scripts, purpose can be simple apps or tests.



Martes 01 de julio de 2014

¿Como podemos comenzar a usar un CRM dentro de nuestra organización? Y sobre todo que ventajas nos aporta

social_net_1La gestión de la relación con los clientes es algo primordial para las empresas, no he venido a contaros nada nuevo. Pero lo cierto es que en los últimos años cada vez mas organizaciones con fines sociales y no enfocadas tanto a la venta sino a provocar cambios sociales, nos demandan aplicaciones funcionales y fáciles de manejar que les permita empoderarse en un ámbito que hasta ahora pocos han explorado de forma eficiente: la relación que la organización tiene con los asociados, voluntarios e individuos.

Hasta ahora era muy difícil, no por cuestiones técnicas sino mas bien por terminología y filosofía, adaptar un CRM enfocado al mundo empresarial y a la venta pura y dura dentro de un organismo en muchos casos sin animo de lucro. Últimamente os estoy dando bastante la murga por Twitter con Civi CRM, un software para la administración de la relación con los asociados, voluntarios y clientes. Un sistema  informático de apoyo a la gestión de las relaciones con los asociados, la venta y la comunicación. Con este significado CRM se refiere al sistema que administra un almacén de datos con la información de la gestión de marketing, comunicación y de los asociados de la asociación.

Lo cierto es que creo que cualquier asociación que se precie, sea esta sin animo de lucro o no, tiene que disponer de unos canales de comunicación activos y funcionales para con todos sus actuales y futuros asociados, no podemos olvidar cual es la parte fundamental de una organización social: el asociado. Sea esta una cooperativa, una ONG, un partido político o un sindicato, por ejemplo. Tener una comunicación de calidad y en la que no tengamos que invertir técnicamente mucho tiempo os hará conocer un antes y un después en la gestión de la organización. Incrementara vuestra capacidad de movilización, aumentara vuestros asociados (y por ende vuestra capacidad económica), creara campañas de difusión mas eficientes y os ayudara a organizaros mejor. Incluso, por que no, os ayudara a ser mas transparentes hacia el asociado y la sociedad en general, ya que si no disponemos de datos que compartir, difícilmente podremos disponer de una organización transparente. Por lo cual, no son pocas, como podéis ver, las ventajas que aporta dedicarle un poco de tiempo y esfuerzo al sistema.

Civi nos permite manejar lo que creo que es el groso de nuestra relación con los asociados:

  • Permite configurar las cuotas anuales, o mensuales, de pertenencia en la organización y saber se un primer vistazo cuales tenemos que reclamar.
  • Permite disponer de una base de datos estructurada y organizada de todos nuestros socios, colaboradores, voluntarios, trabajadores (en caso de que tengamos), sean estos personas físicas o organismos.
  • Permite hacer una correcta gestión de las campañas de comunicación, como por ejemplo campaña de recogida de firma online, campaña para la recepción de dinero o material de cualquier tipo… incluso podemos hacer crowdfunding básico dentro de nuestra propia plataforma. Además nos permite hacer publico o no, según nuestro criterio, esos datos.
  • Permite tener en nuestra pagina web la gestión integral de un evento, desde la comunicación, pasando por el registro de participantes y acabando con la gestión del cobro, el cual podemos hacer a través de pasarelas de pago como PayPal, nuestra propia pasarela de pago con el banco o simplemente organizar que nos paguen en mano en el mismo momento del evento.
  • Nos permite disponer de un sistema de comunicación a través de e-mail con asociados, los participantes a los eventos…, por ejemplo para recordarles la fecha, nuestros asociados o grupo de coordinación de diferentes campañas que podamos tener activas…
  • Y algunas muchas cosas mas 😉

OE2014_CiviCRM1-600x455En definitiva y teniendo en cuenta que todos lo anterior lo he necesitado como voluntario y responsable de la comunicación de Gaueko KOOP., hack.in#badakigu o Reciclanet, creo que nos puede quitar, a los gestores de ONGs, un montón de trabajo de encima haciendo mas eficiente nuestro que hacer diario, que al final es lo que buscamos cuando implantamos un sistema de gestión de este tipo.

Cuando hablo de Civi CRM pienso que este software tiene además una gran ventaja de gestión frente a otros CRMs mas “tradicionales” también una gran ventaja tecnológica, en mi opinión la primera es que la podemos incorporar como plugin dentro de nuestro gestor de contenidos, de esta forma quedara perfectamente integrada en nuestra web corporativa sin tener que crear otro software de gestión al que difícilmente podremos hacer frente. Civi CRM dispone de módulos tanto para WordPress, como Joomla o Drupal. Instalaremos uno o otro dependiendo de cual sea nuestro gestor de contenidos. La segunda ventaja tecnológica que le veo al software, y los técnicos me entenderéis, es que las base de datos del CRM y la del gestor de contenidos web son independientes, lo que nos evitara un montón de problemas a la hora de hacer la implantación. Ya que, aunque se integren en formato de plugin, si corrompemos la base de datos del CRM la del gestor de contenido jamas se vera afectada y viceversa.

Y lo cierto es que le veo algunos beneficios técnicos y de gestión mas, pero lo voy a dejar aquí por hoy, tenemos mucho tiempo para poder seguir ahondando en este maravillo producto de software libre que nos ayudara a organizarnos y empoderarnos de una forma horizontal y comprometida 😉

Viernes 14 de febrero de 2014

Jose Luis Ahumada

Jose Luis Ahumada
Distancia Zero

LibreOffice at FOSDEM

FOSDEM Booth

The LibreOffice project has been granted a booth table on both Saturday and Sunday. Please see here for where we are.

Details for the stand planning are on this page Marketing/Events/Fosdem2013/Stand.

Main-track talk

Michael Meeks gave a talk about re-factoring the LibreOffice code-base, you can see hybrid PDF slides for that or watch

DevRoom Description

Come and hear about the growth and success of LibreOffice and how you can get involved in this exciting project at the cutting edge of Free Software. Hear from many of the core developers, work out how best to get your most annoying problems fixed, and find how best to get plugged into the team. Co-ordinate with your co-developers, get caught up with the latest developments all over the project, meet friends you’ve hacked with on-line, all this and more. If you’re just a user and want to go deeper, to help improve things we’ll have something for you too.
Mas informacion: https://wiki.documentfoundation.org/Marketing/Events/Fosdem2013

Archivado en: LibreOffice

Martes 04 de febrero de 2014

Jose Luis Ahumada

Jose Luis Ahumada
Distancia Zero

Xubuntu Flyer !! #StartUbuntu

rocket_banner_900x256

 

El proyecto #StartUbuntu esta estrenando nuevo flayer para la campalla.  Aqui les comparto el flayer en español:

Autores:

Pierre van Male (original design)
Pasi Lallinaho (Xubuntu re-mix)
Elizabeth Krumbach Joseph (Xubuntu text)

Xubuntu Flyer

 

Lo pueden descargar aqui:

 


Archivado en: StartUbuntu, Ubuntu, UbuntuColombia

Lunes 03 de febrero de 2014

Jose Luis Ahumada

Jose Luis Ahumada
Distancia Zero

Cómo instalar LibreOffice 4.2 en Ubuntu, por de PPA

LibreOffice42

 

Para los que les gusta actualizar LibreOffice por PPA, Sólo hay que abrir un terminal e ingresar los siguientes comandos:

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get dist-upgrade

Para instalar el nuevo paquete de íconos Sifr:

sudo apt-get install libreoffice-style-sifr

Fuente


Archivado en: LibreOffice

Lunes 04 de noviembre de 2013

Comunidad DragonJAR: Lynis, auditando la seguridad de tu sistema *NIX

Martes 17 de septiembre de 2013

Carlos Perilla

Carlos Perilla
Valkertown

Longboarding, part 2

It has been a while since the last post, I'm posting this after an intense longboarding session with my dogs. This thing has absorbed me and I'm completely enjoying every moment I spend above my longboard.

After a lot of practicing I got a real longboard, a complete set from Birdhouse whic

Sábado 07 de septiembre de 2013

Yeiner Fernández

Yeiner Fernández
Yeiner.F

Un nuevo rumbo

Efectivamente, este es un anuncio de lo que serán mis publicaciones de ahora en adelante.

Los que me leen saben que suelo escribir muchas opiniones de temas en general, empecé escribiendo sobre Linux, un poco de Desarrollo Web y de vez en cuando temas de opinión en general.
Pero las cosas han cambiado, ahora estoy más enfocado en la programación que en Linux como tal, por alguna extraña razón ya no siento esa pasión por bloguear sobre Linux, además ya existen miles de Blogs que lo hacen y muy bien.

¿Para qué queremos un blog más de Linux?
Si quiero escribir sobre Linux, lo puedo hacer en el blog de algún colega, tengo varios que encantados me regalarían un espacio... ¿cierto? :D

Además de que se perdió "el amor" por escribir sobre Linux, hay otros motivos, como el crecimiento profesional. Sí, estoy aprendiendo ciertas tecnologías, ¿qué mejor que practicar con mis artículos?
Estoy envuelto actualmente en MedellínPHP y más que  eso estoy envuelto en la programación al menos el 75% de mi día, Linux es una cosa más que secundaria; diría que ya no es más que mi herramienta de trabajo en el día a día, amo este SO pero ya no me emociona jugar con cosas como antes lo hacía.
Claro ejemplo de lo que acabo de mencionar es que llevo casi un año usando Kubuntu y nunca he sentido la necesidad de que me falte algo... meses atrás eso no me habría pasado, yo habría sentido que necesito modificar archivos de configuración, romper el sistema y mover y dañar cosas para aprender; triste que me quedaré sin experimentar lo que se siente instalar Gentoo o pelear con el nuevo instalador de Arch (sniff).

¿Entonces qué haré?
Es bien sabido que Blogger no es tan bueno para publicar artículos sobre programación, pero lo intentaré, trataré de sobrellevarlo, y si no funciona, pues fácil: Cambiaré de plataforma.
Escribiré artículo más técnicos sobre la Ingeniería del Software, patrones, PHP, Ruby, Frameworks... y sobre todo: Laravel.



¡Nos Vemos!

Lunes 26 de agosto de 2013

John Edisson Ortiz

John Edisson Ortiz
El blog de Chiche

Como instalar OpenLDAP en Debian7/Ubuntu13.04 con soporte GnuTLS

OpenLDAP LogoPara quienes trabajamos realizando montajes de servidores usando GNU/Linux y Software Libre, OpenLDAP viene convirtiéndose en una de esas herramientas de “uso obligatorio” en todo montaje medianamente ambicioso.

Pero, ¿Que es OpenLDAP?

Vamos por partes… ¿Que es LDAP?

Según la Wikipedia

LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también se considera una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

En resumen…
El protocolo LDAP nos permite crear un directorio (muy similar a un directorio telefónico) para nuestra organización, facilitando la organización de los diferentes objetos (Usuarios, Grupos, Dispositivos, etc) en una estructura jerárquica (similar a un árbol). simplificando la creación de “perfiles” para cada uno de los objetos que conforman nuestro directorio; muy útil para otorgar permisos de acceso (autorización) a los diferentes servicios/recursos que ofrezcamos en nuestra organización.

En una definición mucho mas simple, un directorio LDAP es una base de datos optimizada para llevar a cabo operaciones de lectura.

Ahora si, ¿Que es OpenLDAP?

OpenLDAP es una implementación libre del protocolo LDAP, licenciado bajo la OpenLDAP Public Licence cuyas principales características son:

  • Soporte IPV6
  • Soporte para referrals (distribuido)
  • UTF-8 como codificación de caracteres por defecto
  • Soporte para autenticación usando Kerberos, SASL, CRAM-MD5
  • Soporte para el protocolo LDAPv3
  • Soporte para TLS
  • Soporte para Proxy LDAP
  • Backends Disponibles: DBD (obsoleto), HDB, LDIF y NDB
  • Soporte para LDAP Monitor
  • Soporte para ldap-dnssrv o búsqueda de servicios LDAP usando registro SRV
  • Soporte para llamadas a procedimientos remoto o RPC
  • Gran cantidad de Overlays disponibles (piezas de código que proveen características adicionales. Mayormente al backend de almacenamiento)

Si deseas ahondar aún mas en el proyecto, te invito a que visites su sitio web http://www.openldap.org

OpenLDAP se divide en 3 grandes componentes

  • Demonio de servidor (slapd)
  • Librerías para interactuar con el directorio
  • Herramientas de gestión (ldapsearch, ldapmodify, ldapadd, ldapindex, entre otras)

Manos a la obra

Instalación

Tanto en Debian, como en Ubuntu al instalar el paquete slapd, por defecto se crea un nuevo árbol de directorio usando los datos del dominio plasmados en el archivo /etc/hosts, por lo tanto, si en nuestro archivo hosts, tenemos lo siguiente:

127.0.1.1 debianpruebas.slabinfo.com.co debianpruebas

El instalador, creará automáticamente el siguiente árbol de directorio (BaseDN):

dc=slabinfo,dc=com,dc=co

Aclarado el punto anterior, instalamos OpenLDAP y sus utilidades usando APT

sudo apt-get install slapd ldap-utils

El instalador nos solicitará una contraseña para el administrador del nuevo árbol de directorio (cn=admin, dc=slabinfo,dc=com,dc=co), es aconsejable crear una contraseña segura para proteger de mirones no autorizados nuestro directorio.

Configuración inicial del directorio

El servidor slapd, tanto en Ubuntu, como en Debian, usa el estilo de configuración cn=config o “configuración al vuelo”, por lo que dicha configuración se hace a base de archivos de texto usando el formado LDIF (LDAP Data Interchange Format).

Estructura del directorio

En este punto cada cual puede adaptar dicha configuración según sus necesidades, yo suelo usar un árbol de directorio estructurado así:

   dc=slabinfo,dc=com,dc=co
    +ou=usuarios
    | +uid=john
    | +uid=jhondoe
    |  ...
    |
    +ou=grupos
    | +cn=sistemas
    | +cn=contabilidad
    |  ...
    |
    +ou=equipos
    | +cn=estacion1
    | +cn=estacion2
    |  ...
    |
    +ou=servicios
    | +cn=squid
    | +cn=samba
    |  ...
    |
    +cn=admin

Comenzamos creando un archivo de texto LDIF y lo guardamos con el nombre estructura-directorio.ldif:

dn: ou=usuarios,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: usuarios

dn: ou=grupos,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: grupos

dn: ou=equipos,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: equipos

dn: ou=servicios,dc=slabinfo,dc=com,dc=co
objectClass: organizationalUnit
ou: servicios

Luego, aplicamos los cambios al directorio con el comando:

ldapadd -x -D cn=admin,dc=slabinfo,dc=com,dc=co -W -f estructura-directorio.ldif
Enter LDAP Password:
adding new entry "ou=usuarios,dc=slabinfo,dc=com,dc=co"

adding new entry "ou=grupos,dc=slabinfo,dc=com,dc=co"

adding new entry "ou=equipos,dc=slabinfo,dc=com,dc=co"

adding new entry "ou=servicios,dc=slabinfo,dc=com,dc=co"

Creamos 2 usuarios de prueba (john y jhondoe) en nuestro directorio, creamos el archivo estructura-usuarios.ldif.

dn: uid=john,ou=usuarios,dc=slabinfo,dc=com,dc=co
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Ortiz Roman
givenName: John Edisson
cn: John Edisson Ortiz Roman
displayName: John Edisson Ortiz
uidNumber: 10000
gidNumber: 1000
userPassword: contrasena_segura
gecos: John Edisson Ortiz Roman
loginShell: /bin/false
homeDirectory: /home/john

dn: uid=johndoe,ou=usuarios,dc=slabinfo,dc=com,dc=co
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: johndoe
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10001
gidNumber: 1001
userPassword: contrasena_segura
gecos: John Doe
loginShell: /bin/false
homeDirectory: /home/johndoe

y los añadimos al directorio con el comando:

ldapadd -x -D cn=admin,dc=slabinfo,dc=com,dc=co -W -f estructura-usuarios.ldif
Enter LDAP Password:
adding new entry "uid=john,ou=usuarios,dc=slabinfo,dc=com,dc=co"

adding new entry "uid=johndoe,ou=usuarios,dc=slabinfo,dc=com,dc=co"

finalmente los grupos sistemas y contabilidad, para ello, creamos el archivo estructura-grupos.ldif:

dn: cn=sistemas,ou=grupos,dc=slabinfo,dc=com,dc=co
objectClass: posixGroup
objectClass: top
cn: sistemas
gidNumber: 1000
memberUid: john

dn: cn=consultoria,ou=grupos,dc=slabinfo,dc=com,dc=co
objectClass: posixGroup
objectClass: top
cn: consultoria
gidNumber: 1001
memberUid: jhondoe

Nuevamente el comando ldapadd será nuestro aliado.

ldapadd -x -D cn=admin,dc=slabinfo,dc=com,dc=co -W -f estructura-grupos.ldif
Enter LDAP Password:
adding new entry "cn=sistemas,ou=grupos,dc=slabinfo,dc=com,dc=co"

adding new entry "cn=consultoria,ou=grupos,dc=slabinfo,dc=com,dc=co"

Como se puede observar, creamos 4 unidades organizacionales (usuarios, grupos, servicios y equipos), 2 usuarios (john y jhondoe) y 2 grupos (sistemas y contabilidad), a la vez que “matriculamos” al usuario john en el grupo sistemas y a johndoe en contabilidad.

Por ahora no haremos uso de las unidades organizacionales servicios y equipos, pues entraremos en detalles sobre las mismas en futuros artículos cuando expliquemos como hacer para que samba y squid usen LDAP en sus procesos de autenticación.

Ya tenemos nuestra estructura terminada, ahora a habilitar el soporte para GnuTLS.

Activando el soporte GnuTLS

GnuTLS es una implementación libre y de código abierto de los protocolos SSL y TLS permitiendo establecer comunicaciones seguras entre clientes y servidores en la capa de red.

Para hacer uso de TLS en nuestro servidor LDAP, requeriremos de mínimo 1 certificado público y una clave privada. En nuestro caso en particular, crearemos además una CA (Autoridad Certificadora) la cual va a firmar el certificado que nuestro servidor slapd usará en sus conexiones.

De nuevo, manos a la obra

Tanto para crear nuestra CA, como para crear y firmar el par llave/certificado para nuestro servidor LDAP usaremos el paquete gnutls-bin disponibe en los repositorios de Debian y Ubuntu.

sudo apt-get install gnutls-bin

Para mi comodidad, siempre creo una carpeta con el nombre CA-dominio-fqdn, en mi caso dicha carpeta se llama asi: CA-slabinfo.com.co.

mkdir CA-slabinfo.com.co && cd CA-slabinfo.com.co

Creando la CA

Lo primero, la llave privada que usará nuestra CA

~/CA-slabinfo.com.co# certtool --generate-privkey > ca-slabinfo.com.co-key.pem
Generating a 2432 bit RSA private key...

Ahora el turno es para el certificado público de nuestra CA
Antes que nada, crearemos una plantilla que contendra los datos de nuestra CA (parece complicado, pero no tiene ciencia), el archivo en cuestión se llama ca.info

cn = Slabinfo EU
ca
cert_signing_key

Ahora, creamos el certificado y lo firmamos

certtool --generate-self-signed --load-privkey ca-slabinfo.com.co-key.pem --template ca.info --outfile ca-slabinfo.com.co-cert.pem
Generating a self signed certificate...
X.509 Certificate Information:
	Version: 3
	Serial Number (hex): 521bc2e8
	Validity:
		Not Before: Mon Aug 26 21:04:40 UTC 2013
		Not After: Tue Aug 26 21:04:40 UTC 2014
	Subject: CN=Slabinfo EU
	Subject Public Key Algorithm: RSA
	Certificate Security Level: Normal
		Modulus (bits 2432):
			00:c0:1b:c8:62:5a:79:6d:50:f3:f6:56:e9:e5:34:e4
			de:9b:4a:b5:f4:07:98:9b:ef:85:06:46:39:3d:b6:cf
			6d:88:89:a8:37:9e:71:d4:10:f3:13:66:39:7b:85:b4
			20:97:ee:91:f3:7f:95:2e:69:46:5f:a6:cb:93:0d:98
			80:ec:20:eb:c2:75:73:f0:a3:85:31:17:ae:45:66:99
			15:ab:66:07:5a:e5:cb:f6:8a:94:78:4f:35:e9:73:75
			53:f6:d9:4d:19:a7:42:20:51:b3:ad:bf:53:65:87:0e
			e7:39:a0:29:44:73:9d:59:52:8b:42:ef:7e:c9:30:ba
			dc:a1:c7:97:5d:c0:cb:50:b7:55:75:b7:b0:15:02:d7
			99:43:3c:d2:ac:97:d1:93:9e:e5:45:b3:ae:75:7a:43
			d3:d5:a7:b5:9f:3a:ba:68:4d:01:41:5c:f5:e2:44:05
			e7:73:cc:85:4d:b7:d2:c3:ce:da:4c:0c:22:be:be:ca
			24:85:fc:b4:f8:3a:66:fe:b0:40:5f:61:53:37:28:c7
			db:56:6f:96:9f:a3:23:02:b0:dd:fc:ef:84:46:ae:ed
			f6:1a:d1:c6:38:8a:65:4b:36:46:26:de:17:c7:58:6e
			c9:d9:ae:74:7b:71:97:78:b0:22:40:1d:6c:dd:23:52
			f2:e0:3c:61:c1:38:a9:9b:d4:cc:43:42:0b:17:8e:b3
			58:70:15:1e:a3:b5:38:25:bf:ee:3f:ee:2c:de:92:f8
			cf:a8:42:95:92:74:be:56:08:04:eb:47:ff:f4:b6:24
			01
		Exponent (bits 24):
			01:00:01
	Extensions:
		Basic Constraints (critical):
			Certificate Authority (CA): TRUE
		Key Usage (critical):
			Certificate signing.
		Subject Key Identifier (not critical):
			d7fce9fc2f83362289c6116792b82cd41d66e144
Other Information:
	Public Key Id:
		d7fce9fc2f83362289c6116792b82cd41d66e144

Signing certificate...

Ya hemos creada nuestra CA (muuuuy básica, por cierto), ahora, a crear y firmar el par llave/certificado para nuestro servidor.
Empezamos con la clave (ejem 1024bits siguen siendo una longitud aceptable)

certtool --generate-privkey --bits 1024 --outfile ldap.slabinfo.com.co-key.pem
** Note: Please use the --sec-param instead of --bits
Generating a 1024 bit RSA private key...

Ahora, es el turno de generar y firmar certificado
Primero, crearemos el “template” a usar por el certificado, de nuevo un archivo de texto llamado ldap.info con lo siguiente

organization = Slabinfo E.U.
cn = ldap.slabinfo.com.co
tls_www_server
encryption_key
signing_key
expiration_days = 720

Luego, creamos y firmarmos nuestro certificado

certtool --generate-certificate --load-privkey ldap.slabinfo.com.co-key.pem --load-ca-certificate ca-slabinfo.com.co-cert.pem --load-ca-privkey ca-slabinfo.com.co-key.pem --template ldap.info --outfile ldap.slabinfo.com.co-cert.pem
Generating a signed certificate...
X.509 Certificate Information:
	Version: 3
	Serial Number (hex): 521bc601
	Validity:
		Not Before: Mon Aug 26 21:17:53 UTC 2013
		Not After: Sun Aug 16 21:17:53 UTC 2015
	Subject: O=Slabinfo E.U.,CN=ldap.slabinfo.com.co
	Subject Public Key Algorithm: RSA
	Certificate Security Level: Weak
		Modulus (bits 1024):
			00:b8:53:57:5b:18:0b:b6:c4:eb:2b:da:14:7f:dd:7c
			b1:82:7e:d8:df:f3:27:c2:ea:25:84:7b:dd:29:33:18
			bc:b5:8a:6f:4e:fd:24:30:50:95:7c:23:43:ff:2f:10
			a9:07:7e:c5:b0:28:de:02:3e:5d:f8:d7:5f:df:3f:0d
			e6:e3:7f:c0:6a:af:4b:b3:48:91:a1:13:a8:ad:12:07
			0b:1a:bc:ae:67:ca:81:f7:71:81:55:70:ce:80:42:f7
			86:c5:12:c5:24:52:21:70:45:7c:ee:fd:37:3a:f0:e0
			fd:81:71:ea:b4:bd:5b:3f:bc:31:0b:52:91:cd:75:94
			85
		Exponent (bits 24):
			01:00:01
	Extensions:
		Basic Constraints (critical):
			Certificate Authority (CA): FALSE
		Key Purpose (not critical):
			TLS WWW Server.
		Key Usage (critical):
			Digital signature.
			Key encipherment.
		Subject Key Identifier (not critical):
			88d07313bdf48e7bb27606bf358be399a7175a16
		Authority Key Identifier (not critical):
			d7fce9fc2f83362289c6116792b82cd41d66e144
Other Information:
	Public Key Id:
		88d07313bdf48e7bb27606bf358be399a7175a16

Signing certificate...

Una vez termindos los pasos anteriores, tendremos 6 archivos en nuestra carpeta:

  • ca.info
  • ca-slabinfo.com.co-cert.pem
  • ca-slabinfo.com.co-key.pem
  • ldap.info
  • ldap.slabinfo.com.co-cert.pem
  • ldap.slabinfo.com.co-key.pem

Nuestro servidor LDAP usará solo 3 archivos (el certificado público de la CA, y su par llave/certificado) por lo que los movemos a una ubicación mas idónea.

cp {ca-slabinfo.com.co-cert.pem,ldap.slabinfo.com.co-cert.pem} /etc/ssl/certs/
cp ldap.slabinfo.com.co-key.pem /etc/ssl/private/

Es importante brindarle los permisos de acceso adecuados a dichos certificados/llave para evitar quebraderos de cabeza tratando de dar con el error main: TLS init def ctx failed: -1.

sudo adduser openldap ssl-cert
Añadiendo al usuario `openldap' al grupo `ssl-cert' ...
Añadiendo al usuario openldap al grupo ssl-cert
sudo chgrp ssl-cert /etc/ssl/private/ldap.slabinfo.com.co-key.pem
chmod g+r /etc/ssl/private/ldap.slabinfo.com.co-key.pem
chmod o-r /etc/ssl/private/ldap.slabinfo.com.co-key.pem

En Debian podrían necesitar instalar el paquete ssl-cert
En Ubuntu podría ser necesario modificar el archivo /etc/apparmor.d/usr.sbin.slapd y agregar:

  /etc/ssl/private/ r,
  /etc/ssl/private/* r,

Ya que tenemos todos los certificados y llaves que necesitamos, procederemos a configurar nuestro servidor LDAP para que haga uso de el protocolo TLS, una vez mas.. recurrimos a la creación de un archivo llamado tls.ldif

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ca-slabinfo.com.co-cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap.slabinfo.com.co-key.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap.slabinfo.com.co-cert.pem

Aplicamos la configuración en nuestro servidor LDAP:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f tls.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

y reiniciamos

sudo service slapd restart
[ ok ] Stopping OpenLDAP: slapd.
[ ok ] Starting OpenLDAP: slapd.

Ahora solo nos queda conectarnos a nuestro servidor usando cualquier GUI que soporte TLS (recomiendo Apache Directory Studio)

apacheds-conexion
apacheds-conexion-1
apacheds-conexion-2


Jueves 13 de junio de 2013

Alejandro Ríos P.

Alejandro Ríos P.
Alerios

Cuando es el momento adecuado para emprender?

El propósito de este artículo es realizar un análisis de las principales variables del entorno y capacidades del emprendedor que se deben tener en cuenta antes de decidir si es un buen momento para iniciar un emprendimiento. Se realiza una comparación de estos factores entre dos casos de emprendimiento Latinoamericanos de características diferentes: la empresa Laboratorios Skudmart, de Colombia, y la empresa Kauel, de Chile.



Miércoles 12 de junio de 2013

Alejandro Ríos P.

Alejandro Ríos P.
Alerios

G-Shock 3D Branding Exercise

An exercise on exploring and deconstructing a well-known brand to derive the vision, personality and language, to then identify a new concept (product or experience) that that brand could take to market.

 

Domingo 07 de abril de 2013

John Edisson Ortiz

John Edisson Ortiz
El blog de Chiche

Modo seguro en Thunderbird

El viernes, luego de actualizar mi Thunderbird ya no pude iniciarlo de nuevo, siempre que quería arrancarlo, me arrojaba este error:

john@rigardo:~ $ thunderbird 
enigmail.js: Registered components
mimeVerify.jsm: module initialized
Violación de segmento (`core' generado)

Como el error no me arrojaba ningún tipo de información útil, decidí arrancar thunderbird en modo seguro.

john@rigardo:~/$ /usr/bin/thunderbird -safe-mode

En el dialogo de confirmación seleccionamos Continue in Safe Mode
thunderbird-safe-mode-confirmation

Luego deshabilitamos las extensiones “problemáticas” y reiniciamos.
thunderbird-safe-mode-addons


Viernes 22 de marzo de 2013

Carlos Perilla

Carlos Perilla
Valkertown

Longboarding

I grew up learning to love doing difficult stuff, being constantly challenged, tackling difficult problems or scaling big simple problems; these are the things that gives me a thrill.

Recently I've been having troubles in finding new stuff in the programming world or in technology at all t

Lunes 18 de marzo de 2013

CreativeWeb Blog: Linux desde Cero (GNU – Linux)
Carlos Perilla

Carlos Perilla
Valkertown

Enabling SuperFeedr

This is a small post about http://superfeedr.com, and now I'm enabling htt://pubsubhubbub.googlecode.com/ in this Blog.

PubSubHubBub is a protocol that enables the notification of subscribers when a publisher updates it's content. It was

Viernes 15 de marzo de 2013

John Edisson Ortiz

John Edisson Ortiz
El blog de Chiche

Instalar servidor de repositorios GIT con gitolite y cgit en Ubuntu Server 12.04

Logo Git


Muchos trabajamos a diario con miles de archivos, sean de configuración o de software. Pero todos en mayor o menor medida requerimos una herramienta que nos permita llevar un control de los cambios que realizamos o del avance que llevamos de nuestros proyectos.

Existen muchas alternativas para llevar a cabo dicha tarea entre las que se encuentran: CVS, SVN y GIT. No voy a entrar en detalles de cada uno, porque no es la temática del post, pero para mi tipo de trabajo encaja perfectamente GIT.

Que es GIT?

Como reza en la página web del proyecto:

Git es un sistema de control de versiones distribuido libre y de código abierto, diseñado para manejar todo, desde pequeños a grandes proyectos con rapidez y eficiencia.

El problema radica en que GIT, como tal no es todo lo sencillo de configurar y poner en producción que uno querría. Para solventar dicho handicap, el señor Sitaram Chamarty puso manos a la obra y se sacó de la manga el proyecto gitolite.

Dicho lo dicho, MANOS A LA OBRA!

Instalando Gitolite

Partamos de la base que tenemos instalado y funcionando Ubuntu Server 12.04.
Instalamos algunos paquetes requeridos
GIT:

root@serverdesarrollo:~# apt-get install git
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Paquetes sugeridos:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-arch git-cvs git-svn
  git-email git-gui gitk gitweb
Se instalarán los siguientes paquetes NUEVOS:
  git
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/5.963 kB de archivos.
Se utilizarán 14,0 MB de espacio de disco adicional después de esta operación.
Selecting previously unselected package git.
(Leyendo la base de datos ... 55564 ficheros o directorios instalados actualmente.)
Desempaquetando git (de .../git_1%3a1.7.9.5-1_i386.deb) ...
Configurando git (1:1.7.9.5-1) ...

Creamos un usuario que almacenará nuestros repositorios
Muchos usan el usuario gitolite, yo uso el usuario gitserver, usted es libre de elegir que nombre de usuario desea utilizar.

root@serverdesarrollo:~# sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Sistema de Control de Versiones Git' \
--group \
--disabled-password \
--home /home/gitserver \
gitserver
Adding system user `gitserver' (UID 111) ...
Adding new group `gitserver' (GID 119) ...
Adding new user `gitserver' (UID 111) with group `gitserver' ...
Creating home directory `/home/gitserver' ...

Para evitar problemas de permisos luego con cgit y apache, agregamos el usuario www-data al grupo gitserver

root@serverdesarrollo:~# adduser www-data gitserver
Adding user `www-data' to group `gitserver' ...
Adding user www-data to group gitserver
Done.

Exportar nuestra clave privada al servidor GIT
Para poder realizar la administración remota de nuestro servidor GIT (agregar repositorios, administrar permisos y usuarios, etc) requerimos subir nuestra clave SSH publica a nuestro servidor.

Si ya tenemos una clave generada, nos podemos saltar el siguiente paso e ir directamente al paso donde subimos la clave al servidor.

Para generar nuestra clave publica ejecutamos en nuestra maquina:

john@rigardo:~ $ ssh-keygen -t rsa -f ~/.ssh/john
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in john.
Your public key has been saved in john.pub.
The key fingerprint is:
33:d5:89:be:e6:a4:14:b0:d4:f2:68:03:95:33:a1:3f john@rigardo
The key's randomart image is:
+--[ RSA 2048]----+
|      oo         |
|     o+.   o .   |
|    o +o. o o    |
|     + * o       |
|      E S .      |
|     . o + .     |
|        . +      |
|       . =       |
|        . .      |
+-----------------+

Como podemos observar, hemos creado nuestro par de claves, una publica y otra privada:

john@rigardo:~ $ ls -l ~/.ssh/john*
-rw------- 1 john john 1675 feb 18 17:23 /home/john/.ssh/john
-rw-r--r-- 1 john john  403 feb 18 17:23 /home/john/.ssh/john.pub

Ahora subimos nuestra clave pública a nuestro servidor GIT

john@rigardo:~/.ssh $ rsync -varuz john.pub soporte@192.168.56.100:/tmp/
sopote@192.168.56.100's password:
sending incremental file list
john.pub

sent 414 bytes  received 31 bytes  32.96 bytes/sec
total size is 394  speedup is 0.89

Ahora, vamos de nuevo a la consola de nuestro servidor GIT.
Primero cambiamos el propietario de la clave publica que acabamos de importar

root@serverdesarrollo:~# sudo chown gitserver:gitserver /tmp/john.pub

Luego, nos cambiamos al usuarios que creamos (en mi caso gitserver)

root@serverdesarrollo:~# sudo su - gitserver
gitserver@serverdesarrollo:/home/john$

Clonamos el repositorio donde se encuentra alojado el proyecto gitolite

gitserver@serverdesarrollo:~$ git clone git://github.com/sitaramc/gitolite
Cloning into 'gitolite'...
remote: Counting objects: 8010, done.
remote: Compressing objects: 100% (2630/2630), done.
remote: Total 8010 (delta 5503), reused 7684 (delta 5218)
Receiving objects: 100% (8010/8010), 1.83 MiB | 364 KiB/s, done.
Resolving deltas: 100% (5503/5503), done.

Creamos la carpeta bin donde instalaremos los archivos binarios que usaremos para administrar y configurar gitolite

gitserver@serverdesarrollo:~$ mkdir bin

Ahora instalamos gitolite en la carpeta que creamos

gitolite/install -to /home/gitserver/bin

Instalamos gitolite indicándole la clave publica que subimos previamente

gitserver@serverdesarrollo:~$ bin/gitolite setup -pk /tmp/john.pub
Initialized empty Git repository in /home/gitserver/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/gitserver/repositories/testing.git/
WARNING: /home/gitserver/.ssh missing; creating a new one
WARNING: /home/gitserver/.ssh/authorized_keys missing; creating a new one
gitserver@serverdesarrollo:~$

Editamos el archivo de configuracion /home/gitserver/.gitolite.rc y modificamos la linea que contiene UMASK así:

    UMASK                           =>  0027,

voila!! ya tenemos nuestro servidor GIT funcional, pero ahora debemos crear nuestros repositorios y opcionalmente agregar usuarios y grupos. Para ello cerramos sesión en nuestro servidor.

gitserver@serverdesarrollo:~$ logout
root@serverdesarrollo:~# exit
john@serverdesarrollo:~$ logout
Connection to 192.168.56.100 closed.
john@rigardo:~ $

Lo interesante del proyecto gitolite es su forma de administrar: usamos GIT, para administrar un servidor GIT.
Primero clonamos el repo de administración de gitolite

john@rigardo:~/git/devserver $ git clone gitserver@192.168.56.100:gitolite-admin
Cloning into 'gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.

Si echamos un vistazo, nos daremos cuenta que este repositorio tiene básicamente 2 carpetas: keydir y conf

john@rigardo:~/git/devserver $ cd gitolite-admin/
john@rigardo:~/git/devserver/gitolite-admin [master] $ ls
conf  keydir
  • El directorio llamado keydir es donde copiaremos las claves públicas de nuestros colaboradores o de quienes tendrán acceso al repositorio, sea de escritura y/o lectura.
  • Mientras, el directorio llamado conf es usado para definir los repositorios y sus respectivos permisos de acceso.

Para este caso, usaré la clave pública de mi colaboradora Isabel y crearemos nuestro primer repositorio llamado proyecto
primero colocaremos la clave pública de Isabel en el directorio keydir

john@rigardo:~/git/devserver/gitolite-admin [master] $ cp ~/isabel.pub keydir/
john@rigardo:~/git/devserver/gitolite-admin [master] $

Ahora, creamos el repositorio llamado proyecto y le asignaremos al usuario john como propietario y a la usuaria isabel con permisos de lectura

john@rigardo:~/git/devserver/gitolite-admin [master] $ vim conf/gitolite.conf

 

@repo-admin    = john
@repo-readonly  = isabel

repo gitolite-admin
    RW+     =   john

repo proyecto
        RW+     =       @repo-admin
        R       =       @repo-readonly

Que hicimos?

  • Creamos el grupo @repo-admin y en el matriculamos el usuario john
  • Creamos el grupo @repo-readonly y en el matriculamos el usuario isabel
  • Creamos un nuevo repositorio llamado proyecto y le asignamos los siguientes permisos:
    • Los usuarios del grupo @repo-admin tienen permisos de lectura y escritura
    • Los usuarios del grupo @repo-readonly tienen permisos de solo lectura

Ahora guardaremos y aplicaremos todos los cambios:

Primero guardamos nuestros cambios en las claves publicas de manera local

john@rigardo:~/git/devserver/gitolite-admin [master] $ git add keydir/isabel.pub
john@rigardo:~/git/devserver/gitolite-admin [master] $ git commit -m "usuario isabel agregado al servidor GIT"
[master 4ddd323] usuario isabel agregado al servidor GIT
 1 file changed, 1 insertion(+)
 create mode 100644 keydir/isabel.pub

Y luego los enviamos al servidor GIT

john@rigardo:~/git/devserver/gitolite-admin [master] $ git push
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 714 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
To gitserver@192.168.56.100:gitolite-admin
   2cf8cf1..4ddd323  master -> master

Ahora le toca el turno al repositorio que recién creamos

john@rigardo:~/git/devserver/gitolite-admin [master] $ git add conf/gitolite.conf
john@rigardo:~/git/devserver/gitolite-admin [master] $ git commit -m 'creado el repositorio "Proyecto" y aplicados los permisos de acceso'
[master 60a6ce2] creado el repositorio "Proyecto" y aplicados los permisos de acceso
 1 file changed, 7 insertions(+), 2 deletions(-)

Y de nuevo, sincronizamos los cambios con el servidor GIT

john@rigardo:~/git/devserver/gitolite-admin [master] $ git push
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 459 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /home/gitserver/repositories/proyecto.git/
To gitserver@192.168.56.100:gitolite-admin
   4ddd323..60a6ce2  master -> master

Hasta aquí tenemos nuestro servidor GIT funcional, ¿pero como hacemos para visualizar mas fácilmente los cambios realizados? allí es donde entra cgit

¿Que es cgit?

Cgit es una interfaz web, programada en C que facilita la visualización de nuestros repositorios GIT.

Instalando CGIT

La instalación se realizara enteramente en nuestro servidor GIT.
Instalamos algunos paquetes requeridos

root@serverdesarrollo:~# apt-get install build-essential libssl-dev
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
  binutils cpp cpp-4.6 dpkg-dev fakeroot g++ g++-4.6 gcc gcc-4.6 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libc-dev-bin libc6-dev libdpkg-perl libgomp1 libmpc2 libmpfr4 libquadmath0 libstdc++6-4.6-dev linux-libc-dev make manpages-dev libssl-doc
  libssl1.0.0 zlib1g-dev
Paquetes sugeridos:
  binutils-doc cpp-doc gcc-4.6-locales debian-keyring g++-multilib g++-4.6-multilib gcc-4.6-doc libstdc++6-4.6-dbg gcc-multilib autoconf
  automake1.9 libtool flex bison gdb gcc-doc gcc-4.6-multilib libmudflap0-4.6-dev libgcc1-dbg libgomp1-dbg libquadmath0-dbg
  libmudflap0-dbg binutils-gold glibc-doc libstdc++6-4.6-doc make-doc
Se instalarán los siguientes paquetes NUEVOS:
  binutils build-essential cpp cpp-4.6 dpkg-dev fakeroot g++ g++-4.6 gcc gcc-4.6 libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libc-dev-bin libc6-dev libdpkg-perl libgomp1 libmpc2 libmpfr4 libquadmath0 libstdc++6-4.6-dev linux-libc-dev
  make manpages-dev libssl-dev libssl-doc zlib1g-dev
0 actualizados, 27 se instalarán, 0 para eliminar y 0 no actualizados.
Necesito descargar 35,2 MB de archivos.
Se utilizarán 94,6 MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]?
...
...

Descargamos el código fuente de la aplicación

root@serverdesarrollo:~/instaladores/cgit# wget -cd http://hjemli.net/git/cgit/snapshot/cgit-0.9.1.tar.gz
Connecting to hjemli.net (hjemli.net)|178.79.139.143|:80... connected.
Created socket 3.
Releasing 0x09ff98d8 (new refcount 1).
...
...
...
2013-03-14 23:30:39 (184 KB/s) - `cgit-0.9.1.tar.gz' saved [80445]

Descomprimimos

root@serverdesarrollo:~/instaladores/cgit# tar zxvf cgit-0.9.1.tar.gz
root@serverdesarrollo:~/instaladores/cgit# cd cgit-0.9.1/

Cgit requiere de los binarios de GIT para poderse compilar, para ello llevamos a cabo lo siguiente:

root@serverdesarrollo:~/instaladores/cgit/cgit-0.9.1# make get-git
...
...
100 3163k  100 3163k    0     0   283k      0  0:00:11  0:00:11 --:--:--  407k

La ubicación por defecto donde se instala cgit es “/var/www/htdocs/cgit”, vamos a modificar esto e instalarlo en “/var/www/gitrepos”, para ello creamos el archivo cgit.conf con lo siguiente

CGIT_SCRIPT_PATH = /var/www/gitrepos

Compilamos cgit

root@serverdesarrollo:~/instaladores/cgit/cgit-0.9.1# make
...
...
CC cgit
root@serverdesarrollo:~/instaladores/cgit/cgit-0.9.1#

Y lo instalamos

root@serverdesarrollo:~/instaladores/cgit/cgit-0.9.1# sudo make install
    SUBDIR git
    SUBDIR git
    CC cgit
install -m 0755 -d /var/www/gitrepos
install -m 0755 cgit /var/www/gitrepos/cgit.cgi
install -m 0755 -d /var/www/gitrepos
install -m 0644 cgit.css /var/www/gitrepos/cgit.css
install -m 0644 cgit.png /var/www/gitrepos/cgit.png
install -m 0755 -d /usr/lib/cgit/filters
install -m 0755 filters/* /usr/lib/cgit/filters

Cambiamos el propietario del directorio /var/www/gitrepos por www-data

root@serverdesarrollo:/etc/apache2# chown www-data:www-data /var/www/gitrepos -R

Con esto hemos instalado cgit.

Editamos el archivo /etc/apache2/sites-available/default y antes de cerrar el VirtualHost agregamos lo siguiente

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
...

        Options +ExecCGI
        DirectoryIndex cgit.cgi
        AddHandler cgi-script .cgi
        AllowOverride None
        Order allow,deny
        Allow from all

...

Finalmente editamos el archivo /etc/cgitrc así:

virtual-root=/gitrepos/cgit.cgi/
enable-index-links=1
enable-log-filecount=1
enable-log-linecount=1
snapshots=tar.gz tar.bz zip
root-title=Sistema de Control de Versiones
root-desc=Interfáz web de visualización
css=/gitrepos/cgit.css
logo=/gitrepos/cgit.png

# Listado de repositoros
repo.url=proyecto
repo.path=/home/gitserver/repositories/proyecto.git
repo.desc=Mi primer repositorio en GIT
repo.owner=John Edisson Ortiz

Reiniciamos Apache

root@serverdesarrollo:~# service apache2 restart
 * Restarting web server apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName      [ OK ]
root@serverdesarrollo:~#

Finalmente accedemos a cgit usando la url http://192.168.56.100/gitrepos/

CGIT funcionando
CGIT en accion
(La ip puede variar dependiendo de la ip de tu servidor)

Cgit tiene múltiples opciones de configuración, es bueno que exploren las enormes posibilidades que nos brinda este excelente software.


Miércoles 13 de marzo de 2013

Yeiner Fernández

Yeiner Fernández
Yeiner.F

El espíritu indomable


Dice un precepto (o principio) del Taekwondo que cada deportista debe tener un Espíritu Indomable: esa fuerza "extra" que te ayuda a enfrentar las adversidades sin importar lo que sea, con tal de lograr tu objetivo; a un espíritu indomable no le importa qué cosas ocurran, pues su foco siempre está en el objetivo final.

Tuve la oportunidad de demostrarme a mí mismo qué tan indomable era mi espíritu, mis ganas, mis ideales para alcanzar un sueño. Este Sábado 9 de Marzo (2013) de manera sorpresiva me agarró una gripe muy fuerte, que se acompañó de fiebre y en general un malestar de desaliento que me hacía dificultoso estar de pie; eso hubiera sido una gripe más de las muchas que he tenido y tendré, si al día siguiente no hubiera tenido que ir a una competencia en Sabaneta (Antioquia - Colombia).

Por mi cabeza pasaron muchos pensamientos: "No podré competir", "No debo ir", "Es un suicidio"... pero al final mis ganas de competir fueron más fuertes que mis temores, ¡era un reto!
El día de la competencia me levanté peor, y estaba también un poco temeroso por lo que se avecinaba. Mi esposa me mantuvo "vivo" con algunas pastillas y yo también me mojaba el cabello para despertarme un poco.
Hay algo que yo tenía muy claro: Iba a darlo todo de mí, pero quien iba a competir era el 50% de Yeiner, pues la otra mitad estaba dormida y adolorida.

Empezó mi participación e inmediatamente empecé a sentir cómo me faltaba el aire y cómo ante cualquier movimiento sencillo (Como subir el pie) me agotaba, pero nada me podía detener.... seguí compitiendo y demostrando mi perseverancia y espíritu indomable.

Como era de esperarse, me ganaron mis molestias y al final perdí el combate; pero todos (Mi entrenador, mis compañeros y yo) quedamos con una gran satisfacción, principalmente yo por haberme demostrado que nada me detiene, y que las ganas pueden más que cualquier adversidad.

Ya para teminar, quiero compartir con ustedes el video de mi combate, donde se me ve notablemente afectado y sin fuerzas para atacar y/o contraatacar. Yo soy el del protector Azul. Los gritos de fondo son de mi esposa, hija y compañeros dándome alientos :D. (El camarógrafo estaba nervioso, así que discúlpenlo ;))


Ahora a prepararme para la próxima competencia y esperando no estar enfermo para cuando llegue el momento ;)

Lunes 11 de marzo de 2013

Yeiner Fernández

Yeiner Fernández
Yeiner.F

La humildad: Caso Miguel de Icaza

Hace poco se disparó otra de las (tan fácil de generar) flame wars entre los adeptos a Linux, por motivo del artículo que Miguel de Icaza publicó en su Blog donde menciona los motivos por los cuales resultó usando Mac como computadora personal. La principal disputa empezó con este artículo de MuyLinux.

El tipo (Miguelito) se disgustó de una manera que no me explico y la arremetió en contra del autor del artículo de MuyLinux, haciéndo mención a algunos errores que se habían cometido. Lo copio y pego textual por si algún día se elimina.
Es increible que cinco parrafos de articulo esten tan mal escritos. Las correcciones: 
#1 No uso el termino "GNU/Linux" en ningun sitio, quien lo usa es un imbecil. 
#2 En ningun lado dije que "dejaba definitivamente Linux". Hay que ser imbecil para llegar a esa conclusion. Uso Linux todos los dias en mis servidores. 
#3 El autor no se digno a leer la discusion con Linus y Alan. Ellos meramente se lavaron las manos de crear una cultura de "romper los APIs", que no tiene nadaque ver con la fragmentacion. O el autor es imbecil, o no sabe leer ingles. 
#4 Octubre 2012 no es 2011. Una prueba mas de que el poder de lectura y entendimiento del autor del articulo es pobre. O es un imbecil. 
#5 No olvido la historia de GNOME y KDE. Pero el autor -un imbecil- de alto grado parece ser que no sabe nada de la historia de Linux. O no recuerda que Linux estaba fragmentando antes de que GNOME y KDE existieran. En 1997 cuandoKDe y Gnome empezaron ya teniamos un sistema fragmentado. SLS, Slackware, la distro de HJ Lu, la distro de Texas AMU (TAMU), Yggdrasil, SUSE, Red Hat, Debian y otra docenita mas de no recuerdo. Con distintos libcs, distintos kernels y distintas aplicaciones. 
#6 No abandone Gnome por Mono. Mono fue un proyecto cuyo objetivo era crear mejores aplicaciones para Gnome. El autor o no sabe de lo que habla o es un imbecil. 
#7 La ultima version mayor de Mono no fue publicada en Octubre, fue publicada el 22 de Febrero. Con siete errores fundamentales para la historia que el autor pinta en cinco parrafos, solamente hay dos conclusiones posibles: o el autor no tiene escrupulos o es un perfecto imbecil.
Vale, en MuyLinux se cometieron unos cuantos errores, pero no le veo sentido a tratar de imbécil a cuanta persona se te cruza. YO USO el término GNU/Linux, ¿Soy un imbécil? No Miguel, no lo soy.

Además, leí la respuesta que MetalByte le escribió a Miguel de Icaza, una contraparte por sus insultos públicos. Leí el artículo y lo ví como una respuesta muy respetuosa, teniendo en cuenta que venían de unos insultos. ¿Qué sentido tenía seguir insultándose entre sí? Tal parece que para Miguel sí tenía mucho; leí el Tweet en el que MetalByte le avisaba sobre su respuesta, véanlo aquí.


Linda respuesta Miguel. ¿A qué estamos jugando? ¿Con qué finalidad se insulta a una persona que de una manera "normal" se está defendiendo ante unos insultos?
Reconozco que me caía bien, y de hecho compartía varias opiniones con Miguel; es más, no le señalo en ningún momento que se haya pasado a OSX, pero sí es reprochable la falta de humildad que tiene este tipo.
Para mí la humildad mata toda la calidad que tenga una persona, a nadie le gusta tratar con personas prepotentes, al menos no a mí. Pero lo que más me jode es la forma como generaliza su trato de imbéciles a todo aquél que no está de acuerdo o comparte una opinión con él.

Habrá que analizar quién es el imbécil Miguel, piensa en ello. Y si algún día lees esto (Que lo dudo), al menos tu respuesta no sea otra sarta de insultos.

Sábado 05 de enero de 2013

Comunidad DragonJAR: Curso de Asterisk

Jueves 20 de diciembre de 2012

Sebastián Rojo

Sebastián Rojo
Medellin Asterisk

Audacity, problema linea analogas

Hace días, no publicaba nada (ocupado con un proyecto bastante interesante, como era de esperar involucrado con asterisk). Este post se los debo hace varías semanas como solucionar problemas de colgado con en lineas análoga con la mejor herramienta de sonido OpenSource Audacity.

Por que de este post? Las líneas análogas existente varías formas de establecer el cuelgue de las llamadas atravez de la señalización, el problema radica en que hay muchas formas y en muchos casos hablando tanto nuevas instalaciones en telefonía ip y instalaciones de plantas telefónicas convencionales, tienen problema para detectar el cuelgue. para mas información les recomiendo estas lecturas.
Disconnect supervision
Asterisk Disconnect Supervision
busy tone
Plain old telephone service

La forma en que vamos a detectar el cuelgue sera gracias del Call-progress tone, ya este es mas general y esta presente cualquier linea analoga el problema radica en la falta de estandarizacion de este en la diferentes regiones de america latina. para mas informacion recomiendo este documento de la ITU, para el tone progress.

Manos a la obra. para conseguir el tono de cuelgue (Busy Tone) tenemos que encotrar 3 parámetros la frecuencia 1, la frecuencia 2 y la cadencia. Lo primero que debemos hacer es grabar el tono, a diferencia de como muchos piensan este no es tan dificil de grabar, ya que si tienes este problema del colgado de las lineas analogas, en la mayoria de los casos se ve reflejado en Buzones de voz llenos de este dichoso tono. si no lo tienes puedes grabarlo con un simple microfono.

luego de tener el tono(en . wav), lo abrimos con audacity y tendran algo como esto.





lo primero que haremos sera medir la cadencia, para esto debemos alinear el principio del tono al segundo cero, selecionamos la primera parte y le damos recortar.







Ampliamos con la herramienta de zoom asi podremos saber cuanto tiempo dura el tono y luego cuanto mide el silencio.







En esta imagen vemos claramente que el silencio y el tono miden 0.25 segundos cada uno.
La cadencia generalmente esta dada por un fraccionario, todos los equipos definen en que medidas.
ej. millisegundos 250/250 segundos 0.25/0.25
ahora obtendremos la frecuencia, con el tono señalado, utilizamos la herramienta.
Analizar----->Dibujar Espectro


















Nos paramos en el primer pico y el nos dice cual es la frecuencia. en este caso es 436 Hz
hacemos lo mismo con el segundo pico.
en este caso el segundo pico esta por el orden de -43db, esto quiere decir que es irrelevante,

este tono solo tiene una frecuencia.

Listo ya tenemos todos los datos necesarios, del busy tone.
Ejemplos de conflagración.

Grandstream.
Busy Tone: ch1-X:f1=436@-11,f2=436@-11,c=25/25;
la x depende del equipo de grandstream si es un gxw 4108 o un 4104, o no se pone ch para los handy tones.
NOTA: en los nuevos HandyTones 502 y 503 la cadencia se pone en millisegundos seria 250/250.

Sipura
Busy Tone: 436@-11,436@-11;10(.25/.25/1+2)

Si conocen mas ejemplos de conflagración del Busy tone dejen los comentarios.
Sebastián Rojo

Sebastián Rojo
Medellin Asterisk

Instalacion y configuracion del flash panel operator

Hoy les mostrare como instalar y configurar una de las mejores aplicaciones y mas distribuidas escritas especialmente para asterisk, es el Flash Panel Operator , de asternic o Nicolás Gudiño.


El Flash Panel Operator es una aplicación escrita en perl que se ejecuta en un navegador web con el plugin de flash. Es capaz de mostrar información de su PBX y actividad en tiempo real. El diseño es configurable (botones tamaños y colores, iconos, etc.). Puede tener más de 100 botones por pantalla activa.
Usted puede dar un vistazo a:
  • Qué extensiones están ocupados, timbrando o disponible.
  • Quien está hablando y con quién.
  • SIP y IAX información de registro, situación y accesibilidad.
  • Estado de Colas (número de usuarios en espera).
  • Indicador de mensajes en espera y contar
  • Parked channels
  • Agentes Identificados.
Para instalarlo necesitas tener conocimientos básicos en asterisk, tener instalado perl. configurar el manager.conf, y un servidor apache.

Instalación


Descargue la versión mas reciente, en la pagina de asternic en la esquina superior derecha esta el link de la versión mas reciente. al momento de escribir este post es esta. luego

Copiar los archivos en el subdirectorio flash a un lugar adecuado en su servidor web. Si su web raíz es /var/www/, puede crear un subdirectorio 'panel'

#mkdir/var/www/panel

y copia los archivos.

#cp flash/* /var/www/html/panel/.

luego de hacer esto. podemos empezar a configurar el servidor del panel.
primero configurar el manager del asterisk (/etc/asterisk/manager.conf).
debe estar habilitado.

Configurar Asterisk
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0

;debes agregar un usuario para tu panel.


[ELusuarioDELpanel]

secret = USpanelpass

deny=0.0.0.0/0.0.0.0

permit=127.0.0.1/255.255.255.0

;permit=192.168.0.0/255.255.255.0 ;SI TU PANEL NO VA ESTAR EN EL MISMO SERVER.

read = system,call,log,verbose,command,agent,user

write = system,call,log,verbose,command,agent,user


Configurar el fop server.


Editar op_server.cfg y cambiar los parámetros apropiados para su configuración.

manager_host es el nombre de host o dirección IP de su Asterisk. si esta en el
mismo server es 127.0.0.1.

manager_user es la definida por el usuario en manager.conf (a raíz de este ejemplo de
configuración, debe
ser "ELusuarioDELpanel"(sin las comillas))
manager_secret es el secret definido para el usuario (a raíz de este ejemplo de
configuración, debe
ser "USpanelpass"(sin las comillas))
security_code es el código para desbloquear el panel.

Editar op_buttons.cfg que se adapte a sus necesidades. La sintaxis es similar a los
archivos de configuración de asterisk. debemos crear aquí las extensiones que queremos
monitorear.

ej:


[SIP/100]
Position=1
Label="100 : peranito"
Extension=100
Context= dafult ;si estas usando freepbx debe ser from-internal si estas
;usando solo asterisk debes poner un contexto valido
Icon=4
Voicemail_Context=default
VoiceMailExt=*101@default
;si estas usando freepbx debe ser
;*101@from-internal si estas usando
;solo asterisk debes poner un contexto valido


Panel_Context=default
[SIP/101]
Position=2
Label="101 : fulanito"
Extension=101
Context= dafult
Icon=4
Voicemail_Context=default
VoiceMailExt=*101@default


Panel_Context=default



etc....

para monitorear alguna troncal

ej:


[SIP/myprovider]

Position=20-30

Label="SIP TRUNK"

Extension=-1

Icon=4



[Zap/1]

Position=52

Label="Zap 1"

Extension=-1

Icon=3

Panel_Context=default


Configurar el estilo.


Editar op_style.cfg para cambiar el diseño visual. Puede cambiar el tamaño de los botones,
los colores, la colocación de los iconos, el tamaño. etc...
usted puede tener más de 100 botones
en la pantalla.

esta sección la puedes poner al gusto, aqui les dejo un ejemplo(125 botones).


[general]

shake_pixels=2

dimm_noregister_by=20

dimm_lagged_by=60

enable_label_background=0

enable_crypto=1 ; set to 1 for encrypting server to client traffic

enable_animation=1

use_embed_fonts=1

ledcolor_ready=0x00A000

ledcolor_busy=0xA01020

ledcolor_agent=0xD0d020

label_font_size=8

label_font_family=Verdana ; only valid when use_embed_fonts is disabled

label_font_color=000000

label_shadow_color=dddddd

label_margin_top=0

label_margin_left=35

label_shadow=1

clid_font_color=00dd00

timer_font_color=4000ff

clid_font_size=8

clid_font_family=Verdana ; only valid when use_embed_fonts is disabled

clid_margin_top=11

clid_margin_left=35

timer_font_size=8

timer_font_family=Courier ; only valid when use_embed_fonts is disabled

timer_margin_top=11

timer_margin_left=160

btn_width=195

btn_height=20

btn_padding=2

btn_line_width=1

btn_line_color=0x000000

btn_fadecolor_1=ccccff

btn_fadecolor_2=ffffff

btn_round_border=1

btn_highlight_color=ff0000

led_scale=60

led_margin_top=10

led_margin_left=20

arrow_scale=60

arrow_margin_top=5

arrow_margin_left=5

icon1_margin_top=10

icon1_margin_left=-15

icon1_scale=5

icon2_margin_top=10

icon2_margin_left=-15

icon2_scale=5

icon3_margin_top=10

icon3_margin_left=-15

icon3_scale=5

icon4_margin_top=10

icon4_margin_left=-15

icon4_scale=5

icon5_margin_top=10

icon5_margin_left=-15

icon5_scale=5

icon6_margin_top=10

icon6_margin_left=-15

icon6_scale=5

mail_margin_left=-40

mail_margin_top=13

mail_scale=4

show_security_code=1

show_clid_info=0

show_btn_help=3

show_btn_debug=0

show_btn_reload=2

show_status=4

inicial el server.
darle permisos de ejecución al op_server.pl.


#chmod a+x op_server.pl

lo puedes poner /usr/local/sbin/ para llamarlo en cualquier momento desde consola o en el
directorio correcto darle.


#./op_server.pl

y listo, ya tienes andando el flash operator panel.


lo puedes ver en http://x.x.x.x/panel

para utilizar las funcionalidades del panel lo tienes que desbloquear. la contraseñas es la que
pusiste en security_code en op_server.cfg.

espero les sea de gran ayuda.

enlace. http://www.asternic.org/