Lunes 19 de noviembre de 2018

Jhosman Lizarazo

Jhosman Lizarazo
Jhosman.com

Construir Amazon Echo -Alexa- con una RaspberryPi

FullSetupAlexa es un asistente virtual desarrollado por Amazon, utilizado por primera vez en los altavoces inteligentes Amazon Echo y Amazon Echo Dot creados en Amazon Lab126. Cuenta con la capacidad de interactuar a través de la voz, reproducir música, crear listas de tareas pendientes, establecer alarmas, reproducir podcasts, reproducir audiolibros y proveer información en tiempo real del clima, tráfico y noticias entre otros. Alexa puede también controlar varios dispositivos inteligentes tomando el rol de sistema de automatización del hogar (domótica). Los usuarios pueden extender las habilidades de Alexa instalando “skills” (funcionalidades adicionales desarrolladas por terceros) que se asemejan a “apps”.

Para construir nuestra Alexa necesitamos:

  • Rasberry Pi 3B p 3B+
  • ReSpeaker 2 Mics Pi HAT (Comprar aquí)
  • Parlantes
  • Teclado
  • Mouse
  • Pantalla con soporte HDMI

 

Paso 1) Primero (recomendamos hacer la instalación con la imágen de disco de seeed que puede descargar en aquí, si deseas usar la imágen oficial de raspberry, puedes seguir con la oficial, aunque puedes tener problemas con el Kernel) debemos instalar Raspbian con Noobs (versión Desktop), por lo cual puede seguir la siguiente documentación: https://www.raspberrypi.org/documentation/installation/noobs.md y finalmente realizamos conexión a nuestra red de Internet. Y luego cambiamos los repositorios que allí ya trae por los oficiales de Raspbian en el archivo /etc/apt/sources.list

deb http://archive.raspbian.org/raspbian stretch main contrib non-free
deb-src http://archive.raspbian.org/raspbian stretch main contrib non-free

Luego adicionamos la llave de los repositorios y actualizamos nuestro sistema:

wget https://archive.raspbian.org/raspbian.public.key -O - | sudo apt-key add -
sudo apt update
sudo apt dist-upgrade
reboot

Paso 2) Ahora que nuestro dispositivo tiene conectividad a Internet, abra un terminal y verificamos que debe aparecer en el directorio /home/pi. Copie y pegue el siguiente comando en la ventana de su terminal y presione Enter.

wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh

Paso 3) Creamos en el directorio /home/pi un archivo llamado config.txt y le agregamos el siguiente contenido:

DEVICE_SERIAL_NUMBER="123456"
CLIENT_ID=""
PRODUCT_ID=""

config

Paso 4) Es hora de copiar y pegar las credenciales de su producto en su archivo de configuración. En su navegador web, ingrese al panel de AVS Amazon donde puede ver todos sus productos asociados con su cuenta de desarrollador. Si ha cerrado sesión, vuelva a iniciar sesión y haga clic en el enlace de la Consola de desarrollador en la esquina superior derecha de su navegador. Luego haga clic en el botón “SERVICIO DE VOZ DE ALEXA” en la navegación para regresar a su AVS Console. Ingresamos a la opción CREATE PRODUCT y llenamos los campos con la siguiente información:

Product Name: RaspberryPi
Product ID: RaspberryPi
CHECK en Device with Alexa built-in
Will your device use a companion app: No
Product category: Other
Brief product description: RaspberryPi
How will end users interact with your product: CHECK in Touch-initiated & Hands-free
Do you intend to distribute this product commercially: No
Will your device be used for Alexa for Business: No
Is this a children’s product or is it otherwise directed to children younger than 13 years old: No

Presionamos la opción Next y luego presionamos en CREATE NEW PROFILE, en los dos campos que aparecen colocamos: RaspberryPi y NEXT

Luego aceptamos términos y condiciones (si estás de acuerdo, claro está) CHECK en I agree to theAmazon Developer Services Agreement,including theAlexa Voice Service Program Requirements.  Y presionamos la opción FINISH

Paso 5) Abrimos el archivo config.txt y en los campos en cuestión colocamos:

PRODUCT_ID="RaspberryPi"
CLIENT_ID=VER_SIGUIENTE_IMAGEN

Haga clic en el enlace Perfil de seguridad en la sección Detalles y administración, luego vaya a Otros dispositivos y plataformas desde la Web – Android / Kindle – iOS – Otras opciones de dispositivos y plataformas.

Profile

El archivo debería quedar algo como lo siguiente, guardamos cambios…

DEVICE_SERIAL_NUMBER="1234"
CLIENT_ID="amzn1.application-oa2-client.12345678901234567890123456789012"
PRODUCT_ID="RaspberryPi"

Adicionalmente descargue el archivo de configuración JSON que ofrece AVS de Amazon, y ubíquelo en el mismo directorio /home/pi/

Paso 6) Abre la terminal y coloca el siguiente comando, está pendiente de la shell ya que hará algunas preguntas donde deberemos aceptar, este proceso de compilación tardará algún tiempo… así que paciencia…

cd /home/pi/
sudo bash setup.sh config.json [-s 123456]

Luego hará una pregunta, escribimos AGREE y continuamos el proceso, al final visualizaremos lo siguiente, si todo salió en orden:

Complete

 

Ahora solo necesitaos iniciar la aplicación de muestra y obtener un token de actualización de AVS para que su dispositivo pueda autenticarse con la nube a través de Iniciar sesión con Amazon (LWA). Para ello colocamos el comando:
cd /home/pi/
sudo bash startsample.sh

Ingresamos ahora al sitio https://www.amazon.com/a/code e ingresamos el Token de autorización que nos ha proporcionado el Script.

Nota: Si la ventana de su terminal muestra repetidamente el mensaje de verificación de autorización, desplácese hacia arriba hasta que encuentre el código requerido. Debe mantener la aplicación de muestra en ejecución mientras ingresa el código.

CBL

Para finalizar y empezar a hablar con Alexa, colocamos el siguiente comando:

sudo bash startsample.sh

Para cambiar el idioma presionamos la tecla ‘c’ y seguimos los pasos que el asistente indica. Feliz Hacking!  Puedes configurar otras opciones más en: https://alexa.amazon.com/spa/index.html

Domingo 30 de septiembre de 2018

Carlos Andrés Roldán

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

Escencia del lobo

La mayoria se identifica con algun animal en particular que va a corde con su naturaleza , este puede ser desde un animal de leyenda hasta un animal terrenal , a esto se le llama el totem animal o animal simbolo que nos identificamos por sus caracteristicas . 

En mi caso el animal con el que me siento mas emparentado es el Lobo , por muchos motivos , pero cuando me preguntan que caracteristicas tienen los lobos ..creo que la explicacion se vuelve un poco incoherente .pero intentare dar una explicacion basada tanto en mi experiencia como en aquellos que me han dicho se sienten identificados con el totem animal del lobo 

asi como todo en la naturaleza no se puede juzgar por bueno o malo ciertas caracteristicas inherentes a la personalidad de un lobo , sino que se basa en buscar el equilibrio de su propio ser . 

Los lobos por lo general son personas que analizan constantemente su medio y su ambiente a fin de tener una respuesta constante a lo que le rodea , su constante inquisitoria del ambiente los hace excelentes guias en epocas de confusion espiritual , pero tambien nos hace manipuladores y ambiciosos al buscar mas alla siempre de los limites que nos establecen , tanto en amistad como amor . 

somos personas capaces de realizar proesas que para los demas parecen imposibles pero solo es por que guardamos secretos que nos permiten realizar esa tarea, dependiendo de la voluntad que posea asi sera de grandes sus actos , pero tambien tiene como consecuencia que si son guiados por la voluntd de odiar sus efectos casi siempre son altamente destructivos 

La habilidad manipuladora con que contamos pueden ser usadas para el bien o para el mal , lo mismo podemos decir las palabra exactas que dan con la solucion del espiritu que manipular a una persona para que piense ciertas ideas como propias . 

Si un lobo te ama , no dejara de hacerlo tan facil , salvo que lo traiciones , en ese caso su dolor sera tan inmenso como su colera y es dificil esperar compasion de algo asi , pues su dolor le impedira ver algo mas que la destruccion y creanlo o no ..tienen el poder de destruir mentalmente a quien sea necesario . 

Es dificil que un lobo se enoje hasta ese punto , pero si llegara a ocurrir somos arrogantes y no dudamos en demostrarlo ante aquel que se considere un enemigo la unica forma de perdon es que se demuestre humildad ante uno , con lo cual el lobo criatura por demas noble actuara al nivel de quien es su enemigo y sabra perdonar . 

somos humildes por naturaleza pero orgullosos por derecho , somos orgullosos de los actos que realizamos con el corazon , y aun el mas cruel de los lobos sabra tratar con respeto a su enemigo si este demuestra estar a su nivel . 

Cuando aman llegan al punto de la arrogancia por pensar que son mejores que los demas , conocemos muchas cosas que los demas no comprenden siquiera y a veces eso es nuestra debilidad . 

Eso es ser un lobo ..una criatura cuya forma de pensar siempre se debate entre la mas negra maldad y la forma mas absoluta de pureza mental , buscando el equilibrio del punto medio .. 

No nos dejamos llevar por la bondad absoluta pues sabemos que no existe , pero tampoco por la furia iracible del odio que no nos puede dar mas que dolor . 

Existimos en el balance de las cosas , guiamos a quien neceista guia , sufrimos en silencio el dolor a menos que este dolor sea necesario para continuar , odiamos pocas veces pero las veces que lo hacemos lo haremos sin perdon de nadie por que no necesitamos ser perdonados por nadie mas que por nosotros mismos . 

No damos un paso atras en nuestrso actos cunado sabemos que nuestros actos son de fe , continuamos hasta el final incluso si sabemos que sera doloroso , por orgullo , por amor o por ambicion un lobo real no se detiene a menos que haya una causa mayor para su existencia . 

Buscamos el comprender las cosas , comprendemos las cosas y nos duelen , pero seguimos aprendiendo por que asi es nuestra naturaleza , a veces herimos a las personas con la sinceridad que nos caracteriza , a veces dejamos que crean que pueden manipularnos si el fin nos lo justifica ..pero eso es un engaño .. 

Cuando hace una promesa buscara la manera de cumplirla , pues no solo hace una promesa , empeña su orgullo al hacerla , pero no se engañen , los lobos no prometen al momento o segun la curcunstancias , hacen la promesa a la persona y solo a la persona y si se hace indigna de dicha promesa no dudara en dejarla a su suerte aun si eso signifique ser su enemigo jurado . 

Amar a un lobo implica conocer el cielo y el infierno en un instante , pocas personas pueden hacerlo sin tener la madurez mental y emocional para hacerlo... 

somos lobos por naturaleza pero humanos por eleccion..eso es ser en escenia un lobo en espiritu.

Sábado 28 de julio de 2018

Carlos Andrés Roldán

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

Feliz dia del SysAdmin


Saludos .

El presente POST es para desearle un feliz día a todos esos SysAdming que hay en el mundo, les envío a través de este post un cordial saludo, un cálido abrazo y les deseo lo mejor.

Además de decirles que no abandonen el espíritu HACKER que llevan dentro, señores … no olviden que no estamos solos ….

Buen día para todos los SysAdmin !!!



Viernes 08 de junio de 2018

Carlos Andrés Roldán

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

Antes de casarte Con Un Hacker mira estos consejos

Saludos ..


Este es un articulo publicado por un grupo de Hacktivistas Colombianos llamados:  DragonJAR .... hay les dejo .... 



{  Start

Siempre que escribimos un artículo relacionado al verdadero sentido de la palabra hacker, debemos hacer la aclaración de que un hacker no es un pirata informático que hace virus, comete delitos y rompe sistemas de seguridad como la prensa nos ha pintado desde los años ochenta.


Según establecen las primeras personas que se autodenominan de esa manera, los hackers son personas que disfrutan de su inteligencia con un espíritu juguetón. Muchos piensan que todos los hackers son informáticos; sin embargo, a partir de la definición antes expuesta los creadores del término afirman que cualquier persona independientemente de su profesión puede ser un hacker. Por esto consideran a Newton y a Beethoven como hackers.



Casarte con un hacker es como casarte con un hombre con un hijo, al cual debes de respetar. Ese hijo es la pasión por crear soluciones a los problemas que les rodean. Richard Stallman, reconocido hacker de la generación de los hackers del MIT afirma que tiene un hijo de 31 años que ocupa todo su tiempo y que por ende no tiene tiempo para tener más hijos. Ese hijo es su mayor creación , el sistema operativo GNU el cual inició en el año 1983 y que todavía continúa desarrollando.

Si estas saliendo con un hacker y te estás preguntando si esta persona es la ideal para compartir el resto de tu vida, hay diez cosas que debes saber.

Respeta su pasión: Los hackers tienen una pasión desbordante por crear soluciones a los problemas que les rodean. Tienes que estar dispuesta a entender su pasión y a aceptarla de lo contrario solamente estarías haciendo infeliz a un hacker y probablemente a ti misma.

Los hackers piensan todo el tiempo en los proyectos creativos que están desarrollando, no esperes que simplemente dejen todo lo que están haciendo cuando llegues a la casa solo para que te presten atención. Algunos pudieran lograr hacerlo, pero se sentirían muy infelices y solo estarían esperando con ansias el momento en que te duermas o salgas de la casa para seguir trabajando en ese gran proyecto tan apasionante.

Nunca le pidas a tu pareja que invierta menos tiempo en su pasión y que te dedique más tiempo a ti, los hackers creen en un sistema llamado meritocracia, significa que las cosas se ganan con el mérito, de modo que en vez de pedirle que te dediquen más tiempo demuéstrale que mereces más tiempo con él, demuéstrale las cosas apasionantes y divertidas que pueden hacer juntos.

No creas que podrás chantajearlo con sexo: Es común que las mujeres puedan lograr que sus esposos hagan prácticamente lo que ellas quieran restringiéndole el acceso al sexo. Esto funciona en muchos casos, pero esto no funcionaría con un Hacker. Los hackers consideran que el deseo sexual es un mecanismo vestigial y obsoleto que nuestros ancestros necesitaban para incentivarlos a reproducirse pero que hoy día en un mundo sobrepoblado ya no es necesario y tener sexo solo por placer es una pérdida de tiempo. Eric Raymond en su famoso artículo cómo convertirse en hacker publicado en el año 2001 recomienda a las personas que desean convertirse en hacker que no permitan que distracciones como el sexo, el dinero y la aprobación social los desenfoquen de su pasión.

Busquen cosas que les guste hacer juntos: Un hacker es una persona altamente creativas, si pasa mucho tiempo sin crear algo, se siente vacío, siente que está perdiendo el tiempo hasta llegar a momentos de depresión. No esperes que el tiempo que pasen juntos sea solamente yendo al cine , viendo televisión en casa o haciendo actividades banales. Explora actividades creativas que te guste realizar con tu Hacker, ya sea jugar al ajedrez, programar juntos, soldar circuitos juntos, configurar un nuevo gadget juntos etcétera.

No lo sometas a rutinas repetitivas: Si quieres hacer infeliz a un hacker somételo a una rutina. Por el contrario si quieres mantenerlo contento intenta cosas nuevas constantemente, haz que cada día sea una aventura interesante y despierta su pasión por descubrir cada nuevo detalle. No le impongas que vaya al supermercado el mismo día de la semana a comprar lo mismo para almorzar y cenar lo mismo durante toda la semana, no le pidas tener sexo a la misma hora y los mismos días utilizando las mismas posiciones.

La inspiración no tiene hora: La inspiración puede venir en cualquier momento, ya sea en horario laboral, de madrugada , o mientras tu hacker está dormido. No le reproches si se despierta de madrugada a trabajar en su magnífica idea, no le reproches si se pasó trabajando todo el fin de semana que pasó en casa de tu madre, la inspiración no tiene hora y limitar las horas en las que está permitido crear sería una gran traba en la labor creativa de un hacker y por ende en su realización personal y profesional.

Préstale atención cuando te hable de sus proyectos: Los hackers con frecuencia hablan sobre los proyectos en que están trabajando, aún cuando su interlocutor no es una persona técnica. Sucede que cuando explican el problema que están intentando solucionar muchas veces es más fácil encontrar la solución al mismo. Préstale atención cuando eso pase, no lo interrumpas ni te duermas. Intenta ayudarlo a solucionar el problema, ya que solo con escucharlo lo estás ayudando.

Prepárate para aprender: Un hacker siempre aprende cosas nuevas y muchas veces las querrá compartir contigo. Si no te gusta aprender cosas nuevas tu hacker se llegará a cuestionar si realmente tu eres la pareja correcta para él.

No intentes controlarlo: Los hackers son personas revolucionarias, libres por naturaleza, rebeldes en contra del sistema, no están de acuerdo de cómo las cosas funcionan y por eso las quieren hacer mejor. Por ende no intentes controlarlos, no invadas su privacidad, no le des órdenes, pues solo desatarías su insatisfacción y rebeldía hacia ti.

Respeta a sus amistades: He conocido hackers cuyas esposas nunca se juntan con los amigos de sus esposos por considerarlos bobos, esto tiene un impacto negativo en un hacker porque evidentemente , cada oveja se junta con su pareja, decirle bobo a los amigos de tu esposo es decirle bobo a tu marido.

Los hackers tienen hábitos extraños: Que no te tome por sorpresa que tu hacker tenga un hábito fuera de lo común, mayormente son hábitos inofensivos, pero este tipo de conducta los hace sentir diferente a los demás. Por ejemplo, conozco un hacker obsesionado con los números primos, se casó un día del mes primo, solo compra cantidades primas de artículos cuando va al supermercado etcétera.El fallecido cantante Kurt Cobain una vez dijo ellos se ríen de mi porque soy diferente, yo me río de ellos porque son todos iguales.

}   End

Viernes 04 de mayo de 2018

Jhosman Lizarazo

Jhosman Lizarazo
Jhosman.com

Hacer root en Xiaomi Redmi Note 4 Version Global Qualcomm

xiaomi

Ser usuario root implica tener más permisos que el resto de usuarios. Por lo general, para tener estos permisos avanzados vamos a tener que modificar nuestro sistema operativo. Todos los sistemas Android que los fabricantes incluyen en nuestros terminales no tienen acceso root por defecto para garantizar la seguridad del usuario. El proceso es muy sencillo, solo basta con seguir unos pocos pasos, eso si antes de iniciar se recomienda sacar copia de seguridad de tus datos. No me hago responsable por los fallos que puedas tener en el proceso, esto lo realizarás bajo tu responsabildad.

Archivos Necesarios:

Requisitos:

Paso 1

Copiar el archivo lazyflasher-no-verity-opt-encrypt.zip y el ZIP de Super SU (ZIP) en la raiz de nuestra memoria en el teléfino, Descomprimir Mi Unlock, iniciar el teléfono en modo fastboot (Vol – y Power) conectar vía USB y seguir los pasos de la aplicación Mi Unlock

Paso 2

Teniendo el teléfono en modo fastboot debes colocar el siguiente comando:

fastboot flash recovery twrp-nombrearchivo.img

Paso 3

Iniciar modo recovery TWRP (Power Vol + y Power) y desde allí ir al apartado de instalación e instalar lazyflasher-no-verity-opt-encrypt.zip y el ZIP de Super SU (ZIP).

Paso 4

Disfrutar de los poderes root

 

Si tienes algún problema durante el proceso o el teléofno no inicia deberás reinstalar todo el sistema operativo del teléfono, para ello debes descomprimir todos los archivos descargados para “★ Redmi Note 4 Qualcomm Latest Global Stable Version Fastboot File Download” abrir la App MIUI ROM Flashing Tool y teniendo el teléfono en modo Fastboot debemos buscar la ruta de los archivos que hemos descomprimido e iniciar dede la App la restauración.

recovery

Martes 20 de marzo de 2018

Alejandro Torres

Alejandro Torres
Voipers Network

BITRIX CRM en la nube

Las plataformas de comunicaciones en la nube se han vuelto elementos fundamentales en la producción de las empresas. La integración con plataformas de información ya es requisito fundamental de la plataforma de comunicaciones.

Buscamos que las diferentes soluciones se integren entre ellas construyendo, soluciones más complejas, por eso representamos técnica y comercialmente la solución de Bitrix

Bitrix es una solución de CRM muy funcional y integrable con 3CX.  Ambas soluciones juntas, pueden suplir las necesidades que tiene una empresa de comunicaciones, mensajería y colaboración.

así que si necesitas un CRM que trabaje muy bien con tu 3CX y este lleno de funciones, bitrix es una solución que deberías tener en cuenta.

sigue este enlace y podrás tener tu bitrix, totalmente integrable con 3CX, claro esta que el 3CX, tiene que estar en version pro

 Prueba BITRIX

Lunes 29 de enero de 2018

Alejandro Torres

Alejandro Torres
Voipers Network

Certificaciones 3CX

Las certificaciones son uno de los métodos utilizados por los fabricantes para mostrar a clientes y usuarios, que están siendo atendidos por personal capacitado, que les dará las soluciones adecuadas a sus necesidades.

Para mostrar nuestro compromiso con los clientes, la tecnología y el fabricante 3CX, renovamos nuestra certificación.





Confiamos en la tecnologia de 3CX, para brindar a nuestros clientes, las mejores soluciones de voz sobre IP, telefonía IP y comunicaciones unificadas.


Viernes 15 de diciembre de 2017

Jhosman Lizarazo

Jhosman Lizarazo
Jhosman.com

Instalar Android Oreo (Testing) en Xiaomi A1

Android One

DISCLAIMER: No me hago responsable por los daños que pueda tener tu teléfono o brickeos, esto lo harás bajo tu responsabilidad

La instalación es muy sencilla, necesitamos lo siguiente:

  1. Tener instalado adb y fastboot en nuestro equipo
  2. Archivos necesarios, incluye: bootloader, Android Oreo for Xiaomi A1 y Recuperación de sistema Stock ROM by Xiaomi: https://goo.gl/c7JUP6

Para iniciar recomiendo tomar backup de TODA la información que tengas en el teléfono, descomprimir la carpeta que está en el link anterior y navegamos por shell o cmd hasta dicha carpeta, una vez realizado esto ponemos el teléfono en modo fastboot (Power y Vol – por 5 segundos) una vez conectado por USB colocamos los siguientes comandos:

fastboot oem unlock
fastboot boot recovery-3.1.1-1.img

Luego de estar dentro del TWRP debes seguir TODOS los siguientes pasos:

  • Seleccionar la opción de backup y hacer backup de la partición mas pequeña
  • Copiar y pegar (desde el PC) la carpeta (archivo bajado anteriormente) [UNNOFICIAL] AOSP OREO – tissot  dentro de la ruta TWRP/Backup/ipdelbackup/ (del celular) y eliminar el archivo que esté antes de copiar nuestro nuevo directorio (en el celular)
  • Regresar al inicio del TWRP y hacer Wipe a: Data, System, Caché
  • Regresar al inicio y restaurar [UNNOFICIAL] AOSP OREO – tissot
  • Disfrutar Android Oreo -Es posible que el boot tome algunos minutos, si va mas de 10 minutos y no inicia, forzar el reinicio manualmente –
Android Oreo

Enjoy!

 

Listo #AndroidOreo #XiaomiA1

Una publicación compartida de Jhosman Lizarazo (@namsohj) el

Lunes 04 de diciembre de 2017

Alejandro Torres

Alejandro Torres
Voipers Network

CAPACITACIÓN EN SERVICIOS EN LA NUBE

Siempre buscamos trabajar con lideres de la industria para mejorar nuestros productos y servicios y en este caso estamos en capacitación con amazon, el líder y pionero de la industria.


Lunes 26 de junio de 2017

¿Realmente te conoce? –AdsBlock

Este post nace a través de este enlace Dataselfie, conociendo al Algoritmo de Facebook y su Machine Learning. en el que hablan de como funciona el proceso de la publicidad que te sale en facebook,  a través del tiempo ya has dibujado tu perfil en facebook sea por búsqueda o por likes todo lo que hagas dentro de esa red social te va a salir, luego que ya saben que es lo que te gusta te empiezan a mandar publicidad acorde a ella, nunca se habían realizado esa pregunta ¿Por que me sale esto?. si quieren conocer que facebook sabe mas que ustedes tranquilamente, pueden abrir  este enlace Preferencias Ads en Facebook

El cual con la sesión abierta de facebook, desglosan en Intereses, y veras todo tus gusto, lo que por alguna razón buscaste o le diste por omisión. Ahí te conocerás realmente que es lo que te gusta.

Ya que donaste los datos, que puedo hacer.

Lo mas sensato es darse de baja de una red social donde juegan con tu información. si quieres seguir usándolo lo mas lógico seria usar AdsBlock  que lo puedes instalar en firefox y chrome, no vas a ver mas publicidad pero igual en cualquier momento que abras un enlace vas a empezar a crear nuevamente tu perfil.

Hace años 10 años una persona que respeto me compartió este video sigue vigente creemos que los servicios que usamos son gratis realmente.
https://www.youtube.com/watch?v=6bYLRGS3vFs

 

 

 

 

 

 

 

 

 

Domingo 25 de junio de 2017

Activar/desactivar registro de usuarios en WordPress

Registro WordPress

La solución es de forma inmediata, dentro del Escritorio (al que accedas administración del WordPress), le vas hacer click en  a Ajustes, Generales y activas o desactiva el checkbox de: Cualquiera puede registrarse. depende para lo que requieras.

Si lo que tienes  problema con usuarios que se registran y en realidad son robots o personas spammers, usa el plugin que mencione anteriormente  http://blog.julioh.com.ve/?p=476 en el cual se hace ocultar la url de wp-admin  otra forma es usando .httpass dentro de los directorios y bloqueando su acceso, o en su momentos podrías saber cual es tu ip para indicarle desde donde te conectas por ejemplo algo así.


order allow,deny
deny from 8.8.8.8
deny from 8.8.8.9
allow from all

Sábado 24 de junio de 2017

Seguridad en WordPress , Garantizar el acceso a wp-admin

WordPress por ser un CMS mas usado pues tienes vulnerabilidades y necesitamos blindarlo en seguridad y que mejor usando plugins para que no tengas una mala experiencia.

Esta es una de esas en la cual la ruta  ../wp-admin/ la remplazas para evitar acceso a ella.

En el caso el plugin WPS Hide Login no vas a eliminar /wp-login.php o /wp-admin , pero si lo va remplazar para no sea visible y colocaremos una url que solo sabremos nosotros.

Lo buscamos  WPS Hide Login en plugins  haz clic en Instalar y posteriormente en Activar.

En el plugin accede a Ajustes, Generales y establece la palabra de paso que sustituirá al clásico:

wp-admin por no-vasaentrar guardas los cambios y pruebas.

Configuración del plugin

Cuando intentas acceder a  http://tu-dominio.com/wp-admin
Te dará un 404 not found

De igual forma  también para  /wp-login.php no existen.

 

Prueba de acceso incorrecta

Si por el contrario pones la url de tu dominio con la palabra de paso establecida:

http://tu-dominio.com/?no-vasaentrar

Te va a salir tu panel para acceder, que se busca con esto, evitar ataques de diccionario, evitar suscripciones y proteger tu CMS de la mejor manera.

si por casualidad no te acuerdas de la url, puedes borrar el plugin en la carpeta wp-content y vuelve a la ruta original

 

Sábado 04 de marzo de 2017

Camilo Uribe

Camilo Uribe
Random Thoughts

Taller instalacion de quotas en ubuntu para la unad

En la instalación de ubuntu dejar por aparte /var y /home

Luego que el sistema este instalado:
sudo apt-get install quota
sudo nano /etc/fstab
    en la linea home cambiar defaults por: defaults,usrquota,grpquota
sudo mount -o remount,rw /home
sudo quotacheck -cgum /home
ls /home
sudo edquota -u usuario
sudo quotaon -a

Miércoles 15 de febrero de 2017

Comunidad DragonJAR: DEFT (Digital Evidence & Forensic Toolkit)

Domingo 12 de febrero de 2017

Bryan Stiven López Chaparro

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

Así era la Frontera Entre EEUU Mexico Hace 100 años

Lunes 06 de febrero de 2017

Bryan Stiven López Chaparro

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

No Vas A Creer Lo Que Le Paso A Este Perro

Domingo 08 de enero de 2017

David Moreno

David Moreno
dm's blog

Thanks Debian

I sent this email to debian-private a few days ago, on the 10th anniversary of my Debian account creation:

Date: Fri, 14 Aug 2015 19:37:20 +0200
From: David Moreno 
To: debian-private@lists.debian.org
Subject: Retiring from Debian
User-Agent: Mutt/1.5.23 (2014-03-12)

[-- PGP output follows (current time: Sun 23 Aug 2015 06:18:36 PM CEST) --]
gpg: Signature made Fri 14 Aug 2015 07:37:20 PM CEST using RSA key ID 4DADEC2F
gpg: Good signature from "David Moreno "
gpg:                 aka "David Moreno "
gpg:                 aka "David Moreno (1984-08-08) "
[-- End of PGP output --]

[-- The following data is signed --]

Hi,

Ten years ago today (2005-08-14) my account was created:

https://nm.debian.org/public/person/damog

Today, I don't feel like Debian represents me and neither do I represent the
project anymore.

I had tried over the last couple of years to retake my involvement but lack of
motivation and time always got on the way, so the right thing to do for me is
to officially retire and gtfo.

I certainly learned a bunch from dozens of Debian people over these many years,
and I'm nothing but grateful with all of them; I will for sure carry the project
close to my heart — as I carry it with the Debian swirl I still have tattooed
on my back ;)

http://damog.net/blog/2005/06/29/debian-tattoo/

I have three packages left that have not been updated in forever and you can
consider orphaned now: gcolor2, libperl6-say-perl and libxml-treepp-perl.

With all best wishes,
David Moreno.
http://damog.net/


[-- End of signed data --]

I received a couple of questions about my decision here. I basically don’t feel like Debian represents my interests and neither do I represent the project – this doesn’t mean I don’t believe in free software, to the contrary. I think some of the best software advancements we’ve made as society are thanks to it. I don’t necessarily believe on how the project has evolved itself, whether that has been the right way, to regain relevancy and dominance, and if it’s remained primarily a way to feed dogmatism versus pragmatism. This is the perfect example of a tragic consequence. I was very happy to learn that the current Debian Conference being held in Germany got the highest attendance ever, hopefully that can be utilized in a significant and useful way.

Regardless, my contributions to Debian were never noteworthy so it’s also not that big of a deal. I just need to close cycles myself and move forward, and the ten year anniversary looked like a significant mark for that.

Poke me in case you wanna discuss some more. I’ll always be happy to. Specially over beer :)

Peace.

Jueves 08 de diciembre de 2016

Bryan Stiven López Chaparro

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

Hombre VS Canguro | Final Inesperado [Recomendado]





Increíble Vídeo un Hombre Peleando con un Canguro, le mete su puñetazo in the face... El final esta de película.

Viernes 04 de noviembre de 2016

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

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!

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+

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



Lunes 20 de abril de 2015

Guillermo Morales

Guillermo Morales
lobo

soy una perra

soy la mas puta

Domingo 30 de noviembre de 2014

Rodrigo Carreño

Rodrigo Carreño
Rodrigo C@rreño

Limpiador de paginas web

Winclear - History Eraser

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.



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

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:

 

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

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

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.

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/

Sebastián Rojo

Sebastián Rojo
Medellin Asterisk

El Freepbx (parte 1)

El Freepbx es un proyecto Open source, que facilita la administración de un sistema asterisk, es un GUI web, con la características que con un par de cliks, ya tendremos extensión creadas y listas para ser utilizadas(tanto llamadas entrantes, como salientes). este se encargara de crear todos los cambios necesarios en los archivos de configuracion del asterisk /etc/asterisk/*. La función principal es crear nuestro extensions.conf, este archivos es el encargado de todo el dialplan.

Al crear una extensión, el Freepbx también nos modificara los archivos sip_additional.conf y iax_additional.conf, este nos creara directamente los parámetros por dafault, eseptuando el secret.

y esto para mi gusto seria la gran falencia de este. miremos un ejemplo.


tendríamos que llenar lo siguiente.

Sábado 30 de junio de 2012

Juan Esteban Henao

Juan Esteban Henao
MachGeek

Interprete de JavaScript en Debian

SpiderMonkey es un motor de JavaScript mantenido por Mozilla y usado en su navegador web (Firefox).

aptitude install spidermonkey-bin

Lo inician con

1

t384nh3@BPT ~ $ js

2

msjs

3

js /ruta/archivo.js

Codigo fuente: developer.mozilla.org

Sábado 18 de febrero de 2012

Juan Esteban Henao

Juan Esteban Henao
MachGeek

Could not load file or assembly ‘Mono.Addins’

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.
File name: 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'
  at MonoDevelop.Startup.MonoDevelopMain.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies.
File name: 'Mono.Addins, Version=0.6.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'
  at MonoDevelop.Startup.MonoDevelopMain.Main (System.String[] args) [0x00000] in <filename unknown>:0 
Missing method get_IsInitialized in assembly /usr/lib/monodevelop/bin/MonoDevelop.Ide.dll, type Mono.Addins.AddinManager

Este error sucede por la falta de la librería Mono.Addins, en mi caso no pude ejecutar Monodevelop, la solución es simple, primero bajan las bibliotecas desde codeplex, luego de descomprimir mueven las .dll a /usr/lib/monodevelop/bin/

Domingo 12 de febrero de 2012

Juan Esteban Henao

Juan Esteban Henao
MachGeek

Scite en español

Para traducir este editor al español ejecutamos el siguiente comando en un emulador de terminal con la cuenta de administrador o anteponiendo sudo en cada instrucción.

cd /usr/share/scite/; wget http://scintilla.sourceforge.net/locale.es.properties; mv locale.es.properties locale.properties

Lo que hacemos es:

-Movernos al directorio /usr/share/scite/
-Bajar el archivo, el cual contiene la traducción.
-Cambiar el nombre.
-El punto y coma separa cada instrucción.

Martes 15 de diciembre de 2009

Ingeniero Forigua

Ingeniero Forigua
Ingeniero Forigua

Nos trasladamos

Nos trasladamos

Quiero agradecer a todos mis lectores que me acompañaron por mas de 2 años en este sitio, quiero anunciarles que ahora nos mudamos a http://ingforigua.com/ (aun anda bajo construcción), espero que sean fieles visitantes a mi sitio.

Mil gracias

Miércoles 28 de octubre de 2009

Ingeniero Forigua

Ingeniero Forigua
Ingeniero Forigua

Una mirada a brainbird un microblog libre y colombiano

Una mirada a brainbird un microblog libre y colombiano

brainbird.net es una red de microblog libre basado en status.net (como identi.ca) usa la version 0.8.2dev posee alrrededor de unos 106 usuarios locales 3000 usuarios de OMB y fue iniciado por @DeepSpawn Como se ve aca ya hace parte OMB (open microblog).

Funcionalidades basicas;

  • Subscripciones y los subscriptores
  • Noticias favoritas
  • Bandeja de entrada y salida
  • Hashtags
  • Clentes de escritorio windows, GNU/linux mac (ver enlaces al final)
  • Clentes para celular (ver enlaces al final)
  • Envio por sms
  • Mencion a grupos mediante el operador ! y grupos mejor organizacion de BIRDS
  • integración por xmpp
  • Servicio de upload de archivos
  • De Código abierto opensource
  • Servicio automatico de recorte de urls
  • posibilidad de ver videos, fotos, wikis en la misma red
  • Exportar por rss las noticias o birds
Funcionalidades propias:
  • Puedes enviar noticias de 300 caracteres
  • Mejor integración con redes como identi.ca y twitter
  • Autorefresco de Birds (noticias) sin necesidad de dar F5 al explorador
  • Se pueden reenviar noticias en un solo clic (conocido como ReDents)
  • Cuando llega al final de la pagina este carga noticias antiguas automáticamente gracias a los pluging que tiene
  • Bookmarks
  • Importación de subcripciones
  • Estadisticas
UI user interface



Enlaces:

http://brainbird.net
http://status.net/wiki/Main_Page
http://status.net/wiki/Apps

Jueves 22 de octubre de 2009

Ingeniero Forigua

Ingeniero Forigua
Ingeniero Forigua

Twitter Vs. Identi.ca cual microblog elegir???

Twitter Vs. Identi.ca cual microblog elegir???

Siempre he querido escribir esta entrada hoy evaluaré algunos aspectos de estas dos redes sociales.

Que son:

Twitter
: Twitter ([ˈtwɪɾɹ̩] o ['twɪtəʳ] gorjear, parlotear) es un servicio gratuito de microblogging que permite a sus usuarios enviar micro-entradas basadas en texto, denominadas "tweets", de una longitud máxima de 140 caracteres (via Wikipedia)



Identi.ca: es un servicio de red social y microblogging en software libre. Basado en StatusNet, un paquete de software micro-blogging basado en las especificaciones de OpenMicroBlogging, los usuarios pueden enviar actualizaciones de texto (dents[1] [2] ) de hasta 140 caracteres de longitud (via Wikipedia)

Caracteristicas:

Twitter: Cuenta con 3 paneles
  • Superior: donde esta home, los ajustes, el perfil, buscador de personas, y cerrar sesion
  • Vertical derecho: Contamos con el home. con los mensajes directos. con las noticias favoritas, los temas populares, un buscador y los vinculos a los feeds
  • Vertical izquierdo: contamos con la barra de publicacion, con los updates de nuestros amigos
Identi.ca: Cuenta con 3 paneles tambien
  • Superior: Donde esta home, los ajustes de cuenta, el connect, las invitaciones, cerrar sesion un poco mas abajo esta el area de publicacion de 140 caracteres con posibilidad de adjuntar archivos
  • Verical derecho: contamos con los enlaces a feeds, las subscripciones y los subscriptores, estadisticas,
  • Vertical izquierdo: contamos con 6 pestanas (personal, respuestas, perfil, noticias favoritas, bandeja de entrada y de salida ) mas abajo contamos con las updates de nuestros amigos
Funcionalidades:
  • Publicacion de 140 caracteres (twitter, identi.ca)
  • Subscripciones y los subscriptores (twitter, identi.ca)
  • Noticias favoritas (twitter, identi.ca)
  • Bandeja de entrada y salida (twitter pero en direct mensajes, identi.ca en 2 pestañas del home de facil ubicacion)
  • Hashtags (twitter, identi.ca)
  • Clentes de escritorio windows, GNU/linux mac (Twitter, identi.ca)
  • Clentes para celular (twitter, identi.ca)
  • Envio por sms (identi.ca) en twitter no lo conozco
  • Integracion a otras redes sociales oficial (identi.ca soporta twitter y facebook)
  • Mencion a grupos mediante el operador ! y grupos mejor organizacion de dents (identi.ca)
  • Soporte con wikihashtag (identi.ca)
  • integración por xmpp (identi.ca)
  • Servicio de upload de archivos (identi.ca)
  • Opensource (identi.ca)
  • Servicio automati.co de urls (twitter, identi.ca (usa libres))
  • posibilidad de ver videos, fotos, wikis de otras redes sin salir (identi.ca)
  • Statusnet me da la posibilidad de montar mi propio servicio de microblog
Aspectos en contra

Twitter: Servicio pesimo se cae constantemente y es atacado por netbots constantemente, exagerado el spam que hay

Identi.ca: Su baja popularidad pero va en aumento.

Intefaces:

Twitter:


Identi.ca:

Enlaces:

Twitter:
http://twitter.com/
http://apiwiki.twitter.com/
http://blog.twitter.com/
http://es.wikipedia.org/wiki/Twitter

Identi.ca
http://identi.ca
http://status.net/wiki/Main_Page
http://status.net/wiki/Apps
http://es.wikipedia.org/wiki/Identi.ca



Domingo 23 de agosto de 2009

Enabling the Bluetooth device on Lenovo Thinkpad SL400

Quick post:

To enable the bluetooth device on Lenovo Thinkpad SL400 laptop (and others features like hot-keys), use the lenovo-sl-laptop kernel module, available in:

http://github.com/tetromino/lenovo-sl-laptop/tree/master

Thanks nelchael.

http://dev.gentoo.org/~nelchael/SL400-NRH4MPB.html

Jueves 16 de julio de 2009

Plantilla única para las acciones de un módulo en Symfony

Una forma sencilla de utlizar una única plantilla para las acciones de un módulo en Symfony, es declarando un método preExecute y usando el método de la clase sfActions llamado setTemplate, de la siguiente forma:

class miModuloActions extends sfActions
{
public function preExecute()
{
$this->setTemplate('miplantilla');
}

public function executeIndex()
{
// codigo ......

}
}

De esta manera todas las acciones buscarán la plantilla llamada miplantillaSuccess.php, sin necesidad de retornar un atributo de la clase sfView.