summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/protolistview.cpp12
-rw-r--r--noncore/net/wellenreiter/gui/protolistview.h2
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp75
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h3
4 files changed, 77 insertions, 15 deletions
diff --git a/noncore/net/wellenreiter/gui/protolistview.cpp b/noncore/net/wellenreiter/gui/protolistview.cpp
index 05ff5e7..d4b0dfe 100644
--- a/noncore/net/wellenreiter/gui/protolistview.cpp
+++ b/noncore/net/wellenreiter/gui/protolistview.cpp
@@ -90,22 +90,28 @@ void ProtocolListView::addProtocol( const QString& name )
combo->insertItem( "KeySound" );
combo->insertItem( "LedOn" );
combo->insertItem( "LedOff" );
combo->insertItem( "LogMessage" );
combo->insertItem( "MessageBox" );
}
}
bool ProtocolListView::isProtocolChecked( const QString& name )
{
QCheckBox* box = (QCheckBox*) child( (const char*) name );
return ( box && box->isOn() );
}
-QString ProtocolListView::protocolAction( const QString& name ) const
+QString ProtocolListView::protocolAction( const QString& name )
{
- //FIXME
+ //QObject * child ( const char * objName, const char * inheritsClass = 0,
+ // bool recursiveSearch = TRUE )
+
+ QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" );
+ if ( combo )
+ return combo->currentText();
+ else
+ return "<unknown>";
}
-
diff --git a/noncore/net/wellenreiter/gui/protolistview.h b/noncore/net/wellenreiter/gui/protolistview.h
index 723e8cd..166b648 100644
--- a/noncore/net/wellenreiter/gui/protolistview.h
+++ b/noncore/net/wellenreiter/gui/protolistview.h
@@ -19,29 +19,29 @@
#include <qscrollview.h>
#include <qdict.h>
//#include <qcheckbox.h>
//#include <qcombobox.h>
class QCheckBox;
class QComboBox;
class QVBox;
class ProtocolListView : public QScrollView
{
public:
ProtocolListView( QWidget* parent = 0, const char* name = 0, WFlags f = 0 );
virtual ~ProtocolListView();
bool isProtocolChecked( const QString& name );
- QString protocolAction( const QString& name ) const;
+ QString protocolAction( const QString& name );
protected:
virtual void addProtocol( const QString& name );
private:
QVBox* vbox;
bool actions;
};
#endif // PROTOLISTVIEW_H
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 2f3d093..edf7dcf 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -1,79 +1,81 @@
/**********************************************************************
** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
**
** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
***********************************************************************/
+// Local
+
+#include "wellenreiter.h"
+#include "scanlist.h"
+#include "logwindow.h"
+#include "hexwindow.h"
+#include "configwindow.h"
+#include "statwindow.h"
+#include "graphwindow.h"
+#include "manufacturers.h"
+#include "protolistview.h"
+
// Opie
#ifdef QWS
#include <opie/odevice.h>
using namespace Opie;
#endif
#ifdef QWS
#include <opie2/oapplication.h>
#else
#include <qapplication.h>
#endif
#include <opie2/onetwork.h>
#include <opie2/opcap.h>
// Qt
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qdatetime.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qmessagebox.h>
+#include <qobjectlist.h>
#include <qregexp.h>
#include <qspinbox.h>
#include <qtoolbutton.h>
#include <qmainwindow.h>
// Standard
#include <assert.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
-// Local
-
-#include "wellenreiter.h"
-#include "scanlist.h"
-#include "logwindow.h"
-#include "hexwindow.h"
-#include "configwindow.h"
-#include "statwindow.h"
-#include "graphwindow.h"
-#include "manufacturers.h"
-
Wellenreiter::Wellenreiter( QWidget* parent )
: WellenreiterBase( parent, 0, 0 ),
sniffing( false ), iface( 0 ), manufacturerdb( 0 ), configwindow( 0 )
{
//
// construct manufacturer database
//
QString manufile;
#ifdef QWS
manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) QPEApplication::qpeDir() );
#else
manufile.sprintf( "/usr/local/share/wellenreiter/manufacturers.dat" );
#endif
manufacturerdb = new ManufacturerDB( manufile );
@@ -124,32 +126,56 @@ void Wellenreiter::channelHopped(int c)
if ( c > 1 ) left.fill( '.', c-1 );
title.append( left );
title.append( '|' );
if ( c < iface->channels() )
{
QString right;
right.fill( '.', iface->channels()-c );
title.append( right );
}
title.append( "]" );
//title.append( QString().sprintf( " %02d", c ) );
assert( parent() );
( (QMainWindow*) parent() )->setCaption( title );
}
+void Wellenreiter::handleNotification( OPacket* p )
+{
+ QObjectList* l = p->queryList();
+ QObjectListIt it( *l );
+ QObject* o;
+
+ while ( (o = it.current()) != 0 )
+ {
+ QString name = it.current()->name();
+ if ( configwindow->parsePackets->isProtocolChecked( name ) )
+ {
+ QString action = configwindow->parsePackets->protocolAction( name );
+ qDebug( "action for '%s' seems to be '%s'", (const char*) name, (const char*) action );
+ doAction( action, name, p );
+ }
+ else
+ {
+ qDebug( "protocol '%s' not checked.", (const char*) name );
+ }
+ ++it;
+ }
+}
+
+
void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon )
{
QString type;
if ( beacon->canIBSS() )
{
type = "adhoc";
}
else if ( beacon->canESS() )
{
type = "managed";
}
else
{
qWarning( "Wellenreiter::invalid frame [possibly noise] detected!" );
return;
}
@@ -232,36 +258,44 @@ void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data )
}
else if ( arp->type() == "REPLY" )
{
netView()->identify( arp->senderMacAddress().toString(), arp->senderIPV4Address().toString() );
netView()->identify( arp->targetMacAddress().toString(), arp->targetIPV4Address().toString() );
}
}
OIPPacket* ip = (OIPPacket*) p->child( "IP" );
if ( ip )
{
qDebug( "Received IP packet." );
}
}
+QObject* childIfToParse( OPacket* p, const QString& protocol )
+{
+ //FIXME: Implement
+}
+
+
void Wellenreiter::receivePacket( OPacket* p )
{
hexWindow()->log( p->dump( 8 ) );
+ handleNotification( p );
+
// check if we received a beacon frame
OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) );
if ( beacon && beacon->managementType() == "Beacon" )
{
handleBeacon( p, beacon );
return;
}
//TODO: WEP check here
// check for a data frame
OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) );
if ( data )
{
handleData( p, data );
}
@@ -418,16 +452,35 @@ void Wellenreiter::startClicked()
void Wellenreiter::timerEvent( QTimerEvent* )
{
qDebug( "Wellenreiter::timerEvent()" );
OPacket* p = pcap->next();
if ( !p ) // no more packets available
{
stopClicked();
}
else
{
receivePacket( p );
delete p;
}
}
+
+void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p )
+{
+ if ( action == "TouchSound" )
+ ODevice::inst()->touchSound();
+ else if ( action == "AlarmSound" )
+ ODevice::inst()->alarmSound();
+ else if ( action == "KeySound" )
+ ODevice::inst()->keySound();
+ else if ( action == "LedOn" )
+ ODevice::inst()->setLedState( Led_Mail, Led_On );
+ else if ( action == "LedOff" )
+ ODevice::inst()->setLedState( Led_Mail, Led_Off );
+ else if ( action == "LogMessage" )
+ logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
+ else if ( action == "MessageBox" )
+ QMessageBox::information ( this, "Notification!",
+ QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
+}
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index ea8a692..e227a24 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -53,32 +53,35 @@ class Wellenreiter : public WellenreiterBase {
protected:
virtual void timerEvent( QTimerEvent* );
public slots:
void channelHopped(int);
void receivePacket(OPacket*);
void startClicked();
void stopClicked();
signals:
void startedSniffing();
void stoppedSniffing();
private:
void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon );
void handleData( OPacket* p, OWaveLanDataPacket* data );
+ void handleNotification( OPacket* p );
+ void doAction( const QString& action, const QString& protocol, OPacket* p );
+ QObject* childIfToParse( OPacket* p, const QString& protocol );
private:
#ifdef QWS
OSystem _system; // Opie Operating System identifier
#endif
OWirelessNetworkInterface* iface;
OPacketCapturer* pcap;
ManufacturerDB* manufacturerdb;
WellenreiterConfigWindow* configwindow;
//void readConfig();
//void writeConfig();
};