Thursday, August 15, 2013

Corrección de doble punto en SwiftMailer (SWIFT)

Bueno, pués simple y rápido.

Tengo un cliente con un sistema que envía correos electrónicos. Dentro del diseño de la plantilla hay varias imágenes vinculadas a URL que por supuesto llevan algún punto. Al romper las líneas para enviar el correo conforme a estándares, SwiftMailer puede hacer que un punto de esa URL se vaya a una nueva línea; por ejemplo, si el mensaje original tiene la url "www.ejemplo.com" y queda para romper línea, podría resultar:

"............www.ejemplo=
.com"

Así debería de ser, pero SwiftMailer le añade otro punto a todas las líneas que comiencen con un punto (ya que los mensajes de correo electrónico deben de terminar con un punto solo) resultando así:

"...........www.ejemplo=
..com"

Efectivamente haciendo la URL inválida.

La corrección se encuentra en el archivo classes/Swift/Transport/MailTransport.php al rededor de le línea 167, y hay que reemplazar esto:

$body = str_replace("\r\n.", "\r\n..", $body);

por esto:

$body = str_replace("\r\n.\r\n", "\r\n..\r\n", $body);

Así nos aseguramos que el punto solo, realmente sea un punto solo.

Salud!

EDIT:


El reemplazo correcto debe ser en classes/Swift/Transport/AbstractSmtpTransport.php cerca de la línea 327 ($this->_buffer->setWriteTranslations)

Monday, May 6, 2013

Solucionar errores de instalación de Internet Explorer 9 en Windows 7

Post sencillito y rápido. Había estado teniendo problemas con Internet Explorer 9, decidí desinstalarlo y reinstalarlo. Al intentar nuevamente tanto por Windows Update como por el instalador offline, me salieron muchos errores (errores de instalación de Internet Explorer 9 en Windows 7).

Errores encontrados al querer instalar/reinstalar Internet Explorer 9 en Windows 7:

  • 0x80070643
  • 0x80070002
  • 0x80092004
  • 0x800F081E (800F081E)
Sigan estos pasos para solucionarlos:

1) Desinstalar por completo Internet Explorer 9 (si sigue instalado)
  • Ir a Panel de Control > Programas > Programas y características
  • De lado izquierdo dar click en "Ver actualizaciones instaladas"
  • Dar click en "Windows Internet Explorer 9" y luego en "Desinstalar"
  • Reiniciar el equipo
2) Resetar Internet Explorer 8 
  • Abrir internet explorer e ir a Herramientas > Opciones de Internet
  • Dar click en la pestaña "Opciones avanzadas"
  • Dar click en "Restablecer"
  • Cerrar Internet Explorer, reiniciar el equipo
3) Re-Registrar Internet Explorer 8
4) Borrar caché de Windows update
  • En el menú inicio, buscar CMD
  • En el resultado "cmd.exe" dar click derecho y "ejecutar como administrador"
  • Escribir "cd %windir%" (sin comillas) y dar enter
  • Escribir "ren SoftwareDistribution SoftDisTemp" (sin comillas) y dar enter
  • No cierres la ventana de CMD
5) Borrar paquetes específicos de internet explorer (de acuerdo a http://support.microsoft.com/kb/2579295/en-us#LetMeFixItMyselfAlways)
  • Copia el siguiente comando (desde FORFILES hasta la ultima comilla): FORFILES /P %WINDIR%\servicing\Packages /M Microsoft-Windows-InternetExplorer-*9.*.mum /c "cmd /c echo Uninstalling package @fname && start /w pkgmgr /up:@fname /norestart" 
  • Da click derecho en la ventana de CMD y después "pegar"
  • Presiona la tecla enter
  • Reiniciar el equipo
6) Descarga Internet Explorer Offline Installer
¡Listo! =)

Tuesday, November 27, 2012

SSL en IP compartida y suPHP en WHM

Otro poste seguidito para gestionar servidores virtuales (VPS) con WHM. Este post está relacionado con:

  • SSL en VPS con WHM
  • SSL con suPHP
  • Error 500 Internal Server Error despues de instalar certificado SSL al correr scripts PHP
  • Error "Mismatch between target UID (99) and UID (xxx) of file"
  • Error al correr scripts PHP en un servidor SSL con IP compartida (shared IP)

En este post voy a compartir como hacer que un dominio corra SSL con una IP compartida mientras se usa suPHP.

Actualmente tengo un servidor VPS corriendo suPHP por razones de seguridad. Para los que no saben, suPHP ejecuta cada script como su propietario en vez de como el usuario "nobody" (que se usa cuando PHP corre como móduilo DSO de Apache), previniendo que un script tenga acceso a los archivos de otros usuarios en el sistema.

Las versiones recientes de cPanel/WHM previenen mas o menos configurar un dominio con SSL (https) en una dirección IP compartida. Si quieres correr SSL en un dominio sobre una IP compartida, el certificado y la llave (key) deben ser configuradas como el usuario "nobody". El dominio funcionará bien, pero si corres un script PHP en ese dominio, no funcionará porque intenta correr como el usuario "nobody" y suPHP lo bloquea, mandando un error "500 Internal Server Error".

Así que lo que hay que hacer es lo siguiente (recuerda que necesitas acceso a WHM y vía SSH como root):

1) Ve a WHM y da click en "Install an SSL Certificate and Setup the Domain". Ahí puedes seleccionar a cargar tus archivos de cerificado (.crt y .key). Hay muchos tutoriales que muestran cómo generar certificados autofirmados (self-signed) inclusive desde WHM, o puedes obtener un certificado desde un CA.

2) En el campo "Domain" escribe el nombre de dominio que quieres configurar con SSL. Como ejemplo, usaremos el dominio "seguro.domino.net", que es propiedad del usuario de cPanel "usuariochido".

3) En el campo "User", escribe "nobody" (sí, nobody - sin comillas)

4) En el campo "IP Address" escribe tu dirección IP compartida (si no se autollenó el campo)

5) Pega o carga tus archivos .CRT y .KEY

6) Da click en Submit

Ya tienes tu dominio listo. Ahora te puedes conectar a https://seguro.dominio.net y va a funcionar, excepto por los scripts PHP. Para hacer correr los scripts PHP con suPHP en ese dominio con SSL, hay que hacer lo siguiente:

1) Conéctate vía SSH a tu servidor como root (u otro usuario con los permisos adecuados)

2) Cámbiate al directorio /var/cpanel/userdata/nobody, y escribe "ls" para obtener el listado del directorio

3) Debes de ver un archivo llamado "seguro.dominio.net_SSL" (con el dominio real, por supuesto)

4) Mueve ese archivo a /var/cpanel/userdata/usuariochido. Para eso puedes hacer:

mv ./seguro.dominio.net_SSL /var/cpanel/userdata/usuariochido/seguro.dominio.net_SSL

(Recuerda que estamos usando seguro.dominio.net y usuariochido como ejemplos; debes reemplazarlos con el dominio y nombre de usuario verdaderos)

5) Edita el archivo /var/cpanel/userdata/usuariochido/seguro.dominio.net_SSL usando un editor como nano o vi. Debes cambiar estas líneas:

documentroot: /home/usuariochido/public_html/seguro
homedir: /home/usuariochido
user: usuariochido
group: usuariochido

6) Ejecuta los siguientes comando para reconfigurar apache y reiniciarlo:

/scripts/rebuildhttpdconf
service httpd restart

O puedes saltarte "service httpd restart" y reiniciar Apache desde WHM, si prefieres.

7) Pruébalo.

Espero que esta info sea de ayuda =)

Reloj de sistema en VPS con WHM/cPanel no está sincronizado

Este post va relacionado con:


  • NTP (Network Time Protocol) y su demonio NTPD
  • WHM y cPanel Time
  • Dovecot error "time just moved backwards"
  • Tiempo del servidor fuera de sincronización
  • Servidor VPS Linux (CentOS, WHM) con error de tiempo
  • Problema Time Drift, Time Skew, Clock Drift o Clock Skew


Hace unos días que me conseguí un VPS corriendo CentOS con WHM. Desde el principio noté que el IMAP (Dovecot) se reiniciaba con el mensaje de error "Time just moved backwards". Esto pasaba siempre después de realizar una sincronización de tiempo o cambiar la zona horaria.

Resulta que hay un efecto llamado "Time Skew" o "Time Drift" que ocurre en algunos sistemas (sobretodo VPS) que hace que el tiempo vaya más rápido de lo normal. Día tras día encontraba que el reloj del servidor VPS estaba adelantado unos 25 minutos. Esto es un problema crítico.

Después de bastante búsqueda, encontré dos posibles soluciones:

1) Instalar NTP
NTP (Network Time Protocol) es un servicio que nos permite sincronizar el reloj del sistema con internet. Al instalarlo, se instala también el demonio NTPD que ajusta  el reloj automaticamente y lo acelera o desacelera según sea necesario.

Para instalarlo basta con entrar como root vía SSH al VPS y ejecutar

yum install ntp

seguido de

/sbin/chkconfig ntpd on

(este último para que se inicie automaticamente el demonio al reiniciar el servidor).

Después tenemos que modificar el archivo /etc/ntp.conf con un editor como nano o vi. Lo que vamos a hacer es añadir la siguiente línea:

restrict default kod nomodify notrap

y comentar las siguientes (poniendo un gato # al inicio de cada una):

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Guardamos el archivo de configuración. Reiniciamos NTPD y lo configuramos para que se inicie al rebootear el sistema:

service ntpd restart
/scripts/chkconfig ntpd on

Adicionalmente, si tenemos firewall hay que abrir el puerto 123 en UDP. Si tienes WHM con CSF+LDF, ingresa a WHM y ve a la opción "ConfigServer Security & Firewall", da click en el botón "Firewall configuration" y en la opción "UDP_OUT" añade el puerto 123.


2) Modificar el booteo (arranque)
Esta solución es la mejor (combinada con NTP) para un servidor VPS Linux que corre en Hyper-V sobre Windows Server 2008. Para esto, hay que entrar como root vía SSH al servidor VPS, y modificar el archivo /boot/grub/grub.conf.

En ese archivo encontraremos varios Kernels. En el Kernel predeterminado (generalmente el primero) hay que modificar la línea que inicia con "kernel /vmlinuz", agregandole al final "divider=10 clocksource=acpi_pm" (para 32 bits) o "notsc divider=10" (para 64 bits). Nuestro archivo debe quedar algo así:

#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.6.1.el5)
 root (hd0,0)
 kernel /vmlinuz-2.6.18-164.6.1.el5 ro root=/dev/VolGroup00/LogVol00 hda=noprobe db=noprobe notsc divider=10
 initrd /initrd-2.6.18-164.6.1.el5.img
title CentOS (2.6.18-164.el5)
 root (hd0,0)
 kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00
 initrd /initrd-2.6.18-164.el5.img

Después de modificar y guardar grub.conf, debemos ejecutar una sincronización manual del reloj y reiniciar el servidor usando los siguientes comandos:

service stop ntpd
ntpdate 0.pool.ntp.org
hwclock --systohc
reboot

3) Configurar el WallClock
Si NTP y la modificación de arranque no te funcionan, hay que desvincular el reloj del VPS de su nodo. Generalmente la vinculación del nodo VPS causa el Time Skew. Para hacerlo, hay que ingresar como root via SSH al VPS y ejecutar lo siguiente:

echo 1 > /proc/sys/xen/independent_wallclock

Si queremos que la configuración sea persistente después de un reinicio, debemos modificar el archivo "/etc/sysctl.conf" con un editor como nano o vi, y añadir la siguiente linea:

xen.independent_wallclock = 1

Con esto queda configurado nuestro servidor y ya no debemos de tener problemas con el tiempo. Si los problemas con la sincronización siguen, tal vez se deba a un problema de Kernel y debemos solicitar a nuestro proveedor del VPS que haga una actualización de Kernel.


Tuesday, August 28, 2012

Configurar Google Apps con WHM/cPanel

¿Cómo configurar Google Apps (Gmail, Calendar, Drive, etc.) en un hospedaje con WHM/cPanel?

Desde hace tiempo que tengo Google Apps configurado para mi dominio (gururojo.com) y me está funcionando de lujo. La sincronización del calendario y GMail con mi celular Android es espectacular, además de muy seguro.

He estado recientemente recomendando a mis clientes de Hosting que usen Google Apps para sus dominios. Algunos de ellos han aceptado, otros no. Hoy configuré Google Apps para 3 dominios, y después de hacerlo decidí escribir este post sobre esa configuración (Google Apps en cPanel/WHM) para que sea una información de ayuda para todos.

La configuración es muy sencilla, y va como sigue (suponiendo que ya cuentas con un dominio y cPanel/WHM). También asumo que ya tienes conocimientos básicos del manejo de dominios web con cPanel/WHM y nociones generales de lo que es el DNS.

1 - Registrarse en Google Apps para Empresas
Ingresa a http://www.google.com/a/cpanel/domain/new donde podrás registrar una cuenta gratuita. Te va a pedir el dominio, lo escribes y le picas al botón "Enviar" (Submit). Después rellenas la demás información que te pide, y picas en "Acepto, Crear mi cuenta".

Selecciona el asistente de la derecha. Te va a pedir que verifiques la propiedad del dominio subiendo un archivo .html a la raíz del dominio. Descargas el archivo, lo subes a tu dominio y le das "Verificar". Después de eso, seguirá el asistente de Google Apps. Puedes Saltarte los pasos si quieres, ya que la mayoría de las cosas las haremos manualmente, aunque antes de cualquier cosa te recomiendo agregar a todos los usuarios que tendrás en Google Apps (Gmail, Drive, etc.). Este proceso es muy sencillo y Google te guiará facilmente.

2 - Configurar los registros MX para Google Apps en WHM
Primero vamos a dar click en el menú "Setup" de Google Apps. A la izquierda vamos a seleccionar "Set up your apps", le damos Siguiente y Siguiente hasta que pregunte "Cómo deseas enrutar tu correo?" (How do you want to route your mail?), seleccionamos Google Servers y  le damos Next.

Ahora, nos vamos al panel de control WHM en nuestro hosting. Vamos a seleccionar "Edit MX Entry", seleccionamos el dominio para el que estamos configurando Google Apps y damos siguiente. Vamos a borrar todas las entradas MX que existan, y vamos a añadir las siguientes:



Priority (Prioridad) MX Destination (Destino MX)
1ASPMX.L.GOOGLE.COM.
5ALT1.ASPMX.L.GOOGLE.COM.
5ALT2.ASPMX.L.GOOGLE.COM.
10ASPMX2.GOOGLEMAIL.COM.
10ASPMX3.GOOGLEMAIL.COM.


Le damos click en "Save". Ahora regresamos a nuestro Dashboard de Google Apps y le damos "Next". Alomejor nos aparece que debemos esperar a que se propague la información. Propagar los registros MX para Google Apps no lleva más de 2 horas en la vida real, aunque teóricamente podría tardar hasta 48 horas, así que si no podemos enviar o recibir correo de inmediato, no te preocupes, va a llegar un momento donde funcione.

3 - Habilitar autenticación DKIM y SPF para el correo (Gmail) de Google Apps
Ahora en el Dashboard le vamos a dar en "Advanced Tools". Bajamos hasta donde dice "Authenticate email" y le damos en "Set up email authentication (DKIM)". Le vamos a dar en "Generate New Record". Nos va a preguntar el prefijo, le dejamos "google" y aceptamos. En el recuadro gris aparecerá el nombre del registro DNS TXT que debe ser "google._domainkey" y el valor del TXT que debe empezar con "v=DKIM1; k=rsa.......". Vamos a copiar todo ese valir desde "v=" hasta donde termine (generalmente termina con "AB").

Regresamos a nuestro panel de control WHM y seleccionamos la opción "Edit DNS Zone". Si ya tenemos un registro que comienza con "default._domainkey" le vamos a cambiar el nombre a "google._domainkey" (sin comillas) y le pegamos el valor que copiamos anteriormente. IMPORTANTE: el valor debe ir entrecomillado. Si no tenemos un registro "default._domainkey" vamos a generar uno nuevo que tenga de nombre "google._domainkey" (sin comillas), TTL 14400, IN TXT y  le pegamos el valor que copiamos.

Aprovechando que estamos en el editor de zona DNS, vamos a añadir dos nuevos registros:

a. Registro SPF: Debe de llevar por nombre tu dominio, sin "www" y con punto final, por ejemplo "midominio.com." (sin comillas). TTL 14400, IN TXT y de valor le ponemos "v=spf1 include:_spf.google.com ~all" CON comillas.

b. Registro CNAME para ingresar al correo desde nuestro dominio: Para facilitar las cosas seguro querrás entrar por ejemplo a "correo.midominio.com" en vez de a "www.google.com/a/bla.bla.bla". El nuevo registro debe llevar como nombre "correo" así solo, TTL 14400, IN CNAME y de valor "ghs.googlehosted.com." (sin comillas y con el punto final). No olvides dar click en el botón "SAVE".

Como recordatorio, nuestros registros DNS para Google Apps en WHM (editor de zona DNS) deben de quedar algo así (además de los MX que añadimos previamente):


Nombre TTL IN Value
google._domainkey 14400 IN TXT "v=DKIM1; k=rsa; p=MIG... ..."
midominio.com. 14400 IN TXT "v=spf1 include:_spf.google.com ~all"
correo 14400 IN CNAME ghs.googlehosted.com.

Ahora vamos a regresar a Google Apps y le vamos a dar click en "Start Authentication", y listo, con esto ya configuramos la autenticación DKIM y SPF para Gmail de Apps en nuesto dominio.


4 - Configurar el subdominio "correo.midominio.com" para ingresar a nuestro correo de Google Apps
Estando en el Dashboard, vamos a ir a Settings y seleccionamos Email en la parte izquierda. En Web Address vamos a darle en Change URL. Seleccionamos "custom" que empieza con http://, sigue un cuadro de texto y después nuestro dominio. En ese cuadro de texto vamos a meter la palabra "correo". Damos click en Continue. Si nos pregunta que si ya realizamos el registro del CNAME, le decimos que sí (esto lo hicimos en el paso anterior aprovechando que estabamos en el editor de zona DNS).

5 - No hay paso 5! Ya está todo configurado para utilizar Google Apps en nuestro servidor con cPanel/WHM. Simplemente debemos esperar a que toda la información nueva se propague por internet y con eso estamos listos.

En este post/tutorial aprendimos a:

1 - Registrarse en Google Apps para Empresas
2 - Configurar registros MX para usar el correo de Google
3 - Habilitar autenticación DKIM y SPF para el correo
4 - Configurar el subdominio "correo.midominio.com"

Espero les haya servido. Saludos!

Monday, June 11, 2012

Segundo Debate 2012 México


Sobre el Segundo Debate para las Elecciones de 2012 en México:


Ojalá la gente se haya dado cuenta que en el debate de anoche se demostró que JVM, EPN y AMLO no saben debatir. No respondían preguntas, sólo ataques. Como lo mencioné varias veces en twitter, el debate debería haber sido sobre propuestas y no sobre personas o personajes.


Noté a Josefina atancando más y repitiendo el mismo choro de siempre con una sonrisa algo hipócrita y nuevamente, aprovechándose de su género (amo y respeto a las mujeres, pero JVM se pasa al mencionar que es mujer para todo) y queriendo parecer la persona que más comprende a los mexicanos. Por cierto, el tono de su voz me aburre y cansa.


A Peña lo vi minimizando y esquivando problemas como otras veces. Mostró buenas ideas y propuestas, pero algunas no tan viables o que sólo suenan bonito pero sabemos que no van a pasar. Ahora no hubo tantas aclaraciones sobre lo que dice de él, y evitó el tema de la Ibero.


Vi a un AMLO más tranquilo, no tan atacante como siempre. Ahora propuso y explicó más sus estrategias; sin embargo considero que muchas de sus ideas carecen de bases reales. A veces las cifras que menciona parecen irreales (habría que estudiarlas bien) y no muestra bien sus fuentes. Me recordó a Tercer Grado, donde nomás no mostró al público los "estudios" que llevaba consigo.


Así esta vez noté a un Gabriel Quadri nervioso al principio pero que se fue destensando. Quadri fue el único que estaba debatiendo, el único que hacía preguntas para realmente debatir sobre los temas. Lo considero una persona preparada e inteligente. Sus propuestas (que son MUCHAS) tienen bases realmente tanto financieras como ecológicas y sociales. Desafortunadamente evitó contestar directamente sobre el cuestionamiento de su relación con Elba Esther Gordillo, aunque hizo el importante señalamiento sobre cómo llamó alguna vez JVM "querida amiga" a Gordillo.


Creo que la relación de Quadri con Gordillo es algo que pesa, pero que podríamos dejar de lado. Todos los candidatos se han relacionado con personajes que le han hecho daño al país de una forma u otra y por supuesto de forma más directa que Quadri con Gordillo.


Pongámoslo de esta manera: Se supone que los ultimos presidentes del PRI, así como Fox y Calderón (sobretodo éste último) han tenido algún tipo de pacto o relación con Gordillo que le permite de alguna manera influir. Quadri es un tipo mucho más astuto, preparado, inteligente y letrado que los presidentes anteriores. Un tipo así, no se dejaría mangonear tanto como dicen de los demás. Un tipo así llevará a cabo las excelentes propuestas de educación que ha hecho, porque inclusive si fuera cuestión de la maestra, ahora le conviene y necesita quedar mucho mejor que la CNTE con los paros que está haciendo, y eso sólo se lograría mediante una amplia mejora a la educación en México.


Por otro lado, a quienes piensan que votar por Quadri es inutil por que no tiene chance de ganar, les pongo un ejemplo que puse anoche en Twitter: El no votar por Quadri por que no tiene chance, es como no probar los nuevos tacos mejor preparados por que la competencia es entre los de siempre. Esto es democracia, señores. Esto es México, señores. En México no hay un sistema bipartidista como en EEUU; aquí tenemos 4 opciones. Nosotros podemos sin temor hacer que Quadri sea nuestro representante y presidente los próximos 6 años. ¿Qué pensamiento tan conformista es ese de no votar por alguien "por que no tiene chance"? Vamos, si Quadri no tiene chance, con nuestro voto podemos dárselo.


Si consideras que Gabriel Quadri es la mejor opción, VOTA por él. Haz que tu voz, tu opinión y tu elección sean escuchadas. Yo ya me decidí por él, ¿y tú?.

Friday, September 30, 2011

Rooteando Android.

This post reads about: Android Root, Superuser, Superuser update failed, Rooting problems, No root privileges granted, no root permissions, sudo, su, sh, bin, SuperOneClick, AceGingerRoot, failed root installation, Android 2.3.4 Gingerbread, Samsung Galaxy Ace, Rooted Android.

Hello there,

This post is for you all that are having problems after rooting an Android device, specifically talking about version 2.3.4 on a Samsung Galaxy Ace.

As you may already know, there is no known way of rooting an Android device with a version >= 2.3 using the classic root utilities (like SuperOneClick). To root the device, you need to boot it in recovery mode and apply an update using the "AceGingerRoot.zip" file. This file contains the necessary binaries to use the device as root (SU, Busybox, SH, SQLite3 and Superuser.apk). If you want more information on this process, visit this link.

After I rooted my phone, everything went OK and I applied Juwe's RAM Script for memory optimization. No problem there. I removed some stock apps that I never use to free up a little bit of internal storage, again, no problem there.

I opened the Superuser app just for being curious. It said that a newer version of the SU binary was available and that I could use the auto-update feature. Just after hitting "update" a toast poped up: "Automatic Update Failed"," An error occured and su was not updated. A zip file(su-2.3.1-bin-signed.zip) has been placed on your sdcard, Please reboot into recovery mode and flash it to update your su binary". I went to check that file and it was a 0 bytes file... I guessed it wouldnt be a problem since the update was not applied and it was working well. Suddenly when I was using my favorite file manager (File Expert) to move some other files, it didn't have root permissions.

I won't make a bible of this story. I looked for an answer and used Android ADB for about 6 hours until I found the answer, so if you are stuck in the same problem I was, here it is.

For a strange reason, the SU binary located in the /system/bin folder was the "locked" binary, so when an app was asking for root privileges it was asking for them to the /system/bin/su file (since that folder goes before the /system/xbin folder in the PATH variable. The "unlocked" version of SU is installed in /system/xbin). What I had to do to get my root working again (and undo everything I did so I could get my guarranty back) was to temporarily rename the /system/bin/su to /system/bin/su-old so that when an app was trying to query for root privileges, the system would not find the /system/bin/su file, thus running the /system/xbin/su modified file.

You can do that by typing "/system/xbin/su" via an ADB console. You phone will need to have the screen on and unlocked. A popup will appear asking you to grant Root privileges to the ADB client. Of course, you need to have the root binaries from the AceGingerRoot.zip installed.

After doing that, I was able once again to gain root privileges for my apps. Immediatly after that I changed the su-old name back to "su", rebooted and used the "unroot.zip" update to remove the root modded files.

EASY STEPS TO GET THIS "SUPERUSER UPDATE FAILED" ISSUE SOLVED:
  • Reinstall "AceGingerRoot.zip" as usual (check link above)
  • Install Android's SDK and tools so you can get ADB
  • Boot your phone in normal mode
  • Fire up an ADB console window in your computer
  • Mount your filesystem as Read/Write with the following command: mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
  • Type in "mv /system/bin/sh /system/bin/sh-old"
  • Run any root app you need to run on your phone. May be you will be asked once again to give that app enough privileges.
  • Do what you need to do as root
  • Once done, close any root app
  • Back to ADB, type "mv /system/bin/sh-old /system/bin/sh" (may be you will need to remount as read/write)
  • Close ADB, Reboot your phone in recovery mode, and run the "unroot.zip" file.


Hope this helps you if you find yourself stuck in this problems.

Cheers! =)

Wednesday, September 28, 2011

Sobre el Avatar de @CdSatelite

Saludos a todos los que leen esto!

Bueno, este post es sencillo y corto para tocar el tema sobre el nuevo Avatar para la cuenta de @CdSatelite en Twitter que diseñé el día de ayer (27/09/2011).

Algunos usuarios han comentado que se parece a otras imagenes. Para ser totalmente sincero, el avatar es de mi autoría (leer siguiente párrafo) y se me ocurrió ya que al buscar "ciudad satelite" en imagenes de Google, lo primero que sale es una de las simbólicas losetas con flecha que indican el nombre de la calle y su sentido en Ciudad Satélite.

La imagen de fondo es una fotografía que encontré al buscar "torres de satelite" en imagenes de Google, y salió de este sitio: http://www.geolocation.ws/v/P/57102914/torres-de-satelite/en. Ahora sabemos que fue liberada por @protoplasmakid bajo una licencia Creative Commons Attribuciones - No derivadas 3.0 Unported. El arte digital (la loseta y el pasto) son de mi autoría y se usó la fuente PT Sans que está liberada bajo la licencia SIL Open Font Licence 1.1 (más información aquí)

Siendo diseñador ya desde hace varios años, de ninguna forma haría un plagio o faltaría a los derechos de autor (propiedad intelectual). Sabiendo que se usa una fuente libre así como una fotografía también liberada, y el arte digital siendo mio, cualquier similitud con otras imágenes es mera coincidencia y sin afán de usurpar artes.

Sin más por ahora, pueden comentarme aquí o en twitter sus observaciones.

Saludos!! =D

Thursday, April 7, 2011

MKV / MP4 en Televisor LG (32)LE5300

Otro post cortito y sólo para recordarlo:

Para reproducir MKV y/o MP4 en un televisor LG *LE5300, si no lo reproduce, será necesario demultiplexar el audio y video y multiplexarlo con MKVmerge versión 3.3 o 3.4 con sólo una pista de video y una pista de audio, ambas marcadas como default. Esto para formato AVC/H.264 con audio AAC. El multiplexado con versiones de MKVmerge superiores a la 3.4 evitará que el video pueda ser reproducido en el televisor.

Saludos!

ETIQUETAS: MKV, MP4, MKVMerge, AAC, H.264, AVC, AVC1, Video, LG, Televisor, 32LE5300, LE5300, HD, FullHD, Matroska, Reproducir, Error

Sunday, December 12, 2010

Windows 7 64 bits (x64) se traba constantemente

Esta entrada es simple, y no hay mucho que decir.

Me acabo de instalar Windows 7 x64 (64 bits) Ultimate. Desde el principio, me mandó algunas pantallas azules y se trababa constantemente. Después de actualizar drivers, quitar programas, y demás jaladas sin resultado, me decidí a flashear la bios para ver si eso ayudaba.

Al volver a meterme a la bios para checar si todo era correcto después del flasheo, me percaté de una tontería. La opción HPET (Tabla de Eventos de Alta Precisión) estaba configurada para correr a 32 bits. La reconfiguré a 64 bits.

Problema resuelto. Jaja.

Thursday, July 29, 2010

EXIM siempre envia con hostname

Claves: exim, sendmail, mail, -f, php, whm

Ok. Esta es corta. De nuevo al estar en el deployment de radioalternativa me di cuenta que los mensajes de correo estaban enviandose bajo el sobre "kkk@server.radioalternativa.com" (el kkk es un nombre de usuario, que obviamente no diré).

Esto impedia que el SPF montado sobre radioalternativa.com no funcionara. Pasé horas investigando y platicando con el soporte del hosting. Para no hacer el cuento largo, después de como 10 modificaciones en la configuración intentando que sendmail funcionara con -f (para forzar una dirección de envío), me di cuenta que EXIM bloquea ciertos usuarios para que no abusen y se hagan pasar por otros.

La solución:
En la configuración de EXIM hay que añadir "trusted_users = kkk", así permitimos que el usuario "kkk" pueda hacer uso del parámetro "-f" de sendmail.

Felices ahora, ya funciona el SPF.

Php mail() regresa TRUE pero no envía el correo.

Claves: PHP, mail, mail(), sendmail, linux, WHM, exim, correos, false, spamd, spam assassin, "En Linux, la función PHP "mail()" regresa TRUE pero no envía el correo. Los correos si se envían mediante la terminal usando "Sendmail" y "mail"."

Ok...
Hoy estoy haciendo el deployment de la nueva versión de RadioAlternativa. Al hacer pruebas, me di cuenta que los correos para los usuarios no estaban siendo enviados, algo muy extraño.

De colpe pensé que sería cosa de mi programación, aunque había funcionado bien en el servidor casero. Probé todo, y los correos seguian sin enviarse. Hice un ejemplo básico que debía de funcionar sin importar nada (un escript php con solamente mail('dire@ccion','asunto','mensaje')) y NADA.

Después, mediante SSH ejecuté el comando Sendmail y Mail, ambos enviaron correctamente el correo... cosa extraña que me indicaba que el problema residia en PHP.

Pasé cerca de dos horas buscando en la configuración de WHM algo que me pudiera ayudar, sin tener ningún resultado. Me decidí a solicitar ayuda al soporte del centro de datos y oh sorpresa! el chat estaba fuera de linea.

Entonces, se me prendió el foco (jaja)... chequé el log del envío de correos en /var/log/maillog; encontré una linea que coincidia con el envío que estaba intentando hacer y aparentemente era SPAMD (SpamAssassin) el que estaba bloqueando el correo. Procedí a deshabilitar SpamAssassin para hacer la prueba, y NADA!!!!

En este punto, ya estaba desesperado. Buscando de nuevo en la configuración de WHM, arriba de donde deshabilitas SpamAssassin vi una opción que bloqueaba el envío de correos si estos se intentaban enviar con el usuario "nobody". Ahí indica que ese usuario generalmente lo usa PHP si NO corre bajo PHPSuexec.

Como último intento, deshabilité esa opción ya que el servidor de RadioAlternativa PHP no se está ejecutando con Suexec. OHHH MARAVILLA! Ya se envían los correos.

Problema:
En Linux, la función PHP "mail()" regresa TRUE pero no envía el correo. Los correos si se envían mediante la terminal usando "Sendmail" y "mail".

Solución:
  • Ingresar a la configuración de WHM
  • Debajo de "Server Configuration" dar click en "Tweak Settings"
  • Buscar la opción "Prevent the user 'nobody' from sending out mail to remote addresses (PHP and CGI scripts generally runs as nobody if you are not using PHPSuexec and Suexec respectively)"
  • Deshabilitar dicha opción
  • Guardar los cambios.

Espero que sea de utlidad! =)
-Emmanuel

Tuesday, June 8, 2010

¿Policía Única?

Ya sé, la gente me va a abuchear, pero esto es mi opinión de la Policía Única que se quiere instaurar en México. Puntos de vista vienen y van, e inclusive (y para variar /s) hasta en el PRI hay puntos de vista divididos acerca de esto; caso es el de Peña Nieto, Gober del Edomex que apoya la propuesta, y de Olivares, Alcaldeza de Naucalpan que va en contra (ambos Priístas)

Un breve recuento:
Desde el año pasado, el Ejecutivo Federal hizo la propuesta de reducir el número de corporaciones policiacas, desapareciendo las corporaciones municipales y dando lugar únicamente a las federales y las estatales, reduciendo de más de 2000 corporaciones a sólo 31 (mas la del DF y las federales).

Este año, dicha propuesta se ha fortalezido, siendo aprobada en su mayoría por la Conago, esperando a ser pasada a las cámaras para su aprobación ya que requiere una modificación al artículo 115 Constitucional que indica que cada municipio tiene control y derecho de una fuerza de seguridad local.

En resumen, estoy en contra de esto.
Sólo tengo opinión para Naucalpan y Edomex, ya que aquí es donde resido. No es secreto que la policía estatal es de las más corruptas, y que también, como en muchísimas otras partes, la policía municipal también es corrupta.

¿Por qué no me gusta la propuesta?
Por que es lo mismo de siempre, parchar el pantalón roto en vez de comprar uno nuevo. Lo que se está manejando para impulsar la propuesta de la Policía Única es que va a reducir la corrupción. Esto es completamente falso.

Corrupción 1: Desvío de fondos destinados a seguridad pública.
Obviamente, aunque no lo han aclarado, los fondos que se destinaban a las policías de los municipios ahora van a formar 100% parte del estado. Si se pretende reducir el desvío de fondos de seguridad por parte del municipio, ¿a poco el estado no los va a poder desviar?

Corrupción 2: Mordidas.
¿Realmente se van a reducir las mordidas?. Yo no lo creo. No puede haber unos ojos de fiabilidad en cada elemento policiaco para supervisar y prevenir las mordidas más que los ojos de la propia ciudadania. Para colmo, esto lo transforma en un problema Civil y no del gobierno, ya que somos los ciudadanos los que debemos negar las mordidas, desde un principio.

Escenario: ¿Más control?
No tengo numeros reales, pero imaginemos que hay 500 elementos de policía municipal en Naucalpan. Digamos que como promedio, haya 200 elementos por municipio del Estado de México. En el estado de México hay 125 municipios [cierto]. Con nuestros irreales números de elementos, nos da una suma de 25,000 elementos policiacos municipales en el Estado.

Si una corporación "reducida" como la de Naucalpan no puede ser 100% controlada en por supuesto un área geográfica más pequeña, con menos nómina que administrar y demás, ¿crees que el estado pueda controlar a todos los 25,000 de elementos municipales, y además a los cientos (o miles, no sé) de elementos estatales?

En caso de que se apruebe esta reforma, entendemos que debería existir una organización y división en "sectores" o algo así de la Policía Única [Estatal]. Entonces, habría una "Policía Estatal - Delegación Naucalpan" o algo así ¿no?. Si este es el caso, ¿dónde queda la mejora administrativa?. A final de cuentas es lo mismo, una policía estatal dividida para cada municipio [sector o delegación], pero administrada por el Gobierno Estatal.

La verdadera solución:
Es simple, aunque compleja [válgame]. Como bién escuché por ahí, "los policías son policías por necesidad, no por devoción o ganas de proteger" (por supuesto con sus excepciones).

Lo que necesitamos hacer es AUMENTAR en gran medida el salario de los elementos, y darles una mucho mejor educación. Quitar leyes¿? estúpidas como la que hace que sean los mismos elementos los que tengan que dar mantenimiento a las unidades CON SU SALARIO, e inclusive algunas veces poner gasolina también de su bolsa. Por esto recurren a la corrupción, por que su pequeño salario se ve además afectado por los gastos operativos, que no deberían recaer en sus hombros.

Generarles convicción por el trabajo + Mejor Educación + Aumento de Salario + Mejores condiciones de trabajo = Menos Corrupción.

Por supuesto, aquí también entramos los ciudadanos, poniendo nuestro grano de arena para evitar la corrupción. Un país lo forman los ciudadanos con su gobierno, no sólo el gobierno, ¿sabes? Por eso nosotros también debemos poner nuestro grano de arena.

Nota al pie:
Siempre nos estamos queje y queje. El mexicano siempre se queja de TODO, jamás está conforme con nada. Esto es algo que les admiro a los gringos, siempre presumen de sus cosas buenas y por eso su población es más "contenta" y tienen una mejor imagen internacional (por lo menos en la cuestión de la policía).

Para que te dejes de quejar de que nunca se hace nada, y empieces a ver las cosas buenas que se hacen aquí en Naucalpan, aunque sean pocas, checa El Universal Edomex - Naucalpan. Aquí se publican notas buenas, por ejemplo de la cantidad de arrestos que se han hecho ultimamente, cómo se atrapan a los delincuentes, las obras públicas y demás; cosas buenas para enorgullecernos.


Gracias por leerme y sorry por el chorote =). Deja tus comentarios aquí o en Facebook.

-Emmanuel

Sunday, May 16, 2010

Spokeo.com... Util, pero de miedo.

Bueno.

Hoy que no tenía algo que hacer, me puse a leer Digg y encontré un artículo que me llamó la atención. Este artículo trata sobre una nueva "red" llamada Spokeo.


¿Qué es Spokeo?
Seré breve. Spokeo permite buscar perfiles de personas en distintas redes sociales; hasta ahí vamos bien. Buscando por nombre, correo, o teléfono puedes encontrar a la persona que buscas y Spokeo te da un "perfil básico" mostrando nombre, fotos, ciudad, etc.

Hagan una prueba: métanse a www.spokeo.com, seleccionen "email" y escriban su dirección de correo; en mi prueba, puse algunas de mis direcciones de correo. La de hotmail fue la que mostró resultados EXACTOS de mi ubicación, nombre, edad, sexo, fotografías, redes sociales en las que estoy, etc. etc.



El problema.
La cuestión está en que por una modica cantidad de $2.40 (aprox.) dolares mensuales, se pueden obtener resultados de perfil avanzado, el cual revela información tan detallada que incluye el "valor promedio" de tu casa, tu calificación crediticia, etc. etc.



La Solución
Para mí, esto representa un GRAVE problema para la privacidad en línea. Afortunadamente, Spokeo provee con un sistema para bloquear las búsquedas:

  • Ingresa a www.spokeo.com
  • Realiza una búsqueda con tu dirección de correo.
  • Ya que aparezca el resultado, copia la URL (completa; de la barra de dirección de tu explorador)
  • Ve a www.spokeo.com/privacy
  • Pega la URL que copiaste
  • Ingresa tu dirección de correo y el código de verificación
  • Continua.
Es importante que pongas una dirección de correo REAL, ya que recibirás un correo para confirmar tu baja. Una vez realizada tu baja, los resultados que se hubieran mostrando al realizar la misma búsqueda que tú, ahora serán mostrados como (en mi caso) "Los resultados para esta dirección de correo no están disponibles".



Chale, esto está pesado. Yo ya bloquee todas mis direcciones de correo en spokeo.com, y tú?

-Emmanuel

Thursday, January 7, 2010

Windows 7: 2 conexiones "Red no identificada" conflictivas

SO: Windows 7 Ultimate
Adaptador: Realtek 8139/810x
Router: 2Wire 1700HG
Problema: Dos redes conectadas, una "Red no identificada" con un solo adaptador. Redes conflictivas en Centro de Redes y Recursos Compartidos.
Escenario: Cuando se reinicia el sistema, aparecen dos redes aunque solo haya una conexión física y bloquea el acceso a Internet.

------

Ok. Desde ayer al iniciar mi computadora por la mañana, me di cuenta que el icono de conexión mostraba una advertencia. De inmediato abri el "Centro de redes y recursos compartidos" y me mostraba DOS (2) redes conectadas, una la de siempre, y otra "Red no identificada". Cómo era esto posible si yo solo tengo un adaptador de red? Esto me pasaba cada vez que reiniciaba el sistema.

Ejecuté el comando "ipconfig /all" que nos revela todo acerca de la red. Como puerta de enlace predeterminada, me aparecia "0.0.0.0 192.168.1.254" - debería de haber aparecido solo la segunda ip.

Después de hacer mil cosas para tratar de borrar la IP maldosa "0.0.0.0", me encontré con información de un comando "Route" (que se debe ejecutar desde CMD). Abriendo un CMD, se escribe "route delete 0.0.0.0" y la red vuelve a funcionar (después de reiniciar el adaptador) pero al reiniciar la computadora, la "Red no identificada" vuelve a aparecer.

Leyendo en varios posts, vi algo ilógico por ahi: Tiene que ver con Adobe CS3 =S. De golpe me pareció que no aplicaba a mi caso, ya que yo tengo la CS4, y dejé de leer ese post. En eso recordé algo: Para editar un video con mi mejor amigo, instalé el Premiere Pro CS3. Después de instalarlo, me salió una advertencia de mi Firewall (Agnitum Outpost) diciendo que "Bonjour" se intentaba conectar a la red.

Bonjour es un servicio bastante conocido de Apple (existe desde hace varios años y está en muchos equipos Windows), que permite la difusión y detección de redes. Lo recordé por que en Windows XP siempre se instalaba por una u otra razón (no viene predeterminado con Windows). Bonjour se carga al inicio de sistema y gasta algunos recursos, por eso nunca lo tuve activado. Ahora bien, indagué mas con la cuestión de Windows 7 y Bonjour y resulta que son incompatibles! El resultado: por eso crea dos "puertas de enlace predeterminadas" (para variar... gracias Apple ¬¬")

Entonces la solución queda así:
Si tienes instalado algo de Adobe o Apple, es muy probable que tengas Bonjour. Bonjour se instala como servicio con cualquiera de los nombres: "##Id_String1..xxxxx", "mDNSxx" o "Bonjour". Para deshabilitarlo, abre Inicio > Ejecutar (o presiona Win+R) y escribe "services.msc" (debes tener una cuenta de administrador). Busca algún servicio con los nombres mencionados, dale click derecho y propiedades. Presiona el boton "Detener". En "Tipo de inicio" selecciona "Deshabilitado". Da click en aceptar y cierra la ventana del Administrador de Servicios.

Ahora que está deshabilitado el servicio Bonjour, debemos ejecutar el comando "route delete 0.0.0.0" desde una ventana de CMD; reiniciamos el sistema y a disfrutar con la red normal!

PD:
Puede ser que tras hacer esto, no tengan conectividad a internet. Si este es el caso, vuelvan a abrir CMD y escriban "ipconfig /renew". Con eso el adaptador se reconfigurará y podrán tener acceso a internet nuevamente.

=)

Saturday, December 19, 2009

PHP APC crashes APACHE (APC de PHP traba apache)

Escribiré este post en dos idiomas para que realmente pueda ayudar. (English below)

Actualmente estoy trabajando con la migración de un sitio choncho de un VPS a otro. Este sitio requiere dos extensiones de PHP adicionales, Memcache y APC.

Todo iba funcionando perfectamente hasta que instalé APC. Al intentar ver un archivo en PHP, este se abria correctamente una sola vez, al segundo intento no me devolvia nada. Exploré el archivo de errores de Apache para encontrarme que un proceso hijo había terminado por una falta de segmento. Imediatamente supe que era por APC.

Despues de bajar y recompilar casi 15 versiones de APC sin exito y cambiar todas las opciones de APC, tambien sin exito, me puse a indagar en internet durante mucho tiempo, sin ninguna ayuda, hasta que por error di con un post del ZEND Optimizer que no tenia nada que ver y eso me dio una idea: Deshabilitar ZEND.

Problema:
Apache envia error SEG FAULT (11) al ejecutar scripts de PHP con APC

Escenario:
PHP 5.2.10, Apache 2.2.11, WHM/cPanel, CentOS 5.3, APC 3.0.19, Memcache 1.1, ZEND 3.3.3

Solución:
Deshabilitar Zend Optimizer en php.ini

---------------------------------------------
English:


Right now I'm migrating a very huge site from a VPS to another. This site requires two additional PHP extensions to work as expected: APC & Memcache.

Everything was going just as expected until i compiled and installed APC. When trying to run a PHP script, it was shown correctly only once; for the second try it just showed a blank screen. Immediatly I gave a look into the Apache's error log file to see what the problem was; at the last line, it read something about a Seg(ment) fault (11), for sure i knew it was because of APC.

After downloading and recompiling 15 (yes, 15!!) APC versions and changing every APC runtime option without succes, i googled for help... after about an hour of browsing lots of sites without any hint that may get me out of the problem, i found (by mistake) a post about ZEND optimizer that had nothing to do with the APC issue, but that give me an idea... it could be because of ZEND!

Problem:
Apache crashes a child process with SEG FAULT (11) when running a PHP script with APC.

Scenario:
PHP 5.2.10, Apache 2.2.11, WHM/cPanel, CentOS 5.3, APC 3.0.19, Memcache 1.1, ZEND 3.3.3

Solution:
Disable ZEND Optimizer extensions in php.ini

Tuesday, October 20, 2009

MSI Wind U100 con Windows 7

Pues bueno... esto en realidad ya tiene tiempo que lo hice pero no habia podido postear. Recientemente me adquirí una netbook MSI Wind U-100. Esta lap se la había recomendado a la hermanita de mi mejor amigo a principios de año desde que vi que era MSI.

Ahora, a ella ya no le gustó por que dice que es muy pequeña, mientras yo justamente estaba buscando una lap pequeña y sencilla ya que para lo único para lo que la necesito es para mostrar trabajos a mis clientes y navegar un rato en Internet para perder el tiempo.

Este post no será muy largo. Simplemente para hacer notar las siguientes cosas de la lap, y de la lap con Windows 7 Ultimate:

  • Procesador: Intel Atom N270 1.6Ghz
  • RAM: DDR2 1Gb
  • Disco Duro: 160Gb
  • Wifi: b/g/n
  • Bluetooth: No
  • Pantalla: 10", Iluminación de led, 1024x600 pixeles
  • Microfono y Cámara web
  • SO instalado: Windows XP Home

Mis comentarios: Excelente lap. MSI es sinonimo de calidad y en este caso no es la excepción, aunque bién pudieron haber hecho que la batería durara más tiempo (dura 3 horas con XP)

MSI Wind U-100 con Windows 7:

Muuuchos problemas al instalar. Monté un DVD-RAM en un case externo para conectarselo por USB a la Wind. El instalador corrió perfecto, hasta que iniciaba la fase de "Expandir archivos". En esta fase, se trabó el instalador con un error de copia de archivos a porcentajes aleatorios.

Después de como 10 intentos, decidí copiar los archivos de instalación de Windows a una USB (en mi caso no tengo USB de 4Gb, así que use un viejo disco duro de 8Gb montado en el case usb) usando un procedimiento bastante sencillo para hacerlo booteable.

Después de esto, Windows se pudo instalar sin problemas en 20 minutos. No requirió ningún driver adicional, inclusive funciona bastante bien la interfaz Aero, aunque el consumo de batería aumentó drasticamente. Con XP la batería duraba aproximadamente 3 horas; con Seven este tiempo se redujo a 1 hora y 50 minutos.

En resumen: Dado a las altas ventajas que trae Windows 7, la movilidad de la U-100 y la facilidad de instalación, recomiendo poner Windows 7 en la U-100.

Friday, August 28, 2009

El correo se envia muy rapido y luego sale error (Windows 7, Outpost)

Bueno, el titulo no lo explica mucho pero aqui va:

Estaba yo feliz diseñando una lona para un cliente y al terminarla, se la envie por correo. Era un archivo adjunto en ZIP de mas o menos 6mb. A mi desgraciadamente Infinitum no me ha subido la velocidad, asi que sigo con mis fabulosos 128kbps de subida. Obviamente con esta velocidad, 6MB se tardan bastante en enviarse. Inesperadamente, la barrita de progreso se fue al 100% como en 5 segundos (demasiado rapido).. claro, era algo IMPOSIBLE.

Yo uso el Agnitum Outpost Firewall Pro 6.7.2957.446.0711, (el mejor firewall para mi) y estoy corriendo la RTM de Windows 7. Abri el Outpost para ver que sucedia con la conexion de mi fabulosisimo FoxMail, un cliente de correo chino (no me gustan las cosas chinas, pero en este se la rifaron) muuuy sencillo de usar y altamente configurable.

Para mi sorpresa, en el Outpost aparecia que la conexion si estaba bien hecha a mi servidor de correo, pero los 6MB ya estaban enviados y no habia mas actividad. Gracias a la tonteria de Microsoft de quitar la animación de actividad del icono de red en el área de notificación, no podia saber si mi internet estaba enviando datos.

Obviamente, despues de un ratito el Foxmail me mando un error de tiempo de espera agotado (timeout). Como es muy configurable, le movi como solucion temporal el timeout para que si enviara el correo. Sorpresa, lo envio, pero aun asi era demasiado extraño que la barra se fuera al 100% tan rapido, que el Outpost reportara que todo habia sido enviado y que no habia actividad.

Pense primero en varias cosas: Que el windows 7 usara alguna especie de buffer para los correos, o que mi antivirus (Nod32) lo estuviera almacenando en buffer para escanearlo y enviarlo. Nada de esto fue verdad.

La solución la encontre despues de indagar como 2 horas en internet en un foro del outpost de un cuate que tenia problemas al enviar correo desde Outlook Express:

El Outpost usa un sistema "Content Handling" (Manejo de Contenido) que escanea el contenido de los paquetes TCP, es por esto que el Outpost recibia el correo primero (por eso el Foxmail se iba al 100% tan rapido), lo escaneaba y lo empezaba a enviar en el fondo (por eso el outpost reportaba que el 100% del contenido del correo estaba enviado, por que tecnicamente el cliente si lo envio, pero al outpost.

SOLUCION: Editar Archivo "machine.ini". Este archivo yo ya lo conocia y cuando me entere de que era cosa del outpost, me puse a buscarle en el pero no encontraba nada relacionado con correo o archivos adjuntos. Despues de leer el foro, vi que esto es lo que se tiene que editar:

EnableContentHandler=false

Esa directiva esta por default en true, si la ponemos en false se deshabilita el gestor de contenido. Los paquetes TCP no son escaneados y por tanto el outpost no funciona como proxy local o buffer de paquetes TCP. El archivo "machine.ini" esta en C:\Program Files\Agnitum\Outpost Firewall Pro\. Para poder editarlo hay que deshabilitar el Self Defense (Auto Protección) del Outpost.

Espero les sea de utilidad.

Wednesday, August 26, 2009

FireFox: Error 0x80004005 nsidomnshtmldocument WYSIWYG

Pues bueno, este post es simple. Estaba yo programando el editor WYSIGYG para uno de mis clientes, y cuando estaba probando en FireFox 3.5, me di cuenta que no siempre estaba disponible la edición en el iFrame aunque designMode estaba activado.

Después de indagar en muchos foros sin ningún resultado, me puse a echarle coco por mi mismo y encontré la respuesta: En Firefox, cuando el iFrame tiene contenido cargado desde un archivo mediante el atributo src, designMode no funciona hasta que este totalmente cargado el documento del iFrame. Es decir, si se activa el designMode pero el documento dentro del iFrame no ha terminado de cargarse, designMode no funciona.

Esto lo resolvi de la siguiente forma:

if(detectamos si es firefox){
document.getElementById('id_del_iframe').contentWindow.onload = function(){
this.document.designMode = "on";
}
} else {
//Hacemos lo necesario para IE
}


Asi de simple hacemos que el designMode se active hasta que el documento del iFrame haya sido cargado.