Actualizando a Drupal 7

 Sáb, 15/12/2012 - 18:47     Sandor

Me acabo de dar cuenta de un inconveniente de las instalaciones Drupal tipo Multisite: cuando actualizas a una major version, te ves obligado a actualizar todos los sitios simultáneamente, con los consiguientes dolores de cabeza. En mi caso, PlanetaInopia se encuentra alojado en un multisite con otros cinco sitios, cada uno con sus particularidades, por lo que pasar de Drupal 6 a Drupal 7 me está costando más tiempo de lo previsto en un principio.

Pero bueno, al final, después de un par de semanas, las tareas se van completando y PlanetaInopia vuelve a la normalidad. He cambiado el tema, de Fusion a Omega, y de paso he actualizado las hojas de estilo, utilizando más CSS3. Todavía quedan muchos flecos por pulir, pero ya se irán haciendo en ratos libres.

Disculpad si algo no funciona como debiera durante estos días, ¿ok?

 

Categoria: 

ZIP en alojamiento remoto

 Mié, 21/11/2012 - 19:26     Sandor

Si el otro día comentaba como descomprimir un archivo zip en nuestro hosting mediante un script PHP, hoy comentaré la operación contraria: cómo crear un archivo comprimido (y descargarlo a nuestro ordenador) con el contenido de una carpeta determinada de nuestro hosting.

Lo primero de todo es crear un script PHP (yo lo llamaré zip.php) con el siguiente contenido:

<?php
// Config Vars

$sourcefolder = "./"           ; // Default: "./"
$zipfilename  = "myarchive.zip"; // Default: "myarchive.zip"
$timeout      = 5000           ; // Default: 5000

// instantate an iterator (before creating the zip archive, just
// in case the zip file is created inside the source folder)
// and traverse the directory to get the file list.
$dirlist = new RecursiveDirectoryIterator($sourcefolder);
$filelist = new RecursiveIteratorIterator($dirlist);

// set script timeout value
ini_set('max_execution_time', $timeout);

// instantate object
$zip = new ZipArchive();

// create and open the archive
if ($zip->open("$zipfilename", ZipArchive::CREATE) !== TRUE) {
    die ("Could not open archive");
}

// add each file in the file list to the archive
foreach ($filelist as $key=>$value) {
    $zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
}

// close the archive
$zip->close();
echo "Archive ". $zipfilename . " created successfully.";

// And provide download link ?>
<a href="http:<?php echo $zipfilename;?>" target="_blank">
Download <?php echo $zipfilename?></a> 

Me daba un poco de pereza traducirlo a español, pero bueno, creo que el poco texto que tiene se entiende, ¿no? :-)

Una vez creado el archivo, lo subimos a la carpeta que deseamos comprimir via FTP (o usando el gestor de archivos que nos ofrezca nuestro servicio de hosting), y desde un navegador lo ejectuamos:

http://dominio/ruta_del_script/zip.php

Esto creará un archivo ZIP conteniendo todo el conteniendo el directorio (y los posibles subdirectorios que cuelguen de él). Cuando el script termina de ejecutarse, nos ofrece un enlace desde donde poder descargar el archivo ZIP con el navegador. Obviamente, también es posible hacerlo via FTP.

Por último, MUY IMPORTANTE, que no se os olvide borrar tanto el script, como el archivo ZIP generado.

Visto en: http://stackoverflow.com/questions/3828385/compress-archive-folder-using-php-script

 

Etiquetas: 

UNZIP en alojamiento remoto

 Jue, 15/11/2012 - 21:40     Sandor

En un servicio de hospedaje web, muchas veces es más cómodo y rápido subir un archivo comprimido por FTP y descomprimirlo en remoto, a realizar la descompresión en local y subir uno por uno todos los archivos (sobre todo, si son algunos cientos).

Una posible solución es utilizar algún administrador de archivos que nos pueda ofrecer el panel de control de nuestro alojamiento, pero en caso de que nuestro servicio de hosting no nos lo ofrezca, hay un pequeño truquillo que nos puede venir bien.

Consiste en subir el archivo ZIP a una carpeta determinada y luego subir un archivo (lo podemos llamar unzip.php), con el siguiente contenido:

<?php
     $zip = new ZipArchive;
     $res = $zip->open('mi_archivo_comprimido.zip');
     if ($res === TRUE) {
         $zip->extractTo('carpeta_donde_extraer_el_contenido/');
         $zip->close();
         echo 'ok';
     } else {
         echo 'failed';
     }
?> 

Visto en:  http://www.bjw.co.nz/developer/php/62-php-unzip-an-uploaded-file-using-php

Es un ahorro increible de tiempo, creedme. ¡Ah, y que no se os olvide luego borrar el ZIP y el script PHP! ;-)

 

Etiquetas: 

Serie documental Senderos de Gran Recorrido (2010)

 Mar, 13/11/2012 - 11:15     Sandor

Aquí os dejo los enlaces a la serie documental "Senderos de Gran Recorrido", emitido por TVE hace algunos meses. Solo son ocho capítulos, estaría bien que en próximas temporadas sigan produciendo nuevas temporadas:

 

 

Categoria: 

Redirigiendo peticiones HTTPS a HTTP en Drupal multisite

 Mar, 06/11/2012 - 10:17     Sandor

Tengo en Configbox contratado un alojamiento en donde hay instalado un sitio Drupal Multisite, que sirve dos dominios. El problema es que cuando alguien intenta acceder via HTTPS, aparece la pantalla de entrada del panel de control del dominio, en vez del error correspondiente o, lo que sería mejor, una redirección al dominio, via HTTP.

Para solucionar esto, de manera que redireccione correctamente los dos dominios, hay que crear en el directorio httpsdocs el siguiente archivo .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Con esto, si escribimos https://dominio1nos redireccionará a http://dominio1, y si escribimos https://dominio2, nos redireccionará a http://dominio2.

Etiquetas: 

Calculando el IVA

 Lun, 22/10/2012 - 13:38     Sandor

A veces (al preparar alguna factura, por ejemplo) nos encontramos con que tenemos algún importe total, del que desconocemos el IVA y la base (la cantidad sin IVA, para entendernos). Para ayudaros en el cálculo, aquí os dejo algunas de esas fórmulas que viene bien tener siempre a mano para estos menesteres :-)

  • Para averiguar el importe de IVA de una cantidad, multiplicar la cantidad por el tanto por ciento de IVA, expresado en números decimales. Es decir, si el tipo de IVA es del 21%, se multiplicaría por 0,21. Si compro una barra de pan 1,20 EUR, y se que el tipo de IVA es del 4%, la cantidad de IVA cobrada sería de 0,048 EUR.
     
  • Para averiguar la base (el importe sin el IVA) de una cantidad,  habría que multiplicar el total por uno menos el tanto por cierto de IVA, expresado en números decimales. Es decir, si se le aplica un 21%, se multiplicaría por 0,79 (1 menos el 0,21 de IVA).
Categoria: 
Etiquetas: 

Envio SMTP con VTiger 5.4 a través de Amazon SES

 Mar, 02/10/2012 - 10:57     Sandor

Llevamos trabajando con VTiger en la oficina desde hace un par de años, y la verdad es que hasta la fecha solo usábamos este CRM para tener organizados nuestros precontactos, cuentas y contactos, sin hacer uso de sus otros módulos (Oportunidades, Facturas, Tarifas, etc).

Pero desde hace algunos meses (concretamente, desde que tuve noticia del servicio SES de Amazon, que básicamente te permite enviar correos masivos a un precio ridículo), me interesó la posibilidad de realizar campañas de email marketing desde VTiger, aprovechando los contactos que teníamos ya en la base de datos.

El problema es que en esta última versión de VTiger había algún tipo de error que impedía integrar los envios de correos a través del SMTP de Amazon SES. Tras mucho preguntar e investigar he dado con una solución que lo permite:

  • Por un lado hay que sustituir el phpmailer que trae por defecto VTiger (está en modules/Emails), por una versión especialmente modificada para funcionar con Amazon SES: PHPMailer – Amazon SES Integration. En concreto, hay que copiar a modules/Emails los cuatro archivos php que comienzan por class.*
  • Además, como el Vtiger me cambiaba la dirección del From de los envios (y Amazon SES la rechazaba al no estar dada de alta como Verified Sender), he tenido que seguir los pasos que encontré en este hilo del foro de VTiger, y cambiar una linea del archivo /modules/Emails/mail.php, concretamente sustituir:
$mail->Sender= getReturnPath($mail->Host);
por
$mail->Sender= $from_email;

Con estas dos cosillas, ya solo queda configurar la configurar del servidor saliente de VTiger (/index.php?module=Settings&action=EmailConfig) con los datos particulares de la cuenta de Amazon:

Servidor de Correo Saliente: ssl://servidorsmtp:465
Usuario: tuusuario
Contraseña: tucontraseña
Email de: el email desde el que quieran que procedan tus correos.
¿Requiere Autentificación?   Si

Siguiendo estos pasos, podreis enviar correos a través del VTiger usando los servicios de Amazon SES.

Vacaciones

 Mar, 24/07/2012 - 14:18     Sandor

Me voy de vacaciones

 

¡Me voy de vacaciones!
 

Solo yo, el Camino, y 580 kilometros por delante.

¿Llegaré o me quedaré a vivir debajo de una higuera? :-)

En cualquier caso, estaré desconectado de la red, desde

el viernes 24-07 hasta aproximadamente el 20-08.

¡Prometo volver con las pilas cargadas!

Categoria: 
Etiquetas: 

Asegurar servidor SSH

 Lun, 14/05/2012 - 18:18     Sandor

Aquí van algunos consejos para proteger el acceso remoto a un servidor linux, corriendo Secure Shell (SSH).

CONFIGURAR CORRECTAMENTE EL SERVIDOR SSH

  • NOTA: el archivo de configuración, al menos en Debian, se encuentra situado en /etc/ssh/sshd_config
  • Protocol 2
    La versión 1 del protocolo tiene algunas vulnerabilidades conocidas, así que quitamos su soporte, obligando a acceder utilizando únicamente la versión 2 del protocolo.
  • ListenAddress ip
    Comprueba que el servidor escuche únicamente la interfaz de red que quieras realmente (puede que sólo te interese acceder a tu pequeño servidor casero desde tu propia red local, y tengas activado por defecto la escucha en todas las IPs, incluida la pública).
  • PermitRootLogin No
    Es indispensable que el usuario root no pueda acceder via SSH. Siempre podremos escalar privilegios, una vez hayamos accedido al servidor, a través de su o sudo, pero es importante que el usuario root no pueda acceder directamente desde el servidor SSH.
  • Listen num-puerto
    Cambiando el puerto de escucha por defecto pondremos otra piedra en el camino de aquellos que pretendan entrar remotamente en nuestro sistema. Hay formas de deducir qué programa está escuchando un puerto, pero al menos se lo pondremos un poquito más dificil a aquellos que hacen uso de scripts automatizados.
  • PermitEmptyPasswords No
    Ya que estamos intentando aumentar la seguridad de acceso a nuestro sistema, parece lógico prohibir las contraseñas vacías, ¿no? :-)
  • AllowUsers usuario1 usuario2 ...
    Si como yo, administras una pequeña red local, probablemente solo quieras dar acceso SSH a uno o dos usuarios, así que ¿por qué no limitar el acceso al servidor solamente a esos usuarios?
  • AllowGroups grupo1 grupo2 ...
    Si por el contrario hay más usuarios que acceden via SSH, tal vez sería interesante filtrar el acceso al servidor SSH, permitiendo solamente aquellos usuarios que pertenezcan a un determinado grupo.
  • PasswordAuthentication Yes
    Mediante esta directiva configuramos si permitimos la autenticación mediante clave al servidor SSH. El acceso tradicional al servidor se realiza mediante usuario y clave, aunque si prohibimos este acceso mediante usuario/clave (PasswordAuthentication No), aumentaremos la seguridad, dejando el acceso solamente a través de pares de claves públicas y privadas (si has usado alguna vez un programa de cifrado tipo GPG o similar ya sabrás a qué me refiero).
  • Hay otras directivas que incrementan la seguridad, como LoginGraceTime, MaxAuthTries, MaxStartups y algunas otras, aunque considero que estas de aquí arriba son las más importantes. Como siempre un simple man sshd_config te te permitirá profundizar más en las directivas de configuración.

AUTENTICACION SSH BASADA EN PARES DE CLAVES

  • Para deshabilitar el acceso con usuario/clave, y habilitar el acceso con pares de claves, necesitaremos comprobar que el servidor SSH (recuerda: /etc/ssh/sshd_config) está configurado correctamente:
# Desactivamos la autenticación via usuario/clave:
PasswordAuthentication No
# Activamos la autenticación con pares de claves:
PubkeyAuthentication yes
# Definimos el archivo donde irán las claves de acceso autorizadas.
# Como mi partición home está cifrada, defino que las claves se almacenen,
# de manera centralizada, dentro de /etc/ssh. Hay más información al respecto
# (importante el tema de los permisos en las carpetas) en la siguiente URL:
# https://help.ubuntu.com/community/SSH/OpenSSH/Keys
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
# Activamos la atenticación RSA
RSAAuthentication yes
  • Una vez configurada la parte del servidor correctamente, lo que haremos será crear, en nuestra máquina cliente (desde la que accedemos al servidor) una clave pública que copiaremos luego al servidor. El par de claves (pública y privada) las podremos generar mediante el comando ssh-keygen -t rsa (si estamos bajo GNU/Linux), o usando el programa puttygen.exe del cliente PuTTY (si estamos en un entorno MS Windows). Para este ejemplo, suponemos que hemos llamado a la clave pública ssh-publico.key y a la clave privada ssh-privada.key.ppk.
  • Para subir la clave pública a nuestro servidor SSH, haremos uso de la utilidad scp (pscp si usamos PuTTY):
scp ssh-publico-key usuario@nuestroservidor:/etc/ssh/usuario
  • Reiniciamos el servidor sshd y voilà, ya podemos acceder usando el par de claves RSA.

Teneis más información sobre este último tema en los siguiente enlaces:

Etiquetas: 

Partir y juntar archivos grandes en GNU/Linux

 Lun, 16/01/2012 - 11:10     Sandor

Hoy me ha surgido, en el servidor de la oficina, la necesidad de partir un archivo de 20 Gb en partes más pequeñas. Buscando un poco por ahí, he visto que existe la utilidad split, que hace precisamente eso:

split -btamaño miarchivogrande prefijodelosarchivospequeños

Para juntar los archivos pequeños y volver a crear el archivo grande, la nunca bien valorada :) utilidad cat nos servirá a la perfección:

cat prefijodelosarchivospequeños* > minuevoarchivogrande

 

Etiquetas: 

Páginas

Sobre PlanetaInopia

Sandor Inopia nació en Bilbao, un lunes cualquiera, justo 1904 años después de que Nerón se suicidara, diciendo ¡Qué artista muere conmigo!, y 192 años después de que Volta descubriera la pila eléctrica. Mientras celebraba su quinto cumpleaños, Elvis daba su último concierto, y celebrando los siete, Muhammad Ali se retiraba del boxeo.

Sobre PlanetaInoipa, blog personal de Sandor Inopia (Sandor Saiz Ortuondo)

Yo no tengo la ambición de Nerón, la inteligencia de Volta, la voz de Elvis, o la fuerza de Alí, pero a veces me gusta escribir y darme a conocer a los demás. Por eso este blog, que espero te guste.

Comentarios recientes