PDF de programación - Sistema IDS/FW VACL

<<>>
Imágen de pdf Sistema IDS/FW VACL

Sistema IDS/FW VACLgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 22 de Noviembre del 2017)
172 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
>>
  • Links de descarga
http://lwp-l.com/pdf7634

Comentarios de: Sistema IDS/FW VACL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad