summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/ChangeLog5
-rw-r--r--noncore/net/wellenreiter/TODO5
-rw-r--r--noncore/net/wellenreiter/gui/configbase.ui287
-rw-r--r--noncore/net/wellenreiter/gui/configwindow.cpp103
-rw-r--r--noncore/net/wellenreiter/gui/configwindow.h7
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp8
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp20
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h3
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp8
-rw-r--r--noncore/net/wellenreiter/opie-wellenreiter.control2
10 files changed, 357 insertions, 91 deletions
diff --git a/noncore/net/wellenreiter/ChangeLog b/noncore/net/wellenreiter/ChangeLog
index 8bf8cc8..d4dca9f 100644
--- a/noncore/net/wellenreiter/ChangeLog
+++ b/noncore/net/wellenreiter/ChangeLog
@@ -1,5 +1,10 @@
2004-??-?? Michael Lauer <mickey@Vanille.de>
+ * Rewrote the simple actions on new {Network, Client, Station}. Besides playing a sound or
+ blinking a LED, a user customizable script can now be executed, if something has been
+ detected. This opens up many possibilities, i.e. a qcop to qpegps or exec'ing Flite.
+ * Added decloaking of cloaked ESSIDs (length != 0, but essid[0] == \0)
+ * Hided the 'Parse' Tab in the configuration window. Not functional now and may come later
* Added parsing of control frames. Display stations sending them SSID "???" for now.
* Added command line option "-nocheck" to skip non-root and dhcp tests
* Improved the speed reading the manufacturer list
diff --git a/noncore/net/wellenreiter/TODO b/noncore/net/wellenreiter/TODO
index ff98eaf..ab171c8 100644
--- a/noncore/net/wellenreiter/TODO
+++ b/noncore/net/wellenreiter/TODO
@@ -8,7 +8,7 @@
- identification of probe requests
i.e. other sniffers around
-- decloaking of falsely reported zero-length SSIDs
+- decloaking of falsely reported SSIDs [done]
- option to launch an external application (i.e. qcop) on
- new net
@@ -33,3 +33,6 @@
packet dissection framework... (unlikely)
- revamp hex window, make it more sophisticated than just a QMultiLineEdit
+
+- write kismet-like .network format and format to be importable into AutoRoute
+
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui
index 2c335df..de6abfc 100644
--- a/noncore/net/wellenreiter/gui/configbase.ui
+++ b/noncore/net/wellenreiter/gui/configbase.ui
@@ -11,8 +11,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>303</width>
- <height>343</height>
+ <width>250</width>
+ <height>371</height>
</rect>
</property>
<property stdset="1">
@@ -706,11 +706,11 @@
<vbox>
<property stdset="1">
<name>margin</name>
- <number>6</number>
+ <number>5</number>
</property>
<property stdset="1">
<name>spacing</name>
- <number>6</number>
+ <number>3</number>
</property>
<widget>
<class>QCheckBox</class>
@@ -774,74 +774,251 @@
</property>
<property stdset="1">
<name>enabled</name>
- <bool>false</bool>
+ <bool>true</bool>
</property>
<property stdset="1">
<name>title</name>
- <string>Action On Detecting</string>
+ <string>Action on detecting a new</string>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
</property>
<grid>
<property stdset="1">
<name>margin</name>
- <number>11</number>
+ <number>3</number>
</property>
<property stdset="1">
<name>spacing</name>
- <number>6</number>
+ <number>0</number>
</property>
- <widget row="1" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel2</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>New Wireless Station</string>
- </property>
- </widget>
<widget row="0" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel1_3</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>New Network</string>
- </property>
- </widget>
- <widget row="0" column="1" >
- <class>QComboBox</class>
- <property stdset="1">
- <name>name</name>
- <cstring>newNetwork</cstring>
- </property>
- </widget>
- <widget row="1" column="1" >
- <class>QComboBox</class>
- <property stdset="1">
- <name>name</name>
- <cstring>newWirelessStation</cstring>
- </property>
- </widget>
- <widget row="2" column="1" >
- <class>QComboBox</class>
+ <class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
- <cstring>newStation</cstring>
+ <cstring>Layout6</cstring>
</property>
- </widget>
- <widget row="2" column="0" >
- <class>QLabel</class>
- <property stdset="1">
- <name>name</name>
- <cstring>TextLabel3</cstring>
+ <property>
+ <name>layoutMargin</name>
</property>
- <property stdset="1">
- <name>text</name>
- <string>New Station</string>
+ <property>
+ <name>layoutSpacing</name>
</property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>2</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>2</number>
+ </property>
+ <widget row="4" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel3</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Wired Station:</string>
+ </property>
+ </widget>
+ <widget row="0" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel1_3</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Network:</string>
+ </property>
+ </widget>
+ <widget row="2" column="1" >
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>&lt;Ignore&gt;</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Play Alarm</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Play Click</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Blink LED</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Run Script</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newClientAction</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget row="3" column="0" rowspan="1" colspan="2" >
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newClientScript</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget row="2" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Wireless Station:</string>
+ </property>
+ </widget>
+ <widget row="4" column="1" >
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>&lt;Ignore&gt;</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Play Alarm</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Play Click</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Blink LED</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Run Script</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newStationAction</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget row="0" column="1" >
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>&lt;Ignore&gt;</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Play Alarm</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Play Click</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Blink LED</string>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>Run Script</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newNetworkAction</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>editable</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget row="1" column="0" rowspan="1" colspan="2" >
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newNetworkScript</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget row="5" column="0" rowspan="1" colspan="2" >
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newStationScript</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ </grid>
</widget>
</grid>
</widget>
diff --git a/noncore/net/wellenreiter/gui/configwindow.cpp b/noncore/net/wellenreiter/gui/configwindow.cpp
index f536f4e..1341d03 100644
--- a/noncore/net/wellenreiter/gui/configwindow.cpp
+++ b/noncore/net/wellenreiter/gui/configwindow.cpp
@@ -17,6 +17,13 @@
#include "configwindow.h"
#include "mainwindow.h"
+/* OPIE */
+#include <opie2/onetwork.h>
+#ifdef QWS
+#include <opie2/oapplication.h>
+#include <opie2/oconfig.h>
+#endif
+
/* QT */
#include <qapplication.h>
#include <qcheckbox.h>
@@ -26,17 +33,11 @@
#include <qlayout.h>
#include <qmap.h>
#include <qpushbutton.h>
+#include <qtabwidget.h>
#include <qtoolbutton.h>
#include <qspinbox.h>
#include <qtextstream.h>
-/* OPIE */
-#include <opie2/onetwork.h>
-
-#ifdef QWS
-#include <opie2/oapplication.h>
-#include <opie2/oconfig.h>
-#endif
WellenreiterConfigWindow* WellenreiterConfigWindow::_instance = 0;
@@ -72,12 +73,18 @@ WellenreiterConfigWindow::WellenreiterConfigWindow( QWidget * parent, const char
WellenreiterConfigWindow::_instance = this;
connect( deviceType, SIGNAL( activated(int) ), this, SLOT( changedDeviceType(int) ) );
+ connect( newNetworkAction, SIGNAL( activated(int) ), this, SLOT( changedNetworkAction(int) ) );
+ connect( newClientAction, SIGNAL( activated(int) ), this, SLOT( changedClientAction(int) ) );
+ connect( newStationAction, SIGNAL( activated(int) ), this, SLOT( changedStationAction(int) ) );
connect( getCaptureFileName, SIGNAL( clicked() ), this, SLOT( getCaptureFileNameClicked() ) );
// make the checkbox 'channelAll' control all other channels
connect( channelAll, SIGNAL( stateChanged(int) ), this, SLOT( channelAllClicked(int) ) );
connect( autodetect, SIGNAL( clicked() ), this, SLOT( performAutodetection() ) );
+
+ // hide tab4 (parse) until Wellenreiter 1.2
+ tab->removePage( tab_4 );
};
@@ -185,6 +192,36 @@ void WellenreiterConfigWindow::changedDeviceType(int t)
}
+void WellenreiterConfigWindow::synchronizeActionsAndScripts()
+{
+ if ( newNetworkAction->currentItem() == 4 ) newNetworkScript->show(); else newNetworkScript->hide();
+ if ( newClientAction->currentItem() == 4 ) newClientScript->show(); else newClientScript->hide();
+ if ( newStationAction->currentItem() == 4 ) newStationScript->show(); else newStationScript->hide();
+
+ //newNetworkScript->setEnabled( newNetworkAction->currentItem() == 4 );
+ //newClientScript->setEnabled( newClientAction->currentItem() == 4 );
+ //newStationScript->setEnabled( newStationAction->currentItem() == 4 );
+}
+
+
+void WellenreiterConfigWindow::changedNetworkAction(int t)
+{
+ synchronizeActionsAndScripts();
+}
+
+
+void WellenreiterConfigWindow::changedClientAction(int t)
+{
+ synchronizeActionsAndScripts();
+}
+
+
+void WellenreiterConfigWindow::changedStationAction(int t)
+{
+ synchronizeActionsAndScripts();
+}
+
+
void WellenreiterConfigWindow::getCaptureFileNameClicked()
{
QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(true);
@@ -235,6 +272,45 @@ int WellenreiterConfigWindow::gpsPort() const
}
+void WellenreiterConfigWindow::performAction( const QString& type )
+{
+ int action;
+ QString script;
+
+ if ( type == "network" )
+ {
+ action = newNetworkAction->currentItem();
+ script = newNetworkScript->text();
+ }
+ else if ( type == "managed" || type == "adhoc" )
+ {
+ action = newClientAction->currentItem();
+ script = newClientScript->text();
+ }
+ else if ( type == "station" )
+ {
+ action = newStationAction->currentItem();
+ script = newStationScript->text();
+ }
+ else
+ {
+ qWarning( "WellenreiterConfigWindow::performAction(): unknown type '%s'", (const char*) type );
+ return;
+ }
+
+ qDebug( "going to perform action %d (script='%s')", action, (const char*) script );
+
+ /*
+
+ if ( sound == "Ignore" ) return;
+ else if ( sound == "Touch" ) ODevice::inst()->touchSound();
+ else if ( sound == "Key" ) ODevice::inst()->keySound();
+ else if ( sound == "Alarm" ) ODevice::inst()->alarmSound();
+
+ */
+}
+
+
void WellenreiterConfigWindow::load()
{
#ifdef Q_WS_X11
@@ -290,6 +366,13 @@ void WellenreiterConfigWindow::load()
lookupVendor->setChecked( c->readBoolEntry( "lookupVendor", true ) );
openTree->setChecked( c->readBoolEntry( "openTree", true ) );
disablePM->setChecked( c->readBoolEntry( "disablePM", true ) );
+ newNetworkAction->setCurrentItem( c->readNumEntry( "newNetworkAction", 0 ) );
+ newNetworkScript->setText( c->readEntry( "newNetworkScript", "" ) );
+ newClientAction->setCurrentItem( c->readNumEntry( "newClientAction", 0 ) );
+ newClientScript->setText( c->readEntry( "newClientScript", "" ) );
+ newStationAction->setCurrentItem( c->readNumEntry( "newStationAction", 0 ) );
+ newStationScript->setText( c->readEntry( "newStationScript", "" ) );
+ synchronizeActionsAndScripts(); // needed for showing/hiding the script QLineEdit on demand
c->setGroup( "GPS" );
enableGPS->setChecked( c->readBoolEntry( "use", false ) );
@@ -333,6 +416,12 @@ void WellenreiterConfigWindow::save()
c->writeEntry( "lookupVendor", lookupVendor->isChecked() );
c->writeEntry( "openTree", openTree->isChecked() );
c->writeEntry( "disablePM", disablePM->isChecked() );
+ c->writeEntry( "newNetworkAction", newNetworkAction->currentItem() );
+ c->writeEntry( "newNetworkScript", newNetworkScript->text() );
+ c->writeEntry( "newClientAction", newClientAction->currentItem() );
+ c->writeEntry( "newClientScript", newClientScript->text() );
+ c->writeEntry( "newStationAction", newStationAction->currentItem() );
+ c->writeEntry( "newStationScript", newStationScript->text() );
c->setGroup( "GPS" );
c->writeEntry( "use", enableGPS->isChecked() );
diff --git a/noncore/net/wellenreiter/gui/configwindow.h b/noncore/net/wellenreiter/gui/configwindow.h
index 80b4d2b..b082331 100644
--- a/noncore/net/wellenreiter/gui/configwindow.h
+++ b/noncore/net/wellenreiter/gui/configwindow.h
@@ -57,9 +57,16 @@ class WellenreiterConfigWindow : public WellenreiterConfigBase
public slots:
void changedDeviceType(int);
+ void changedNetworkAction(int t);
+ void changedClientAction(int t);
+ void changedStationAction(int t);
void getCaptureFileNameClicked();
void performAutodetection();
void channelAllClicked(int);
+ void performAction( const QString& );
+
+ protected:
+ void synchronizeActionsAndScripts();
protected:
QMap<QString, int> _devicetype;
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp
index 31f95ce..b814427 100644
--- a/noncore/net/wellenreiter/gui/gps.cpp
+++ b/noncore/net/wellenreiter/gui/gps.cpp
@@ -58,23 +58,23 @@ GpsLocation GPS::position() const
QString str;
stream.readRawBytes( &buf[0], 7 );
- float lat = -111.111;
+ float lat = -111;
stream >> lat;
stream.skipWhiteSpace();
- float lon = -111.111;
+ float lon = -111;
stream >> lon;
stream.readRawBytes( &buf[0], 200 ); // read and discard the stuff until EOF
return GpsLocation( lat, lon );
}
}
- return GpsLocation( -111.111, -111.111 );
+ return GpsLocation( -111, -111 );
}
QString GpsLocation::dmsPosition() const
{
- if ( _latitude == -111.111 || _longitude == -111.11 )
+ if ( _latitude == -111 || _longitude == -111 )
return "N/A";
if ( _latitude == 0.0 && _longitude == 0.0 )
return "NULL";
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index d89c71f..470646d 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -26,11 +26,8 @@
#ifdef QWS
#include <qpe/qpeapplication.h>
-#include <opie/odevice.h>
-using namespace Opie;
#endif
-
#ifdef QWS
#include <qpe/resource.h>
#else
@@ -421,8 +418,10 @@ MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QS
#ifdef DEBUG
qDebug( "creating scanlist item" );
#endif
- if ( WellenreiterConfigWindow::instance() && type == "network" )
- playSound( WellenreiterConfigWindow::instance()->soundOnNetwork() );
+
+ if ( WellenreiterConfigWindow::instance() )
+ WellenreiterConfigWindow::instance()->performAction( type ); // better use signal/slot combination here
+
decorateItem( type, essid, macaddr, wep, channel, signal );
}
@@ -539,17 +538,6 @@ void MScanListItem::setLocation( const QString& location )
}
-void MScanListItem::playSound( const QString& sound ) const
-{
- #ifdef QWS
- if ( sound == "Ignore" ) return;
- else if ( sound == "Touch" ) ODevice::inst()->touchSound();
- else if ( sound == "Key" ) ODevice::inst()->keySound();
- else if ( sound == "Alarm" ) ODevice::inst()->alarmSound();
- #endif
-}
-
-
void MScanListItem::receivedBeacon()
{
_beacons++;
diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h
index 6cd8fc0..42f35c2 100644
--- a/noncore/net/wellenreiter/gui/scanlist.h
+++ b/noncore/net/wellenreiter/gui/scanlist.h
@@ -109,9 +109,6 @@ class MScanListItem: public OListViewItem
virtual void serializeTo( QDataStream& s ) const;
virtual void serializeFrom( QDataStream& s );
- protected:
- void playSound( const QString& ) const;
-
private:
QString _type;
QString _essid;
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 45d7142..25632f3 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -181,13 +181,13 @@ void Wellenreiter::handleManagementFrame( OPacket* p, OWaveLanManagementPacket*
}
OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) );
- QString essid = ssid ? ssid->ID() : QString("<unknown>");
+ QString essid = ssid ? ssid->ID( true /* decloak */ ) : QString("<unknown>");
OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) );
int channel = ds ? ds->channel() : -1;
OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) );
- GpsLocation loc( -111.111, -111.111 );
+ GpsLocation loc( -111, -111 );
if ( configwindow->enableGPS->isChecked() )
{
// TODO: add check if GPS is working!?
@@ -216,7 +216,7 @@ void Wellenreiter::handleControlFrame( OPacket* p, OWaveLanControlPacket* contro
if ( control->controlType() == "Acknowledge" )
{
- netView()->addNewItem( "adhoc", "???", header->macAddress1(), false, -1, 0, GpsLocation( -111.111, -111.111 ) );
+ netView()->addNewItem( "adhoc", "???", header->macAddress1(), false, -1, 0, GpsLocation( -111, -111 ) );
}
else
{
@@ -260,7 +260,7 @@ void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAd
from = data->sourceAddress();
to = data->destinationAddress();
- netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( -111.111, -111.111 ) );
+ netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( -111, -111 ) );
}
diff --git a/noncore/net/wellenreiter/opie-wellenreiter.control b/noncore/net/wellenreiter/opie-wellenreiter.control
index 18bac98..1d8c482 100644
--- a/noncore/net/wellenreiter/opie-wellenreiter.control
+++ b/noncore/net/wellenreiter/opie-wellenreiter.control
@@ -5,6 +5,6 @@ Section: opie/applications
Maintainer: Michael 'Mickey' Lauer <mickeyl@handhelds.org>
Architecture: arm
Version: 1.0.2-$SUB_VERSION
-Depends: libqpe1, libpcap0 (0.7.2), libopiecore2, libopienet2, libopieui2
+Depends: libqpe1, libpcap0 (0.7.2), libopiecore2, libopienet2 (>=1.8.3), libopieui2
Description: A WaveLAN Network Monitor
A WaveLAN Network Monitor/Sniffer for the Opie Environment.