Archive

Archive for the ‘informática’ Category

Instalando linux en el router ADSL de Jazztel HG536+

January 25th, 2012 No comments

Tengo un router ADSL de Jazztel modelo HG536+. Como ya no lo necesito, le instalé un linux descargado de OpenWrt para poder utilizarlo como router normal (con wireless).

De todos modos, como no soy ningún experto, lo que conseguí fue que enrutase las 4 conexiones de puertos RJ45 a través de la wifi mediante NAT.
Los pasos fueron los siguientes:

Cargar el nuevo firmware en el router:

  1. Descargar el firmware http://downloads.openwrt.org/snapshots/trunk/brcm63xx/openwrt-96348GW-generic-squashfs-cfe.bin (internamente es Broadcom) de la página OpenWrt.
  2. Insertar un clip en el botón de reset del router, mantenerlo, y encender el router.
  3. Mantener el clip hasta que el LED de power se apaga.
  4. Configurar mi interfaz de red a la dirección 192.168.1.170 (o cualquier número entre 2 y 254), máscara 255.255.255.0, gateway 192.168.1.1, dns 192.168.1.1
  5. Abrir en el navegador la página http://1921.168.1.1
  6. Subir la imagen del firmware.

Tras esto, el router tarda unos minutos en subir el firmware y se reinicia. Cuando el LED power deja de parpadear, el router está listo para configurar:

  1. Reconfigurar la interfaz a los del punto 4 anterior (al reiniciarse el router pierdo la configuración)
  2. Hacer en una consola: telnet 192.168.1.1
  3. Al hacer telnet, entraremos como root automáticamente. Ejecutar el comando passwd root e indicar la nueva contraseña de root.
  4. Salir mediante exit.

Al establecer una contraseña a root, se desactiva la funcionalidad de telnet y se activa el acceso mediante ssh:

  1. Conectarse de nuevo mediante ssh root@192.168.1.1

En este punto se puede comprobar mediante ifconfig e iwconfig que no hay interfaz wlan0, y que hay una interfaz virtual bridge br-lan.

La interfaz wlan0 no aparece por un error en la carga del módulo b43. Para activarla hay que ejecutar:

rmmod b43
insmod b43
ifconfig wlan0 up

Al encender el router quiero que se conecte a mi router con internet por wireless, que tiene encriptación WPA. Crear el archivo de configuración para la conexión WPA-PSK. Yo lo hice en /etc/wpa_supplicant.conf

network={
  ssid="redalaqueconectarse"
  scan_ssid=1
  key_mgmt=WPA-PSK
  psk="clave"
}

Ahora sólo queda configurar un script de inicio que se ejecute al final de todo el boot, y que realice lo siguiente:

  1. Eliminar la interfaz virtual br-lan
  2. Borrar las iptables y configurarlas para aceptar forwardings
  3. Activar la interfaz de red lan eth1 (192.168.1.1)
  4. Activar la interfaz wireless wlan0
  5. Conectar wlan0 al router de acceso a internet (wpa_supplicant)
  6. Configurar wlan0 mediante dhcp
  7. Activar NAT para que todo lo que llegue (lo que nos interesa es que afecte a lo que llegue por eth1) lo mande por NAT a wlan0.

Crear el script y configurarlo para que se ejecute al inicio:

touch /etc/init.d/alfinal
chmod 755 /etc/init.d/alfinal
cd /etc/rc.d/
ln -s ../init.d/alfinal S99alfinal

Finalmente, Añadir todo el contenido del fichero /etc/init.d/alfinal:

# Eliminar la interfaz br-lan
# Como no sé exáctamente el orden en que hay que ejecutarlo,
# porque perdería la conexión ssh al hacer las pruebas,
# hago esta chapuzada... alguna de las combinaciones será la buena ;)
# También desactivar la interfaz eth1 para levantarla más tarde
ifconfig br-lan down
ifconfig eth1 down
brctl delif br-lan eth1
brctl delbr br-lan
ifconfig eth1 down
ifconfig br-lan down
brctl delbr br-lan
ifconfig eth1 down
brctl delif br-lan eth1
brctl delbr br-lan

# Borrar las iptables y permitir forwarding
iptables -F
iptables -P FORWARD ACCEPT

# Levantar eth1 y que se configure. La IP será 192.168.1.1
ifconfig eth1 up 192.168.1.1

# Activar la wireless y obtener ip
rmmod b43
insmod b43
ifconfig wlan0 up
wpa_supplicant B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
# Dejamos pasar un rato para que se conecte... a veces incluso ni
# con estas :(
sleep 15
udhcpc -i wlan0

# Activar NAT
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Lo único malo es que si no encuentra la red wireless y no se conecta, no obtiene dirección IP 15 segundos después y es necesario reiniciar el router :\

Llegar a esto tuvo su trabajo… y al final no me sirvió porque la tarjeta broadcom b43 es una MIERDA y la tarjeta integrada del portátil es mejor que esta, con lo cual no gano nada para lo que yo necesitaba… pero al menos ahora tengo una “tarjeta wireles por RJ45″ ;)

Para abrir puertos de entrada (desde la wireless hacia los puertos ethernet) mejor buscar por internet porque todavía no tengo tutorial :P

Categories: informática Tags: , ,

Cargar ficheros contenidos en un .jar

August 2nd, 2011 2 comments

Para cargar ficheros contenidos en el .jar hay que utilizar el método Class.getResourceAsStream(String nombre). Este método devuelve un InputStream de manera que puedes leer los bytes con un InputStreamReader, un BufferedReader, o cargar un Properties.

Para obtener la clase simplemente hay que utilizar el método getClass() que posee todo objeto por heredar de Object.

El nombre del recurso puede contener una ruta. Si la dirección es relativa, se toma a partir del paquete actual (pero la ruta con ‘/’ en vez de ‘.’). Si la dirección es absoluta, se busca en el classpath y por lo tanto también en el propio jar.

 

Carga básica

//
package com.nishilua.mischorradas ;
InputStream inRelativo = getClass().getResourceAsStream("archivos/archivo.txt") ;
InputStream inAbsoluto = getClass().getResourceAsStream("/archivos/archivo.txt") ;

En el primer caso (línea 3) inRelativo, se carga del directorio del jar (o del classpath): /com/nishilua/mischorradas/archivos/archivo.txt

En el segundo caso (línea 4) inAbsoluto, se carga del directorio contenido en el jar (o classpath): /archivos/archivo.txt

 

Lectura con BufferedReader

Para leer archivos de texto tal vez prefiramos leer  línea por línea, por lo que es útil la clase BufferedReader:

//
BufferedReader in = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/archivos/archivo.txt"))) ;

 

Lectura de un fichero .properties

Por último, la lectura de un fichero properties mediante el método load():

//
Properties opciones = new Properties() ;
opciones.load(getClass().getResourceAsStream("/archivos/archivo.properties")) ;

 

Categories: informática Tags: , ,

Vídeo en HTML5

July 21st, 2011 No comments

El siguiente enlace contiene una explicación detallada y genial: Dive Into HTML5

El resumen sencillo es:

  • Utilizar como doctype: html (sin nada más)
  • Utilizar el formato Webm (codec de vídeo VP8 y audio Vorbis)
  • Utilizar el tag <video> de HTML5
  • Configurar en Apache el MIME type añadiendo a la configuración lo siguiente: AddType video/webm .webm
Categories: informática Tags: , ,

Conectando el Arduino mediante C en Linux y Windows

June 30th, 2011 No comments

En el forum de Arduino, el usuario curro92 ha colgado un tema sobre comunicación serie con el arduino en C.

Descarga el documento y software de ejemplo: Conexión serie con el arduino en C.

En Arduino Playground se indican otras maneras de conectar el Arduino.

Categories: informática Tags: , , ,

[SOLUCIONADO] En Ubuntu de 64 bits el Flash Player en Firefox parpadea con rectángulos en blanco

June 19th, 2011 No comments

Para solucionar el problema simplemente hay que descargarse el plugin de 64 bits de flash “Square” desde Adobe Labs y descomprimirlo en la carpeta ~/.mozilla/plugins