Informática

Entradas que tengan que ver con informática en general (Linux, software libre, redes, servidores, etc).

Reduciendo (liteando) la ROM de una tablet LEOTEC L-PAD Nova II (LETAB 1012)

 Lun, 27/01/2014 - 18:30     Sandor

Me han regalado estas pasadas navidades una tablet Android, marca Leotec, modelo L-PAD Nova II. El chisme no está mal, aunque no es ninguna maravilla. De todos modos, el uso que yo le doy es para leer PDFs, acceder al correo, a mi lector de noticias RSS, calendario, agenda... en fin, cosas que no requieren mucha máquina, por lo que esta tablet me ha venido genial.

De todos modos, la ROM que trae de fábrica viene con un montón de programas que a mi no me sirven absolutamente para nada, así que decidí lo que en el mundillo se llama litearla, es decir, coger la ROM del fabricante y quitarle todos los programas que no sean totalmente indispensables. No soy un experto en el mundo Android, por lo que la ROM que os dejo la ofrezco SIN NINGÚN TIPO DE GARANTÍA. NO PUEDO ASEGURAR QUE FUNCIONE EN TU MODELO EN CONCRETO, por lo que si no tienes unos mínimos conocimientos de instalación de ROMs, copias de seguridad y demás, por favor, NO INSTALES ESTA ROM.

Una vez hecha esta descarga de responsabilidad, os transcribo a continuación los cambios que le he ido haciendo a la ROM:

CHANGELOG:

v0.1

  • Sustituyo recovery.img por el recovery genérico RK30GENERIC_CWM.zip

v0.2  

  • Quito como aplicaciones del sistema

    • -rw-r--r-- 1 root root  1175571 nov 23  2012 1MobileMarket1.apk
    • -rw-r--r-- 1 root root  2087292 dic  4  2012 AcrobatReader.apk
    • -rw-r--r-- 1 root root   246103 nov 23  2012 angrybirds1.apk
    • -rw-r--r-- 1 root root   878028 mar 13  2013 Calculator.apk
    • -rw-r--r-- 1 root root 19858355 mar 13  2013 Chrome.apk
    • -rw-r--r-- 1 root root   207684 mar 13  2013 ChromeBookmarksSyncAdapter.apk
    • -rw-r--r-- 1 root root   610915 mar 13  2013 DeskClock.apk
    • -rw-r--r-- 1 root root  5032033 oct 17  2012 DocumentsToGo3.002.883.apk
    • -rw-r--r-- 1 root root  4136634 dic  5  2012 Mypaperplane2.apk
    • -rw-r--r-- 1 root root   246103 nov 23  2012 shootapple.apk
    • -rw-r--r-- 1 root root  2570279 nov 23  2012 skyper.apk
    • -rw-r--r-- 1 root root  4840157 mar 13  2013 VideoEditor.apk
    • -rw-r--r-- 1 root root    98147 dic  4  2012 youtube.apk
    • -rw-r--r-- 1 root root  5313085 nov 23  2012 ZombieDash.apk

v0.3

  • Rooteo la imagen
  • Pongo otro fondo del escritorio
  • Quito leotec como página de inicio de los navegadores
  • Elimino:

    • Aldiko (bookreaderaldiko.nm)
    • Lifev2 browser (com.access_company.android.nflifebrowser.lite-1.nm)
    • Piano perfect (PerfectPiano_v4.3.nm)
    • Google maps navigation
    • Messenger (messenger.apk)
    • Google maps (Maps.apk)
    • Latittude
    • Google talk
    • Google
    • Gmail
    • RkVideoPlayer.apk
    • ChromeBookmarksSyncAdapter.apk
    • RkExplorer.apk
    • Street.apk
    • Mypaperplane2.apk
    • RKUpdateService.apk

v0.4

  • Elimino Talk, Calendario, Cámara, Descargas, Galería, Gmail, Google (Now), Grabadora de sonidos, Musica, Navegador, ES Visor de imagenes
  • Elimino:

    • Blackhole -> /system/app/Galaxy4.apk
    • Bubbles -> /system/app/NoiseField.apk
    • Fondos de pantalla animados -> /system/app/LiveWallpapers.apk
    • Fondos de pantalla de humo magico -> /system/app/MagicSmokeWallpaper.apk
    • Fondos de pantalla de visualizacion musical -> /system/app/VisualizacionWallpapers.apk
    • Galeria -> /system/app/Gallery2.apk
    • Gmail -> /system/app/Gmail.apk
    • Google Talk -> /system/app/Talk.apk
    • Grabadora de sonidos -> /system/app/Soundrecorder.apk
    • MediaFloat -> /system/app/MediaFloat.apk
    • MusikFX -> /system/app/MusicFX.apk
    • Musica -> /system/app/Music.apk
    • Navegador -> /system/app/Browser.apk
    • PhaseBeam -> /system/app/PhaseBeam.apk
    • Sound Search -> /system/app/GoogleEars.apk
    • Busqueda de Google -> /system/app/Velvet.apk
    • Calendario -> /system/app/Calendar.apk
    • Almacenamiento en el calendario -> /system/app/CalendarProvider.apk
    • Wallpaper HoloSpiral -> /system/app/HoloSpiralWallpaper.apk
    • Descargas -> /system/app/DownloadProviderUi.apk
    • Picasa Uploader -> /system/app/MediaUploader.apk
    • Selector de fondo de pantalla animado -> /system/app/com.android.wallpaper.livepicker
    • Servicios de Exchange -> /system/app/Exchange2.apk
  • Elimino widgets: Calendario, Etiquetas de gmail, Galeria de fotos, Gmail, Lista de reproduccion, Marcador, Marcadores, Mi musica, Musica, Recomendaciones, Sound search

v0.5   

  • Quito idiomas extras en /system/tts/lang_pico/ y dejo solo idioma español.

Como veis, he dejado la ROM bastante pelada :-) Yo particularmente voy a instalar QuickPic (visor de imágenes y videos), K-9 Mail (lector de correo), F-Droid (market de aplicaciones libres), AdAway (para quitar esos molestos anuncios) y algunos otros programas más que utilizo habitualmente, pero de entrada, instalando esta ROM, tendreis un sistema muy pelado y que consume pocos recursos.

Puede que se me haya olvidado escribir algún cambio que otro, pero vamos, lo importante creo que está ya explicado. He subido la ROM y un par de archivos más a mi Dropbox, por si a alguien con este mismo modelo le puede venir bien.

Enlaces:

Por supuesto, si utilizas esta ROM, te quedaría agradecido si comentas en este mismo post tus impresiones ;-)

SSL - Certificado firmado por nuestra propia entidad certificadora

 Mar, 15/10/2013 - 11:34     Sandor

Recientemente nos ha caducado el certificado que corría el servidor Apache de la intranet oficina, lo cual me ha obligado a repasar la documentación para volver a generar unos nuevos certificados (como es algo que no suelo hacer habitualmente, ya había olvidado como hacerlo). El caso es que me he vuelto loco repasando mis enlaces antiguos, así que me he animado a crear una nueva entrada en el blog, que me sirva de ayuda en el futuro (y espero que a vosotros). Hasta ahora tirábamos con un certificado autofirmado, pero después de encontrar esta utilísima guia del blog Tecnología, Sistemas, Seguridad y Ethical Hacking, me he decidido a crear un nuevo certificado creando antes una entidad certificadora propia. Como ha salido todo bien :-), aquí dejo las instrucciones para guiarme en el futuro, gran parte de ellas copiadas directamente de la guia anteriormente comentada, que a su vez, por lo que cuenta el autor, ha sido extraida en gran parte del sitio web www.linuxito.com.ar.

Cómo crear un certificado para Apache, firmado por nuestra propia entidad certificadora, y con arranque automático (sin petición de contraseña al reiniciar el servicio)

Paso 1. Crear la estructura de directorios donde crearemos los certificados

Los certificados que crearemos sólo servirán para uso personal ya que no son firmados por una autoridad de confianza como Verising, como un mecanismo de proveer una forma segura de comunicarse con tus servicios, para que las contraseñas o cualquier dato no viaje plano por la red.
De más está decir que necesitamos OpenSSL instalado en el ordenador que utilizaremos para administrar los certificados o crear las solicitudes de certificado. Yo particularmente trabajo con Debian (stable), por lo que los comandos reproducidos serán los necesarios en la versión que utilizo. No obstante, las indicaciones aquí descritas deberían ser válidas en cualquier distribución Linux.

Para comenzar debemos crear la estructura de directorios donde se almacenará toda la información relativa a nuestra PKI (Public Key Infraestructure):

# mkdir –m 0755 /CA
# mkdir –m 0755 /CA/private
# mkdir –m 0755 /CA/certs
# mkdir –m 0755 /CA/newcerts
# mkdir -m 0755 /CA/crl
  • "CA" será el directorio de trabajo de la Autoridad Certificadora.
  • "certs" será el directorio donde se ubicarán los certificados.
  • "newcerts" es el directorio donde OpenSSL pone los certificados creados en formato PEM (sin encriptar) y en la forma [n° de serie].pem (por ejemplo: 15.pem).
  • "crl" es el directorio donde se coloca la lista de revocación de certificados.
  • "private" es el directorio donde se colocan las claves privadas (este directorio debe tener permisos extremadamente restrictivos, para que sólo sean leídos por root).

Las extensiones de archivos que se generarán en estos directorios serán las siguientes:

  • KEY: Claves privadas (deben tener permisos restrictivos).
  • CSR: Pedido de certificado (estos pedidos serán firmados por la CA para convertirse en certificados, luego pueden ser eliminados).
  • CRT: Certificado (puede ser distribuido públicamente).
  • PEM: Archivos que contienen tanto el certificado como la clave privada (deben tener permisos restrictivos).
  • CRL: Lista de revocación de certificados (puede ser públicamente distribuida).

Para la configuración inicial de OpenSSL, copiamos el archivo de configuración por defecto de OpenSSL (openssl.cnf) al directorio /CA. En Debian se encuentra en el directorio /etc/ssl/openssl.cnf:

# cp /etc/ssl/openssl.cnf /CA
# chmod 0600 /CA/openssl.cnf

Luego creamos dos archivos que funcionan como bases de datos para OpenSSL:

# touch /CA/index.txt
# echo '01' > /CA/serial

Debido a que utilizamos un directorio personalizado para nuestros certificados, se necesitan algunas modificaciones en el archivo /CA/openssl.cnf, así que lo abrimos con nuestro editor de texto preferido (ojo, siempre como root) y nos debe quedar así:

[ CA_default ]
dir = /CA # Directorio donde se guarda todo <== CAMBIAR ESTA LINEA
certs = $dir/certs # Directorio donde se guardan certificados emitidos
crl_dir = $dir/crl # Directorio donde se guardan crl enviados
database = $dir/index.txt # Archivo índice de la base de datos
#unique_subject = no # Setear en 'no' para permitir que se creen diferentes certificados con el mismo 'subject'
new_certs_dir = $dir/newcerts # Directorio donde se guardan nuevos certificados
certificate = $dir/ca.crt # Certificado de la CA <== CAMBIAR ESTA LINEA
serial = $dir/serial # Número de serie actual
#crlnumber = $dir/crlnumber # El número de crl actual debe comentarse para dejar una CRL V1
crl = $dir/crl.pem # La CRL actual
private_key = $dir/private/ca.key # La clave privada <== CAMBIAR ESTA LINEA
RANDFILE = $dir/private/.rand # Número aleatorio privado
x509_extensions = usr_cert # Extensiones a agregar al certificado

Se puede personalizar aún más para definir políticas para la creación y firmado de los certificados, o definir extensiones deseadas para nuevos certificados.
Los certificados que vamos a crear con esta configuración, son certificados de propósito general y su uso no se restringe sólo a autenticación de servidores. Debe notarse que las claves privadas no serán protegidas por una passphrase, para que cuando los servicios se reinicien no soliciten el ingreso de passphrases. Esto implica que se debe restringir cuidadosamente el acceso de lectura sobre las claves privadas, para que sólo el usuario root, o el usuario privilegiado utilizado por los servicios, pueda leer estos archivos.

¡Ya tenemos nuesta base para comenzar a crear nuestros certificados!

Paso 2. Crear nuestra propia Entidad Certificadora (CA)

Después de terminar la configuración inicial, podemos crear un certificado auto-firmado que será utilizado como el certificado de nuestra CA. Este será utilizado para firmar las solicitudes de certificados:

# cd /CA
# openssl req -config openssl.cnf -new -x509 -extensions v3_ca -days 3650 -keyout private/CA_nombre.key -out certs/CA_nombre.crt
Generating a 1024 bit RSA private key
................++++++
...............++++++
writing new private key to 'private/CA_nombre.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Tu provincia
Locality Name (eg, city) []:Tu ciudad
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nombre de empresa, proyecto o lo que sea
Organizational Unit Name (eg, section) []:Nombre de departamento o lo que se te ocurra
Common Name (eg, YOUR name) []:Tu nombre
Email Address []:Tu dirección de correo electrónico

Se crearán dos archivos: certs/CA_nombre.crt, certificado de la CA públicamente disponible y con lectura para todo el mundo; private/CA_nombre.key, clave privada del certificado de la CA. A pesar de que está protegida por una contraseña se debe restringir el acceso:

# chmod 0400 /CA/private/CA_nombre.key

Paso 3. Creación del pedido del certificado

Para proceder con la creación de un certificado para un servidor, lo primero que hacemos es generar el pedido de certificado:

#cd /CA
#openssl req -config openssl.cnf -new -nodes -keyout private/apachessl.key -out apachessl.csr -days 3650
Generating a 1024 bit RSA private key
.......................++++++
.....++++++
writing new private key to 'private/apachessl.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]: Tu provincia
Locality Name (eg, city) []: Tu ciudad
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nombre de empresa, proyecto o lo que sea
Organizational Unit Name (eg, section) []: Nombre de departamento o lo que se te ocurra
Common Name (eg, YOUR name) []: El nombre de tu dominio
Email Address []: Tu dirección de correo electrónico
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
  • La opción "nodes" es necesaria para que la clave privada no sea protegida con una passphrase. Si el certificado no se va a utilizarar para la autenticación de servidores, no se debería incluir en la opción anterior.
  • El "Common Name" (CN) es la información que identifica de forma única al servicio, por lo que debemos asegurarnos de escribirlo correctamente.
  • Personalmente, recomiendo rellenar todos los campos que nos pidan, ya que si los dejamos vacios, se nos rellenarán con los datos por defecto, y en ocasiones pueden inducirnos a pensar que hay algún error en ellos.

Al finalizar se crean dos archivos:

  • apachessl.csr: El pedido de certificado.
  • private/apachessl.key: La clave privada, que no ha sido protegida con una passphrase.

Como anteriormente, se deben crear permisos restrictivos sobre la clave privada, por ejemplo:

# chown root.root /CA/private/apachessl.key
# chmod 0400 /CA/private/apachessl.key

O (por ejemplo si el certificado es para un servidor Apache):

# chown root.apache /CA/private/apachessl.key
# chmod 0440 /CA/private/apachessl.key

Paso 4. Firma del pedido de certificado para generar el certificado para el servidor

A continuación firmamos el pedido de certificado para generar el certificado para el servidor:

# cd /CA
# openssl ca -config openssl.cnf -cert certs/CA_nombre.crt -policy policy_anything -out certs/apachessl.crt -infiles apachessl.csr
Using configuration from openssl.cnf
Enter pass phrase for /CA/private/CA_nombre.key:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Oct 16 07:36:10 2013 GMT
            Not After : Oct 14 07:36:10 2023 GMT
        Subject:
            countryName               = ES
            stateOrProvinceName       = Tu provincia
            localityName              = Tu ciudad
            organizationName          = Nombre de empresa, proyecto o lo que sea
            organizationalUnitName    = Nombre de departamento o lo que se te ocurra
            commonName                = El nombre de tu dominio
            emailAddress              = Tu dirección de correo electrónico
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                B5:9D:90:13:57:C7:3E:4B:5F:1A:41:B7:AA:A4:A2:DB:11:DB:03:F4
            X509v3 Authority Key Identifier:
                keyid:48:09:37:10:7E:A1:3E:42:17:4D:18:44:B6:13:FE:B9:AF:CD:CD:6F

Certificate is to be certified until Oct 14 07:36:10 2023 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
  • La opción "-policy policy_anything" indica que no se requiere que los campos "Country", "State" o "City" coincidan con los de la CA.

Al finalizar se crean dos nuevos archivos:

  • certs/apachessl.crt: Certificado del servidor, que puede hacerse públicamente disponible.
  • newcerts/01.pem: El mismo certificado pero con el número de serie como nombre de archivo, no es necesario.

En este momento podemos eliminar el pedido de certificado, el cual no necesitaremos más (apachessl.csr):

# rm –f /CA/apachessl.csr

Paso 5. Creación de un archivo pkcs12 para instalar en navegadores

Como penúltimo paso, nos queda generar un archivo pkcs12, listo para ser cargado en los navegadores que necesitemos que tengan acceso a nuestro sitio.

# openssl pkcs12 -export -in certs/apachessl.crt -inkey private/apachessl.key -certfile certs/CA_nombre.crt -out apachessl_pck12.p12
Enter Export Password:
Verifying - Enter Export Password:

Paso 6. Copiando nuestros certificados a sus directorios destino

¡Recapitulemos! Con todos estos pasos, hemos generado un certificado autofirmado de Entidad Certificadora, un certificado para servidor firmado por esa Entidad Certificadora, y un archivo pkcs12 para instalar en navegadores. ¿Qué hacemos ahora?

En el servidor:

  • CA_nombre.crt y CA_nombre.key : estos dos archivos forman el certificado correspondiente a nuestra Entidad Certificadora (CA). En mi servidor Debian, hay que copiar el certificado público (extensión .crt) a /etc/ssl/certs y la clave privada (extensión .key) a /etc/ssl/private.
  • apachessl.crt y apachessl.key: estos dos archivos forman el certificado correspondiente al servidor, firmado por nuestra Entidad Certificadora. Como antes, debemos de copiar el certificado público (extensión .crt) a /etc/ssl/certs y la clave privada (extensión .key) a /etc/ssl/private.

Después tendríamos que configurar el servidor web para que usase esos certificados. En apache (el que yo uso), sería algo similar a esto:

SSLEngine on
SSLCACertificateFile '/etc/ssl/certs/CA_minombre.crt'
SSLCertificateFile '/etc/ssl/certs/apachessl.crt'
SSLCertificateKeyFile '/etc/ssl/private/apachessl.key'
SSLVerifyClient require
SSLVerifyDepth 10
# --- opciones varias (mirar en http://httpd.apache.org/docs/2.2/mod/mod_ssl$
SSLProtocol -all +SSLv3
SSLCipherSuite SSLv3:+HIGH:+MEDIUM

En cada navegador que querais que tenga acceso a vuestro sitio web:

  • Primeramente tendremos que importar el certificado de nuestra Entidad Certificadora. Por ejemplo, para hacerlo en Firefox hay que ir a Herramientas -> Opciones -> Avanzado -> Certificados -> Ver certificados -> Importar y una vez allí importar el archivo CA_nombre.crt que (recuerda) contiene la clave pública de nuestra Entidad Certificadora.
  • Acto seguido, tenemos que importar también el certificado pkcs12 que contiene el certificado de nuestro servidor (en el ejemplo que os he puesto: apachessl_pck12.p12)

Paso 7. Otras operaciones con los certificados generados

Si queremos consultar nuestro certificado, podremos consultarlo con el siguiente comando:

# openssl x509 –subject –issuer –enddate –noout –in /CA/certs/apachessl.crt

O el siguiente:

# openssl x509 –in certs/apachessl.crt –noout -text

Y verificar que el certificado sea válido para autenticación de servidores con el siguiente:

# openssl verify –purpose sslserver –Cafile /CA/certs/CA_nombre.crt /CA/certs/apachessl.crt

Algunos servidores o aplicaciones requieren que el certificado y la clave privada existan en el mismo archivo, esto se puede lograr con el comando:

# cat certs/apachessl.crt private/apachessl.key > private/apache-ssl-cert-key.pem

Entonces se debería restringir el acceso al archivo .pem resultante y borrar apachessl.crt y apachessl.key si no son necesarios.

# chown root.root private/apache-ssl-cert-key.pem
# chmod 0400 private/apache-ssl-cert-key.pem
# rm –f certs/apachessl.crt
# rm –f private/apachessl.key

Si deseamos que un certificado deje de ser válido debemos revocarlo. Esto se puede hacer con el comando:

# openssl ca –config openssl.cnf –revoke certs/apachessl.crt

Hecho lo anterior, ahora debemos generar una nueva CRL (Certificate Revokation List):

# openssl ca –config openssl.cnf –gencrl –out crl/CA_nombre.crl

El certificado de nuestra CA y nuestra lista de revocación (CRL) deben ser distribuidos a aquellos que confíen en nuestra CA para que puedan importarlos en el software cliente (web browser, clientes ftp, clientes de email, etc). Además la CRL debe ser pública. Si queréis mas información sobre el estándar de Infraestructura de Clave Pública, quizás os interese visitar el siguiente enlace: Wikipedia: Infraestructura de clave pública.


En fín, hasta aquí esta pequeña guía que espero os venga bien para, por ejemplo, acceder a vuestras intranets caseras desde cualquier sitio. Las posibilidad son amplias: podeis llevar en un pendrive un Firefox portable con los certificados instalados y ejecutarlo en cualquier PC seguro; podeis instalar en vuestra tablet o móvil android (es lo que yo uso, supongo que en otros sistemas también), los certificados y acceder también desde ellos. Incluso (es lo que yo tengo pensado hacer próximamente), podeis instalar en vuestra intranet algún servidor CalDav y CardDav, para así gestionar vosotros mismos vuestros calendarios y contactos, y compartirlos centralizadamente con los ordenadores de vuestra red local, al igual que con los móviles y las tablets a los que instalemos el certificado.

Si quereis más información, aquí se ha hablado un poco más sobre este tema:

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: 

Bilbao Mini Maker Faire

 Dom, 14/07/2013 - 00:00     Sandor

Hoy me he pasado por la feria Bilbao Mini Maker Faire, cuya primera edición se ha celebrado este fin de semana. Para cualquier mente curiosa, la cita era ineludible: montajes con arduino, impresoras 3D (se me han puesto los dientes largos), frikadas varias, algo de horticultura alternativa... muy, muy interesante, la verdad.

Feria Maker Bilbao
Feria Maker Bilbao
Feria Maker Bilbao
Feria Maker Bilbao
Feria Maker Bilbao
Feria Maker Bilbao
Feria Maker Bilbao
Feria Maker Bilbao

 

URL: http://makerfairebilbao.com

Twitter: @MakerFaireBio

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: 

Desactivar ehci_hcd (errores Unable to enumerate USB device)

 Vie, 15/02/2013 - 09:21     Sandor

Antecedentes: estaba ejecutando rsync para realizar mi backup semanal, desde mi disco duro portátil (cifrado con Truecrypt) a otro disco usb conectado al servidor (crifrado con dmcrypt). En un momento del proceso ha ocurrido un error, y he sido incapaz de proseguir con el backup. Incluso era imposible desmontar y volver a montar los dispositivos. El syslog mostraba lo siguiente:

Feb 15 08:24:36 servidor kernel: Buffer I/O error on device dm-0, logical block 124289038
Feb 15 08:24:36 servidor kernel: lost page write due to I/O error on dm-0
Feb 15 08:24:39 servidor kernel: hub 1-0:1.0: unable to enumerate USB device on port 1
Feb 15 08:24:39 servidor kernel: usb 1-6: USB disconnect, address 4
[...]
Feb 15 08:29:30 servidor kernel: hub 1-0:1.0: unable to enumerate USB device on port 6
Feb 15 08:29:30 servidor kernel: usb 1-1: new high speed USB device using ehci_hcd and address 25
Feb 15 08:29:45 servidor kernel: hub 1-0:1.0: unable to enumerate USB device on port 1
Feb 15 08:29:46 servidor kernel: usb 1-6: new high speed USB device using ehci_hcd and address 26
Feb 15 08:30:01 servidor kernel: hub 1-0:1.0: unable to enumerate USB device on port 6
Feb 15 08:30:01 servidor kernel: usb 1-1: new high speed USB device using ehci_hcd and address 27
Feb 15 08:30:16 servidor kernel: hub 1-0:1.0: unable to enumerate USB device on port 1
Feb 15 08:30:16 servidor kernel: usb 1-6: new high speed USB device using ehci_hcd and address 28

En estos casos acostumbraba a reiniciar el servidor (en una pequeña oficina son cosas que se pueden hacer sin perder la cabeza :-D), pero buscando en la red he visto cómo solucionar esto:

cd /sys/bus/pci/drivers/ehci_hcd/
sudo sh -c 'find ./ -name "0000:00:*" -print| sed "s/\.\///">unbind'

Ejecutando estos sencillos pasos volveremos a dejar el soporte usb ehci listo para volver a conectar de nuevo los dispositivos. Ahora solo queda cruzar los dedos y volver a realizar el backup :)

Fuente: Geekdeus -> Unable to enumerate USB device (Disabling ehci_hcd)

Categoria: 
Etiquetas: 

Acceso por internet al archivo de la Diputación de Bizkaia

 Vie, 04/01/2013 - 13:28     Sandor

Me entero por el periódico que la Diputación de Bizkaia ha abierto el acceso para que, a partir de ahora, cualquier ciudadano pueda consultar los archivos forales desde su casita, tranquilamente. Os transcribo la noticia aparecida:

La Diputación permite consultar por Internet los casi 700.000 documentos del archivo histórico

La página web de la Diputación de Bizkaia permite ya al público en general el acceso a los cerca de 700.000 documentos que atesora el Archivo Histórico del organismo foral. La posibilidad de consultar este fondo solo estaba abierta hasta el momento a investigadores que solicitaban permiso y acudían expresamente a sus dependencias de la calle María Díaz de Haro.

Según explica la Diputación en una nota, la aplicación actual de la gestión del archivo se encuentra en uso desde 2010 y alberga 788.693 documentos en catálogo, y otros 115.992 en inventario, procedentes de 196 fondos documentales.

Los interesados en consultar a través de la Red alguno de estos documentos deberán hacerlo accediendo a la página www.bizkaia.net/foruagiritegia

Otra URL de acceso (en castellano) es la siguiente: http://aplijava.bizkaia.net/ARIT/

Iniciativas como esta son las que hacen que internet sea cada vez más sorprendente. A un golpe de click he podido leer antiguas historias de familia, más o menos lejanas. ¡Ay, si ellos hubieran sospechado que dos o tres siglos después de su muerte, un descendiente familiar husmearía en sus licencias de obras, sus denuncias por riñas o sus casamientos! ;-)

 

Categoria: 

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: 

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