summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter
Unidiff
Diffstat (limited to 'noncore/net/wellenreiter') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp39
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h8
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp18
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h2
4 files changed, 66 insertions, 1 deletions
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index 809d0bd..085eec4 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -11,26 +11,28 @@
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14**********************************************************************/ 14**********************************************************************/
15 15
16#include "scanlist.h" 16#include "scanlist.h"
17#include "configwindow.h" 17#include "configwindow.h"
18#include "logwindow.h" 18#include "logwindow.h"
19 19
20#include <assert.h> 20#include <assert.h>
21#include <qdatetime.h> 21#include <qdatetime.h>
22#include <qtextstream.h> 22#include <qtextstream.h>
23#include <qpopupmenu.h>
23 24
24#ifdef QWS 25#ifdef QWS
26#include <qpe/qpeapplication.h>
25#include <opie/odevice.h> 27#include <opie/odevice.h>
26using namespace Opie; 28using namespace Opie;
27#endif 29#endif
28 30
29 31
30#ifdef QWS 32#ifdef QWS
31#include <qpe/resource.h> 33#include <qpe/resource.h>
32#else 34#else
33#include "resource.h" 35#include "resource.h"
34#endif 36#endif
35 37
36const int col_type = 0; 38const int col_type = 0;
@@ -65,24 +67,32 @@ MScanListView::MScanListView( QWidget* parent, const char* name )
65 addColumn( tr( "T" ) ); 67 addColumn( tr( "T" ) );
66 setColumnAlignment( col_traffic, AlignCenter ); 68 setColumnAlignment( col_traffic, AlignCenter );
67 addColumn( tr( "IP" ) ); 69 addColumn( tr( "IP" ) );
68 setColumnAlignment( col_ip, AlignCenter ); 70 setColumnAlignment( col_ip, AlignCenter );
69 addColumn( tr( "Manufacturer" ) ); 71 addColumn( tr( "Manufacturer" ) );
70 setColumnAlignment( col_manuf, AlignCenter ); 72 setColumnAlignment( col_manuf, AlignCenter );
71 addColumn( tr( "First Seen" ) ); 73 addColumn( tr( "First Seen" ) );
72 setColumnAlignment( col_firstseen, AlignCenter ); 74 setColumnAlignment( col_firstseen, AlignCenter );
73 addColumn( tr( "Last Seen" ) ); 75 addColumn( tr( "Last Seen" ) );
74 setColumnAlignment( col_lastseen, AlignCenter ); 76 setColumnAlignment( col_lastseen, AlignCenter );
75 setRootIsDecorated( true ); 77 setRootIsDecorated( true );
76 setAllColumnsShowFocus( true ); 78 setAllColumnsShowFocus( true );
79
80 connect( this, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ),
81 this, SLOT( contextMenuRequested(QListViewItem*,const QPoint&,int) ) );
82
83 #ifdef QWS
84 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
85 #endif
86
77}; 87};
78 88
79 89
80MScanListView::~MScanListView() 90MScanListView::~MScanListView()
81{ 91{
82}; 92};
83 93
84 94
85OListViewItem* MScanListView::childFactory() 95OListViewItem* MScanListView::childFactory()
86{ 96{
87 return new MScanListItem( this ); 97 return new MScanListItem( this );
88} 98}
@@ -308,24 +318,45 @@ void MScanListView::identify( const OMacAddress& macaddr, const QString& ip )
308 if ( it.current()->text( col_ap ) == macaddr.toString(true) ) 318 if ( it.current()->text( col_ap ) == macaddr.toString(true) )
309 { 319 {
310 it.current()->setText( col_ip, ip ); 320 it.current()->setText( col_ip, ip );
311 return; 321 return;
312 } 322 }
313 } 323 }
314 qDebug( "D'oh! Received identification, but item not yet in list... ==> Handle this!" ); 324 qDebug( "D'oh! Received identification, but item not yet in list... ==> Handle this!" );
315 MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled identification %s = %s!", 325 MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled identification %s = %s!",
316 (const char*) macaddr.toString(), (const char*) ip ) ); 326 (const char*) macaddr.toString(), (const char*) ip ) );
317} 327}
318 328
319 329
330void MScanListView::contextMenuRequested( QListViewItem* item, const QPoint&, int col )
331{
332 if ( !item ) return;
333
334 MScanListItem* itm = static_cast<MScanListItem*>( item );
335
336 qDebug( "contextMenuRequested on item '%s' (%s) in column: '%d'",
337 (const char*) itm->text(0), (const char*) itm->type, col );
338
339 if ( itm->type == "adhoc" || itm->type == "managed" )
340 {
341 QString entry = QString().sprintf( "&Join %s Net '%s'...", (const char*) itm->type, (const char*) itm->essid() );
342
343 QPopupMenu m( this );
344 m.insertItem( entry, 37773, 0 );
345 int result = m.exec( QCursor::pos() );
346 if ( result == 37773 )
347 emit joinNetwork( itm->type, itm->essid(), itm->channel(), itm->macaddr() );
348 }
349}
350
320//============================================================ 351//============================================================
321// MScanListItem 352// MScanListItem
322//============================================================ 353//============================================================
323 354
324MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QString macaddr, 355MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QString macaddr,
325 bool wep, int channel, int signal ) 356 bool wep, int channel, int signal )
326 :OListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null ), 357 :OListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null ),
327 _type( type ), _essid( essid ), _macaddr( macaddr ), _wep( wep ), 358 _type( type ), _essid( essid ), _macaddr( macaddr ), _wep( wep ),
328 _channel( channel ), _signal( signal ), _beacons( 1 ) 359 _channel( channel ), _signal( signal ), _beacons( 1 )
329{ 360{
330 #ifdef DEBUG 361 #ifdef DEBUG
331 qDebug( "creating scanlist item" ); 362 qDebug( "creating scanlist item" );
@@ -336,24 +367,32 @@ MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QS
336} 367}
337 368
338MScanListItem::MScanListItem( QListViewItem* parent, QString type, QString essid, QString macaddr, 369MScanListItem::MScanListItem( QListViewItem* parent, QString type, QString essid, QString macaddr,
339 bool wep, int channel, int signal ) 370 bool wep, int channel, int signal )
340 :OListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null ) 371 :OListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null )
341{ 372{
342 #ifdef DEBUG 373 #ifdef DEBUG
343 qDebug( "creating scanlist item" ); 374 qDebug( "creating scanlist item" );
344 #endif 375 #endif
345 decorateItem( type, essid, macaddr, wep, channel, signal ); 376 decorateItem( type, essid, macaddr, wep, channel, signal );
346} 377}
347 378
379const QString& MScanListItem::essid() const
380{
381 if ( type == "network" )
382 return _essid;
383 else
384 return ( (MScanListItem*) parent() )->essid();
385}
386
348OListViewItem* MScanListItem::childFactory() 387OListViewItem* MScanListItem::childFactory()
349{ 388{
350 return new MScanListItem( this ); 389 return new MScanListItem( this );
351} 390}
352 391
353void MScanListItem::serializeTo( QDataStream& s ) const 392void MScanListItem::serializeTo( QDataStream& s ) const
354{ 393{
355 #ifdef DEBUG 394 #ifdef DEBUG
356 qDebug( "serializing MScanListItem" ); 395 qDebug( "serializing MScanListItem" );
357 #endif 396 #endif
358 OListViewItem::serializeTo( s ); 397 OListViewItem::serializeTo( s );
359 398
diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h
index 253c166..5aba0d2 100644
--- a/noncore/net/wellenreiter/gui/scanlist.h
+++ b/noncore/net/wellenreiter/gui/scanlist.h
@@ -38,24 +38,30 @@ class MScanListView: public OListView
38 virtual void serializeTo( QDataStream& s ) const; 38 virtual void serializeTo( QDataStream& s ) const;
39 virtual void serializeFrom( QDataStream& s ); 39 virtual void serializeFrom( QDataStream& s );
40 40
41 public slots: 41 public slots:
42 void addNewItem( const QString& type, const QString& essid, const OMacAddress& macaddr, bool wep, int channel, int signal ); 42 void addNewItem( const QString& type, const QString& essid, const OMacAddress& macaddr, bool wep, int channel, int signal );
43 void fromDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ); 43 void fromDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via );
44 void toDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ); 44 void toDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via );
45 void WDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& viaFrom, const OMacAddress& viaTo ); 45 void WDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& viaFrom, const OMacAddress& viaTo );
46 void IBSStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ); 46 void IBSStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via );
47 47
48 void identify( const OMacAddress&, const QString& ipaddr ); 48 void identify( const OMacAddress&, const QString& ipaddr );
49 49
50 void contextMenuRequested( QListViewItem* item, const QPoint&, int );
51
52 signals:
53 void rightButtonClicked(QListViewItem*,const QPoint&,int);
54 void joinNetwork( const QString&, const QString&, int, const QString& );
55
50 protected: 56 protected:
51 void addIfNotExisting( MScanListItem* parent, const OMacAddress& addr, const QString& type = "station" ); 57 void addIfNotExisting( MScanListItem* parent, const OMacAddress& addr, const QString& type = "station" );
52 58
53}; 59};
54 60
55//****************************** MScanListItem **************************************************************** 61//****************************** MScanListItem ****************************************************************
56 62
57class MScanListItem: public OListViewItem 63class MScanListItem: public OListViewItem
58{ 64{
59 public: 65 public:
60 MScanListItem::MScanListItem( QListView* parent, 66 MScanListItem::MScanListItem( QListView* parent,
61 QString type = "unknown", 67 QString type = "unknown",
@@ -73,25 +79,25 @@ class MScanListItem: public OListViewItem
73 int channel = 0, 79 int channel = 0,
74 int signal = 0 ); 80 int signal = 0 );
75 81
76 82
77 protected: 83 protected:
78 virtual void decorateItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal ); 84 virtual void decorateItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal );
79 85
80 public: 86 public:
81 QString type; 87 QString type;
82 88
83 public: 89 public:
84 //const QString& type() { return _type; }; 90 //const QString& type() { return _type; };
85 const QString& essid() { return _essid; }; 91 const QString& essid() const;
86 const QString& macaddr() { return _macaddr; }; 92 const QString& macaddr() { return _macaddr; };
87 bool wep() { return _wep; }; 93 bool wep() { return _wep; };
88 int channel() { return _channel; }; 94 int channel() { return _channel; };
89 int signal() { return _signal; }; 95 int signal() { return _signal; };
90 int beacons() { return _beacons; }; 96 int beacons() { return _beacons; };
91 97
92 void setSignal( int signal ) { /* TODO */ }; 98 void setSignal( int signal ) { /* TODO */ };
93 void receivedBeacon(); 99 void receivedBeacon();
94 100
95 void setManufacturer( const QString& manufacturer ); 101 void setManufacturer( const QString& manufacturer );
96 102
97 virtual OListViewItem* childFactory(); 103 virtual OListViewItem* childFactory();
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 2f26702..8a9e55d 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -19,24 +19,25 @@
19#include "scanlist.h" 19#include "scanlist.h"
20#include "logwindow.h" 20#include "logwindow.h"
21#include "hexwindow.h" 21#include "hexwindow.h"
22#include "configwindow.h" 22#include "configwindow.h"
23#include "statwindow.h" 23#include "statwindow.h"
24#include "graphwindow.h" 24#include "graphwindow.h"
25#include "protolistview.h" 25#include "protolistview.h"
26 26
27// Opie 27// Opie
28 28
29#ifdef QWS 29#ifdef QWS
30#include <opie/odevice.h> 30#include <opie/odevice.h>
31#include <qpe/qcopenvelope_qws.h>
31using namespace Opie; 32using namespace Opie;
32#endif 33#endif
33 34
34#ifdef QWS 35#ifdef QWS
35#include <opie2/oapplication.h> 36#include <opie2/oapplication.h>
36#else 37#else
37#include <qapplication.h> 38#include <qapplication.h>
38#endif 39#endif
39#include <opie2/onetwork.h> 40#include <opie2/onetwork.h>
40#include <opie2/opcap.h> 41#include <opie2/opcap.h>
41 42
42// Qt 43// Qt
@@ -72,24 +73,26 @@ Wellenreiter::Wellenreiter( QWidget* parent )
72 // 73 //
73 // detect operating system 74 // detect operating system
74 // 75 //
75 76
76 #ifdef QWS 77 #ifdef QWS
77 QString sys; 78 QString sys;
78 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() ); 79 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() );
79 _system = ODevice::inst()->system(); 80 _system = ODevice::inst()->system();
80 logwindow->log( sys ); 81 logwindow->log( sys );
81 #endif 82 #endif
82 83
83 netview->setColumnWidthMode( 1, QListView::Manual ); 84 netview->setColumnWidthMode( 1, QListView::Manual );
85 connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ),
86 this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) );
84 pcap = new OPacketCapturer(); 87 pcap = new OPacketCapturer();
85} 88}
86 89
87 90
88Wellenreiter::~Wellenreiter() 91Wellenreiter::~Wellenreiter()
89{ 92{
90 delete pcap; 93 delete pcap;
91} 94}
92 95
93 96
94void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) 97void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw )
95{ 98{
@@ -479,12 +482,27 @@ void Wellenreiter::doAction( const QString& action, const QString& protocol, OPa
479 ODevice::inst()->keySound(); 482 ODevice::inst()->keySound();
480 else if ( action == "LedOn" ) 483 else if ( action == "LedOn" )
481 ODevice::inst()->setLedState( Led_Mail, Led_On ); 484 ODevice::inst()->setLedState( Led_Mail, Led_On );
482 else if ( action == "LedOff" ) 485 else if ( action == "LedOff" )
483 ODevice::inst()->setLedState( Led_Mail, Led_Off ); 486 ODevice::inst()->setLedState( Led_Mail, Led_Off );
484 else if ( action == "LogMessage" ) 487 else if ( action == "LogMessage" )
485 logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); 488 logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
486 else if ( action == "MessageBox" ) 489 else if ( action == "MessageBox" )
487 QMessageBox::information ( this, "Notification!", 490 QMessageBox::information ( this, "Notification!",
488 QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); 491 QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
489} 492}
490 493
494void Wellenreiter::joinNetwork(const QString& type, const QString& essid, int channel, const QString& macaddr)
495{
496 qDebug( "joinNetwork() - %s, %s, %d, %s",
497 (const char*) type,
498 (const char*) essid,
499 channel,
500 (const char*) macaddr );
501
502 // TODO: Stop scanning here
503
504 QCopEnvelope msg( "QPE/Application/networksettings", "wlan(QString,QString,QString)" );
505 msg << "test" << "test" << "test";
506
507}
508
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index f23ca4d..e1062df 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -50,24 +50,26 @@ class Wellenreiter : public WellenreiterBase {
50 public: 50 public:
51 bool sniffing; 51 bool sniffing;
52 52
53 protected: 53 protected:
54 virtual void timerEvent( QTimerEvent* ); 54 virtual void timerEvent( QTimerEvent* );
55 55
56 public slots: 56 public slots:
57 void channelHopped(int); 57 void channelHopped(int);
58 void receivePacket(OPacket*); 58 void receivePacket(OPacket*);
59 void startClicked(); 59 void startClicked();
60 void stopClicked(); 60 void stopClicked();
61 61
62 void joinNetwork(const QString&,const QString&,int,const QString&);
63
62 signals: 64 signals:
63 void startedSniffing(); 65 void startedSniffing();
64 void stoppedSniffing(); 66 void stoppedSniffing();
65 67
66 private: 68 private:
67 void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ); 69 void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon );
68 void handleData( OPacket* p, OWaveLanDataPacket* data ); 70 void handleData( OPacket* p, OWaveLanDataPacket* data );
69 void handleNotification( OPacket* p ); 71 void handleNotification( OPacket* p );
70 void doAction( const QString& action, const QString& protocol, OPacket* p ); 72 void doAction( const QString& action, const QString& protocol, OPacket* p );
71 QObject* childIfToParse( OPacket* p, const QString& protocol ); 73 QObject* childIfToParse( OPacket* p, const QString& protocol );
72 bool checkDumpPacket( OPacket* p ); 74 bool checkDumpPacket( OPacket* p );
73 75