-rw-r--r-- | noncore/net/wellenreiter/gui/configbase.ui | 149 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.cpp | 50 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.h | 3 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/protolistview.cpp | 19 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/protolistview.h | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 64 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.h | 3 |
7 files changed, 198 insertions, 94 deletions
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui index 7504ebc..422826a 100644 --- a/noncore/net/wellenreiter/gui/configbase.ui +++ b/noncore/net/wellenreiter/gui/configbase.ui | |||
@@ -13,4 +13,4 @@ | |||
13 | <y>0</y> | 13 | <y>0</y> |
14 | <width>209</width> | 14 | <width>261</width> |
15 | <height>287</height> | 15 | <height>280</height> |
16 | </rect> | 16 | </rect> |
@@ -97,17 +97,2 @@ | |||
97 | </widget> | 97 | </widget> |
98 | <widget row="4" column="0" rowspan="1" colspan="2" > | ||
99 | <class>QCheckBox</class> | ||
100 | <property stdset="1"> | ||
101 | <name>name</name> | ||
102 | <cstring>hopChannels</cstring> | ||
103 | </property> | ||
104 | <property stdset="1"> | ||
105 | <name>text</name> | ||
106 | <string>Hop Channels</string> | ||
107 | </property> | ||
108 | <property stdset="1"> | ||
109 | <name>checked</name> | ||
110 | <bool>true</bool> | ||
111 | </property> | ||
112 | </widget> | ||
113 | <widget row="2" column="0" rowspan="1" colspan="4" > | 98 | <widget row="2" column="0" rowspan="1" colspan="4" > |
@@ -123,38 +108,3 @@ | |||
123 | </widget> | 108 | </widget> |
124 | <widget row="4" column="3" > | 109 | <widget row="6" column="0" rowspan="1" colspan="4" > |
125 | <class>QSpinBox</class> | ||
126 | <property stdset="1"> | ||
127 | <name>name</name> | ||
128 | <cstring>hopInterval</cstring> | ||
129 | </property> | ||
130 | <property stdset="1"> | ||
131 | <name>enabled</name> | ||
132 | <bool>true</bool> | ||
133 | </property> | ||
134 | <property stdset="1"> | ||
135 | <name>suffix</name> | ||
136 | <string> ms</string> | ||
137 | </property> | ||
138 | <property stdset="1"> | ||
139 | <name>maxValue</name> | ||
140 | <number>2000</number> | ||
141 | </property> | ||
142 | <property stdset="1"> | ||
143 | <name>minValue</name> | ||
144 | <number>100</number> | ||
145 | </property> | ||
146 | <property stdset="1"> | ||
147 | <name>lineStep</name> | ||
148 | <number>100</number> | ||
149 | </property> | ||
150 | <property stdset="1"> | ||
151 | <name>value</name> | ||
152 | <number>1000</number> | ||
153 | </property> | ||
154 | <property> | ||
155 | <name>whatsThis</name> | ||
156 | <string>Choose the channel hop interval.</string> | ||
157 | </property> | ||
158 | </widget> | ||
159 | <widget row="5" column="0" rowspan="1" colspan="4" > | ||
160 | <class>QGroupBox</class> | 110 | <class>QGroupBox</class> |
@@ -422,13 +372,2 @@ | |||
422 | </widget> | 372 | </widget> |
423 | <widget row="4" column="2" > | ||
424 | <class>QLabel</class> | ||
425 | <property stdset="1"> | ||
426 | <name>name</name> | ||
427 | <cstring>TextLabel1</cstring> | ||
428 | </property> | ||
429 | <property stdset="1"> | ||
430 | <name>text</name> | ||
431 | <string>every</string> | ||
432 | </property> | ||
433 | </widget> | ||
434 | <spacer row="3" column="0" > | 373 | <spacer row="3" column="0" > |
@@ -454,2 +393,74 @@ | |||
454 | </spacer> | 393 | </spacer> |
394 | <widget row="4" column="2" > | ||
395 | <class>QLabel</class> | ||
396 | <property stdset="1"> | ||
397 | <name>name</name> | ||
398 | <cstring>TextLabel1</cstring> | ||
399 | </property> | ||
400 | <property stdset="1"> | ||
401 | <name>text</name> | ||
402 | <string>every</string> | ||
403 | </property> | ||
404 | </widget> | ||
405 | <widget row="4" column="0" rowspan="1" colspan="2" > | ||
406 | <class>QCheckBox</class> | ||
407 | <property stdset="1"> | ||
408 | <name>name</name> | ||
409 | <cstring>hopChannels</cstring> | ||
410 | </property> | ||
411 | <property stdset="1"> | ||
412 | <name>text</name> | ||
413 | <string>Hop Channels</string> | ||
414 | </property> | ||
415 | <property stdset="1"> | ||
416 | <name>checked</name> | ||
417 | <bool>true</bool> | ||
418 | </property> | ||
419 | </widget> | ||
420 | <widget row="4" column="3" > | ||
421 | <class>QSpinBox</class> | ||
422 | <property stdset="1"> | ||
423 | <name>name</name> | ||
424 | <cstring>hopInterval</cstring> | ||
425 | </property> | ||
426 | <property stdset="1"> | ||
427 | <name>enabled</name> | ||
428 | <bool>true</bool> | ||
429 | </property> | ||
430 | <property stdset="1"> | ||
431 | <name>suffix</name> | ||
432 | <string> ms</string> | ||
433 | </property> | ||
434 | <property stdset="1"> | ||
435 | <name>maxValue</name> | ||
436 | <number>2000</number> | ||
437 | </property> | ||
438 | <property stdset="1"> | ||
439 | <name>minValue</name> | ||
440 | <number>100</number> | ||
441 | </property> | ||
442 | <property stdset="1"> | ||
443 | <name>lineStep</name> | ||
444 | <number>100</number> | ||
445 | </property> | ||
446 | <property stdset="1"> | ||
447 | <name>value</name> | ||
448 | <number>1000</number> | ||
449 | </property> | ||
450 | <property> | ||
451 | <name>whatsThis</name> | ||
452 | <string>Choose the channel hop interval.</string> | ||
453 | </property> | ||
454 | </widget> | ||
455 | <widget row="5" column="0" rowspan="1" colspan="4" > | ||
456 | <class>QCheckBox</class> | ||
457 | <property stdset="1"> | ||
458 | <name>name</name> | ||
459 | <cstring>adaptiveHopping</cstring> | ||
460 | </property> | ||
461 | <property stdset="1"> | ||
462 | <name>text</name> | ||
463 | <string>Use Adaptive(TM) Hop Scheme</string> | ||
464 | </property> | ||
465 | </widget> | ||
455 | </grid> | 466 | </grid> |
@@ -482,2 +493,6 @@ | |||
482 | <property stdset="1"> | 493 | <property stdset="1"> |
494 | <name>enabled</name> | ||
495 | <bool>false</bool> | ||
496 | </property> | ||
497 | <property stdset="1"> | ||
483 | <name>sizePolicy</name> | 498 | <name>sizePolicy</name> |
@@ -867,2 +882,8 @@ | |||
867 | </connection> | 882 | </connection> |
883 | <connection> | ||
884 | <sender>writeCaptureFile</sender> | ||
885 | <signal>toggled(bool)</signal> | ||
886 | <receiver>capturePackets</receiver> | ||
887 | <slot>setEnabled(bool)</slot> | ||
888 | </connection> | ||
868 | </connections> | 889 | </connections> |
diff --git a/noncore/net/wellenreiter/gui/graphwindow.cpp b/noncore/net/wellenreiter/gui/graphwindow.cpp index 7e1f378..b116b91 100644 --- a/noncore/net/wellenreiter/gui/graphwindow.cpp +++ b/noncore/net/wellenreiter/gui/graphwindow.cpp | |||
@@ -31,3 +31,3 @@ MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const cha | |||
31 | 31 | ||
32 | // we draw everything alone | 32 | // we draw everything on our own |
33 | setBackgroundMode( QWidget::NoBackground ); | 33 | setBackgroundMode( QWidget::NoBackground ); |
@@ -36,2 +36,16 @@ MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const cha | |||
36 | 36 | ||
37 | void MFrequencySpectrum::drawTopLine( QPainter* p, int x, int y, int width, const QColor& c ) | ||
38 | { | ||
39 | p->setPen( c.light() ); | ||
40 | p->drawLine( x, y, x+width-1, y ); | ||
41 | } | ||
42 | |||
43 | |||
44 | void MFrequencySpectrum::drawBottomLine( QPainter* p, int x, int y, int width, const QColor& c ) | ||
45 | { | ||
46 | p->setPen( c.dark() ); | ||
47 | p->drawLine( x, y, x+width-1, y ); | ||
48 | } | ||
49 | |||
50 | |||
37 | void MFrequencySpectrum::drawLine( QPainter* p, int x, int y, int width, const QColor& c ) | 51 | void MFrequencySpectrum::drawLine( QPainter* p, int x, int y, int width, const QColor& c ) |
@@ -63,8 +77,9 @@ void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int heig | |||
63 | int v = (v2-v1)*i/maxheight + v1; | 77 | int v = (v2-v1)*i/maxheight + v1; |
64 | drawLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | 78 | if ( i == 0 ) |
79 | drawBottomLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
80 | else if ( i == height-1 ) | ||
81 | drawTopLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
82 | else | ||
83 | drawLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
65 | } | 84 | } |
66 | |||
67 | /*for ( int i = height; i < maxheight; ++i ) | ||
68 | drawLine( p, x, y-i, width, QColor( 47, 68, 76 ) );*/ | ||
69 | |||
70 | } | 85 | } |
@@ -100,2 +115,18 @@ void MFrequencySpectrum::paintEvent( QPaintEvent* e ) | |||
100 | 115 | ||
116 | void MFrequencySpectrum::mousePressEvent( QMouseEvent* e ) | ||
117 | { | ||
118 | int xmargin = 5; | ||
119 | int ymargin = 2; | ||
120 | int y = size().height() - 2 * ymargin; | ||
121 | int x = 0; | ||
122 | int width = ( size().width() - 2 * xmargin ) / _channels; | ||
123 | |||
124 | QPoint pos = e->pos(); | ||
125 | int channel = ( pos.x()-xmargin ) / width; | ||
126 | int height = 100 - ( pos.y()-ymargin )*100/y; | ||
127 | if ( channel < 15 ) _values[channel] = height; | ||
128 | |||
129 | } | ||
130 | |||
131 | |||
101 | Legende::Legende( int channels, QWidget* parent, const char* name, WFlags f ) | 132 | Legende::Legende( int channels, QWidget* parent, const char* name, WFlags f ) |
@@ -127,6 +158,3 @@ MGraphWindow::MGraphWindow( QWidget* parent, const char* name, WFlags f ) | |||
127 | legende = new Legende( 14, this ); | 158 | legende = new Legende( 14, this ); |
128 | startTimer( 50 ); //FIXME: tweak | 159 | startTimer( 50 ); |
129 | |||
130 | //testGraph(); | ||
131 | |||
132 | }; | 160 | }; |
@@ -148,3 +176,3 @@ void MGraphWindow::timerEvent( QTimerEvent* e ) | |||
148 | { | 176 | { |
149 | spectrum->decrease( i, 1 ); //TODO: make this customizable? | 177 | spectrum->decrease( i, 1 ); |
150 | } | 178 | } |
diff --git a/noncore/net/wellenreiter/gui/graphwindow.h b/noncore/net/wellenreiter/gui/graphwindow.h index 4050065..1e00ae7 100644 --- a/noncore/net/wellenreiter/gui/graphwindow.h +++ b/noncore/net/wellenreiter/gui/graphwindow.h | |||
@@ -45,4 +45,7 @@ class MFrequencySpectrum : public QWidget | |||
45 | virtual void paintEvent( QPaintEvent* ); | 45 | virtual void paintEvent( QPaintEvent* ); |
46 | virtual void mousePressEvent( QMouseEvent* ); | ||
46 | 47 | ||
47 | void drawLine( QPainter* p, int x, int y, int width, const QColor& c ); | 48 | void drawLine( QPainter* p, int x, int y, int width, const QColor& c ); |
49 | void drawTopLine( QPainter* p, int x, int y, int width, const QColor& c ); | ||
50 | void drawBottomLine( QPainter* p, int x, int y, int width, const QColor& c ); | ||
48 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ); | 51 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ); |
diff --git a/noncore/net/wellenreiter/gui/protolistview.cpp b/noncore/net/wellenreiter/gui/protolistview.cpp index d4b0dfe..f4b45d0 100644 --- a/noncore/net/wellenreiter/gui/protolistview.cpp +++ b/noncore/net/wellenreiter/gui/protolistview.cpp | |||
@@ -30,3 +30,3 @@ ProtocolListView::ProtocolListView( QWidget* parent, const char* name, WFlags f | |||
30 | { | 30 | { |
31 | actions = ( QString( "parsePackets" ) == QString( name ) ); | 31 | parse = ( QString( "parsePackets" ) == QString( name ) ); |
32 | 32 | ||
@@ -42,3 +42,3 @@ ProtocolListView::ProtocolListView( QWidget* parent, const char* name, WFlags f | |||
42 | new QLabel( tr( "Protocol Family" ), hbox ); | 42 | new QLabel( tr( "Protocol Family" ), hbox ); |
43 | if ( actions ) new QLabel( tr( "Perform Action" ), hbox ); | 43 | new QLabel( tr( "Perform Action" ), hbox ); |
44 | QFrame* frame = new QFrame( vbox ); | 44 | QFrame* frame = new QFrame( vbox ); |
@@ -80,3 +80,3 @@ void ProtocolListView::addProtocol( const QString& name ) | |||
80 | 80 | ||
81 | if ( actions ) | 81 | if ( parse ) |
82 | { | 82 | { |
@@ -87,2 +87,3 @@ void ProtocolListView::addProtocol( const QString& name ) | |||
87 | combo->insertItem( "Ignore" ); | 87 | combo->insertItem( "Ignore" ); |
88 | combo->insertItem( "Discard!" ); | ||
88 | combo->insertItem( "TouchSound" ); | 89 | combo->insertItem( "TouchSound" ); |
@@ -95,2 +96,11 @@ void ProtocolListView::addProtocol( const QString& name ) | |||
95 | } | 96 | } |
97 | else | ||
98 | { | ||
99 | QComboBox* combo = new QComboBox( hbox, (const char*) name ); | ||
100 | #ifdef QWS | ||
101 | combo->setFixedWidth( 75 ); | ||
102 | #endif | ||
103 | combo->insertItem( "Pass" ); | ||
104 | combo->insertItem( "Discard!" ); | ||
105 | } | ||
96 | } | 106 | } |
@@ -107,5 +117,2 @@ QString ProtocolListView::protocolAction( const QString& name ) | |||
107 | { | 117 | { |
108 | //QObject * child ( const char * objName, const char * inheritsClass = 0, | ||
109 | // bool recursiveSearch = TRUE ) | ||
110 | |||
111 | QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" ); | 118 | QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" ); |
diff --git a/noncore/net/wellenreiter/gui/protolistview.h b/noncore/net/wellenreiter/gui/protolistview.h index 166b648..8b460cb 100644 --- a/noncore/net/wellenreiter/gui/protolistview.h +++ b/noncore/net/wellenreiter/gui/protolistview.h | |||
@@ -20,4 +20,2 @@ | |||
20 | #include <qdict.h> | 20 | #include <qdict.h> |
21 | //#include <qcheckbox.h> | ||
22 | //#include <qcombobox.h> | ||
23 | class QCheckBox; | 21 | class QCheckBox; |
@@ -41,3 +39,3 @@ class ProtocolListView : public QScrollView | |||
41 | QVBox* vbox; | 39 | QVBox* vbox; |
42 | bool actions; | 40 | bool parse; |
43 | }; | 41 | }; |
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index edf7dcf..965f6b0 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -153,3 +153,3 @@ void Wellenreiter::handleNotification( OPacket* p ) | |||
153 | QString action = configwindow->parsePackets->protocolAction( name ); | 153 | QString action = configwindow->parsePackets->protocolAction( name ); |
154 | qDebug( "action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); | 154 | qDebug( "parsePacket-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); |
155 | doAction( action, name, p ); | 155 | doAction( action, name, p ); |
@@ -158,3 +158,3 @@ void Wellenreiter::handleNotification( OPacket* p ) | |||
158 | { | 158 | { |
159 | qDebug( "protocol '%s' not checked.", (const char*) name ); | 159 | qDebug( "protocol '%s' not checked in parsePackets.", (const char*) name ); |
160 | } | 160 | } |
@@ -273,5 +273,43 @@ void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data ) | |||
273 | 273 | ||
274 | QObject* childIfToParse( OPacket* p, const QString& protocol ) | 274 | QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol ) |
275 | { | 275 | { |
276 | //FIXME: Implement | 276 | if ( configwindow->parsePackets->isProtocolChecked( protocol ) ) |
277 | if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" ) | ||
278 | return 0; | ||
279 | |||
280 | return p->child( protocol ); | ||
281 | } | ||
282 | |||
283 | |||
284 | bool Wellenreiter::checkDumpPacket( OPacket* p ) | ||
285 | { | ||
286 | // go through all child packets and see if one is inside the child hierarchy for p | ||
287 | // if so, do what the user requested (protocolAction), e.g. pass or discard | ||
288 | if ( !configwindow->writeCaptureFile->isOn() ) | ||
289 | return false; | ||
290 | |||
291 | QObjectList* l = p->queryList(); | ||
292 | QObjectListIt it( *l ); | ||
293 | QObject* o; | ||
294 | |||
295 | while ( (o = it.current()) != 0 ) | ||
296 | { | ||
297 | QString name = it.current()->name(); | ||
298 | if ( configwindow->capturePackets->isProtocolChecked( name ) ) | ||
299 | { | ||
300 | QString action = configwindow->capturePackets->protocolAction( name ); | ||
301 | qDebug( "capturePackets-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); | ||
302 | if ( action == "Discard" ) | ||
303 | { | ||
304 | logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) ); | ||
305 | return false; | ||
306 | } | ||
307 | } | ||
308 | else | ||
309 | { | ||
310 | qDebug( "protocol '%s' not checked in capturePackets.", (const char*) name ); | ||
311 | } | ||
312 | ++it; | ||
313 | } | ||
314 | return true; | ||
277 | } | 315 | } |
@@ -283,6 +321,9 @@ void Wellenreiter::receivePacket( OPacket* p ) | |||
283 | 321 | ||
284 | handleNotification( p ); | 322 | if ( checkDumpPacket( p ) ) |
323 | { | ||
324 | pcap->dump( p ); | ||
325 | } | ||
285 | 326 | ||
286 | // check if we received a beacon frame | 327 | // check if we received a beacon frame |
287 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); | 328 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); |
288 | if ( beacon && beacon->managementType() == "Beacon" ) | 329 | if ( beacon && beacon->managementType() == "Beacon" ) |
@@ -296,3 +337,3 @@ void Wellenreiter::receivePacket( OPacket* p ) | |||
296 | // check for a data frame | 337 | // check for a data frame |
297 | OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) ); | 338 | OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( childIfToParse( p, "802.11 Data" ) ); |
298 | if ( data ) | 339 | if ( data ) |
@@ -301,2 +342,5 @@ void Wellenreiter::receivePacket( OPacket* p ) | |||
301 | } | 342 | } |
343 | |||
344 | handleNotification( p ); | ||
345 | |||
302 | } | 346 | } |
@@ -396,3 +440,5 @@ void Wellenreiter::startClicked() | |||
396 | { | 440 | { |
397 | if ( configwindow->writeCaptureFile->isEnabled() ) //FIXME: bug!? | 441 | pcap->open( interface ); |
442 | |||
443 | if ( configwindow->writeCaptureFile->isOn() ) | ||
398 | { | 444 | { |
@@ -402,3 +448,3 @@ void Wellenreiter::startClicked() | |||
402 | dumpname.append( ".wellenreiter" ); | 448 | dumpname.append( ".wellenreiter" ); |
403 | pcap->open( interface, dumpname ); | 449 | pcap->openDumpFile( dumpname ); |
404 | } | 450 | } |
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h index e227a24..37e692c 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.h +++ b/noncore/net/wellenreiter/gui/wellenreiter.h | |||
@@ -71,3 +71,4 @@ class Wellenreiter : public WellenreiterBase { | |||
71 | QObject* childIfToParse( OPacket* p, const QString& protocol ); | 71 | QObject* childIfToParse( OPacket* p, const QString& protocol ); |
72 | 72 | bool checkDumpPacket( OPacket* p ); | |
73 | |||
73 | private: | 74 | private: |