author | mickeyl <mickeyl> | 2002-12-29 17:28:26 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2002-12-29 17:28:26 (UTC) |
commit | e829097195e5c4b07c79ba22e168d3ae3ded4489 (patch) (side-by-side diff) | |
tree | 166cf184a01806be74f9b3c61c94d9109daf2afc | |
parent | 8f6559d4be4e0b1857c4ae5cdbf1ad8b485b638b (diff) | |
download | opie-e829097195e5c4b07c79ba22e168d3ae3ded4489.zip opie-e829097195e5c4b07c79ba22e168d3ae3ded4489.tar.gz opie-e829097195e5c4b07c79ba22e168d3ae3ded4489.tar.bz2 |
added a manufacturer database class
-rw-r--r-- | noncore/net/wellenreiter/gui/gui-x11.pro | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/gui.pro | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/manufacturers.cpp | 58 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/manufacturers.h | 37 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/scanlistitem.h | 22 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 16 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.h | 3 |
7 files changed, 140 insertions, 4 deletions
diff --git a/noncore/net/wellenreiter/gui/gui-x11.pro b/noncore/net/wellenreiter/gui/gui-x11.pro index 523bf15..c2a4394 100644 --- a/noncore/net/wellenreiter/gui/gui-x11.pro +++ b/noncore/net/wellenreiter/gui/gui-x11.pro @@ -1,11 +1,11 @@ DESTDIR = . TEMPLATE = app CONFIG = qt warn_on debug #CONFIG = qt warn_on release -HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h resource.h wlan.h cardconfig.h -SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp resource.cpp wlan.cpp cardconfig.cpp +HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h resource.h wlan.h cardconfig.h manufacturers.h +SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp resource.cpp wlan.cpp cardconfig.cpp manufacturers.cpp INCLUDEPATH += ../ DEPENDPATH += ../ LIBS += -L. -lwellenreiter INTERFACES = configbase.ui TARGET = wellenreiter diff --git a/noncore/net/wellenreiter/gui/gui.pro b/noncore/net/wellenreiter/gui/gui.pro index ce1c387..52ed8c6 100644 --- a/noncore/net/wellenreiter/gui/gui.pro +++ b/noncore/net/wellenreiter/gui/gui.pro @@ -1,11 +1,11 @@ DESTDIR = $(OPIEDIR)/bin TEMPLATE = app CONFIG = qt warn_on debug #CONFIG = qt warn_on release -HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h wlan.h cardconfig.h -SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp wlan.cpp cardconfig.cpp +HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h wlan.h cardconfig.h manufacturers.h +SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp wlan.cpp cardconfig.cpp manufacturers.h INCLUDEPATH += $(OPIEDIR)/include ../ DEPENDPATH += $(OPIEDIR)/include ../ LIBS += -lqpe -lopie -L. -lwellenreiter INTERFACES = configbase.ui TARGET = wellenreiter diff --git a/noncore/net/wellenreiter/gui/manufacturers.cpp b/noncore/net/wellenreiter/gui/manufacturers.cpp new file mode 100644 index 0000000..d235989 --- a/dev/null +++ b/noncore/net/wellenreiter/gui/manufacturers.cpp @@ -0,0 +1,58 @@ +/********************************************************************** +** 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. +** +**********************************************************************/ + +#include "manufacturers.h" + +// Qt +#include <qstring.h> +#include <qfile.h> +#include <qtextstream.h> + +ManufacturerDB::ManufacturerDB( const QString& filename ) +{ + QFile file( filename ); + bool hasFile = file.open( IO_ReadOnly ); + if (!hasFile) + { + qDebug( "ManufacturerDB: D'oh! Manufacturer list '%s' not found!", (const char*) filename ); + } + else + { + qDebug( "ManufacturerDB: reading manufacturer list from '%s'...", (const char*) filename ); + QTextStream s( &file ); + QString addr; + QString manu; + + while (!s.atEnd()) + { + s >> addr; + s.skipWhiteSpace(); + manu = s.readLine(); + qDebug( "ManufacturerDB: read pair %s, %s", (const char*) addr, (const char*) manu ); + manufacturers.insert( addr, manu ); + + } + } + +} + +ManufacturerDB::~ManufacturerDB() +{ +} + +QString ManufacturerDB::lookup( const QString& macaddr ) +{ + return manufacturers[macaddr.upper().left(8)]; +} diff --git a/noncore/net/wellenreiter/gui/manufacturers.h b/noncore/net/wellenreiter/gui/manufacturers.h new file mode 100644 index 0000000..d69977a --- a/dev/null +++ b/noncore/net/wellenreiter/gui/manufacturers.h @@ -0,0 +1,37 @@ +/********************************************************************** +** 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. +** +**********************************************************************/ + +#ifndef MANUFACTURERS_H +#define MANUFACTURERS_H + +#include <qmap.h> +#include <string.h> + +class ManufacturerDB +{ + public: + + ManufacturerDB( const QString& filename ); + virtual ~ManufacturerDB(); + QString lookup( const QString& macaddr ); + + private: + + QMap<QString, QString> manufacturers; + +}; + +#endif + diff --git a/noncore/net/wellenreiter/gui/scanlistitem.h b/noncore/net/wellenreiter/gui/scanlistitem.h index cd9d883..47a5a4e 100644 --- a/noncore/net/wellenreiter/gui/scanlistitem.h +++ b/noncore/net/wellenreiter/gui/scanlistitem.h @@ -1,55 +1,77 @@ /********************************************************************** ** 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. ** **********************************************************************/ #ifndef SCANLISTITEM_H #define SCANLISTITEM_H #include <qlistview.h> class QString; class MScanListItem: public QListViewItem { public: MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QString macaddr, bool wep, int channel, int signal ); MScanListItem::MScanListItem( QListViewItem* parent, QString type, QString essid, QString macaddr, bool wep, int channel, int signal ); protected: virtual void decorateItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal ); public: QString type; + public: + + //const QString& type() { return _type; }; + const QString& essid() { return _essid; }; + const QString& macaddr() { return _macaddr; }; + bool wep() { return _wep; }; + int channel() { return _channel; }; + int signal() { return _signal; }; + int received() { return _received; }; + + void setSignal( int signal ) { /* TODO */ }; + void incReceived() { _received++; }; + + private: + QString _type; + QString _essid; + QString _macaddr; + bool _wep; + int _channel; + int _signal; + int _received; + }; #endif diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 2d9bbee..9068e3a 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp @@ -1,268 +1,284 @@ /********************************************************************** ** 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. ** ***********************************************************************/ // Qt #include <qpushbutton.h> #include <qmessagebox.h> #include <qcombobox.h> #include <qspinbox.h> #include <qsocketnotifier.h> // Qtopia #ifdef QWS #include <qpe/global.h> #endif // Opie #ifdef QWS #include <opie/odevice.h> using namespace Opie; #endif // Standard #include <assert.h> #include <errno.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> #include <fcntl.h> // Local #include "wellenreiter.h" #include "scanlist.h" #include "logwindow.h" #include "hexwindow.h" #include "configwindow.h" +#include "manufacturers.h" + #include <libwellenreiter/source/wl_sock.hh> #include <libwellenreiter/source/wl_proto.hh> #include <daemon/source/config.hh> Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl ) : WellenreiterBase( parent, name, fl ), daemonRunning( false ) { + // + // construct manufacturer database + // + + QString manufile; + #ifdef QWS + manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) qApp.qpeDir() ); + #else + manufile.sprintf( "/home/mickey/work/opie/share/wellenreiter/manufacturers.dat" ); + #endif + manufacturerdb = new ManufacturerDB( manufile ); + logwindow->log( "(i) Wellenreiter has been started." ); // // detect operating system // #ifdef QWS QString sys; sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() ); _system = ODevice::inst()->system(); logwindow->log( sys ); #endif // // setup socket for daemon communication, register socket notifier // daemon_fd = wl_setupsock( GUIADDR, GUIPORT ); if ( daemon_fd == -1 ) { logwindow->log( "(E) Couldn't get file descriptor for commsocket." ); } else { int flags; flags = fcntl( daemon_fd, F_GETFL, 0 ); fcntl( daemon_fd, F_SETFL, flags | O_NONBLOCK ); QSocketNotifier *sn = new QSocketNotifier( daemon_fd, QSocketNotifier::Read, parent ); connect( sn, SIGNAL( activated( int ) ), this, SLOT( dataReceived() ) ); } // setup GUI connect( button, SIGNAL( clicked() ), this, SLOT( buttonClicked() ) ); button->setEnabled( false ); netview->setColumnWidthMode( 1, QListView::Manual ); } Wellenreiter::~Wellenreiter() { // no need to delete child widgets, Qt does it all for us + + delete manufacturerdb; } void Wellenreiter::handleMessage() { // FIXME: receive message and handle it qDebug( "received message from daemon." ); char buffer[10000]; memset( &buffer, 0, sizeof( buffer ) ); // int result = #wl_recv( &daemon_fd, (char*) &buffer, sizeof(buffer) ); struct sockaddr from; socklen_t len; int result = recvfrom( daemon_fd, &buffer, 8192, MSG_WAITALL, &from, &len ); qDebug( "received %d from recv [%d bytes]", result, len ); if ( result == -1 ) { qDebug( "Warning: %s", strerror( errno ) ); return; } int command = buffer[1] - 48; /* typedef struct { int net_type; 1 = Accesspoint ; 2 = Ad-Hoc int ssid_len; Length of SSID int channel; Channel int wep; 1 = WEP enabled ; 0 = disabled char mac[64]; MAC address of Accesspoint char bssid[128]; BSSID of Accesspoint } wl_network_t; */ qDebug( "Recv result: %d", ( result ) ); qDebug( "Sniffer sent: '%s'", (const char*) buffer ); hexwindow->log( (const char*) &buffer ); if ( command == NETFOUND ) /* new network found */ { qDebug( "Sniffer said: new network found." ); wl_network_t n; get_network_found( &n, (char*) &buffer ); qDebug( "Sniffer said: net_type is %d.", n.net_type ); qDebug( "Sniffer said: MAC is %s", (const char*) &n.mac ); //n.bssid[n.ssid_len] = "\0"; QString type; if ( n.net_type == 1 ) type = "managed"; else type = "adhoc"; netview->addNewItem( type, n.bssid, QString( (const char*) &n.mac ), n.wep, n.channel, 0 ); } else { qDebug( "unknown sniffer command." ); } } void Wellenreiter::dataReceived() { logwindow->log( "(d) Received data from daemon" ); handleMessage(); } void Wellenreiter::buttonClicked() { /* // add some test stations, so that we can see if the GUI part works addNewItem( "managed", "Vanille", "04:00:20:EF:A6:43", true, 6, 80 ); addNewItem( "managed", "Vanille", "04:00:20:EF:A6:23", true, 11, 10 ); addNewItem( "adhoc", "ELAN", "40:03:43:E7:16:22", false, 3, 10 ); addNewItem( "adhoc", "ELAN", "40:03:53:E7:56:62", false, 3, 15 ); addNewItem( "adhoc", "ELAN", "40:03:63:E7:56:E2", false, 3, 20 ); */ if ( daemonRunning ) { daemonRunning = false; logwindow->log( "(i) Daemon has been stopped." ); button->setText( "Start Scanning" ); // Stop daemon - ugly for now... later better system( "killall orinoco_hopper" ); system( "killall wellenreiterd" ); // FIXME: reset the card trying to get into a usable state again // for now, just message the user QMessageBox::information( this, "Wellenreiter/Opie", "You should reset your\ndevice before using it again." ); } else { logwindow->log( "(i) Daemon has been started." ); daemonRunning = true; button->setText( "Stop Scanning" ); // get configuration from config window const QString& interface = configwindow->interfaceName->currentText(); const QString& cardtype = configwindow->deviceType->currentText(); const QString& interval = configwindow->hopInterval->cleanText(); if ( ( interface == "<select>" ) || ( cardtype == "<select>" ) ) { QMessageBox::information( this, "Wellenreiter/Opie", "You must configure your\ndevice before scanning." ); return; } // set interface into monitor mode /* Global::Execute definitely does not work very well with non-gui stuff! :( */ QString cmdline; cmdline.sprintf( "iwpriv %s monitor 2", (const char*) interface ); system( cmdline ); cmdline.sprintf( "iwpriv %s monitor 2 1", (const char*) interface ); system( cmdline ); // start channel hopper cmdline = "orinoco_hopper "; cmdline += interface; cmdline += " -i "; cmdline += interval; cmdline += " &"; qDebug( "execute: %s", (const char*) cmdline ); system( cmdline ); qDebug( "done" ); // start daemon cmdline = "wellenreiterd "; cmdline += interface; cmdline += " 3"; cmdline += " &"; qDebug( "execute: %s", (const char*) cmdline ); system( cmdline ); qDebug( "done" ); } } diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h index 2296892..9715983 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.h +++ b/noncore/net/wellenreiter/gui/wellenreiter.h @@ -1,56 +1,59 @@ /********************************************************************** ** 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. ** **********************************************************************/ #ifndef WELLENREITER_H #define WELLENREITER_H #include "wellenreiterbase.h" #ifdef QWS #include <opie/odevice.h> using namespace Opie; #endif class QTimerEvent; class QPixmap; +class ManufacturerDB; class Wellenreiter : public WellenreiterBase { Q_OBJECT public: Wellenreiter( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~Wellenreiter(); protected: bool daemonRunning; public slots: void buttonClicked(); void dataReceived(); private: int daemon_fd; // socket filedescriptor for udp communication socket #ifdef QWS OSystem _system; // Opie Operating System identifier #endif void handleMessage(); + ManufacturerDB* manufacturerdb; + //void readConfig(); //void writeConfig(); }; #endif |