wiki:Browser

Version 9 (modified by trac, 7 years ago) (diff)

--

Browser

Introducción

Programa creado con idea de mostrar los menús con las distintas opciones que el cliente puede elegir. Esta opciones pueden ser, por ejemplo, instalar un sistema, arrancar un sistema ya instalado, apagar el sistema, o en modo administrador pasar imágenes creadas, etc. Las características que debe tener el programa son:

  • Ser capaz de interpretar HTML y JavaScript?.
  • Funcionar en modo consola (con framebuffer) y en las X11.
  • Saber interpretar el protocolo "command:" para ejecutar comandos.
  • Saber interpretar el protocolo "commandwithconfirmation:" para ejecutar comandos que necesiten confirmación.
  • Mostrar la salida de los comandos y en su caso guardarlos en un fichero de log.

Estas características han hecho que se desarrolle con qt. Permite realizar todos los objetivos anteriores con cierta facilidad, además de permitir crecer el programa exponencialmente sin que las bases (las librerias) se queden cortas o haya que plantearse un cambio.

Por ahora sólo se ha probado en el cliente initrd con framebuffer. Un problema que puede ocurrir es que como trabaja en modo pantalla completa, si la página no carga queda en un estado de bloqueo al no poder cerrarlo. No se permite cerrarlo pues el usuario podría aprovechar esa característica para atacar el sistema. Queremos un sistema que no permita darle más opciones al usuario que las que permita el menú, siendo más simple para el usuario y más seguro para los administradores. Fruto de este problema, el programa para arrancar necesita un argumento que tiene que ser una página web. Este argumento puede ser de dos tipos:

  • Fichero: browser -qws /etc/pages/index.html
  • Servidor Web: browser -qws http://www.us.es/

Es necesario añadir el argumento -qws, ya que al no existir un sistema de ventanas este le indica al ejecutable que debe capturar los eventos por si mismo. Luego podemos arrancarlo indicándole la ruta de un fichero html. Otra posibilidad es conectarse a un servidor web. En este caso prestar atención en que hace falta poner el protocolo http delante para que funcione correctamente.

En el estado actual si encuentra seteada la variable $OGLOGFILE salvará la salida de los scripts con la fecha y hora delante.

El código por ahora no está excesivamente documentado ni estructurado. Por ahora es un código que funciona y que permite la funcionalidad básica necesaria. En futuras versiones se tratará de mejorar las estructura y funcionalidades.

Compilación

Se usa la herramienta qmake para compilarlo. Si se quiere probar en un entorno X bastaría con instalar las librerías de desarrollo de qt, compilarlo y ejecutarlo con cualquier página web. Sin embargo para usarlo en un sistema básico con initrd hace falta compilarlo con las librerías qt-embedded y de manera estática.

La última vez que se realizó una compilación estática se siguieron los siguientes comandos:

wget http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.0.tar.gz
tar xvfz qt-everywhere-opensource-src-4.7.0.tar.gz
cd qt-everywhere-opensource-src-4.7.0/
./configure -embedded x86 -qt-gfx-vnc -qvfb -static -prefix /usr/local/ -nomake demos -nomake examples -webkit
make
sudo make install

Con esto ya tendríamos qt instalado en /usr/local/QtEmbedded-4.7.0. Para compilar el browser con las librerías compiladas:

cd browser
/usr/local/QtEmbedded-4.7.0/bin/qmake browser.pro
make