Sigueme por RSS! RSS

Drupal7 El parámetro ITOK

Las imágenes en Drupal pueden tener diferentes estilos (dimensiones) definidos y se suelen generar automáticamente bajo demanda (una sola vez), es decir, cuando se carga un apartado de la página que las necesita y una vez que se generan quedan almacenadas y no hay necesidad de que se realice el mismo proceso a menos que se usen diferentes estilos de imagen.

Antes de la versión 7.20 de Drupal, existía una vulnerabilidad que permitía a un ataque solicitar a drupal la generación de diferentes tipos de estilos de imagen, causando una denegación de servicio, el servidor se caía o se llenaba el disco.

Para evitar esto, Drupal introdujo en la versión 7.20 cambios importantes para controlar la generación de imágenes, el parámetro itok.

¿Cómo funciona?
  • el módulo image-styles permite definir patrones de imágenes generadas a partir de una base
  • los patrones de imagen no se generan inmediatamente, sino cuando el recurso es solicitado (cuando se renderiza la vista).
  • drupal genera un token de imagen (itok) que le permite comprobar en todo momento si el que está solicitando la imagen es el mismo Drupal
  • el token itok se agrega a las imágenes que se generan con los estilos de imagen, por ejemplo, para obtener una miniatura
  • por defecto Drupal devolverá un 403 si el parámetro itok no está en las Urls de las imágenes y si la funcionalidad sigue activa

Es posbible desde la versión 7.21 (no está recomendado) desactivar esta corrección de seguridad (en caso de incompatibilidad con otros módulos), para ello se usa la variable "image_allow_insecure_derivatives" agregando la al archivo settings.php
$setting['image_allow_insecure_derivatives'] = TRUE;

- En caso de alguna incompatibilidad con otros módulos, lo recomendable es usar otro que si trabaje bien con esta actualización o uno propio que no cause incompatibilidades.
- Si el problema es que Google no ve bien que tu Web use parámetros en las Urls de las imágenes, deberías poder indicarle que parámetros ignorar desde la herramienta Webmaster Tools.

Magento2: Error open_basedir restriction in effect. File(/etc/pki/tls/certs)

Error: Warning: is_dir(): open_basedir restriction in effect. File(/etc/pki/tls/certs) is not within the allowed path(s) ...

El problema se da porque el sistema intenta acceder a un directorio de archivos internos del servidor que se encuentra restringida (/etc/pki/tls/certs).

Podemos (entre otras cosas), editar el archivo composer.json y agregar la línea
"disable-tls":true

Dentro de la estructura de config

Ejemplo:
...
"config": {
        "use-include-path": true,
        "disable-tls": true
    },..

GNU/Linux: Convertir key a .pem

Pues eso:

En Ubuntu, Elementary OS, etc.:

openssl rsa -in ~/.ssh/keyname -outform pem > keyname.pem

Donde keyname es el nombre de tu llave pública.

Aplicamos permisos "restrictivos" a la key generada.
chmod 600 keyname.pem

API para convertir archivos a PDF desde PHP

Cloudconvert es uno de los sitios más interesante que nos hemos encontrado para convertir diferentes tipos de documentos a PDF, cuenta con una API que puede ser usada en diferentes lenguajes de programación, como PHP, Phyton, Swift, etc.

Se puede por ejemplo, programar un cron que ejecute nuestro script y lea constantemente de un directorio en busca de archivos a convertir, sean archivos .DOC, .PPT, .XLS, etc.

Para usar la API, hay que registrarse en el sitio y obtener la API KEY (algunos ejemplos de la web muestran una api key que puede ser usada temporalmente), una vez registrados, obtendremos una hash key que nos permitirá interactuar con los servicios de Cloudconvert.

Cómo usarlo
  • descargar e instalar composer en tu ordenador.
  • crear un directorio en tu servidor, por ejemplo php_pdf.
  • crear dentro de tu carpeta, un archivo llamado composer.json y dentro incluir el siguiente código:
{
 "name": "Example Application",
"description": "This is an example",
"require": {
"cloudconvert/cloudconvert-php": "2.2.*"
}
}
  • luego, abrir la consola/terminal y situarse sobre la carpeta que creamos anteriormente y ejecutar
php composer.phar install
  • el paso anterior creará una carpeta ./vendor con lo necesario para empezar a usar la API.
  • lo siguiente será crear un script (index.php) con el siguiente código:
<?php
   require __DIR__ . '/vendor/autoload.php';
   use \CloudConvert\Api;
   $api = new Api("your_api_key");
   ...
  • luego, dependiendo del tipo de archivo que se quiera convertir, usar uno u otro procedimiento, por ejemplo:
  • pasar de DOC a PDF sería así:
$api->convert([
"inputformat" => "docx",
"outputformat" => "pdf",
"input" => "upload",
"file" => fopen($doc_file, 'r'),
])
->wait()
->download();
  • pasar de PPT a PDF:
$api->convert([
"inputformat" => "ppt",
“outputformat" => "pdf",
"input" => "upload",
“file" => fopen($ppt_file, 'r'),
])
->wait()
->download();
  • pasar de XLS a PDF:
$api->convert([
"inputformat" => "xls",
"outputformat" => "pdf",
"input" => "upload",
"file" => fopen($xls_file, 'r'),
])
->wait()
->download();

Hay muchos tipos de archivos que se pueden convertir, adicional mente, desde el backend del sitio se pueden ir viendo los resultados de los archivos que se han procesado, y en caso de no haberse podido, el porqué, un motivo para que la conversión falle puede ser que el archivo esté corrupto.

Aunque para sacarle provecho a la API hay que pagar alguno de los planes que tiene, es una de las mejores opciones para convertir archivos a PDF desde PHP que hemos encontrado.

Ubuntu: habilitar puerto en el firewall

¿Necesitas habilitar un puerto del sistema?

Vamos a utilizar UFW para interactuar con el cortafuegos del kernel de Ubuntu.

Abrimos la consola y ..

Por defecto el cortafuegos/firewall suele estar desactivado, podemos ver el estado usando el comando "ufw status":
sudo ufw status

Si nos muestra algo como: "Estado: inactivo", lo habilitamos usando "ufw enable".
sudo ufw enable

que nos devolvería algo como: "El cortafuegos está activo y habilitado en el arranque del sistema".

Para abrir un puerto usamos el comando "ufw allow [puerto]", donde "[puerto]" es el número que quieres abrir, ejemplo
sudo ufw allow 10010

Si por el contrario, lo que deseas es denegar el acceso por un puerto determinado, haces: "sudo ufw deny [puerto]"
sudo ufw deny [puerto]

Si quisieras denegar todas conexiones entrantes
sudo ufw default deny

y luego reiniciar el firewall
sudo ufw disable
sudo ufw enable

Para visualizar en detalle las políticas de acceso y los estados de los puertos
sudo ufw status verbose

Ubuntu Netbeans: not all requested modules can be enabled

Si el JDK no está configurado correctamente en el IDE, recibirás el siguiente mensaje cuando intentes crear un proyecto:
Netbeans not all requested modules can be enabled
junto con una lista de módulos que no han podido ser cargados.

Para solucionarlo hay que hacer lo siguiente:
- abrimos el archivo netbeans.conf ubicado en la carpeta /etc del directorio de instalación de netbeans, en mi caso /opt/netbeans-8.2/etc
sudo gedit /opt/netbeans-8.2/etc/netbeans.conf
- una vez abierto, editamos la variable netbeans_jdkhome y le agregamos la ruta al jdk
netbeans_jdkhome="/usr/lib/jvm/java-8-oracle"
- guardamos los cambios, cerramos el archivo y reiniciamos el IDE.
- ya debería funcionar correctamente al crear un proyecto.

Instalar o desinstalar Netbeans en Ubuntu

Instalación

- debemos ir al sitio oficial https://netbeans.org
- entramos en el apartado de descargas y seleccionamos Español en la opción "IDE Language"
- descargamos la versión más acorde a nuestras necesidades
- una vez que se descarga, vamos al directorio donde se encuentra el archivo ejecutable netbeans-[version].sh
- en mi caso el archivo se llama netbeans-8.2-linux.sh
- abrimos la terminal y lo ejecutamos:
sudo sh netbeans-8.2-linux.sh
- aparecerá un asistente para guiarnos (podemos cambiar la ruta de instalación si lo deseamos)
- en mi caso lo instalo en /opt/netbeans-8.2
- luego nos va solicitando el path del JDK con la que trabajará y si instalamos el Glasshfish o el Tomcat, lo mismo (podemos dejar por defecto)
- podemos marcar la casilla Check for updates para que haga las actualizaciones automáticas
- luego de que llegue al 100% el proceso de instalación ya tendrás disponible el IDE para comenzar a trabajar

Configurar lista de S.O. en el arranque de Windows

Si te ha pasado que al arrancar el ordenador te muestra más de un sistema operativo para elegir (varias versiones de Windows por ejemplo), puedes decidir cual se carga por defecto o configurar lo para que no te muestre la lista y acceda siempre al mismo.

Para conseguirlo debes entra a tu versión de Windows favorita y clic derecho sobre

Mi PC  -> Propiedades -> Opciones avanzadas > Inicio y recuperación > Configuración

una vez allí, desmarcas la casilla Mostrar la lista de sistemas operativos durante y presionas el botón Aceptar.

Luego de reiniciar el sistema debería entrar directamente a tu versión de Windows seleccionada.