SINCORBATA

En esta sección del blog encontrarás aquellas entradas que tienen más que ver con informática y tecnología en general.

SINCORBATA es el nombre bajo el que ofrezco mis servicios, como freelance autónomo, de consultoría tecnológica a PYMES, microempresas y particulares de la zona. Puedes ver qué puedo ofrecerte visitando www.sincorbata.es. También, en esta misma sección del blog, podrás ver cuales son mis puntos fuertes, y hacerte una idea de las maneras en las que podemos colaborar.

  • Problema de montaje en Linux con Veracrypt

     Vie, 21/10/2016 - 09:09     Sandor

    Suelo usar habitualmente un disco duro portátil, cifrado con Veracrypt (sucesor de Truecrypt).

    El caso es que esta mañana, al ir a montar el disco en el servidor que utilizo para hacer el backup semanal, me aparecía el siguiente error:

    Error: device-mapper: create ioctl on veracrypt2 failed: Dispositivo o recurso ocupado

    Por lo que he entendido, este error nos indica que el mapeo de unidad virtual que se iba a usar está ocupado (tal vez se desmontó anteriormente mal el volumen, o ha habido un corte de luz, por ejemplo). Para solucionar este error sin tener que reiniciar, podemos listar las particiones con el comando dmsetup:

    dmsetup ls

    Después podemos hacer un mount para ver qué dispositivos virtuales aparecen efectivamente montados (los verás como /dev/mapper/veracryptX). Probablemente el error nos salga al haber más particiones lógicas que las que efectivamente se están usando. Una vez hayamos decidido cuales no están en uso, simplemente debemos quitarlas con el comando:

    dmsetup remove particion

    Una vez haya realizado estos pasos, podremos montar nuestro dispositivo con Veracrypt, sin problemas.

     

    Categoria: 
  • Virtualbox - Como hacer capturas de pantalla

     Mié, 30/09/2015 - 10:34     Sandor

    A raiz de un curso de informática que estoy realizando últimamente, me he encontrado con la necesidad de realizar capturas de pantalla al sistema operativo invitado de Virtualbox. Mirando un poco por la red, he encontrado esta entrada de binarytides.com que me ha solucionado la papeleta. Aquí dejo la información, por si a alguien más le puede ser de utilidad:

    Paso 1

    Ejecutar un terminal linux (o cmd en windows) y nos situamos en el directorio en donde tengamos instalado Virtualbox.

    Paso 2

    Ejecutar VBoxManage list runningvms Esto nos dará un listado de las máquinas virtuales que se encuentran corriendo actualmente. En mi caso la salida es esta:

    C:\Program Files\VirtualBox>VBoxManage list runningvms
    "201516-MINT17" {667aea61-5bee-46a5-941f-62af813e64c6}

    Paso 3

    Con el identificador de la máquina virtual, ejecutamos el comando VBoxManage controlvm vm_uuid screenshotpng /path/to/image Por ejemplo, en este caso en concreto, el comando podría ser el siguiente:

    VBoxManage controlvm 667aea61-5bee-46a5-941f-62af813e64c6 screenshotpng captura_de_prueba.png

    ¡Y no tiene más! Con estos dos sencillos comandos, podrás realizar tantas capturas como desees, de un modo rápido, fácil y cómodo.

  • Permisos en disco duro USB bajo Win 7

     Lun, 28/09/2015 - 10:04     Sandor

    Como ya os he contado en alguna otra ocasión, tengo un disco duro cifrado (durante años con Truecrypt y ahora, después de la polémica de los servicios secretos y demás, con Veracrypt, un digno sucesor que guarda compatibilidad con Truecrypt).

    El caso es que al migrar uno de mis ordenadores a Windows 7, me dí cuenta que no podía ejecutar  programas desde la unidad montada a no ser que fuera ejecutado como administrador. También mi imprescindible wiki quedó como solo lectura y, en definitiva, era incapaz de realizar cambios en un montón de documentación con la que trabajo diariamente.

    Tras leer un poco, me dí cuenta que era un tema de permisos, así que opté por otorgar al grupo "Todos" permisos totales. Al ser un volumen cifrado, tampoco consideré una operación de riesgo hacerlo así.

    Para asignar al grupo "Todos" permisos de Control Total, lo podemos hacer desde la consola, o desde el entorno gráfico. Para hacerlo desde la consola, debemos ejecutar con permisos de administrador la utilidad cmd, y hacer uso del comando ICACLS. Un simple icacls /? nos ofrece la ayuda básica:

    ICACLS nombre /save archivoACL [/T] [/C] [/L] [/Q]
        almacena las DACL para los archivos y carpetas cuyos nombres coinciden
        en archivoACL para su uso posterior con /restore. Tenga en cuenta que no
        se guardan las SACL, el propietario ni las etiquetas de identidad.
    
    ICACLS directorio [/substitute SidOld SidNew [...]] /restore archivoACL
                      [/C] [/L] [/Q]
        aplica las DACL almacenadas a los archivos del directorio.
    
    ICACLS nombre /setowner usuario [/T] [/C] [/L] [/Q]
        cambia el propietario de todos los nombres coincidentes. Esta opción
        no fuerza un cambio de propiedad; use la utilidad takeown.exe
        con esta finalidad.
    
    ICACLS nombre /findsid Sid [/T] [/C] [/L] [/Q]
        busca todos los nombres coincidentes que contienen una ACL
        que menciona el SID de forma explícita.
    
    ICACLS nombre /verify [/T] [/C] [/L] [/Q]
        busca todos los archivos cuya ACL no está en formato canónico o cuyas
        longitudes no son coherentes con los recuentos de la ACE.
    
    ICACLS nombre /reset [/T] [/C] [/L] [/Q]
        reemplaza las ACL con ACL heredadas predeterminadas para todos
        los archivos coincidentes.
    
    ICACLS nombre [/grant[:r] Sid:perm[...]]
           [/deny Sid:perm [...]]
           [/remove[:g|:d]] Sid[...]] [/T] [/C] [/L] [/Q]
           [/setintegritylevel nivel:directiva[...]]
    
        /grant[:r] Sid:perm concede los derechos de acceso al usuario
            especificado. Con :r, los permisos reemplazan cualquier permiso
            explícito concedido anteriormente. Sin :r, los permisos se agregan a
            cualquier permiso explícito concedido anteriormente.
    
        /deny Sid:perm deniega de forma explícita los derechos de acceso al
            usuario especificado. Se agrega una ACE de denegación explícita
            para los permisos indicados y se quitan los mismos permisos de
            cualquier concesión explícita.
    
        /remove[:[g|d]] Sid quita todas las repeticiones del SID en la ACL. Con
            :g, quita todas las repeticiones de derechos concedidos a ese SID. Con
            :d, quita todas las repeticiones de derechos denegados a ese SID.
    
        /setintegritylevel [(CI)(OI)]nivel agrega de forma explícita una ACE de
            integridad a todos los archivos coincidentes. El nivel se debe
            especificar como:
                L[ow] - para bajo
                M[edium] - para medio
                H[igh] - para alto
            Las opciones de herencia para la ACE de integridad pueden preceder al
            nivel y se aplican sólo a los directorios.
    
        /inheritance:e|d|r
            e - habilita la herencia
            d - deshabilita la herencia y copia las ACE
            r - quita todas las ACE heredadas
    
    Nota:
        Los SID pueden tener un formato numérico o de nombre descriptivo. Si se da
        un formato numérico, agregue un asterisco (*) al principio del SID.
    
        /T indica que esta operación se realiza en todos los archivos o
            directorios coincidentes bajo los directorios especificados en el
            nombre.
    
        /C indica que esta operación continuará en todos los errores de archivo.
            Se seguirán mostrando los mensajes de error.
    
        /L indica que esta operación se realiza en el vínculo simbólico en sí
            en lugar de en su destino.
    
        /Q indica que icacls debe suprimir los mensajes de que las operaciones
           se realizaron correctamente.
    
        ICACLS conserva el orden canónico de las entradas ACE:
                Denegaciones explícitas
                Concesiones explícitas
                Denegaciones heredadas
                Concesiones heredadas
    
        perm es una máscara de permiso que puede especificarse de dos formas:
            una secuencia de derechos simples:
                    N - sin acceso
                    F - acceso total
                    M - acceso de modificación
                    RX - acceso de lectura y ejecución
                    R - acceso de sólo lectura
                    W - acceso de sólo escritura
                    D - acceso de eliminación
            una lista separada por comas entre paréntesis de derechos específicos:
                    DE - eliminar
                    RC - control de lectura
                    WDAC - escribir DAC
                    WO - escribir propietario
                    S - sincronizar
                    AS - acceso al sistema de seguridad
                    MA - máximo permitido
                    GR - lectura genérica
                    GW - escritura genérica
                    GE - ejecución genérica
                    GA - todo genérico
                    RD - leer datos/lista de directorio
                    WD - escribir datos/agregar archivo
                    AD - anexar datos/agregar subdirectorio
                    REA - leer atributos extendidos
                    WEA - escribir atributos extendidos
                    X - ejecutar/atravesar
                    DC - eliminar secundario
                    RA - leer atributos
                    WA - escribir atributos
            los derechos de herencia pueden preceder a cualquier forma y se
            aplican sólo a directorios:
                    (OI) - herencia de objeto
                    (CI) - herencia de contenedor
                    (IO) - sólo herencia
                    (NP) - no propagar herencia
                    (I) - permiso heredado del contenedor principal
    
    Ejemplos:
    
            icacls c:\windows\* /save archivoACL /T
            - Guardará todas las ACL para todos los archivos en c:\windows
              y sus subdirectorios en archivoACL.
    
            icacls c:\windows\ /restore archivoACL
            - Restaurará todas las ACL para cada archivo dentro de
              archivoACL que exista en c:\windows y sus subdirectorios.
    
            icacls file /grant Administrador:(D,WDAC)
            - Concederá al usuario permisos de administrador para eliminar y
              escribir DAC en el archivo.
    
            icacls file /grant *S-1-1-0:(D,WDAC)
            - Concederá al usuario definido por el SID S-1-1-0 permisos para
              eliminar y escribir DAC en el archivo.
    

    Este mismo proceso se puede hacer haciendo uso del entorno gráfico: botón derecho sobre la letra de la unidad, ir a la pestaña Seguridad -> Opciones avanzadas -> Permisos -> Cambiar permisos -> Agregar -> añadir grupo "Todos", seleccionar "Control total" y aplicar los cambios a "Esta carpeta, subcarpeta y archivos".

    Tardará un poquito, en función del tamaño de vuestro disco, pero no volvereis a comeros la cabeza con este tema :-)

  • Cambiando la batería de una tablet

     Mié, 11/03/2015 - 19:28     Sandor

    Ya os conté hace un tiempo mis desventuras con mi tablet Leotec L-PAD Nova II. Pensaba que con la ROM liteada mis problemas ya se había ido, pero hace un par de meses comencé a comprobar que la batería apenas me duraba nada (ni cinco minutos). Compré un cargador nuevo (10 euros tirados a lo tonto), pensando que a lo mejor el cargador original había dejado de funcionar, pero nada, tras probarlo ví que la tablet seguía sin cargar.

    Estaba ya pensando en hacerme un marco de fotos o algo así, dejándola conectada constantemente a la red hasta que, hablando con mi hermano, me comentó que probablemente sería cosa de la batería, y que no hacía falta ser un manitas experto para cambiarla.

    Así que, siguiendo sus consejos, me animé a abrir la tablet y ver si podía hacer algo. Tras abrirla, con cuidado, me encontré con la batería, pegada con cinta adhesiva de doble cara a la cara interna de la pantalla. Tras despegarla con cuidado, comprobé que estaba conectada al circuito de la tablet con un par de cables, los típicos positivo/negativo de alimentación. Me corté de meter el soldador a la placa y desoldar los cables, y me pareció más seguro cortarlos a ras de la batería, para más adelante soldarlos a la nueva batería.

    La información clave estaba en una pegatina en la propia batería: 3,7 voltios y 5.600 miliamperios/hora. Lo importante aquí son los voltios: tenía que encontrar una batería de 3,7 voltios. Cuando más amperaje, más duraría la batería, pero eso era secundario. Una búsqueda por ebay o Google me mostró unas cuantas a buen precio. Al final, pillé una en ebay de 5.000 mAh y 3.7v. Me la mandaron desde Inglaterra y, portes incluidos, me salió por unos 14 euros. Otra opción es pillarlas en Dealxtreme o sitios chinos similares, aunque me han comentado que con la paranoia terrorista, las baterías tienden a ser retenidas en las aduanas, con los consiguientes gastos. No se lo que habrá de verdad en esto...

    En fin, ya con la nueva batería, todo fue coser y cantar. Soldé los dos cables de la batería con los que salían de la placa de la tablet, los áislé con un poco de cinta aislante, y voilà! ¡La tablet volvió a la vida! :-)

    Así que ya sabes: si tienes una tablet, un teléfono o un trasto de estos que vaya con baterías y esta te falla, anímate a cambiarla, que si yo lo he hecho, cualquiera con unos mínimos de conocimientos y un soldador puede.

    La tablet abierta, con la bateria defectuosa
    Detalle de la conexión de los cables de la batería a la placa de la tablet
    La batería defectuosa, con los cables cortados
    Muy importante averiguar el voltaje y amperaje de la batería defectuosa, para encontrar una similar
    Hay que retirar con cuidado la batería, pegada con adhesivo de doble cara a la parte trasera de la pantalla
    Por fin recibo la nueva batería, similar a la anterior, comprada en Inglaterra desde ebay
    Soldando la nueva batería, con cariño ;-)
    Por fin la tablet funcionando como debe, al 100% de batería
  • Tapin Radio

     Mié, 01/10/2014 - 16:25     Sandor

    El otro día descubrí, un poco por casualidad, Tapin Radio, un programa gratuito que te permite sintonizar via internet (a fecha de hoy) 924 emisoras de radio de todo el planeta. Las emisoras están clasificadas por regiones y géneros musicales, y está genial para explorar y descubrir nuevos grupos interesantes.

    Y como yo acabo de descubrir al grupo iraní Kilometre23, aquí os dejo un video suyo y más abajo un enlace a su soundcloud ;-)

     

    URLS:

  • Organizando mi biblioteca digital

     Lun, 14/04/2014 - 19:50     Sandor

    Biblioteca

    Siempre he tenido un poco de síndrome de Diógenes, aunque con la edad, he logrado trasladarlo al mundo virtual (un piso de 45 metros y poseer una tablet y un ebook también ha ayudado a el cambio, lo reconozco) :-)

    El caso es que, además de los miles de mp3 y los cientos de videos, se me han ido acumulando miles de libros, recortes de periódico escaneados (no era broma lo del síndrome), manuales, catálogos, etc, en los más diversos formatos. Al principio solía organizarlos por carpetas temáticas, por ejemplo: Informática, Literatura, Viajes, etc. pero repasando los apuntes de un curso en la U.N.E.D. que hice sobre biblioteconomía, decidí que la manera más lógica de organizarlo todo era partir de la C.D.U (Clasificación Decimal Universal), pero no la versión completa, ni siquiera la abreviada, si no una que encontré en esta página de una sección de Bibliotecas Escolares perteneciente al Ministerio de Educación. Por supuesto, optar por una u otra versión solo depende del ánimo que tengas a clasificarlo todo en el tema específico del que se trate, y de la cantidad de información a clasificar. Pero como os cuento, a mi me vale con esta clasificación simplificada, pensada para bibliotecas escolares. Son 18 páginas de materias, estructuradas jerárquicamente en forma de árbol, que va desde lo general a lo específico. Las materias comienzan con un número, seguido del nombre. Así por ejemplo, nos encontramos con:

    9. Geografía. Biografía. Historia.
    902 Arqueología.
    903 Prehistoria. Restos prehistóricos.
    904 Restos culturales de tiempos históricos.
    908 Descripción geográfico-histórica de un territorio, una localidad.
    91 Geografía general. Historia de la geografía.
    910 Geografía como ciencia. Cuestiones generales. Viajes.
    910.4 Viajes de descubrimientos. Expediciones.
    911.2 Geografía física.
    911.3 Geografía humana, social y cultural.
    912 Mapas. Atlas geográficos. Globos terráqueos.
    913 Geografía del mundo antiguo. Geografía regional en general.
    914 Geografía de Europa.
    914.60 Geografía de España.
    914.601.1 Geografía de Galicia.
    914.601.2 Geografía del Principado de Asturias.
    914.601.3 Geografía de Cantabria.
    914.601.5 Geografía del País Vasco.

    ¿Entendeis el concepto, no? Básicamente este sistema nos ofrece un método contrastado de clasificación de la información, un método ampliamente usado en bibliotecas de todo el mundo. Así que si les sirve a los profesionales de la documentación, digo yo que también me podrá servir a mí :-)

    Como os cuento, lo que hago es ir creando, a medida que voy necesitando, carpetas con el nombre de la materia (número incluido). Al principio creo el nivel general, por ejemplo:

    51 Matemáticas
    52 Astronomía. Astrofísica. Investigación espacial. Geodesia
    53 Física
    54 Química
    55 Geología y ciencias afines. Geología regional
    56 Paleontología. Fósiles
    57 Ciencias biológicas en general
    61 Medicina
    63 Agricultura

    Y voy metiendo cada archivo en su categoría general. Cuando veo que la carpeta 51 Matemáticas (por ejemplo), tiene unos cuantos cientos de archivos, me planteo crear subdivisiones dentro de ella:

    511 Aritmética. Teoría de los números.
    512 Álgebra.
    514 Geometría.
    517 Análisis matemático.
    ...

    Y cuando tengo un rato (y ganas), muevo los archivos de la carpeta 51 Matemáticas dentro de la sub-temática que le corresponda.

    A veces, como no soy un profesional del tema, me falta acierto para clasificar adecuadamente un archivo, y dudo entre ponerlo en una categoría u otra. ¡No hay problema! Como tengo la biblioteca en un servidor que corre GNU/Linux (concretamente Debian), simplemente tengo que hacer un enlace simbólico del archivo a la otra categoría y me aparece en ambas.

    Esto que os cuento digamos que sería un primer paso para organizar una biblioteca digital de una manera medianamente ágil. Pensé en instalar Koha, Eprints o algún software similar, pero me pareció un poco matar moscas a cañonazos.

    Lo que sí que me parece interesante, y que más pronto que tarde intentaré implementar en el servidor, es instalar un buscador (probablemente Xapian), que me indexe todos los archivos de la biblioteca y me ofrezca un interfaz de búsqueda para poder encontrar archivos en base a su contenido. Entre sus características, Xapian permite indexar documentos HTML, PHP, PDF, PostScript, OpenOffice/StarOffice, OpenDocument, Microsoft Word/Excel/Powerpoint/Works, Word Perfect, Abiword, RTF, DVI, CSV, SVG, paquetes RPM, DEB y texto plano. Además, es posible extender su capacidad de indexación a otros formatos, mediante llamadas a terceros programas.

    En definitiva, que si quisiera encontrar un documento, tendría dos caminos para encontrarlo. El primero sería ubicarme en la carpeta del tema que trate, y el segundo, sería hacer uso del buscador de Xapian, y buscar algún término relacionado.

    Por supuesto, este sistema puede complicarse todo lo que queramos, desde usar la versión completa de la C.D.U, hasta dejarnos las pestañas frente al ordenador rellenando los metadatos de los PDF, ePub, MP3 (id3 tags) y similares, usando las utilidades correspondientes. Personalmente opino que este sistema que os cuento ofrece un buen equilibrio y, aunque al principio nos pide invertir unas cuantas horas en clasificar los archivos, no requiere mucho esfuerzo, es flexible, y crece a medida de nuestras necesidades, pudiéndose complicar todo lo que nuestras ganas o el tiempo disponible nos permitan.

    Por cierto, ¡se me olvidaba! No penseis que este sistema solo es para documentos de texto. La C.D.U también está pensada para clasificar material digital como música, películas, etc (¿hace cuando tiempo que no te pasas por la biblioteca municipal? ;-)):

    75 Pintura.
    76 Artes gráficas. Grabados.
    77 Fotografía.
    78 Música. Géneros musicales. Métodos y estudios de Música para los distintos instrumentos.
    79 Diversiones. Juegos. Deportes. Espectáculos públicos.
    791.4 Cine.
    792 Teatro. Teoría y técnica teatral.

    En fin, como veis no os mentía cuando os decía que este sistema es muy versátil. No deja de ser la típica clasificación por carpetas, combinada con un búscador de archivos, pero a mí me parece una solución muy válida para tener organizada mi archivo personal.

    ¿Y vosotros, como haceis para organizar este cada vez mayor caudal de información que os llega a través del ordenador?

    Fuente de la primera imagen : lahojadelabiblioteca.blogspot.com.es

    Cincinnati's cavernous old main library

  • 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: 
  • 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: 
  • Se acerca el Ecommretail

     Dom, 27/02/2011 - 10:49     Sandor

    Despues de descubrir un poco por casualidad en twitter la celebración del 2º Salón profesional de Ecommerce y Márketing Digital y ver su programa, me he animado a escapar de Bilbao un par de días y asistir. En Ecommretail los temas a tratar giran en torno al negocio digital:

    • Comercio Electrónico: Logística para ecommerce, Hosting, Métodos de Pago, CRM, Call Center, Creación y diseño de tiendas online.
    • Marketing online: Analítica web, Afiliación, Posicionamiento Buscadores (SEO/SEM), Email Marketing, Permission Marketing,...
    • Social Media: Redes Sociales, Estrategia Social,...
    • Cloud Computing
    • Mobile Commerce y nuevas tecnologías: Marketing móvil, DOOH, Digital Signage...
    • Open Sources: Joomla, Drupal, Magento...

    Todo ello repartido entre los stands de sus más de 120 empresas expositoras, y una interminable e interesantísima lista (250) de conferencias, seminarios y talleres prácticos, la mayoría gratuitas.

    Echando un vistazo a esta lista de conferencias, hay algunas que no me pienso perder, principalmente todas las que tratan de Drupal, DrupalCommerce o Magento. También hay algunas interesantes sobre Social Media y Social Commerce (Twitter, reputación online, Facebook...), o talleres en principio interesantes sobre Cómo construir la campaña de marketing online perfecta, la factura electrónica o un Foro sobre logísitca para ecommerce. También hay una curiosa e interesante ponencia de sobre El rock&roll como estrategia creativa, que me ha llamado mucho la atención. Por poner alguna pega, me hubiera gustado alguna ponencia sobre algún CRM libre, como Vtiger, o sobre algún ERP (OpenXpertya, OpenBravo o el que fuera), pero bueno, ¡no todo iba a ser perfecto!

    En definitiva, si estás metido en este mundillo y quieres ponerte al día, creo que es un evento muy interesante en el que desde luego el precio de la entrada no es determinante porque, ¡es gratuito! De todos modos, si estás interesado y no vas a poder asistir, parece ser que un sitio (del que he perdido la url, lo siento, lo ví en un twit, pero ahora no lo encuentro) va a ofrecer las conferencias online.

    Por cierto, ¡se me olvidaba!, ecommretail se celebra en Barcelona, los próximos días 2 y 3 de marzo :)

    Categoria: 
  • Hack de una tarjeta gráfica PCI-e 16x para que encaje en el slot PCI-e 8x de un Dell PowerEdge SC440

     Mié, 26/01/2011 - 16:11     Sandor

    El otro día se me ocurrió aprovechar un monitor TFT de 15" que tenía en la oficina, instalando una tarjeta gráfica con soporte para dos monitores (dual-head) en mi ordenador, para utilizar este segundo monitor junto al mio habitual.

    Encontré en segundamano.es una tarjeta Asus PCI-e de 256Mb por 12 eurillos de nada:

    La tarjeta recien recibida

     

    Ayer, al recibirla e ir a instalarla, veo que la placa de mi Dell PowerEdge SC440 no dispone de un slot PCI-e 16x, si no que tiene uno 8x. Esto no suele ser mucho problema, ya que si pinchas una tarjeta 16x en un slot 8x simplemente el bus pierde ancho de banda, pero la tarjeta funciona correctamente. En mi caso, la placa madre del ordenador tiene un slot 8x con formato un poco extraño, propietario, por lo que físicamente es imposible pinchar una tarjeta 16x en él:

    Dell PowerEdge SC440 Slot PCI-e 8x

    ¿Imposible? ;-) jejejejeje, pues resulta que no. Después de buscar algo de información en la red, ha habido gente en mi misma situación que ha optado por cortar los topes plásticos del slot de la placa; otros han preferido meter el Dremel en la tarjeta. Debiendo de optar entre una solución u otra, he optado por meter mano a la tarjeta. Para decidir como iba a cortarla, pillé un trozo de placa inservible que tenía por ahí y probé, primero con el Dremel y luego con la típica sierra de marquetería. Llamadme clásico :-), pero escogí la sierra de pelo, por aquello de tener mayor control en el corte:

    Escogiendo el método de corte

    El siguiente paso lógico fue presentar la tarjeta, enfrentada al slot, y marcar con un rotulador de alcohol el espacio a cortar:

    Marco con rotulador el espacio que tengo que cortar

    Tras cortar con cuidado la placa, pasé el Dremel, con un pequeño esmeril, para eliminar posibles rebabas en el corte. El resultado quedó tal que así:

    Corte realizado con la sierra de marquetería

    Zoom del corte realizado, después de lijar las rebabas

     

    Tras pinchar la tarjeta, y pasarle el estupendo software de análisis de hardware HWINFO32 (bajároslo, que es freeware y portable), observo que el ancho de banda es de 2,5 Gb/s (el equivalente a un PCI-e 8x, según leo en esta entrada de la Wikipedia: PCI-Express):

    HWInfo32

     

    Así que, como siempre, aquí os dejo la información sobre el proceso, por si puede ser de utilidad a alguna otra persona en mi misma situación. Y para terminar, os dejo las fuentes que he consultado en la red:

     

     

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