-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 02a6f76..693f20d 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -13,160 +13,164 @@ | |||
13 | ** | 13 | ** |
14 | ***********************************************************************/ | 14 | ***********************************************************************/ |
15 | 15 | ||
16 | // Qt | 16 | // Qt |
17 | 17 | ||
18 | #include <qpushbutton.h> | 18 | #include <qpushbutton.h> |
19 | 19 | ||
20 | // Standard | 20 | // Standard |
21 | 21 | ||
22 | #include <unistd.h> | 22 | #include <unistd.h> |
23 | #include <sys/types.h> | 23 | #include <sys/types.h> |
24 | 24 | ||
25 | // Local | 25 | // Local |
26 | 26 | ||
27 | #include "wellenreiter.h" | 27 | #include "wellenreiter.h" |
28 | #include "scanlistitem.h" | 28 | #include "scanlistitem.h" |
29 | 29 | ||
30 | #include "../libwellenreiter/source/sock.hh" // <--- ugly path, FIX THIS! | 30 | #include "../libwellenreiter/source/sock.hh" // <--- ugly path, FIX THIS! |
31 | #include "../libwellenreiter/source/proto.hh" // <--- ugly path, FIX THIS! | 31 | #include "../libwellenreiter/source/proto.hh" // <--- ugly path, FIX THIS! |
32 | #include "../daemon/source/config.hh" // <--- ugly path, FIX THIS! | 32 | #include "../daemon/source/config.hh" // <--- ugly path, FIX THIS! |
33 | 33 | ||
34 | Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl ) | 34 | Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl ) |
35 | : WellenreiterBase( parent, name, fl ) | 35 | : WellenreiterBase( parent, name, fl ) |
36 | { | 36 | { |
37 | 37 | ||
38 | connect( button, SIGNAL( clicked() ), this, SLOT( buttonClicked() ) ); | 38 | connect( button, SIGNAL( clicked() ), this, SLOT( buttonClicked() ) ); |
39 | netview->setColumnWidthMode( 1, QListView::Manual ); | 39 | netview->setColumnWidthMode( 1, QListView::Manual ); |
40 | 40 | ||
41 | // | 41 | // |
42 | // setup socket for daemon communication and start poller | 42 | // setup socket for daemon communication and start poller |
43 | // | 43 | // |
44 | 44 | ||
45 | daemon_fd = commsock( DAEMONADDR, DAEMONPORT ); | 45 | daemon_fd = commsock( GUIADDR, GUIPORT ); |
46 | if ( daemon_fd == -1 ) | 46 | if ( daemon_fd == -1 ) |
47 | qDebug( "D'oh! Could not get file descriptor for daemon socket." ); | 47 | qDebug( "D'oh! Could not get file descriptor for daemon-->gui communication socket." ); |
48 | else | 48 | //else |
49 | startTimer( 700 ); | 49 | //startTimer( 700 ); |
50 | 50 | ||
51 | } | 51 | } |
52 | 52 | ||
53 | Wellenreiter::~Wellenreiter() | 53 | Wellenreiter::~Wellenreiter() |
54 | { | 54 | { |
55 | // no need to delete child widgets, Qt does it all for us | 55 | // no need to delete child widgets, Qt does it all for us |
56 | } | 56 | } |
57 | 57 | ||
58 | void Wellenreiter::handleMessage() | 58 | void Wellenreiter::handleMessage() |
59 | { | 59 | { |
60 | // FIXME: receive message and handle it | 60 | // FIXME: receive message and handle it |
61 | 61 | ||
62 | qDebug( "received message from daemon." ); | 62 | qDebug( "received message from daemon." ); |
63 | 63 | ||
64 | char buffer[128]; | 64 | char buffer[128]; |
65 | 65 | ||
66 | int result = recvcomm( &daemon_fd, (char*) &buffer, sizeof(buffer) ); | 66 | int result = recvcomm( &daemon_fd, (char*) &buffer, sizeof(buffer) ); |
67 | qDebug( "received %d from recvcomm", result ); | 67 | qDebug( "received %d from recvcomm", result ); |
68 | 68 | ||
69 | /* | 69 | /* |
70 | typedef struct { | 70 | typedef struct { |
71 | int net_type; 1 = Accesspoint ; 2 = Ad-Hoc | 71 | int net_type; 1 = Accesspoint ; 2 = Ad-Hoc |
72 | int ssid_len; Length of SSID | 72 | int ssid_len; Length of SSID |
73 | int channel; Channel | 73 | int channel; Channel |
74 | int wep; 1 = WEP enabled ; 0 = disabled | 74 | int wep; 1 = WEP enabled ; 0 = disabled |
75 | char mac[64]; MAC address of Accesspoint | 75 | char mac[64]; MAC address of Accesspoint |
76 | char bssid[128]; BSSID of Accesspoint | 76 | char bssid[128]; BSSID of Accesspoint |
77 | } wl_network_t; | 77 | } wl_network_t; |
78 | */ | 78 | */ |
79 | 79 | ||
80 | if ( result == 1 ) /* new network found */ | 80 | if ( result == NETFOUND ) /* new network found */ |
81 | { | 81 | { |
82 | qDebug( "Sniffer said: new network found." ); | 82 | qDebug( "Sniffer said: new network found." ); |
83 | wl_network_t n; | 83 | wl_network_t n; |
84 | get_network_found( &n, (const char*) &buffer ); | 84 | get_network_found( &n, (char*) &buffer ); |
85 | n.bssid[n.ssid_len] = "\0"; | 85 | n.bssid[n.ssid_len] = "\0"; |
86 | 86 | ||
87 | QString type; | 87 | QString type; |
88 | 88 | ||
89 | if ( n.net_type == 1 ) | 89 | if ( n.net_type == 1 ) |
90 | type == "managed"; | 90 | type == "managed"; |
91 | else | 91 | else |
92 | type == "adhoc"; | 92 | type == "adhoc"; |
93 | 93 | ||
94 | addNewItem( type, n.bssid, n.mac, n.wep, n.channel, 0 ); | 94 | addNewItem( type, n.bssid, n.mac, n.wep, n.channel, 0 ); |
95 | 95 | ||
96 | } | 96 | } |
97 | 97 | ||
98 | else | 98 | else |
99 | 99 | ||
100 | { | 100 | { |
101 | qDebug( "unknown sniffer command." ); | 101 | qDebug( "unknown sniffer command." ); |
102 | } | 102 | } |
103 | 103 | ||
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | bool Wellenreiter::hasMessage() | 107 | bool Wellenreiter::hasMessage() |
108 | { | 108 | { |
109 | 109 | ||
110 | // FIXME: do this in libwellenreiter, not here!!! | 110 | // FIXME: do this in libwellenreiter, not here!!! |
111 | 111 | ||
112 | fd_set rfds; | 112 | fd_set rfds; |
113 | FD_ZERO( &rfds ); | 113 | FD_ZERO( &rfds ); |
114 | FD_SET( daemon_fd, &rfds ); | 114 | FD_SET( daemon_fd, &rfds ); |
115 | struct timeval tv; | 115 | struct timeval tv; |
116 | tv.tv_sec = 0; | 116 | tv.tv_sec = 0; |
117 | tv.tv_usec = 0; | 117 | tv.tv_usec = 0; |
118 | int result = select( daemon_fd+1, &rfds, NULL, NULL, &tv ); | 118 | int result = select( daemon_fd+1, &rfds, NULL, NULL, &tv ); |
119 | return FD_ISSET( daemon_fd, &rfds ); | 119 | return FD_ISSET( daemon_fd, &rfds ); |
120 | } | 120 | } |
121 | 121 | ||
122 | void Wellenreiter::timerEvent( QTimerEvent* e ) | 122 | void Wellenreiter::timerEvent( QTimerEvent* e ) |
123 | { | 123 | { |
124 | qDebug( "checking for message..." ); | 124 | //qDebug( "checking for message..." ); |
125 | 125 | ||
126 | if ( hasMessage() ) | 126 | if ( hasMessage() ) |
127 | { | 127 | { |
128 | handleMessage(); | 128 | handleMessage(); |
129 | } | 129 | } |
130 | else | 130 | else |
131 | { | 131 | { |
132 | qDebug( "no message :(" ); | 132 | //qDebug( "no message :(" ); |
133 | } | 133 | } |
134 | } | 134 | } |
135 | 135 | ||
136 | void Wellenreiter::addNewItem( QString type, QString essid, QString ap, bool wep, int channel, int signal ) | 136 | void Wellenreiter::addNewItem( QString type, QString essid, QString ap, bool wep, int channel, int signal ) |
137 | { | 137 | { |
138 | // FIXME: this code belongs in customized QListView, not into this class | 138 | // FIXME: this code belongs in customized QListView, not into this class |
139 | 139 | ||
140 | // search, if we had an item with this essid once before | 140 | // search, if we had an item with this essid once before |
141 | 141 | ||
142 | QListViewItem* item = netview->firstChild(); | 142 | QListViewItem* item = netview->firstChild(); |
143 | 143 | ||
144 | while ( item && ( item->text( 0 ) != essid ) ) | 144 | while ( item && ( item->text( 0 ) != essid ) ) |
145 | { | 145 | { |
146 | qDebug( "itemtext: %s", (const char*) item->text( 0 ) ); | 146 | qDebug( "itemtext: %s", (const char*) item->text( 0 ) ); |
147 | item = item->itemBelow(); | 147 | item = item->itemBelow(); |
148 | } | 148 | } |
149 | if ( item ) | 149 | if ( item ) |
150 | { | 150 | { |
151 | qDebug( "found!" ); | 151 | qDebug( "found!" ); |
152 | new MScanListItem( item, type, essid, ap, wep, channel, signal ); | 152 | new MScanListItem( item, type, essid, ap, wep, channel, signal ); |
153 | } | 153 | } |
154 | else | 154 | else |
155 | { | 155 | { |
156 | new MScanListItem( netview, type, essid, ap, wep, channel, signal ); | 156 | new MScanListItem( netview, type, essid, ap, wep, channel, signal ); |
157 | } | 157 | } |
158 | } | 158 | } |
159 | 159 | ||
160 | void Wellenreiter::buttonClicked() | 160 | void Wellenreiter::buttonClicked() |
161 | { | 161 | { |
162 | 162 | ||
163 | // FIXME: communicate with daemon and set button text according to state | 163 | // FIXME: communicate with daemon and set button text according to state |
164 | 164 | ||
165 | button->setText( "Stop Scanning" ); | 165 | button->setText( "Stop Scanning" ); |
166 | 166 | ||
167 | // add some icons, so that we can see if this works | 167 | // add some icons, so that we can see if this works |
168 | 168 | ||
169 | addNewItem( "managed", "MyNet", "04:00:20:EF:A6:43", true, 6, 80 ); | 169 | addNewItem( "managed", "DummyNet", "04:00:20:EF:A6:43", true, 6, 80 ); |
170 | addNewItem( "adhoc", "YourNet", "40:03:A3:E7:56:22", false, 11, 30 ); | 170 | addNewItem( "adhoc", "DummyNet", "40:03:A3:E7:56:22", false, 11, 30 ); |
171 | |||
172 | QString command ("98"); | ||
173 | |||
174 | sendcomm( DAEMONADDR, DAEMONPORT, (const char*) command ); | ||
171 | 175 | ||
172 | } | 176 | } |