Actualizado el 21 de Marzo del 2018 (Publicado el 22 de Noviembre del 2017)
785 visualizaciones desde el 22 de Noviembre del 2017
100,9 KB
8 paginas
Sistema IDS/FW VACL
Francisco JosØ Calvo FernÆndez
http://vacl.sourceforge.net
1. VACL
Historial de revisiones
Revisi(cid:243)n 1 - Requisitos previos
2. Introducci(cid:243)n
2.1. Requisitos previos
2.1.1. Librer(cid:237)a QT4
El sistema necesita para trabajar la librer(cid:237)a QT en su versi(cid:243)n 4. en estos momentos s(cid:243)lo estÆ disponible el
segundo adelanto tecnol(cid:243)gico preAlpha, que se puede descargar desde el FTP o(cid:2)cial de Trolltech,
ftp://ftp.trolltech.com/qt/source.
Para descargarlo podemos utilizar la herramienta wget que encontramos en
http://www.gnu.org/software/wget/wget.html:
wget ftp://ftp.trolltech.com/qt/source/qt-x11-preview-4.0.0-tp2.tar.bz2.
Tras proceder con su descarga se ha de realizar la extracci(cid:243)n del c(cid:243)digo fuente para su posterior
reconstrucci(cid:243)n:
tar xvfj qt-x11-preview-4.0.0-tp2.tar.bz2
Seguidamente es necesario realizar un enlace simb(cid:243)lico o renombrar el directorio
qt-x11-preview-4.0.0-tp21 a qt:
ln -s qt-x11-preview-4.0.0-tp2 qt
Es necesario, a continuaci(cid:243)n, (cid:2)jar ciertas variables de entorno, sobre todo es vital (cid:2)jar QTDIR, PATH y
LD_LIBRARY_PATH, para poder hacer referencia a las librer(cid:237)as dinÆmicas.
export QTDIR=$PWD/qt
1
Sistema IDS/FW VACLFrancisco JosØ Calvo FernÆndez http://vacl.sourceforge.net
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
El paso siguiente pasa por entrar en el directorio qt y (cid:2)jar ciertas opciones de con(cid:2)guraci(cid:243)n mediante la
herramienta con(cid:2)gure, en nuestro caso hemos desactivado el soporte antialising ya que generaba un error
de compilaci(cid:243)n y le hemos especi(cid:2)cado que las librer(cid:237)as dinÆmicas estÆn en el subdirectorio lib dentro
del Ærbol de fuentes (esto parece ser un bug actual)2:
cd qt
./configure -no-xft -libdir ./lib/
Tras ello, compilamos, tendremos ejemplos y demos en los subdirectorios demos y examples.
make
2.1.2. DBUS
VACL utilizarÆ el nuevo sistema de comunicaci(cid:243)n DBUS de Freedesktop, para instalarlo hemos de
descargarlo desde http://www.freedesktop.org/Software/dbus, en estos momentos la œltima versi(cid:243)n
estable es la 0.22.
El motivo por el cual se ha optado por DBUS en lugar del DCOP de KDE es que parece ser que en un
futuro pr(cid:243)ximo, KDE 4 abandonarÆ DCOP y pasarÆ a utilizar DBUS.
Los pasos a seguir para su correcta instalaci(cid:243)n consisten, en un primer lugar en descargar su c(cid:243)digo
fuente:
wget http://www.freedesktop.org/software/dbus/releases/dbus-0.22.tar.gz
Extraemos su c(cid:243)digo:
tar xvfz dbus-0.22.tar.gz
Entramos en el directorio creado y procedemos a su compilaci(cid:243)n y posterior instalaci(cid:243)n:
cd dbus-0.22
./configure
make
make install
En caso de existir algœn paquete para su distribuci(cid:243)n es muy recomendable su utilizaci(cid:243)n; en nuestro
caso, bajo Gentoo ha sido su(cid:2)ciente con ejecutar:
emerge dbus
La instalaci(cid:243)n ha creado un usuario y grupo con la siguiente con(cid:2)guraci(cid:243)n:
2
Sistema IDS/FW VACLFrancisco JosØ Calvo FernÆndez http://vacl.sourceforge.net
* Adding group ’messagebus’ to your system ...
* - Groupid: next available
* Adding user ’messagebus’ to your system ...
* - Userid: 102
* - Shell: /bin/false
* - Home: /dev/null
* - Groups: messagebus
TambiØn se aæade un script al rc.d, con lo que para activar DBUS es su(cid:2)ciente con ejecutar:
/etc/init.d/dbus start
2.1.3. QtDBUS
Ya que VACL se encuentra programado en QT, es necesario el interfaz DBUS para QT, que podemos
encontrar de momento en http://trolls.troll.no/~harald/dbus, en las versiones estables de QT 4 se espera
totalmente estØ totalmente integrado.
Lo primero es la descarga del c(cid:243)digo fuente de la interfaz:
wget http://trolls.troll.no/~harald/dbus/qdbus-20040923.tar.gz
Tras ello, extraemos el Ærbol de fuentes.
tar xvfz qdbus-20040923.tar.gz
Antes de compilar hemos de asegurarnos de que tenemos correctamente con(cid:2)guradas las variables de
entorno anteriormente comentadas, sobre todo, y para que no causemos desastres QTDIR ha de apuntar a
las QT4, los comandos siguientes nos darÆn la respuesta:
echo $QTDIR
echo $LD_LIBRARY_PATH
echo $PATH
Si todo estÆ bien, entramos en el directorio creado y ejecutamos qmake, el cual no ha de generar ninguna
salida por la consola:
cd qdbus
qmake
Procederemos a compilar con la clÆsica make
make
Si obtenemos un mensaje parecido a:
3
Sistema IDS/FW VACLFrancisco JosØ Calvo FernÆndez http://vacl.sourceforge.net
ld: no se puede encontrar -lQtCore_debug collect2: ld devolvi(cid:243) el estado de salida 1
quiere decir que QT no ha sido compilada con las opciones de depuraci(cid:243)n, simplemente hemos de editar
el (cid:2)chero Make(cid:2)le de qdbus y reemplazar la l(cid:237)nea:
LIBS = $(SUBLIBS) -L$(QTDIR)/lib -ldbus-1 -lQtCore_debug -lQtNetwork_debug -lpthread
por
LIBS = $(SUBLIBS) -L$(QTDIR)/lib -ldbus-1 -lQtCore -lQtNetwork -lpthread
desactivando las opciones de depuraci(cid:243)n de esta forma. Otra alternativa pasa por editar el (cid:2)chero
dbdus.pro y cambiar la l(cid:237)nea:
CONFIG += debug
por
CONFIG +=
Podemos instalar con:
make install
La anterior instrucci(cid:243)n copiarÆ las librer(cid:237)as y (cid:2)cheros de cabecera a la ruta donde tengamos las QT4
((cid:2)jada por la variable de entorno $QTDIR), tal y como se muestra en el anexo.
2.2. Primeras pruebas
Con todo instalado, es la hora de comenzar, lo primero pasa por lanzar una sesi(cid:243)n de DBUS, para ello, el
usuario ha de lanzar dbus-launch, el cual retorna el ID y las caracter(cid:237)sticas de la conexi(cid:243)n:
dbus-launch
DBUS_SESSION_BUS_ADDRESS=’unix:abstract=/tmp/dbus-1wfJ51eu6w’
DBUS_SESSION_BUS_PID=24208
Ambos valores hemos de exportarlos como variables de entorno para que todo pueda funcionar:
export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-1wfJ51eu6w
export DBUS_SESSION_BUS_PID=24208
Para simpli(cid:2)car la tarea podremos realizar lo siguiente:
eval ‘dbus-launch‘
4
Sistema IDS/FW VACLFrancisco JosØ Calvo FernÆndez http://vacl.sourceforge.net
Si no tenemos permiso para arrancar una sesi(cid:243)n propia, podemos utilizar la sesi(cid:243)n del sistema, en nuestro
caso:
export DBUS_SESSION_BUS_ADDRESS=unix:path=/var/lib/dbus/system_bus_socket
export DBUS_SESSION_BUS_PID=26255 (el PID lo podemos extraer desde /var/run/dbus.pid)
El siguiente c(cid:243)digo es la base para poder conectar a DBUS desde QT4:
#include <QtCore>
#include <QtDBUS/qdbus.h>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDBusConnection dbc = QDBusConnection::addConnection(QDBusConnection::SessionBus);
if (!dbc.isConnected()) {
qDebug() << "No puedo conectar a D-BUS:" << dbc.lastError();
printf ("No puedo conectar a D-BUS\n");
return 1;
}
return app.exec();
}
Para poder compilarlo hemos de ejecutar en el directorio donde se encuentre:
qmake -project
qmake
No es su(cid:2)ciente, ya que no lincarÆ con QtDbus, para ello hemos de abrir el Make(cid:2)le que se genera y en la
l(cid:237)nea siguiente hemos de aæadir -lqdbus tal y como se muestra:
LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lqdbus -lQtCore -lQtGui -lpthread
Podemos probar a mandar mensajes mediante:
dbus-send --system /org/kde/ping org.kde.ping int32:45
y verlos con
dbus-monitor --system
5
Sistema IDS/FW VACLFrancisco JosØ Calvo FernÆndez http://vacl.sourceforge.net
3. VACL
Sistema DBUS/DCOP
Arquitectura multihilo
.1. Ficheros del servidor
1. main.cpp
Se instancia la aplicaci(cid:243)n QT, se generan los hilos de anÆlisis y si fuera necesario se crea la ventana
principal
2. netlink/netlink.cpp
Este (cid:2)chero contiene el c(cid:243)digo necesario para analizar los datagramas mediante NETLINK/IPT.
Este c(cid:243)digo se ejecuta en un hilo (Thread). Desde aqu(cid:237) cada vez que se detecta un datagrama se
genera una retrollamada a un procedimiento de(cid:2)nido en la clase avisoUsuario.
3. ui/avisoUsuario.cpp
Contiene las implementaciones de las retrollamadas anteriores, que bien pueden generar
directamente mensajes de aviso al usuario o comunicar v(cid:237)a DBUS con otro sistema encargado de
ello (aœn no de(cid:2)nido). QuizÆs este c(cid:243)digo haya que desplazarlo a otra clase.
4. ui/Servidor.cpp
Contiene la implementaci(cid:243)n de la ventana principal de la aplicaci(cid:243)n.
4. Anexos
4.1. Lista de (cid:2)cheros instalados por DBUS
/var/
--- /var/lib/
>>> /var/lib/dbus/
>>> /var/lib/dbus/.keep
--- /var/lib/run/
>>> /var/lib/run/dbus/
--- /etc/
--- /etc/init.d/
>>> /etc/init.d/dbus
>>> /etc/dbus-1/
>>> /etc/dbus-1/system.d/
>>> /etc/dbus-1/system.conf
>>> /etc/dbus-1/session.conf
6
Sistema IDS/FW VACLFrancisco JosØ Calvo FernÆndez http://vacl.sourceforge.net
--- /usr/
--- /usr/share/
--- /usr/share/doc/
>>> /usr/share/doc/dbus-0.22-r1/
>>> /usr/share/doc/dbus-0.22-r1/dbus-tutorial.html.gz
>>> /usr/share/doc/dbus-0.22-r1/dbus-test-plan.html.gz
>>> /usr/share/doc/dbus-0.22-r1/dbus-specification.html.gz
>>> /usr/share/doc/dbus-0.22-r1/TODO.gz
>>> /usr/share/doc/dbus-0.22-r1/README.gz
>>> /usr/share/doc/dbus-0.22-r1/NEWS.gz
>>> /usr/share/doc/dbus-0.22-r1/HACKING.gz
>>> /usr/share/doc/dbus-0.22-r1/ChangeLog.gz
>>> /usr/share/doc/dbus-0.22-r1/AUTHORS.gz
--- /usr/share/man/
--- /usr/share/man/man1/
>>> /usr/share/man/man1/dbus-daemon-1.1.gz
>>> /usr/share/man/man1/dbus-send.1.gz
>>> /usr/share/man/man1/dbus-monitor.1.gz
>>> /usr/share/man/man1/dbus-launch.1.gz
>>> /usr/share/man/man1/dbus-cleanup-sockets.1.gz
--- /usr/bin/
>>> /usr/bin/dbus-daemon-1
>>> /usr/bin/dbus-glib-tool
>>> /usr/bin/dbus-send
>>> /usr/bin/dbus-monitor
>>> /usr/bin/dbus-launch
>>> /usr/bin/dbus-cleanup-sockets
>>> /usr/bin/dbus-viewer
--- /usr/include/
>>> /usr/include/dbus-1.0/
>>> /usr/include/dbus-1.0/dbus/
>>> /usr/include/dbus-1.0/dbus/dbus-glib-error-enum.h
>>> /usr/include/dbus-1.0/dbus/dbus-glib-lowlevel.h
>>> /usr/include/dbus-1.0/dbus/dbus-glib.h
>>
Comentarios de: Sistema IDS/FW VACL (0)
No hay comentarios