Quantcast
Channel: Planeta Linux Venezuela
Viewing all 714 articles
Browse latest View live

Leonardo Caballero: Configurar Odoo y Apache 2 en Ubuntu 15.10

$
0
0

Introducción

Odoo y el servidor Apache 2 en Ubuntu 15.10

Instrucciones para configurar Odoo con el servidor Apache 2 usando el instalador de Debian / Ubuntu. Los objetos específicos de este articulo son los siguientes:

  • Instalar el servidor Web Apache 2.
  • Instalar el servidor de aplicaciones Odoo.
  • Aplicar configuraciones de redireccionamiento desde el puerto 80 al puerto 8069.

Instalar el servidor Web Apache 2

Para instalar el servidor Web Apache 2, consulte el siguiente articulo https://lcaballero.wordpress.com/2017/07/07/instalar-apache-2-http-server-en-ubuntu-15-10/

Instalar el servidor de aplicaciones Odoo

Para instalar el servidor de aplicaciones Odoo, consulte los siguientes artículos:

Configuración de host virtual

Por defecto, el servidor de aplicaciones Odoo se ejecuta en el puerto 8069, como se ilustra en la siguiente captura:

Odoo ejecutándose en el puerto 8069

Odoo ejecutándose en el puerto 8069

Se requiere aplicar configuraciones de redireccionamiento desde el puerto 80 del servidor Web Apache 2 para el puerto 8069 del servidor de aplicaciones Odoo,

¿Qué significa Virtual Host?

El término Virtual Host se refiere a la práctica de ejecutar más de un sitio Web en una sola máquina, por ejemplo:

  • Dominio cliente1.misistema.com
  • Dominio cliente2.misistema.com

Los hosts virtuales pueden ser “basados en IP”, lo que significa que usted tiene una dirección IP diferente para cada sitio web, o “basado en nombre”, lo que significa que tiene varios nombres en ejecución en cada dirección IP. El hecho de que se estén ejecutando en el mismo servidor físico no es evidente para el usuario final.

Apache fue uno de los primeros servidores en dar soporte a los hosts virtuales basados en IP desde el primer momento. Las versiones 1.1 y posteriores de Apache admiten hosts virtuales basados en IP y basados en nombres (vhosts). La última variante de los hosts virtuales se denomina a veces hosts virtuales host-based o non-IP.

Entonces, para crear el VirtualHost de Apache 2, con el siguiente comando:

$ sudo nano /etc/apache2/sites-available/misistema.conf

Seguidamente agregue la siguiente configuración:

<VirtualHost *:80>
 ServerName misistema.com
 ServerAlias www.misistema.com
 ServerAdmin mi@correo-electronico.com

 LogLevel warn
 ErrorLog /var/log/apache2/misistema.com.error.log
 CustomLog /var/log/apache2/misistema.com.access.log combined

 ProxyRequests Off
 ProxyPreserveHost On
 ProxyPass / http://localhost:8069/
 ProxyPassReverse / http://localhost:8069/
</VirtualHost>

La directiva “ServerName” hace referencia a la URL a la que se dirige la petición. Deberá configurarse una entrada en el DNS que apunte al servidor.

La directiva ProxyRequests Off evita que el front-end (Apache 2 en el puerto 80) sea utilizado como proxy, es decir, que usuarios puedan saltar al front-end y de ahí a cualquier otra dirección. Es muy importante dejarlo deshabilitado para evitar problemas de seguridad o incluso legales.

La directiva ProxyPreserveHost On permite que el salto del servidor de front-end (Apache 2 en el puerto 80) al de back-end (Odoo en el puerto 8069) sea transparente para el usuario. Si no estuviera habilitada, el usuario se dirigiría a http://frontend.organización.com pero inmediatamente vería como la dirección cambia a http://backend.organizacion.com. Además, como en este supuesto el servidor de back-end no es visible desde Internet el usuario vería un error.

Por último, las directivas ProxyPass y ProxyPassReverse gestionan el salto y la vuelta del servidor de front-end (Apache 2 en el puerto 80) al de back-end (Odoo en el puerto 8069).

Antes de continuar se debe explicar que técnica de redireccionamiento se aplica en este vhost y su funcionamiento, el cual procedo a comentar:

¿Qué es un proxy inverso?

Es un dispositivo de seguridad que suele desplegarse en la DMZ (En seguridad informática, una zona desmilitarizada (conocida también como DMZ, sigla en inglés de demilitarized zone) o red perimetral es una zona segura que se ubica entre la red interna de una organización y una red externa, generalmente en Internet.) de una red para proteger a los servidores HTTP de una intranet corporativa, realizando funciones de seguridad que protegen a los servidores internos de ataques de usuarios en Internet.

Diagrama de Proxy inverso.

Diagrama de Proxy inverso. Fuente: http://www.fernandomenendez.es/

El servidor proxy inverso protege a los servidores HTTP internos proporcionando un punto de acceso único a la red interna. Proporcionando un punto de acceso único a todos los servidores HTTP de una red interna ofrece ventajas de seguridad y características de acceso a red.

Entonces, en la configuración aplicada se incluye técnicas de proxy inverso usando servidor Web Apache 2, para el cual necesita habilitar los módulos proxy y proxy_http para aplicar esta técnica la cual direccionara peticiones HTTP desde el puerto 80 al puerto 8069 del servidor de aplicación Odoo, para realizar esto ejecute ejecute el siguiente comando:

$ sudo a2enmod proxy proxy_http

Luego de habilitar los módulos, reinicie el servicio para el servidor Web Apache 2, con el siguiente comando:

$ sudo service apache2 restart

Habilitar un host virtual

Para habilitar un host virtual en Apache2 usted debe usar el script llamado a2ensite, el cual habilita el sitio especifico (el contiene un bloque con la directiva <VirtualHost>) con la configuración Apache2. Eso lo hace creando enlaces simbólicos en el directorio /etc/apache2/sites-enabled. Del mismo modo, el script llamado a2dissite deshabilita un sitio para remover esos enlaces simbólicos. No es un error permitir un sitio que ya está habilitado, o deshabilitar uno que ya está deshabilitado.

Apache trata al primer host virtual habilitado especialmente ya que cada solicitud que no coincide con ninguna directiva real está siendo redirigida allí. Por lo tanto, debería llamarse 000-default para ordenar antes de que los hosts restantes se carguen primero.

sites-available vs sites-enabled

La diferencia es que los sitios virtuales listados en el directorio /etc/apache2/sites-enabled es que estos sitios son servidos por Apache 2.En el directorio /etc/apache2/available allí hay sitios virtuales que existen en su servidor, pero la gente no puede acceder a ellos porque aún no están habilitados.

/etc/apache2/available: este directorio tiene archivos de configuración para Apache2 Virtual Hosts. Los hosts virtuales permiten que Apache2 se configure para varios sitios que tienen configuraciones separadas.

/etc/apache2/sites-enabled: como mods-enabled, sites-enabled contiene enlaces simbólicos al directorio /etc/apache2/available. Del mismo modo, cuando un archivo de configuración en sites-available está conectado simbólicamente, el sitio configurado por él estará activo una vez que el servicio de Apache2 se reinicie.

Entonces, para habilitar nuestro vhost de guardado en el archivo /etc/apache2/available/misistema.conf, ejecutando el siguiente comando:

$ sudo a2ensite misistema.conf

Recargue la configuración del servicio para el servidor Web Apache 2, con el siguiente comando:

$ sudo service apache2 reload

Acceder al proxy inverso de Apache 2

Por ultimo, abra el navegador en la siguiente dirección http://misitio.com/, en la cual podrá ver aplicadas las técnicas de proxy inverso en el cual puedo “encapsular” la dirección interna y el puerto de Odoo haciendo un redireccionamiento desde el puerto 80 al puerto 8069, como se ilustra en la siguiente captura:

Acceder Odoo ejecutado técnicas de proxy reverso

Acceder Odoo ejecutado técnicas de proxy inverso

Conclusiones

De esta forma usted ha aprendido a:

  • Instalar el servidor Web Apache 2.
  • Instalar el servidor de aplicaciones Odoo.
  • Configurar un VirtualHost con configuraciones de proxy inverso.
  • Habilitar hosts virtuales (vhosts) de Apache 2.
  • Aplicar cambios en el servicio de Apache 2.

Referencias

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!



Leonardo Caballero: Instalar DNS BIND9 en Ubuntu 15.10

$
0
0

Introducción

Servidor de DNS BIND9 en Ubuntu 15.10

Instrucciones para instalar el servidor DNS BIND9 usando el instalador de Debian / Ubuntu. Los metas específicos a lograr con este articulo son los siguientes:

  • Instalar y configurar un DNS local como servidor maestro.
  • Establecer un dominio llamado “midns.com”.

¿Qué es un servidor DNS?

Un servidor DNS (Domain Name System – Sistema de nombres de dominio) es un servidor que traduce nombres de dominio a IPs y viceversa. En las redes TCP/IP, cada PC dispone de una dirección IP para poder comunicarse con el resto de PCs. Es equivalente a las redes de telefonía en las que cada teléfono dispone de un número de teléfono que le identifica y le permite comunicarse con el resto de teléfonos.

Servidor DNS maestro principal

Un servidor DNS maestro principal se puede usar para servir registros DNS (grupos de registros los cuales se denominan zonas) para un nombre de dominio registrado o uno imaginario (pero sólo si se utiliza en una red restringida).

¿Qué es BIND9?

Berkeley Internet Domain Name - BIND

Berkeley Internet Domain Name – BIND

BIND (Del Ingles Berkeley Internet Name Domain) es el servidor de DNS más comúnmente usado en Internet, especialmente en sistemas Unix, en los cuales es un Estándar de facto. Es comúnmente usado en sistemas GNU/Linux.

Instalación

Debe actualizar actualizar el sistema, con el siguiente comando:

$ sudo apt-get update && sudo apt-get upgrade

Para instalar el servidor DNS BIND9, ejecute el siguiente comando:

$ sudo apt-get install bind9 bind9-doc dnsutils

Configuración

BIND9 puede proporcionar muchos diferentes servicios de DNS. Algunas de los ambientes de configuraciones más útiles son:

  • Servidor de caché.
  • Servidor maestro principal.
  • Servidor maestro secundario.
  • Híbridos (DNS de Caching y Primary Master).
  • Servidores Stealth.

Archivos de configuración del BIND9

El archivo principal de configuración del DNS se encuentra en la ruta /etc/bind/named.conf, pero este hace referencia a otros cuantos archivos como por ejemplo:

  • Archivo named.conf: Archivo principal de configuración.
  • Archivo named.conf.options: Opciones genéricas.
  • Archivo named.conf.local: Especificación particular de este servidor DNS.
  • Archivo db.127: Especificación dirección de retorno.
  • Archivo db.root: DNSs de nivel superior.
  • Otros archivos: db.0, db.255, db.empty, db.local, rndc.conf, rndc.key, zones.rfc1918.

Gestión del servicio BIND9

BIND9 al instalarse se gestiona como un servicio o demonio de Unix/Linux, para conocer los diversos parámetros de gestión para el servicio BIND9, ejecute el siguiente comando:

$ sudo service bind9 
 * Usage: /etc/init.d/bind9 {start|stop|reload|restart|force-reload|status}

Estatus del servicio BIND9

Para conocer el estatus del servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 status
 bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; 
           vendor preset: enabled)
  Drop-In: /run/systemd/generator/bind9.service.d
           └─50-insserv.conf-$named.conf
   Active: active (running) since dom 2017-07-09 08:56:58 VET; 2h 8min ago
     Docs: man:named(8)
  Process: 7335 ExecStop=/usr/sbin/rndc stop (code=exited, status=0/SUCCESS)
 Main PID: 7340 (named)
   CGroup: /system.slice/bind9.service
           └─7340 /usr/sbin/named -f -u bind

jul 05 16:52:10 servidor systemd[1]: Starting LSB: Start odoo 
daemon at boot time...
jul 05 16:52:10 servidor odoo[630]: Starting odoo: ok
jul 05 16:52:14 servidor systemd[1]: Started LSB: Start odoo daemon 
at boot time.

Otra forma, de verificar Si el servicio BIND9 esta en funcionamiento, se realiza ejecutando el siguiente comando:

$ sudo ps aux | grep named
bind 7340  0.0  0.4 83660  9456 ? Ssl 08:56 0:00 /usr/sbin/named -f -u bind

Detener el servicio de BIND9

Para detener el servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 stop

Iniciar el servicio de BIND9

Para iniciar el servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 start

Reiniciar el servicio de BIND9

Para reiniciar el servicio para el servidor BIND9, ejecute el siguiente comando:

$ sudo service bind9 restart

Forzar la recargar de configuración del servicio de BIND9

Para forzar la recargar de la configuración del servicio BIND9, ejecute el siguiente comando:

$ sudo service bind9 force-reload

Registro de eventos (Archivo log)

Para depurar posibles errores del servicio BIND9, puede consultar el archivo log, con el siguiente comando:

$ sudo tail -f /var/log/named/named.log

Servidor DNS maestro con BIND9

La configuración básica para un servidor maestro usando BIND9, consta en definir lo siguiente:

  1. Zonas de búsquedas “directas” e “inversas”.
  2. Resolución de nombres.

Zonas DNS

Las zonas pueden declararse en el archivo named.conf.local, para hacer esto debe ejecutar con el siguiente comando:

$ sudo nano /etc/bind/named.conf.local

Entonces agregue las siguientes configuraciones:

// Archivo para búsquedas directas, es la definición de zona
// Remplace midns.com con su nombre de dominio
zone    "midns.com" {
        type master;
        file "/etc/bind/db.midns.com";
};

// Archivo para búsquedas inversas, es la definición de zona
// para el DNS reverso. Remplace 0.168.192 con su dirección
// IP en notación reverso - e.j. mi dirección de red es 192.168.0
zone    "0.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192";
};

Seguidamente, pruebe la configuración ingresada, en búsqueda de no contener errores, ejecute el siguiente comando:

$ sudo named-checkconf

Consejo: El comando “named-checkconf” analiza que la sintaxis de la configuración sea correcta. Esto es importante debido a si al transcribir esta configuración previa se le olvida algún “punto y coma”, dará errores y no funcionará BIND9 correctamente.

Resolución de nombres

La resolución de nombres convierte los nombres de los sistemas en sus correspondientes direcciones IP. Estos debe declararse en el archivo named.conf.options, para hacer esto debe ejecutar el siguiente comando:

$ sudo nano /etc/bind/named.conf.options

Entonces agregue la siguiente configuración:

        forwarders {
              # Remplace con la IP de su servidor DNS actual
              192.168.0.1;
        };

Consejo: Para detectar el DNS actual de su conexión a red, ejecute el siguiente comando:

$ nmcli device show | grep IP4.DNS

Adicionalmente, debe agregar la IP del servidor DNS en la directiva “listen-on” en el archivo named.conf.options, para hacer esto debe ejecutar el siguiente comando:

$ sudo nano /etc/bind/named.conf.options

Entonces agregue la siguiente configuración:

        listen-on port 53 { 127.0.0.1; 192.168.0.100; };
        listen-on-v6 { any; };

De nuevo vuelva probar que la configuración ingresada no contenga errores, ejecute el siguiente comando:

$ sudo named-checkconf

Consejo: El comando “named-checkconf” analiza que la sintaxis de la configuración sea correcta. Esto es importante debido a si al transcribir esta configuración previa se le olvida algún “punto y coma”, dará errores y no funcionará BIND9 correctamente.

Zona de Búsqueda Directa

Las resoluciones de esta zona devuelven la dirección IP correspondiente al recurso solicitado. Realiza las resoluciones que esperan como respuesta la dirección IP de un determinado recurso.

Base de datos de búsqueda directa

Supongamos que en nuestra red local tenemos un departamento llamado reservaciones con 10 PCs con IPs que van desde la 192.168.0.100 hasta 192.168.0.110 y cuyos nombres van desde reserva1 hasta reserva10, luego un servidor Web que además es servidor DNS (servidor). Entonces la base de datos para búsquedas directas describe cada nombre de las PCs a su dirección IP asignada.

En este caso hipotético, la base de datos para búsquedas directas en la zona “midns.com” se debe guardar en el archivo “db.midns.com”, este debe crearse manualmente.

Para crear el archivo “db.midns.com”, ejecute el siguiente comando:

$ sudo cp /etc/bind/db.local /etc/bind/db.midns.com

Edite el archivo “db.midns.com”, ejecute el siguiente comando:

$ sudo nano /etc/bind/db.midns.com

Entonces agregue las siguientes configuraciones:

;
; BIND zone file for midns.com
;

$TTL    3D
@       IN      SOA     ns.midns.com.     root.midns.com. (
                        2010111101      ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns              ; Inet address of name server

ns              A       192.168.0.100

midns.com.       A       192.168.0.100
server         A        192.168.0.100

virtual         A        192.168.0.100

router          A       192.168.0.1     ; router ADSL
gateway         CNAME   router
gw              CNAME   router
proxy           CNAME   server
www             CNAME   virtual

Las primeras líneas son unos parámetros relacionados con la actualización del DNS (número de serie y periodos de actuación). Las dos siguientes líneas indican quién es el servidor primario (NS = Name Server). Las siguientes líneas especifican las IPs de los distintos PCs componentes del dominio (A = Address). Adicionalmente las ultimas lineas son registros que mapean como un alias de un nombre a otro nombre usando (CNAME = Canonical Name) sólo se debe utilizar cuando no hay otros registros en ese nombre.

Puede verificar el fichero de configuración de la zona “midns.com” no contenga errores:

$ sudo named-checkzone midns.com /etc/bind/db.midns.com

La verificación se realiza por que si olvida algún punto y coma, dará errores y no funcionará correctamente. Este comando analizara que esté correcta la sintaxis del mismo.

Zona de Búsqueda Inversa

Las resoluciones de esta zona buscan un nombre de equipo en función de su dirección IP; una búsqueda inversa tiene forma de pregunta, del estilo “¿Cuál es el nombre DNS del equipo que utiliza la dirección IP 192.168.0.100?”.

Base de datos de búsqueda inversa

La base de datos para las búsquedas inversas en la zona “0.168.192.in-addr.arpa” se debe guardar en el archivo “db.192”, este debe crearse manualmente.

Para crear el archivo “db.192”, ejecute el siguiente comando:

$ sudo cp /etc/bind/db.127 /etc/bind/db.192

Edite el archivo “db.192”, ejecute el siguiente comando:

$ sudo nano /etc/bind/db.192

Entonces agregue las siguientes configuraciones:

;
; BIND zone file for 192.168.0.xxx
;

$TTL    3D
@       IN      SOA     ns.midns.com.    root.midns.com. (
                        2010111101      ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns.midns.com.   ; Nameserver address

100             PTR     server.midns.com.
100             PTR     ns.midns.com.
100             PTR     www.midns.com.
100             PTR     virtual.midns.com.
1               PTR     router.midns.com.

Puede verificar el fichero de configuración de la zona “0.168.192.in-addr.arpa” no contenga errores:

$ sudo named-checkzone 0.168.192.in-addr.arpa /etc/bind/db.192

La verificación se realiza por que si olvida algún punto y coma, dará errores y no funcionará correctamente. Este comando analizara que esté correcta la sintaxis del mismo.

Configuraciones de red para DNS local

Adicionalmente debe agregar configuraciones de red para el servidor DNS local, primero debe agregar el dominio “midns.com” y la dirección IP del servidor DNS en el archivo /etc/resolv.conf, con el siguiente comando:

$ sudo nano /etc/resolv.conf

Entonces agregue la siguiente configuración:

domain midns.com
search midns.com
nameserver 192.168.0.100
nameserver 127.0.0.1

Agregar a su archivo /etc/hosts el dominio “midns.com”, con el siguiente comando:

$ sudo nano /etc/hosts

Entonces agregue la siguiente configuración:

127.0.0.1 midns.com

Aplicar cambios de configuración

Luego de aplicar las configuraciones anteriores, de aplicar los cambios hechos en la configuración actual del servicio BIND9, para lograr esto ejecute el siguiente comando:

$ sudo service bind9 restart

Asi de esta forma ya tiene :

  • El servidor BIND9 correctamente configurado.
  • Definidas las zonas de búsqueda “directas” e “inversas”.
  • Aplicadas configuraciones de red para el DNS local.

Funcionamiento del servidor DNS

Para comprar el funcionamiento correcto del DNS previamente configurado, usted ha instalado previamente unas utilidades las cuales se describen a continuación:

Utilidades dnsutils

Al instalar el paquete dnsutils usted dispone dos (02) nuevas utilidades las cuales se describen a continuación:

Herramienta “dig”

Es una utilidad de búsqueda de DNS, dig significa en Ingles (domain information groper), esta es una herramienta flexible para interrogar servidores de nombres DNS. Realiza búsquedas de DNS y muestra las respuestas que se devuelven desde el servidor de nombres que se consultó. La mayoría de los administradores de DNS utilizan dig para solucionar problemas de DNS debido a su flexibilidad, facilidad de uso y claridad de salida.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “dig”, ejecute el siguiente comando:

$ dig @192.168.0.100 www.midns.com
; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> @192.168.0.100 www.midns.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52020
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.midns.com. IN A

;; ANSWER SECTION:
www.midns.com. 259200 IN CNAME virtual.midns.com.
virtual.midns.com. 259200 IN A 192.168.0.100

;; AUTHORITY SECTION:
midns.com. 259200 IN NS ns.midns.com.

;; ADDITIONAL SECTION:
ns.midns.com. 259200 IN A 192.168.0.100

;; Query time: 60 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Fri Jul 07 22:10:23 VET 2017
;; MSG SIZE rcvd: 132

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ dig @192.168.0.100 midns.com

; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> @192.168.0.100 midns.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8861
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;midns.com.	IN	A

;; ANSWER SECTION:
midns.com. 259200 IN	A	192.168.0.100

;; AUTHORITY SECTION:
midns.com. 259200 IN	NS	ns.midns.com.

;; ADDITIONAL SECTION:
ns.midns.com. 259200	IN A	192.168.0.100

;; Query time: 34 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Sat Jul 08 00:25:49 VET 2017
;; MSG SIZE  rcvd: 106

Herramienta “nslookup”

Es una utilidad de consulta los servidores de nombres de Internet de forma interactiva. Nslookup tiene dos modos de trabajo:

  • El modo interactivo permite al usuario consultar los servidores de nombres para obtener información sobre varios hosts y dominios o para imprimir una lista de hosts en un dominio.
  • El modo no interactivo se utiliza para imprimir nombre e información solicitada para un host o dominio.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “nslookup”, ejecute el siguiente comando:

$ nslookup www.midns.com
Server: 192.168.0.100
Address: 192.168.0.100#53

www.midns.com canonical name = virtual.midns.com.
Name: virtual.midns.com
Address: 192.168.0.100

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ nslookup midns.com
Server: 192.168.0.100
Address: 192.168.0.100#53

Name: midns.com
Address: 192.168.0.100

Utilidades por defecto disponibles

Adicionalmente existen otras herramientas de linea de comandos incluida por defecto en los sistemas operativo, muy útil para la interacción en redes y especifico con el servidor DNS. A continuación describo dos de estas:

Herramienta “host”

Es una utilidad simple para realizar búsquedas DNS. Normalmente se utiliza para convertir nombres a direcciones IP y viceversa. Cuando no se dan argumentos ni opciones, el host imprime un breve resumen de sus argumentos y opciones de la línea de comandos.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “host”, ejecute el siguiente comando:

$ host www.midns.com
www.midns.com is an alias for virtual.midns.com.
virtual.midns.com has address 192.168.0.10

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ host midns.com
midns.com has address 192.168.0.10

Herramienta “ping”

Del Ingles Ping (Packet Internet Groper o Buscador de paquetes en Internet) es una herramienta de comandos incluida por defecto en los sistemas operativos con la cual tendremos la posibilidad de verificar el estado de una conexión a un equipo local o remoto y esto es bastante útil para comprobar si una determinada dirección IP o equipo es accesible o no y de esta manera tomar acciones administrativas.

Para comprobar el dominio “www.midns.com” del DNS usando la herramienta “ping”, ejecute el siguiente comando:

$ ping -c3 www.midns.com
PING www.midns.com (127.0.0.1) 56(84) bytes of data.
64 bytes from www.midns.com (127.0.0.1): icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=2 ttl=64 time=0.126 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=3 ttl=64 time=0.090 ms

--- www.midns.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.090/0.129/0.173/0.036 ms

También pude comprobar el dominio “midns.com”, con el siguiente comando:

$ ping -c3 midns.com
PING www.midns.com (127.0.0.1) 56(84) bytes of data.
64 bytes from www.midns.com (127.0.0.1): icmp_seq=1 ttl=64 time=0.139 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=2 ttl=64 time=0.120 ms
64 bytes from www.midns.com (127.0.0.1): icmp_seq=3 ttl=64 time=0.151 ms

--- www.midns.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.120/0.136/0.151/0.018 ms

Conclusiones

De esta forma usted ha aprendido a:

  • Instalar el servidor DNS con BIND9.
  • Configurar el servidor DNS maestro con BIND9.
  • Crear las zonas “directas” e “inversas” para su dominio.
  • Gestionar el servicio BIND9 con los comandos más comunes.
  • Auditar el registro de eventos del servidor DNS con BIND9.
  • Probar el funcionamiento del servidor DNS con BIND9 usando utilidades más comunes.

Agradecimientos

A los Linuxeros del grupo en Telegram Linux VE por sus orientaciones iniciales sobre los servidores DNS y su recomendaciones, me sirvieron de mucha guia para decidirme por cual herramienta de DNS en Linux usar. GRACIAS!!!

A Jesús “Chuda” Contreras por su paciencia al explicarme y facilitarme documentación efectiva para lograr entender el funcionamiento y configuración de un DNS en Linux… GRACIAS PERRITA :-*

Referencia

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


Jesus Palencia: Lista de túneles Web (webproxy) para ver páginas bloqueadas

$
0
0
A veces nos encontramos en un entorno donde por cualquier circunstancia no es posible acceder a una web y no tenemos la posibilidad de realizar alguna modificación en el sistema que nos permita saltar dicho bloqueo, es por eso que … Sigue leyendo

Ernesto Crespo: Consultar DNS por medio de Scapy

$
0
0
Hace unos años escribí un artículo sobre descubrir equipos de una red local con python usando ipcalc y scapy, ahora muestro el uso de scapy para consultar DNS a un servidor de DNS determinado.



El programa es muy sencillo, es una función que se le pasa el servidor y el url a consultary devuelve la IP del url. A continuación se muestra el código:


#!/usr/bin/env python3


from scapy.all import *


def consulta(dns="8.8.8.8",dominio="www.google.com"):
    dnsServer = dns
    domconsulta= dominio
    #Se define la estructura del paquete de consulta de DNS, que es un paquete UDP
    #Que va por el puerto 53, se le pasa el servidor y el url.
    paquete_dns= IP(dst=dnsServer)/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname=domconsulta))
    #Se hace la consulta y se devuelve el resultado
    request_pqt = sr1(paquete_dns,verbose=0)
    return request_pqt[DNS].summary()
    
if __name__ == "__main__":
    print (consulta("8.8.8.8","www.debian.org"))


Al ejecutar el script se tiene el siguiente resultado:

sudo python3 pydns1.py
WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
DNS Ans "'128.31.0.62'"


Como se puede notar, la IP de www.debian.org es la 128.31.0.62.




Leonardo Caballero: Instalar firewall en Ubuntu 15.10

$
0
0

Introducción

Firewall (cortafuego) en Ubuntu 15.10

Instrucciones para instalar un firewall (cortafuego) gestionado con las herramientas UFW y iptables usando el instalador de Debian / Ubuntu. Los metas específicos a lograr con este articulo son los siguientes:

  • Instalar y configurar un cortafuegos en su servidor.
  • Definir políticas de acceso al servidor usando la herramienta UFW.
  • Definir políticas de acceso al servidor usando la herramienta iptables.

¿Qué es un Firewall (cortafuego)?

Un firewall (cortafuegos) es una parte de un sistema o una red que está diseñada para bloquear el acceso no autorizado, permitiendo al mismo tiempo comunicaciones autorizadas. Se trata de un dispositivo o conjunto de dispositivos configurados para permitir, limitar, cifrar, descifrar, el tráfico entre los diferentes ámbitos sobre la base de un conjunto de normas y otros criterios.

Diagrama de red implementando con firewall

Diagrama de red con cortafuego. Cortesía: www.noticias3d.com

También es frecuente conectar el cortafuegos a una tercera red, llamada zona desmilitarizada o DMZ, en la que se ubican los servidores de la organización que deben permanecer accesibles desde la red exterior.

¿Qué es Netfilter/iptables?

Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en Linux.

El componente más popular construido sobre Netfilter es iptables, una herramienta de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) para IPv4 o mantener registros de log. El proyecto Netfilter no sólo ofrece componentes disponibles como módulos del núcleo sino que también ofrece herramientas de espacio de usuario y librerías.

Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el connection tracking system o sistema de seguimiento de conexiones, que permite encolar paquetes para que sean tratados desde espacio de usuario. iptables es un software disponible en prácticamente todas las distribuciones de Linux actuales.

¿Qué es UFW?

Uncomplicated Firewall (ufw) es un cortafuegos diseñado para ser de fácil uso desarrollado por Ubuntu. Utiliza la línea de comandos para configurar las iptables usando un pequeño número de comando simples.

Instalación

Debe actualizar el sistema, con el siguiente comando:

$ sudo apt-get update && sudo apt-get upgrade

Para instalar el cortafuegos UFW, ejecute el siguiente comando:

$ sudo apt-get install ufw

La herramienta iptables es instalada como una dependencia por el paquete ufw.

Usted puede ver si iptables está corriendo, puede comprobar que los módulos del cortafuegos en kernell están cargados correctamente, para esto ejecute el siguiente comando:

$ sudo lsmod | grep ip_tables

Ademas puede usar el parámetro -L del comando iptables  para inspeccionar las reglas por defecto las cuales están cargadas actualmente, para esto ejecute el siguiente comando:

$ sudo iptables -L

Configuración de UFW

Es necesario activar el registro de eventos, de esta forma podemos auditar cualquier evento o sucesos en el cortafuegos, para esto ejecute el siguiente comando:

$ sudo ufw logging full

Si usted requiere desactivar el registro de eventos, ejecute el siguiente comando:

$ sudo ufw logging off

Gestión del cortafuegos con UFW

UFW al instalarse se gestiona vía linea de comando, a continuación se mostraran algunos usos comunes:

Estatus del cortafuegos con UFW

Para conocer el estatus detallado del cortafuegos usando UFW, ejecute el siguiente comando:

$ sudo ufw status verbose

Habilitar cortafuegos con UFW

Por defecto, el cortafuegos con UFW esta deshabilitado, para habilitarlo ejecute el siguiente comando:

$ sudo ufw enable

Deshabilitar cortafuegos con UFW

Si después requiere deshabilitar el cortafuegos usando la herramienta UFW, ejecute el siguiente comando:

$ sudo ufw disable
Firewall stopped and disabled on system startup

Registro de eventos (Archivo log)

Para depurar posibles errores del cortafuegos usando la herramienta UFW, puede consultar el archivo log, con el siguiente comando:

$ sudo tail -f /var/log/ufw.log

Otro comando útil puede ser el siguiente:

$ sudo tail -f /var/log/syslog | grep UFW

Otorgando accesos

Un cortafuegos generalmente restringe todo y de forma granular usted va otorgando acceso a servicios específicos, al cual otorgaran privilegios, a continuación unos ejemplos típicos de permisos comunes:

Habilitar conexiones SSH/TCP

En primero lugar debe ser garantizado el acceso al servidor remoto por ssh:

$ sudo ufw allow ssh/tcp

Si en algún momento requiere remover esta regla, ejecute el siguiente comando:

$ sudo ufw delete allow ssh/tcp

Habilitar conexiones TCP al puerto 80

Si usted tiene instalado un servidor Web como Apache 2, debe ser garantizado el acceso al mismo por puerto 80:

$ sudo ufw allow in 80

Si en algún momento requiere remover esta regla, ejecute el siguiente comando:

$ sudo ufw delete allow in 80

Bloqueo de servicios

Bloquear el tráfico SMTP saliente, si su servidor solo será empleado para enviar correo interno (dentro del mismo servidor), es posible que quiera bloquear el correo saliente, el cual emplea el puerto 25, para esto ejecute el siguiente comando:

$ sudo ufw deny out 25

Si en algún momento requiere remover esta regla, ejecute el siguiente comando:

$ sudo ufw delete deny out 25

Bloque de URL

Para bloquear una URL usando reglas iptables, usted debe denegar todas las conexiones entrantes desde la dirección vtv.gob.ve, ejecute el siguiente comando:

$ sudo iptables -A INPUT -p tcp -s vtv.gob.ve -d 127.0.0.1 \
                --dport 80 -j DROP

Denegar todas las conexiones de salida hacia la dirección vtv.gob.ve, ejecute el siguiente comando:

$ sudo iptables -A OUTPUT -p tcp -d www.vtv.gob.ve \
                --dport 80 -j DROP

Si en algún momento requiere remover esta regla, ejecute el siguiente comando:

$ sudo iptables -D INPUT -p tcp -s vtv.gob.ve -d 127.0.0.1 \
                --dport 80 -j DROP
$ sudo iptables -D OUTPUT -p tcp -d www.vtv.gob.ve \
                --dport 80 -j DROP

Redireccionamiento de puertos

Lo primero será que debemos tener habilitado el forwarding en el servidor, para ello pondrá lo siguiente:

$ echo "1"> sudo /proc/sys/net/ipv4/ip_forward

También pueden usar este otro comando, en caso de que el anterior no les funcione, ejecutando lo siguiente:

$ sudo sysctl net.ipv4.ip_forward=1
$ sudo sysctl -a | grep net.ipv4.ip_forward

Próximo, es habilitar las nuevas configuraciones al archivo de configuración, con el siguiente comando:

$ sudo sysctl -p

Luego reinicie el servicio de red:

$ sudo service networking restart

Supongamos que se requiere redireccionar el tráfico del puerto 8080 al 443 en el mismo servidor con una IP en específica, sería agregando el parámetro -s… ej. redireccionaré solo el tráfico que venga desde 192.168.0.101, para ello, ejecute el siguiente comando:

$ sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.0.101 \
                --sport 8080 -j DNAT --to-destination 192.168.0.101:443
$ sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.0.101 \ 
                --dport 8080 -j DNAT --to-destination 192.168.0.101:443

Y finalmente necesita enmascarar la dirección IP, para que el destino reciba el tráfico con la IP del servidor fuente:

$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE

Usted comprobar las reglas iptables puede ver las reglas crudas del cortafuegos, ejecutando el siguiente comando:

$ sudo ufw show raw | grep 192.168.0.101
Chain PREROUTING (policy ACCEPT 13 packets, 4364 bytes)
pkts     bytes target  prot opt in  out  source         destination         
   0      0 DNAT       tcp  --  *   *    192.168.0.101  0.0.0.0/0   tcp dpt:8080 to:192.168.0.101:443

Si después requiere deshabilitar el cortafuegos, ejecute el siguiente comando:

$ sudo iptables -t nat -D PREROUTING -p tcp -s 192.168.0.101 \
                --sport 8080 -j DNAT --to-destination 192.168.0.101:443
$ sudo iptables -t nat -D PREROUTING -p tcp -s 192.168.0.101 \
                --dport 8080 -j DNAT --to-destination 192.168.0.101:443
$ sudo iptables -t nat -D POSTROUTING -j MASQUERADE

Conclusiones

De esta forma usted ha aprendido a:

  • Instalar un cortafuego usando UFW.
  • Configurar básicamente el funcionamiento UFW.
  • Crear políticas de permisos en su cortafuego para su servidor.
  • Gestionar el cortafuegos con los comando más comunes.
  • Auditar el registro de eventos del cortafuegos con UFW y iptables.
  • Probar el funcionamiento de las políticas del cortafuegos usando utilidades más comunes.

Referencias

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


Leonardo Caballero: Instalar Odoo 10 en Ubuntu 15.10

$
0
0

Introducción

Logotipo de Odoo

Logotipo de Odoo

Odoo (conocido hasta la versión 7 como OpenERP y anteriormente hasta la versión 4 como TinyERP) es mas que un sistema de ERP integrado de código abierto actualmente producido por la empresa belga Odoo S.A. El fabricante declara su producto como una alternativa de código abierto a SAP ERP y Microsoft Dynamics.

Servidor de aplicaciones Odoo en Ubuntu 15.10

Instrucciones para instalar el servidor de aplicaciones Odoo 10 con el instalador de nativo para distribuciones Debian / Ubuntu.

Odoo 10

Odoo 10

Instalación

Agregar repositorio Debian para instalar Odoo 10 a tu sistema, con los siguientes comandos:

$ sudo wget -O - https://nightly.odoo.com/odoo.key | sudo apt-key add -
$ sudo touch /etc/apt/sources.list.d/odoo.list
$ sudo nano /etc/apt/sources.list.d/odoo.list

Agregue el siguiente contenido:

deb http://nightly.odoo.com/10.0/nightly/deb/ ./

Debe actualizar el sistema operativo, con el siguiente comando:

$ sudo apt-get update && sudo apt-get upgrade

Librería wkhtmltopdf

Esta librería es necesaria para imprimir reportes PDF, usted debe instalar usted mismo wkhtmltopdf, para hacer esto ejecute el siguiente comando:

$ sudo apt-get install wkhtmltopdf

Servidor Odoo

Para instalar el servidor Odoo, ejecute el siguiente comando:

$ sudo apt-get install odoo

Luego de terminar la instalación el servidor Odoo, este instalara como dependencia sus librerías Python y el servidor de base de datos PostgreSQL.

Directorio de instalación

Al finalizar la descarga e instalación, el directorio base de la instalación del servidor de aplicación Odoo, esta en la ruta es la siguiente:

/usr/lib/python2.7/dist-packages/odoo/

Directorio de add-ons adicionales

Este directorio es muy útil para agregar nuevos módulos adicionales al servidor de aplicaciones Odoo, esta ruta es la siguiente:

/usr/lib/python2.7/dist-packages/odoo/addons

Configuración

El archivo de configuración del servidor de aplicaciones de Odoo, se encuentra en /etc/odoo/odoo.conf. Usted debe editar este archivo ejecutando el siguiente comando:

$ sudo nano /etc/odoo/odoo.conf

Su archivo debe lucir como el siguiente ejemplo de configuración:

[options]
; This is the password that allows database operations:
admin_passwd = admin
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /usr/lib/python2.7/dist-packages/odoo/addons

Cada vez que cambie este archivo debe detener, iniciar, reiniciar o forzar el inicio del servicio del servidor de aplicaciones de Odoo, el cual se explica como realizarlo en la siguiente sección.

Gestión del servidor de aplicación de Odoo

Para conocer los diversos parámetros de gestión para el servidor de aplicación de Odoo, ejecute el siguiente comando:

$ sudo service odoo
Usage: /etc/init.d/odoo {start|stop|restart|force-reload|status}

Estatus del servidor de aplicación de Odoo

Para conocer el estatus del servicio para el servidor de aplicación de Odoo, ejecute el siguiente comando:

sudo service odoo status
● odoo.service - LSB: Start odoo daemon at boot time
   Loaded: loaded (/etc/init.d/odoo)
   Active: active (running) since mié 2017-07-05 16:52:14 VET; 
     1 day 20h ago
     Docs: man:systemd-sysv-generator(8)
  Process: 630 ExecStart=/etc/init.d/odoo start (code=exited, 
   status=0/SUCCESS)
   CGroup: /system.slice/odoo.service
           └─640 /usr/bin/python /usr/bin/odoo --config /etc/odoo/odoo.conf 
                                 --logfile /var/log/odoo/odoo-server.log

jul 05 16:52:10 servidor systemd[1]: Starting LSB: Start odoo 
daemon at boot time...
jul 05 16:52:10 servidor odoo[630]: Starting odoo: ok
jul 05 16:52:14 servidor systemd[1]: Started LSB: Start odoo daemon 
at boot time.

Otra forma de verificar, Si el servidor de aplicación de Odoo esta en funcionamiento, se realiza ejecutando el siguiente comando:

$ sudo ps aux | grep odoo
odoo      1373  0.0  2.1 111776 41812 ?        Sl   13:57   0:03 
/usr/bin/python /usr/bin/odoo --config /etc/odoo/odoo.conf --logfile 
/var/log/odoo/odoo-server.log
usuario   1945  0.0  0.1   5760  2048 pts/0    S+   15:19   0:00 
grep --color=auto odoo

Detener el servicio de Odoo

Para detener el servicio para el servidor de aplicación de Odoo, ejecute el siguiente comando:

$ sudo service odoo stop

Iniciar el servicio de Odoo

Para iniciar el servicio para el servidor de aplicación de Odoo, ejecute el siguiente comando:

$ sudo service odoo start

Reiniciar el servicio de Odoo

Para reiniciar el servicio para el servidor de aplicación de Odoo, ejecute el siguiente comando:

$ sudo service odoo restart

Forzar la recargar de configuración del servicio de Odoo

Para forzar la recargar de la configuración del servicio para el servidor de aplicación de Odoo, ejecute el siguiente comando:

$ sudo service odoo force-reload

Registro de eventos (archivo log)

Para depurar posibles errores del servidor de aplicaciones Odoo, puede consultar el archivo log, con el siguiente comando:

$ sudo tail -f /var/log/odoo/odoo-server.log

Acceder al servidor de aplicaciones Odoo

Abra el navegador en la siguiente dirección http://localhost:8069/, en esta dirección Web lucirá como la siguiente captura de pantalla:

Administrador de creación base de datos Odoo

Administrador de creación base de datos Odoo

Conclusiones

De esta forma usted ha aprendido a:

  • Instalar el servidor de aplicaciones Odoo.
  • Gestionar el servidor de aplicaciones Odoo con los comandos más comunes.
  • Auditar el registro de eventos del servidor de aplicaciones Odoo.
  • Acceder a la administrador de creación base de datos Odoo.

Referencia

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


Ernesto Crespo: Almacenar los datos de los eventos sismológicos de Funvisis con Python3

$
0
0
En el artículo sobre la captura de datos de eventos sismológicos de funvisis solamente se trabajó el orenamiento de los datos, pero hace falta almacenar la información en una base de datos, este es el tema del artículo.

Ahora se tiene varios módulos:

  • sismux_getdata.py: Es el módulo que hace el webscraping de la página de funvisis.
  • sismux_mongo.py: Es el módulo que implementa un CRUD para mongoDB a MongoLab.
  • sismux_main.py: Es el módulo principal que consulta cada 5 min la página de Funvisis para guardar la información en la base de datos si no existe.
  • sismux_apirest.py: Es el módulo que implementa un API rest(próximo artículo).
  • sismux_graphql.py: Es el módulo que implementa un API con GraphQL (próximo artículo).

Del artículo anterior se muestra el código de sismux_getdata.py:



#!/usr/bin/env python3





#Se importa beautifulSoup

from bs4 import BeautifulSoup

#Se importa la fecha

import datetime

import requests

import sys

import json



class Sismo(object):

    def __init__(self,url="http://www.funvisis.gob.ve/",home="index.php",referer='http://www.cantv.com.ve'):

        headers = {'User-agent': 'Mozilla/5.0',\

            'SSL_VERIFYHOST': 'False',\

            'FRESH_CONNECT':'True',\

            'RETURNTRANSFER':'True',\

            'SSL_VERIFYPEER': 'False',\

            'Referer': referer

            }

        self.__url = url

        self.__home = home

        self.__urlhome = self.__url + self.__home

        self.__session = requests.Session()

        self.__session.headers.update(headers)



    def GetData(self):

        #Se  obtiene la pagina por medio de session.

        try:

            self.__r = self.__session.get(self.__urlhome)

            self.__page = self.__r.content

        except (requests.exceptions.SSLError):

            print("SSL Error")

            sys.exit(0)

        except (requests.exceptions.ConnectionError):

            print("Connection Error")

            sys.exit(0)

        #Se le pasa la pagina a beautifulsoup usando lxml de parser.

        self.__soup = BeautifulSoup(self.__page,"lxml")

        #Se crea el diccionario que almacena los datos

        self.__sismo = {}



        #SE obtiene el primer  div que tengan class module

        for row in self.__soup('div', {'class': 'module'})[0]:

            #Se obtiene el tag a para luego obtener el href y tener el url

            #del gif del sitio de funvisis que tiene la imagen del sitio donde

            #fue el sismo.

            trs = row.find('a')

            if trs == -1:

                continue

            self.__sismo['urlref'] = self.__url  + trs.get('href',None)



            trs = row.find('tr')

            if trs == -1:

                continue

            #Obtiene los datos del sismo del sitio de funvisis

            datos = trs.find('td').getText().split('&nbsp;')[0].split('\n\t')

            self.__sismo['fecha'] = datos[0].split('\xa0')[1]

            date = self.__sismo['fecha'].split("/")

            self.__sismo['hora'] = datos[2].split("")[-2]

            time= self.__sismo['hora'].split(":")

            self.__sismo['datetime'] = datetime.datetime(int(date[2]),int(date[1]),int(date[0]), int(time[0]), int(time[1]))

            self.__sismo['magnitud'] = datos[4].split("")[-1]

            mag = datos[6].split("")[-1].split('\xa0')

            self.__sismo['profundidad'] = mag[0] + ""+ mag[1]

            lat = datos[8].split("")

            self.__sismo["latitud"] = lat[-2] + "" + lat[-1]

            lon =  datos[10].split("")

            self.__sismo['longitud'] = lon[-2] + ""+ lon[-1]

            self.__sismo['epicentro'] = datos[11].split(":")[1].split('\xa0')[-1]

            self.__sismo['loc'] = {'type':'Point','coordinates' : [ float(lat[-2]) , float(lon[-2]) ]}

        return self.__sismo





El código del módulos sismux_mongo.py se muestra a continuación: 




#!/usr/bin/env python3
i
mport pymongo

from pymongo import MongoClient


#Se define el uri de la conexion a mongolab

uri = 'mongodb://usuario:clave@ds045064.mlab.com:45064/basedatos'

#Se define la base de datos y la cole

#ccion


base
datos = "sismux"

coleccion = "sismos"


#Se crea la clase BaseDatos que simplemente implemente un crud.
class BaseDatos(object):

    #Se define la intancia de mongoclient, se define la base de datos y

    #la coleccion

    def __init__(self,uri=uri,basedatos=basedatos,coleccion=coleccion):

        self.__client = MongoClient(uri)

        self.__db = self.__client[basedatos]

        self.__coleccion = self.__db[coleccion]


  def ConsultarTodos(self):

        #Traer todos los elementos de la consulta.

        elementos = []

        for i in self.__coleccion.find():

            elementos.append(i)

        return i


  def Consultar(self,patron):

        #Se devuelve la consulta de un elemento

        return self.__coleccion.find_one(patron)


  def Insertar(self,documento):

        #Se inserta un documento

        self.__coleccion.insert(documento)


  def Finalizar(self):

        #Se cierra la conexion con la base de datos
        self.__client.close()



A continuación se muestra sismux_main.py:



#!/usr/bin/env python3
from sismux_getdata import Sismo
importjson
importtime
i
mport sys

from sismux_mongo import BaseDatos
i
mportdatetime
i
mport logging

bd = BaseDatos()
sismo  = Sismo()
datos = sismo.GetData()
#bd.Insertar(datos)
#datos['datetime']
d
atime = datetime.datetime(2017,5,25, 20, 51)
#print(bd.Consultar({'datetime': datie}m))
def main():

   #Se crea la instancia a la base de datos
  bd = BaseDatos()
   #Se crea la instancia del webscraping
sismo = Sismo()
  #Se optiene los datos de la pagina de funvisis
datos = sismo.GetData()
  #Se consulta si ya existe el dato guardado en la base de datos
  query1 = bd.Consultar({'datetime': datos['datetime']})
  query2 = bd.Consultar({'loc': {'coordinates': datos['loc']['coordinates']}})
  if (query1 != None):
        return False
else:
      #Si no existe se inserta en la base de datos.
      bd.Insertar(datos)
      return True

#Se crea un ciclo para consultar cada 5min

de
f ciclo(tim=300):
    #Se define el log
    logging.basicConfig(filename="sismux.log",level=logging.DEBUG,format='%(asctime)s %(message)
s')
while True:
        #Se ejecuta main.
      result = main()
      #Se guarda el resultado de main en el log
      logging.info(result)
      #Se espera 5 min (por defecto)
      time.sleep(tim)



if __name__ == '__main__':
   #Se ejecuta la funcion ciclo
ciclo()


Para ejecutar el programa se corre:

python3 sismux_main.py 

Al ejecutarlo se crea un archivo log y en el se tiene lo siguiente:

tail -f sismux.log 
2017-07-24 11:42:43,149 Starting new HTTP connection (1): www.funvisis.gob.ve
2017-07-24 11:42:43,821 http://www.funvisis.gob.ve:80 "GET /index.php HTTP/1.1" 200 14319
2017-07-24 11:42:56,560 False
2017-07-24 11:47:56,637 Starting new HTTP connection (1): www.funvisis.gob.ve
2017-07-24 11:47:57,466 http://www.funvisis.gob.ve:80 "GET /index.php HTTP/1.1" 200 14319
2017-07-24 11:48:12,086 False
2017-07-24 11:53:12,209 Starting new HTTP connection (1): www.funvisis.gob.ve
2017-07-24 11:53:12,976 http://www.funvisis.gob.ve:80 "GET /index.php HTTP/1.1" 200 14319
2017-07-24 11:53:18,516 False
2017-07-24 11:58:18,605 Starting new HTTP connection (1): www.funvisis.gob.ve
2017-07-24 11:58:30,984 http://www.funvisis.gob.ve:80 "GET /index.php HTTP/1.1" 200 14319
2017-07-24 11:58:57,034 False


Como muestra el log ya se tiene el último sismo en la base de datos.

En la siguiente figura se muestra un documento almacenado en la base de datos:


Para el siguiente artículo se desarrollará el API. 

Nota: En un futur artículo se muestra la creación de un demonio y como ponerlo a funcionar con SystemD y el empaquetado de todo los módulos desarrollados. 

Leonardo Caballero: Instalar Odoo 9 en Debian 8 “Jessie”

$
0
0

Este articulo explica como instalar un servidor local Odoo 9 en Debian 8 “Jessie” desde el código fuente, para entornos de desarrollo.

Introducción

Logotipo de Odoo 9

Logotipo de Odoo 9

Odoo (conocido hasta la versión 7 como OpenERP y anteriormente hasta la versión 4 como TinyERP) es mas que un sistema de ERP integrado de código abierto actualmente producido por la empresa belga Odoo S.A. El fabricante declara su producto como una alternativa de código abierto a SAP ERP y Microsoft Dynamics.

Debian GNU/Linux

Debian GNU/Linux

Debian GNU/Linux, es un sistema operativo, liberado bajo la licencia GPL y desarrollado por “Proyecto Debian” una comunidad de desarrolladores y usuarios.

Instalación desde código fuente

Esta forma de instalación es más difícil para empezar a usarlo a diferencia de los instaladores empaquetados, proporciona una mayor flexibilidad, debido a que los instaladores empaquetados (para Windows, distribuciones basadas en Ubuntu / Debian o Redhat / Fedora incluso Mac OS X), generalmente no permiten ejecutar varias versiones en el mismo sistema y no proporcionan acceso fácil a Odoo.

Este modo de instalación le facilita el desarrollar módulos en Odoo 9 1 y versiones superiores, además le puede utilizar como base para el despliegue en producción.
El código fuente de Odoo puede obtenerse descargando directamente desde el control de versiones del proyecto usando utilizando la herramienta git o en un archivo comprimido tarball / zip.

Se recomienda encarecidamente utilizar git, ya que facilita contribuir a las mejoras de Odoo como a la actualización, cambios entre varias versiones (incluida la versión de desarrollo actual).

Instalando y configurando Postgresql

Para instalar el servidor de base de datos Postgresql, ejecute los siguientes comando:

$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install postgresql postgresql-client libpq-dev

Inicie sesión en el usuario administrativo de Postgresql, ejecutando el siguiente comando:

$ sudo su - postgres

Debe crear el usuario de conexión de Odoo con Postgresql, ejecutando el siguiente comando:

$ createuser --createdb --username postgres --no-createrole \ 
             --no-superuser --pwprompt USUARIO-LINUX

No se olvide de reemplazar USUARIO-LINUX con su nombre de usuario Linux que ejecutara Odoo. Se le pedirá ingresar la contraseña, introduzca la contraseña y confirmarla, como se muestra en el mensaje a continuación:

Enter password for new role:
Enter it again:

Este usuario debe ser el mismo nombre del usuario el cual lo ejecutará, en este caso el usuario Linux, en y le asigna una contraseña, estas credenciales de usuario debemos tenerlo presente porque la usara mas adelante para la configuración de Odoo con Postgresql.

Cierre la sesión usuario administrativo de Postgresql, ejecute le siguiente comando:

$ exit

Instalando librerías

Instalando librerías y utilidades necesarias para la instalación de Odoo, ejecutando el siguiente comando:

$ sudo apt-get install git gcc libevent-dev libxml2-dev \
       libxslt1-dev libsasl2-dev libldap2-dev libssl-dev \
       libjpeg-dev

Instalando paquetes Python vía Debian, ejecutando el siguiente comando:

$ sudo apt-get install python-dev python-pip \ 
       python-virtualenv python-werkzeug
$ sudo pip install passlib

Librería LESS CSS

Odoo 9 depende de node-less, este paquete es el modulo de Less CSS para nodejs, entonces debe instalar “nodejs” y “npm”, ejecutando los siguientes comando:

$ sudo apt-get install npm
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
$ sudo npm install -g less

Librería Wkhtmltopdf

Esta librería es necesaria para imprimir reportes PDF, usted debe instalar usted mismo wkhtmltopdf: La versión de wkhtmltopdf disponible en los repositorios Debian no soporta encabezado y pie de pagina y por eso no puede ser instalada automáticamente. La versión recomendada para Debian Jessie es 0.12.1 esta disponible de forma no oficial en el repositorio extra http://nightly.odoo.com/extra/.

Entonces primero debe descargar el instalador de Debian de la dependencia wkhtmltopdf para arquitectura i386 o para arquitectura amd64. En mi caso es un amd64 el que usare para la demostración de la instalación.

Luego debe instalar y configurar wkhtmltopdf, ejecutando los siguientes comando:

$ sudo dpkg -i wkhtmltox-0.12.1.2_linux-jessie-amd64.deb
$ sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf 
$ sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage

Instalando Odoo Server

Para un ambiente de desarrollo se recomienda instalar Odoo desde el repositorio de Github, ejecutando los siguientes comando:

$ mkdir $HOME/proyectos ; cd $HOME/proyectos/
$ git clone https://github.com/odoo/odoo --depth 1 \
      --branch 9.0 --single-branch

Esto puede tardar un poco en función de la velocidad de su conexión a Internet.

–depth 1

Le indica al comando, sólo recupera la última versión sin toda la historia. La descarga es ahora un poco más rápido.

Entorno virtual Python

Creando un entorno virtual Python, esto se realiza para instalar todas las dependencias Python sin afectar su sistema, ejecutando los siguientes comando:

$ mkdir $HOME/virtualenv ; cd $HOME/virtualenv
$ virtualenv odoo9
$ source $HOME/virtualenv/odoo9/bin/activate

Ejecutando estos comando previos esta activado el entorno virtual ya que la consola de comando tiene el prefijo (odoo9) esto indica que esta dentro del entorno virtual.

La utilidad del entorno virtual es para instalar todas las dependencias Python, ejecutando el siguiente comando:

(odoo9)$ pip install -r $HOME/proyectos/odoo/requirements.txt

Esto proceso de instalación, puede tardar un poco en función de la velocidad de su conexión a Internet. Para mas información sobre los entornos virtuales consulte el siguiente articulo https://lcaballero.wordpress.com/2012/10/22/creacion-de-entornos-virtuales-python/

Módulos adicionales

Creando un directorio para almacenar los módulos adicionales propios, ejecutando los siguientes comando:

(odoo9)$ mkdir -p $HOME/proyectos/odoo/extra_addons
(odoo9)$ chown $USER: $HOME/proyectos/odoo/extra_addons

Este directorio se utilizara para sus propios módulos / addons de terceros.

Archivo de logs de Odoo

La configuración puedo ser encontrada en el archivo odoo-server.log

Crear y configurar apropiadamente un directorio para almacenar el archivo de logs de Odoo server, ejecutando los siguientes comando:

(odoo9)$ mkdir $HOME/proyectos/odoo/log/
(odoo9)$ touch $HOME/proyectos/odoo/log/odoo-server.log
(odoo9)$ chmod 755 $HOME/proyectos/odoo/log/odoo-server.log
(odoo9)$ chown -R $USER: $HOME/proyectos/odoo/log/

Este archivo es de mucha utilidad para supervisar los procesos de arranque, instalación, reporte detallado de acciones o eventos de errores ocurridos del servidor Odoo.

Configurando Odoo Server

La configuración puedo ser encontrada en el archivo odoo-server.conf

Este archivo puede ser editado para conectar una BD local o remota Postgresql. Copie y otorgue los permisos necesarios para su ejecución, ejecutando los siguientes comando:

(odoo9)$ cp ~/proyectos/odoo/debian/openerp-server.conf \
         ~/proyectos/odoo/odoo-server.conf
(odoo9)$ chown $USER: $HOME/proyectos/odoo/odoo-server.conf
(odoo9)$ chmod 640 $HOME/proyectos/odoo/odoo-server.conf

Luego edite el archivo odoo-server.conf, ejecutando el siguiente comando:

(odoo9)$ nano $HOME/proyectos/odoo/odoo-server.conf

Agregue en el archivo odoo-server.conf lo siguiente:

db_user = USUARIO-POSTGRES-CREADO
db_password = CLAVE-DEL-USUARIO-POSTGRES-CREADA
addons_path = /RUTA-ABSOLUTA/addons,/RUTA-ABSOLUTA/extra_addons
logfile = /RUTA-ABSOLUTA/log/odoo-server.log

Modifique donde RUTA-ABSOLUTA, es la ruta absoluta del directorio donde se clone el repositorio de Odoo, para este ejemplo /home/USUARIO/proyectos/odoo/.

Modifique donde RUTA-ABSOLUTA, es la ruta absoluta del directorio donde se clone el repositorio de Odoo, para este ejemplo /home/USUARIO/proyectos/odoo/

Modifique el valor addons_path, removiendo es la ruta absoluta del directorio addons por defecto de este valor /usr/lib/python2.7/dist-packages/openerp/addons, a este valor /home/USUARIO/proyectos/odoo/addons, adicionalmente anexe otro valor /home/USUARIO/proyectos/odoo/extra_addons.

Donde USUARIO, es el nombre del usuario Linux que ejecutara Odoo.

Presione para guardar Ctrl + O y luego presione Enter. Luego para salir presione Ctrl + X.

Monitorear los procesos de Odoo

Usted ahora debe ser capaz de ver el archivo de registro del servicio Odoo, para hacer esto abra una terminal de consola de comando distinta a la que actualmente usa para el proceso de instalación y ejecute el siguiente comando:

(odoo9)$ tail -f $HOME/proyectos/odoo/log/odoo-server.log

Esta terminal de consola de comando solo se ejecutara si quiere monitorear los procesos.

Iniciar servidor de Odoo

Ahora abra una nueva consola e inicié el servicio de Odoo, ejecutando los siguientes comando:

(odoo9)$ ~/proyectos/odoo/odoo.py -c ~/proyectos/odoo/odoo-server.conf

Entonces usted puede ver el archivo odoo-server.log mostrando el siguiente mensaje:

INFO ? openerp.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069

Si el archivo de registro indica HTTP service (werkzeug) running on 0.0.0.0:8069 entonces el servidor Web de Odoo se esta ejecutando bien, ahora en su navegador web en la dirección IP local 127.0.0.1 de su servicio Odoo el cual por defecto usa el puerto 8069. Trate a continuación en su navegador con la dirección: http://127.0.0.1:8069.

Recrear la Base de datos de Odoo

Por primera vez, verá gestor de bases de datos para crear su primera base de datos. Esto se realiza por que Odoo le permite tener varias aplicaciones en un mismo servidor.

Creando BD de aplicación Odoo

Creando BD de aplicación Odoo

Si marca la casilla “Load demonstration data” este cargara data de prueba para visualizar el funcionamiento de Odoo y de los próximos módulos que habilite.

Esta pantalla aparecerá la primera vez que instale Odoo o luego que decida crear una nueva base de datos para una nueva aplicación Odoo. Para posterior acceso al este modulo consulte la dirección URL: http://127.0.0.1:8069/web/database/manager.

Habilitando módulos disponibles de Odoo

Luego que defina su bases de datos para la aplicación Odoo, debe habilitar los módulos disponibles para mi aplicación Odoo

Habilitando módulos disponibles para mi aplicación Odoo

Habilitando módulos disponibles para mi aplicación Odoo

De esta forma ya tiene instalado y configurado mínimamente el servidor Odoo y una aplicación web de Odoo, solo quedara realizar configuraciones básicas de la aplicación, creación la empresa, sus empleados, sus usuarios y demás procedimientos propios de cada modulo habilitado en esta aplicación para poder empezar a usar Odoo.

Detener servidor Odoo

Para detener el servidor Odoo, por favor, presione la combinación de teclas Ctrl + C para enviar una segunda señal para forzar el cierre del proceso del servicio del servidor.

Referencias

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


También puede realizar su donativo con Bitcoin (BTC) en escaneando el siguiente código QR:

¡Ayúdame a continuar Blog de lcaballero.wordpress.com!

O usando en la siguiente dirección:

bitcoin:13uZUXXqLP3Ct3ksWHXnDqSrbMbhDV9hGz



Leonardo Caballero: Instalar Odoo 9 en Windows 8

$
0
0

Este articulo explica como instalar un servidor local Odoo 9 en Windows 8 en modo de pruebas local en su PC.

Introducción

Logotipo de Odoo 9

Logotipo de Odoo 9

Odoo (conocido hasta la versión 7 como OpenERP y anteriormente hasta la versión 4 como TinyERP) es mas que un sistema de ERP integrado de código abierto actualmente producido por la empresa belga Odoo S.A. El fabricante declara su producto como una alternativa de código abierto a SAP ERP y Microsoft Dynamics.

Instalador para Windows

También conocido Instalador empaquetado, Odoo ofrece una forma simple de empezar a usarlo bajo la plataforma como:

Este instalador le permite una mayor flexibilidad en el alojamiento y despliegue del sistema y un mayor control sobre dónde se almacenan los datos. La carga de mantenimiento se transfiere al usuario.

Adecuado para realizar pruebas de Odoo, desarrollando módulos para su negocio y puede ser usado para el uso de entornos de producción de su negocio a largo plazo con unos trabajos adicionales en las configuraciones de despliegue y mantenimiento.

Instalando

Luego de descargar el archivo de instalación aquí haga doble clic sobre el archivo para lanzar el asistente de instalación:

Seleccionar idioma del instalador

Seleccionar idioma del instalador

 

Bienvenida al instalador de Odoo 9

Bienvenida al instalador de Odoo 9

 

Aceptar los términos de licencia de Odoo 9

Aceptar los términos de licencia de Odoo 9

 

Seleccionar que componentes del Odoo 9 debe instalar

Seleccionar componentes de Odoo 9 a instalar

 

Definir las credenciales de usuario y base de datos de la aplicación Odoo 9

Definir las credenciales de usuario y base de datos de la aplicación Odoo 9

 

Definir ruta de instalación de Odoo 9

Definir ruta de instalación de Odoo 9

 

Ejecutando la instalación de Odoo 9

Ejecutando la instalación de Odoo 9

 

Instalando motor de base de datos de Odoo 9

Instalando motor de base de datos de Odoo 9

 

Instalación de Odoo 9 completa

Instalación de Odoo 9 completa

 

Iniciando el servicio de Odoo 9

Iniciando el servicio de Odoo 9

Luego continue en una ventana del navegador en la dirección http://127.0.0.1:8069

Recrear la Base de datos de Odoo

Por primera vez, verá gestor de bases de datos para crear su primera base de datos. Esto se realiza por que Odoo le permite tener varias aplicaciones en un mismo servidor.

Creando BD de aplicación Odoo

Creando Base de Datos para aplicación Odoo

Esta pantalla aparecerá la primera vez que instale Odoo o luego que decida crear una nueva base de datos para una nueva aplicación Odoo. Para posterior acceso al este modulo consulte la dirección URL: http://127.0.0.1:8069/web/database/manager

Habilitando módulos disponibles de Odoo

Luego que defina su bases de datos para la aplicación Odoo, debe habilitar los módulos disponibles para mi aplicación Odoo

Habilitando módulos disponibles para mi aplicación Odoo

Habilitando módulos disponibles para mi aplicación Odoo

De esta forma ya tiene instalado y configurado inicialmente el servidor Odoo con una aplicación web de Odoo, solo quedara realizar configuraciones básicas de la aplicación, creación la empresa, sus empleados, sus usuarios y demás procedimientos propios de cada modulo habilitado en esta aplicación para poder empezar a usar Odoo.

Detener servidor Odoo

Para detener el servidor Odoo use el Panel de control de Servicios de Windows para Reiniciar/Iniciar/Detener del servicio Odoo.

Diríjase al Menú Inicio –> ingrese Servicios–> busque Odoo Server–> Seleccione linea y haga clic en los botones Reiniciar / Iniciar / Detener de arriba.

Referencias

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


También puede realizar su donativo con Bitcoin (BTC) en escaneando el siguiente código QR:

¡Ayúdame a continuar Blog de lcaballero.wordpress.com!

O usando en la siguiente dirección:

bitcoin:13uZUXXqLP3Ct3ksWHXnDqSrbMbhDV9hGz


Leonardo Caballero: Instalación de phpPgAdmin en Debian Jessie

$
0
0

Introducción

Hace un tiempo publique como instalar un servidor de base de datos PostgreSQL en Debian Wheezy, en esa oportunidad explicaba como instalar y configurar el servicio del servidor PostgreSQL desde la linea de comando, ahora le ofrezco como administrar gráficamente este servicio de base de datos para usando una herramienta gráfica y Web llamada phpPgAdmin.

phpPgAdmin

Instalación

Para este caso se instalara phpPgAdmin en Debian GNU/Linux Jessie con el servidor y un cliente de lineas de comando PostgreSQL de la versión 9.1, ejecutando el siguiente comando:

$ sudo apt-get install phppgadmin php5-pgsql

Configuración

Una vez realizado esto, ya el programa esta instalado y tienen un muy practico y además elegante frontend para administrar su servidor de Postgresql, recuerden que por defecto no podrán iniciar sesión en el servidor desde phpPgAdmin como root, postgres u otro usuario de este tipo, si lo desean deben realizar un cambio en el archivo:

$ sudo nano /etc/phppgadmin/config.inc.php

El archivo config.inc.php este archivo lo pueden encontrar en /etc/phppgadmin/ deben cambiar la siguiente línea:

$conf['extra_login_security'] = true;

por esta linea:

$conf['extra_login_security'] = false;

Una vez hecho ese cambio puede ejecutar su instalación.

Ejecución

Acceda a la siguiente dirección URL http://127.0.0.1/phppgadmin/

Bienvenido a phpPgAdmin

Bienvenido a phpPgAdmin

Para acceder a administrar sus base de datos usted allí debe colocar el nombre de usuario y contraseña de PostgreSQL, entonces le mostrar una pantalla principal de gestión de base de datos Web de phpPgAdmin.

Configuraciones generales de phpPgAdmin

Configuraciones generales y Bases de datos desde phpPgAdmin

De esta forma puede administrar sus bases de datos de forma gráfica y a través de la Web usando el navegador de su preferencia.

Ver también

Le recomiendo consultar el siguiente enlace para complementar el conocimiento adquirido en esta entrada en mi blog.

Referencia

¡Haz tu donativo!

Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dolares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.


PayPal - The safer, easier way to pay online!


También puede realizar su donativo con Bitcoin (BTC) en escaneando el siguiente código QR:

¡Ayúdame a continuar Blog de lcaballero.wordpress.com!

O usando en la siguiente dirección:

bitcoin:13uZUXXqLP3Ct3ksWHXnDqSrbMbhDV9hGz


Miguel Useche: Mi entrevista en WordPress.tv por el Global WordPress Translation Day

$
0
0

El pasado noviembre me hicieron una entrevista en WordPress.tv, pues desde el 2016 he estado organizando encuentros de WordPress en San Cristóbal, Venezuela. El 12 de noviembre de 2016, organizamos el único Global WordPress Translation Day de latinoamérica. Allí explicamos como realizar traducciones y una herramienta para facilitar las hecha por Diego Juliao con la participación del localizador oficial para Venezuela Jordi Cuevas.

Mi entrevista en WordPress.tv

Puedes ver la entrevista a continuación, está en ingles, hablo un poco de mí y las tareas que realizo en los meetups. También explico como nació la comunidad local de WordPress y otras cosas.

Espero que les guste.

La entrada Mi entrevista en WordPress.tv por el Global WordPress Translation Day aparece primero en El blog de Skatox.

José Miguel Parrella Romero: The story behind the open cloud ninja sloth

$
0
0

A couple years ago Sara was leading a project to figure out a way to convey the spirit of an open cloud to our internal audiences. A recurrent element in our journey has been the need to communicate visually not only the growing portfolio but also the multi-faceted open source strategy in the cloud, recognizing the many nuances and complexities of it.

Over the years we’ve crafted many vehicles to do so, from the simple ones like this spheniscidae, the hexagon, or the many logo slides to the complex like the portfolio, choice or approach ones. But we were missing simpler elements, particularly ones with a story that you can tell at a bus stop. I kept telling Sara to think as an open cloud enthusiast picking which temporary tattoo to apply. So working with the internal community the team came up with the open cloud ninja sloth:

As you can notice, the sloth came with the addition of an icon highlighting the “open” nature of the cloud, and our designer was quick to notice the hidden heart as well. Since then, the sloth and the open cloud icon have been spotted from stickers to challenge coins, but I was never expecting to find an Aussie wearing an open cloud ninja sloth t-shirt in Las Vegas (arguably, Vegas would be the one place where you could expect that)

Funnily enough, I didn’t know where he got his t-shirt from (Ignite Australia), and he didn’t know where the sloth came from. So I shared with him the story of the open cloud ninja sloth. The cloud with a heart that is literally open and the ninja sloth committed to that open cloud which might surprise you… even if slooooow.

I learned a ton from the journey of the open cloud ninja sloth and can’t stop encouraging teams to work on their icon and spirit animals even if they don’t have a product or a brand to push and even if they excel at any other type of visual expression.

At the very least it invites a question at a bus stop, or an impromptu storytelling session in Vegas.

With a hat tip to Ken, Ale and David, thanking Caroline for always reminding me when someone asks for the story and wishing Sara all the best in her new role!


Miguel Useche: Error de JSON malformed al enviar datos a Zoho

$
0
0

Zoho es una excelente herramienta en la nube para la administración de negocios. Posee una excelente API REST para realizar integración de datos entre sistemas. Hace unos días tuve problemas para subir información al API y me arrojaba el error JSON malformed.

Cómo solucionar el error de JSON malformed

La documentación no indica cual puede ser el problema y en que campo. Obviamente es un error de codificación de JSON pero al revisar mi código y los datos que estaba enviando, noté que el JSON estaba bien validado. Pero me di cuenta que Zoho pide enviar el JSON dentro del cuerpo de la petición en texto plano, no en formato JSON. Por ello, al codificar los campos en la cadena, el símbolo de ampersand ( & ) puede confundirse como el inicio de un parámetro GET. Así que es necesario codificarlo con su respectivo valor en HTML que es %26.

Así que para solucionar mi problema tuve simplemente que reemplazar el valor luego de ser codificado en JSON:

$jsonString=str_replace('&amp;','%26',json_encode($invoice));
$body='&amp;JSONString='.$jsonString;

¡Listo! Ahora si podrás subir la data a Zoho.

La entrada Error de JSON malformed al enviar datos a Zoho aparece primero en El blog de Skatox.

Kenner Roa: Free Software & Open Source

$
0
0
Está Escrito:
Porque no quiero, hermanos, que ignoréis que nuestros padres todos estuvieron bajo la nube, y todos pasaron el mar; y todos en Moisés fueron bautizados en la nube y en el mar, y todos comieron el mismo alimento espiritual, y todos bebieron la misma bebida espiritual; porque bebían de la roca espiritual que los seguía, y la roca era Cristo. (1 Corintios 10:1-4)
Tomado de :wikipedia
Free Software
La Free Software Foundation o Fundación por el Software Libre es una organización creada en octubre de 1985 por Richard Stallman y otros entusiastas del software libre con el propósito de difundir este movimiento.
La Fundación por el Software Libre (FSF) se dedica a eliminar las restricciones sobre la copia, redistribución, entendimiento, y modificación de programas de computadoras. Con este objeto, promociona el desarrollo y uso del software libre en todas las áreas de la computación, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU.
En sus inicios, la FSF destinaba sus fondos principalmente a contratar programadores para que escribiesen software libre. A partir de mediados de la década de 1990 existen ya muchas compañías y autores individuales que escriben software libre, por lo que los empleados y voluntarios de la FSF han centrado su trabajo fundamentalmente en asuntos legales, organizativos y promocionales en beneficio de la comunidad de usuarios de software libre.

Actividades de la FSF

La FSF se creó con la idea original de promover el software libre. La organización desarrolla el sistema operativo GNU como ejemplo de ello.
Las Licencias GNU
La FSF elabora, mantiene y defiende la Licencia Pública General GNU (GNU GPL),
la licencia de software libre más utilizada, cuya última versión es la GPLv3 que fue publicada en forma definitiva en junio de 2007. Aparte la FSF también es responsable de la [GNU LGPL|Licencia Pública General Reducida GNU] (GNU LGPL) y la Licencia de documentación libre GNU (GNU iFDL).
La FSF tiene recursos y voluntad para hacer cumplir las licencias que elabora. Pero solo puede presentar demandas, sobre software del cual posea derechos de autor. La fundación se enfrenta cada año a unas 50 violaciones de la GPL y siempre trata de evitar llegar a los tribunales.
Alojamiento de proyectos
La FSF aloja proyectos de software libre en su sitio web Savannah. Ofrece una de interfaz web para el hosting y el mantenimiento de las páginas web de los proyectos, seguimiento de erroresCVSFTP, y listas de correo. Hospeda más de 2800 proyectos.

Open Source
Open Source (Código abierto) es el término con el que se conoce al software distribuido y desarrollado libremente. El código abierto tiene un punto de vista más orientado a los beneficios prácticos de compartir el código que a las cuestiones éticas y morales las cuales destacan en el llamado software libre.
El código abierto es el software desarrollado y distribuido libremente. Se focaliza más en los beneficios prácticos (acceso al código fuente) que en cuestiones éticas o de libertad que tanto se destacan en el software libre. Para muchos el término «libre» hace referencia al hecho de adquirir un software de manera gratuita, pero más que eso, la libertad se refiere al poder modificar la fuente del programa sin restricciones de licencia, ya que muchas empresas de software encierran su código, ocultándolo, y restringiéndose los derechos a sí misma.

Historia

Se utilizó por primera vez en 1990 las comunidades de software libre, tratando de usarlo como reemplazo al ambiguo nombre original en inglés del software libre (free software). Lo cual implica, para el caso que nos ocupa, «software que podemos usar, escribir, modificar y redistribuir gratuitamente» (software gratuito) y, según la acepción española de libertad.
La expresión, para algunos, no resultó apropiada como reemplazo para el ya tradicional free software, pues eliminaba la idea de libertad, confundida con la simple gratuidad. No obstante continúa siendo ambivalente, puesto que se usa en la actualidad por parte de programadores que no ofrecen software libre pero, en cambio, sí ofrecen el código fuente de los programas para su revisión o modificación previamente autorizada por parte de sus pares académicos.
Dada la ausencia de tal ambigüedad en la lengua española, el término software libre es adecuado para referirse a programas que se ofrecen con total libertad de modificación, uso y distribución bajo la regla implícita de no modificar dichas libertades hacia el futuro. De hecho en inglés también se usa el término «libre software» para evitar ambigüedades semánticas.
Desde el punto de vista de una «traducción estrictamente literal», el significado textual de código abierto es que «se puede examinar el código fuente», por lo que puede ser interpretado como un término más débil y flexible que el del software libre. Sin embargo, ambos movimientos reconocen el mismo conjunto de licencias y mantienen principios equivalentes.
Sin embargo, hay que diferenciar los programas de código abierto, que dan a los usuarios la libertad de mejorarlos, de los programas que simplemente tienen el código fuente disponible, previa restricciones sobre su uso o modificación.
En la actualidad el código abierto se utiliza para definir un movimiento nuevo de software (la Iniciativa Open Source), diferente al movimiento del software libre, incompatible con este último desde el punto de vista filosófico, y completamente equivalente desde el punto de vista práctico, de hecho, ambos movimientos trabajan juntos en el desarrollo práctico de proyectos.
La idea bajo el concepto de código abierto es sencilla: cuando los programadores (en Internet) pueden leer, modificar y redistribuir el código fuente de un programa, este evoluciona, se desarrolla y mejora. Los usuarios lo adaptan a sus necesidades, corrigen sus errores con un tiempo de espera menor a la aplicada en el desarrollo de software convencional o cerrado, dando como resultado la producción de un mejor software.

Jesus Palencia: Lista de sitios para ver o descargar películas y series

$
0
0
Como el titulo lo indica esta es una pequeña lista (sin ningún orden en especifico) de sitios para ver/descargar películas y series, espero les guste. serieszone.com seriesypelis24.com atresplayer.com seriesonline.net seriesw.net wikiseriesonline.com inkaseries.com seriesgato.com divxatope1.com estrenosly.org mejorenvo.com darkville.com.mx seriesytv.net seriesdanko.to Si … Sigue leyendo

Jorge Ortega: Activando las Tecnologías de asistencia en el escritorio Mate en Canaima5.0

$
0
0

Hola amigos!, seguro me estaban extrañando, bueno espero que un poquito, he estado ocupado con algunos desarrollos en python3 y flask. En esta entrada revisaremos como activar las tecnologías de asistencia para que nuestro lector de pantalla orca funcione correctamente en el escritorio Mate.

Estos son los pasos a seguir para activar las tecnologías de asistencia, teniendo en cuenta que debemos tener instalado en nuestro equipo Canaima5.0 con el escritorio Mate. Los pasos serán explicados de forma que una persona ciega pueda ejecutarlos sin ayuda visual, así que manos al teclado:

  1. Abrir el menú principal presionando las teclas alternar+F1.
  2. Presionamos 4 veces la tecla de dirección arriba, lo que nos lleva a “Sistema”.
  3. Luego estando en “Sistema”, presionamos una vez la tecla derecha, esto nos ubica en “Preferencias”, ahora presionamos de nuevo la tecla derecha y la tecla de arriba 2 veces, lo que nos ubica en “Personal”
  4. Ya colocados en “Personal” presionamos una vez la tecla a la derecha y una hacia arriba que nos deja en “Tecnologías de asistencia”.
  5. Estando en “tecnologías de asistencia” pulsamos la tecla enter, lo que nos abrirá una ventana.
  6. En esta ventana abierta, presionamos una vez la tecla tabular, que nos lleva a “Activar las tecnologías de asistencia” que es una casilla de verificación que deberemos marcar, pulsando la barra espaciadora.
  7. Ya habiendo activado la casilla de “Activar las tecnologías de asistencia”, presionamos 4 veces el tabulador, para llegar al botón de “Cerrar”, aquí presionamos enter.
  8. Reiniciamos el equipo con control+alternar+F1 y presionando Mayusculas+tabular 2 veces para que nos lleve al botón “Reiniciar” y pulsamos enter

Listo, solo queda activar el lector de pantalla orca cuando reinicie el equipo, en caso que no sepas como activar el Orca solo presiona alternar+F2, escribe “orca” sin las comillas y presiona enter, el lector debería activarse.

La verdad se ha hecho un excelente trabajo con la accesibilidad en Canaima5.0 con el escritorio “Mate”, Felicidades a todo el equipo!. Como comentario constructivo, espero que los desarrolladores de Canaima (que se que tienen mucho trabajo), solo activen las “Tecnologías de asistencia” de forma predeterminada en las nuevas actualizaciones, para no estar haciendo todas estas maromas, que al final solo frustra a los nuevos compañeros con discapacidad visual en el uso de esta distribución.

Para finalizar aquí está un resumen de los pasos con las teclas de dirección para llegar a la ventana de “Tecnologías de asistencia”:

Se abre el menú principal (alternar+F1), luego 4 veces la tecla arriba, 2 veces la tecla derecha, 2 a arriba, una a la derecha, una a arriba, luego enter. Se nos abre una ventana por lo que pulsamos una vez la tecla tabular, ahora presionamos la barra espaciadora, 4 veces el tabulador y por último la tecla enter. Ya nos toca reiniciar el equipo y activar el lector de pantalla.

Estos pasos los tomamos de una Mini Cayapa Canaima de Tecnologías Asistivas, realizada el 20 de Julio del 2017 en Caracas, con compañeros con discapacidad visual y desarrolladores de la distribución Venezolana Canaima.

Saludos y no duden en comentar, preguntar o dar sus sugerencias!!


Miguel Useche: Hackeando las instrucciones de x86

$
0
0

Cuando utilizamos la computadora y encontramos problemas, siempre solemos echar la culpa a las aplicaciones, nunca lo hacemos con el hardware porque asumimos que son piezas perfectas sin fallas. También cuando hacemos auditorías de seguridad, solemos solo fijarnos en el software y vemos al hardware como una caja negra segura. Sin embargo, en esta presentación vemos como un hacker estudia la arquitectura x86 (utilizada en la mayoría de las computadoras de escritorio y servidores) y desarrolla un algoritmo para encontrar instrucciones no documentadas en los procesadores x86.

El resultado es que consigue varias de ellas, demostrando que el hardware no es tan seguro o confiable como creemos. Pues contiene varias instrucciones no documentadas.

Instrucciones no documentadas x86

Las instrucciones no documentadas, permiten codificar programas para realizar acciones secretas en tu computadora. Por ejemplo, pueder acceder a direcciones de memoria especiales (podría pertenecer a otros programas y contener información privada), acceder a registros, realizar acciones privilegiadas, entre otros.

El peligro es que ocurre a nivel de hardware y al no estar documentadas, nadie las conoce, son indetectables. No se sabe si Intel/AMD las coloca para colaborar con agencias gubernamentales, para ellos mismos, pruebas, entre otros.

Si te interesa mas el tema, observa la conferencia “Rompiendo el conjunto de instrucciones de x86”.

Esperemos ver que información oficial sale sobre estos descubrimientos, o si son vulnerabilidades que se aprovecharán en el futuro. De todos modos, deseo que te haya gustado el vídeo y recuerda compartir tu opinión en la caja de comentarios.

Happy Hardware Hacking!

La entrada Hackeando las instrucciones de x86 aparece primero en El blog de Skatox.

Jesus Palencia: Simplificando los Canales de Distribución de Firefox

$
0
0
Esta es una traducción del artículo original publicado en el blog de Mozilla Hacks. Traducción por Uriel Jurado. Agilizar nuestro proceso de entrega y llevar rápidamente nuevas características a la versión estable para usuarios y desarrolladores es una prioridad para … Sigue leyendo

Jesus Palencia: Aclarando dudas sobre las definiciones de Front-end, back-end, DBA, Sysadmin, Netadmin y Devops

$
0
0
Hace unos días durante una entrevista de trabajo observe como las personas tienden a pensar que contratar a un informático significa que este puede y debe hacer todo lo relacionado con computadoras dentro de la organización, lo cual nos llevas … Sigue leyendo

Richzendy Contreras: Aplicaciones Web Progresivas

$
0
0
Viewing all 714 articles
Browse latest View live