Sincorbata

Entradas relacionadas con SINCORBATA, mi proyecto freelance de diseño web y asesoría informática.

Redirección https a http via .htaccess

 Mié, 17/07/2013 - 20:23     Sandor

A veces uno quiere redireccionar las peticiones a https://dominioa http://dominio. Para hacerlo, nada mejor que poner este .htaccess en el directorio destinado a los archivos que se servirán via https (en Configbox, mi actual proveedor, es la carpeta /httpsdocs):

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

Sin contenido tras actualizar a Drupal 7

 Mar, 14/05/2013 - 20:00     Sandor

Hace algunas semanas, al actualizar PlanetaInopia a la versión 7 de Drupal, hubo un error en el proceso y no se terminó de actualizar el módulo filter correctamente (al parecer no debo de ser el único, ya que por lo que ví la lista de issues parecidos al mio era muy extensa).

Más o menos el blog parecía mostrarse correctamente, aunque cada vez que ejecutaba el script de actualización (update.php), me seguía dando error al intentar actualizar el módulo filter. Así que me puse el buzo de trabajo :-) y ayudado de Heidi (HeidiSQL, un fantástico programa para acceder a bases de datos tipo MySQL), me puse a trastear directamente en la base de datos de Drupal. Al cabo de un rato pude arreglar el problema del módulo filter, pero a costa de que todo el contenido del sitio dejara de mostrarse: el cuerpo de las entradas, los comentarios, etc.

Me he vuelto loco buscando una solución, hasta que hace un rato he encontrado esta entrada del blog de Hendrik Grahl: [Drupal7] Empty nodes or comments after upgrade, que me ha salvado la vida. En ella, explica que en las actualizaciones a Drupal 7 suele haber problemas con la configuración de los idiomas y/o con los formatos de entrada.

En mi caso particular, simplemente he deshabilitado los módulos de idioma que tenía activados (Locale y Localization update) y he ejecutado las sentencias SQL que comenta Hendrik en su blog (por supuesto, después de haber realizado un backup de la base de datos):

Para poner a lenguaje neutral todos los nodos y comentarios:

UPDATE comment SET language="und";
UPDATE field_data_comment_body SET language="und";
UPDATE node SET language="und" WHERE language="es";
UPDATE field_data_body SET language="und" WHERE language="es";

Para cambiar el id del formato de entrada, de 1 a 3, en todos los nodos y comentarios:

UPDATE field_data_comment_body SET comment_body_format=1 WHERE comment_body_format=3;
UPDATE field_data_body SET body_format=1 WHERE body_format=3;

Una vez realizadas estas sentencias, para comprobar el resultado es indispensable realizar un borrado de las cachés, usando Drush o la opción del menú de administración correspondiente.

Etiquetas: 

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: 

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: 

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.

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: 

Envio de correos con phplist, a través de SSL SMTP

 Jue, 22/12/2011 - 23:51     Sandor

Un pequeño truco para poder enviar correos desde phplist, a través de servidores SMTP con SSL (los de Amazon SES o GMail, por ejemplo). El problema es que phplist utiliza una versión antigua de phpmailer, por lo que si queremos usar servidores con SSL, hay que tocar un poco los siguientes archivos:

Define o edita (si ya existen) las siguientes directivas en config/config.php :

define("PHPMAILER",1);
define("PHPMAILERHOST",'smtp.tudominio.com');
$phpmailer_smtpuser = 'USUARIO';
$phpmailer_smtppassword = 'CLAVE';
$phpmailer_smtpsecure = 'ssl';
$phpmailer_smtpport = 465;

Abre admin/class.phplistmailer.php y encuentra :

$this->Password = $GLOBALS['phpmailer_smtppassword'];

y escribe debajo a continuación : 

$this->SMTPSecure = $GLOBALS['phpmailer_smtpsecure'];
$this->Port = $GLOBALS['phpmailer_smtpport'];

Ahora abre admin/phpmailer/class.smtp.php y encuentra :

$this->smtp_conn = fsockopen($host,

Y sustituye

$host,

por

$host='ssl://smtp.tudominio.com',

Con esto ya deberías poder enviar correos a traves de tu servidor SMTP SSL favorito ;)

Fuente: http://glycogen.net/2011/06/07/phplist-smtp-w-ssl/

 

Mi nueva caja rack ATX

 Mié, 08/06/2011 - 10:51     Sandor

Hace unos días encargué una caja ATX para el rack que estoy montando, poco a poco, en la oficina. Tras mirar en sitios especializados y asustarme con los precios, me he decantado por una caja baratita, pero que creo cumplirá perfectamente con nuestras necesidades.

Se trata de una caja 4U (cuatro unidades de altura), que admite placas estandar en formato ATX, con cuatro bahías externas (tres de 5.25" y una de 3.5"), y siete internas de 3.5". Creo que lo que más me ha gustado de esta caja es su capacidad para admitir, sin hacer malabarismos, placas y fuentes de alimentación ATX normales, tarjetas a tutiplén, etc.

La he encontrado en PC Componentes, por 100 eurillos de nada. No es que me lleve comisión ni nada :-), pero me ha parecido interesante comentarlo aquí y poner alguna foto de la caja, por si alguien está interesado en comprar algo similar:

Caja ATX 01

Caja ATX 02

Caja ATX 3

Caja ATX 4

 

 

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