summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/configbase.ui322
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.cpp13
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp1
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h2
4 files changed, 179 insertions, 159 deletions
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui
index 4fc8ea1..2c335df 100644
--- a/noncore/net/wellenreiter/gui/configbase.ui
+++ b/noncore/net/wellenreiter/gui/configbase.ui
@@ -1,1317 +1,1333 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>WellenreiterConfigBase</class> 2<class>WellenreiterConfigBase</class>
3<widget> 3<widget>
4 <class>QDialog</class> 4 <class>QDialog</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>WellenreiterConfigBase</cstring> 7 <cstring>WellenreiterConfigBase</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>286</width> 14 <width>303</width>
15 <height>345</height> 15 <height>343</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Wellenreiter II COnfiguration Dialog</string> 20 <string>Wellenreiter II COnfiguration Dialog</string>
21 </property> 21 </property>
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <grid> 28 <grid>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>2</number> 31 <number>2</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>3</number> 35 <number>3</number>
36 </property> 36 </property>
37 <widget row="0" column="0" > 37 <widget row="0" column="0" >
38 <class>QTabWidget</class> 38 <class>QTabWidget</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>tab</cstring> 41 <cstring>tab</cstring>
42 </property> 42 </property>
43 <property> 43 <property>
44 <name>layoutMargin</name> 44 <name>layoutMargin</name>
45 </property> 45 </property>
46 <property> 46 <property>
47 <name>layoutSpacing</name> 47 <name>layoutSpacing</name>
48 </property> 48 </property>
49 <widget> 49 <widget>
50 <class>QWidget</class> 50 <class>QWidget</class>
51 <property stdset="1"> 51 <property stdset="1">
52 <name>name</name> 52 <name>name</name>
53 <cstring>tab</cstring> 53 <cstring>tab</cstring>
54 </property> 54 </property>
55 <attribute> 55 <attribute>
56 <name>title</name> 56 <name>title</name>
57 <string>Interface</string> 57 <string>Interface</string>
58 </attribute> 58 </attribute>
59 <vbox> 59 <vbox>
60 <property stdset="1"> 60 <property stdset="1">
61 <name>margin</name> 61 <name>margin</name>
62 <number>11</number> 62 <number>6</number>
63 </property> 63 </property>
64 <property stdset="1"> 64 <property stdset="1">
65 <name>spacing</name> 65 <name>spacing</name>
66 <number>6</number> 66 <number>6</number>
67 </property> 67 </property>
68 <widget> 68 <widget>
69 <class>QLayoutWidget</class> 69 <class>QLayoutWidget</class>
70 <property stdset="1"> 70 <property stdset="1">
71 <name>name</name> 71 <name>name</name>
72 <cstring>Layout7</cstring> 72 <cstring>Layout7</cstring>
73 </property> 73 </property>
74 <grid> 74 <grid>
75 <property stdset="1"> 75 <property stdset="1">
76 <name>margin</name> 76 <name>margin</name>
77 <number>0</number> 77 <number>0</number>
78 </property> 78 </property>
79 <property stdset="1"> 79 <property stdset="1">
80 <name>spacing</name> 80 <name>spacing</name>
81 <number>6</number> 81 <number>6</number>
82 </property> 82 </property>
83 <widget row="1" column="1" > 83 <widget row="1" column="1" >
84 <class>QComboBox</class> 84 <class>QComboBox</class>
85 <item> 85 <item>
86 <property> 86 <property>
87 <name>text</name> 87 <name>text</name>
88 <string>&lt;select&gt;</string> 88 <string>&lt;select&gt;</string>
89 </property> 89 </property>
90 </item> 90 </item>
91 <item> 91 <item>
92 <property> 92 <property>
93 <name>text</name> 93 <name>text</name>
94 <string>cisco</string> 94 <string>cisco</string>
95 </property> 95 </property>
96 </item> 96 </item>
97 <item> 97 <item>
98 <property> 98 <property>
99 <name>text</name> 99 <name>text</name>
100 <string>wlan-ng</string> 100 <string>wlan-ng</string>
101 </property> 101 </property>
102 </item> 102 </item>
103 <item> 103 <item>
104 <property> 104 <property>
105 <name>text</name> 105 <name>text</name>
106 <string>hostap</string> 106 <string>hostap</string>
107 </property> 107 </property>
108 </item> 108 </item>
109 <item> 109 <item>
110 <property> 110 <property>
111 <name>text</name> 111 <name>text</name>
112 <string>orinoco</string> 112 <string>orinoco</string>
113 </property> 113 </property>
114 </item> 114 </item>
115 <item> 115 <item>
116 <property> 116 <property>
117 <name>text</name> 117 <name>text</name>
118 <string>&lt;manual&gt;</string> 118 <string>&lt;manual&gt;</string>
119 </property> 119 </property>
120 </item> 120 </item>
121 <item> 121 <item>
122 <property> 122 <property>
123 <name>text</name> 123 <name>text</name>
124 <string>&lt;file&gt;</string> 124 <string>&lt;file&gt;</string>
125 </property> 125 </property>
126 </item> 126 </item>
127 <property stdset="1"> 127 <property stdset="1">
128 <name>name</name> 128 <name>name</name>
129 <cstring>deviceType</cstring> 129 <cstring>deviceType</cstring>
130 </property> 130 </property>
131 <property stdset="1"> 131 <property stdset="1">
132 <name>enabled</name> 132 <name>enabled</name>
133 <bool>true</bool> 133 <bool>true</bool>
134 </property> 134 </property>
135 <property stdset="1"> 135 <property stdset="1">
136 <name>sizePolicy</name> 136 <name>sizePolicy</name>
137 <sizepolicy> 137 <sizepolicy>
138 <hsizetype>7</hsizetype> 138 <hsizetype>7</hsizetype>
139 <vsizetype>0</vsizetype> 139 <vsizetype>0</vsizetype>
140 </sizepolicy> 140 </sizepolicy>
141 </property> 141 </property>
142 <property> 142 <property>
143 <name>whatsThis</name> 143 <name>whatsThis</name>
144 <string>Choose the type of driver used for sniffing.</string> 144 <string>Choose the type of driver used for sniffing.</string>
145 </property> 145 </property>
146 </widget> 146 </widget>
147 <widget row="1" column="0" > 147 <widget row="1" column="0" >
148 <class>QLabel</class> 148 <class>QLabel</class>
149 <property stdset="1"> 149 <property stdset="1">
150 <name>name</name> 150 <name>name</name>
151 <cstring>TextLabel2_3</cstring> 151 <cstring>TextLabel2_3</cstring>
152 </property> 152 </property>
153 <property stdset="1"> 153 <property stdset="1">
154 <name>enabled</name> 154 <name>enabled</name>
155 <bool>true</bool> 155 <bool>true</bool>
156 </property> 156 </property>
157 <property stdset="1"> 157 <property stdset="1">
158 <name>text</name> 158 <name>text</name>
159 <string>Driver:</string> 159 <string>Driver:</string>
160 </property> 160 </property>
161 </widget> 161 </widget>
162 <widget row="0" column="1" > 162 <widget row="0" column="1" >
163 <class>QComboBox</class> 163 <class>QComboBox</class>
164 <property stdset="1"> 164 <property stdset="1">
165 <name>name</name> 165 <name>name</name>
166 <cstring>interfaceName</cstring> 166 <cstring>interfaceName</cstring>
167 </property> 167 </property>
168 <property stdset="1"> 168 <property stdset="1">
169 <name>enabled</name> 169 <name>enabled</name>
170 <bool>true</bool> 170 <bool>true</bool>
171 </property> 171 </property>
172 <property stdset="1"> 172 <property stdset="1">
173 <name>sizePolicy</name> 173 <name>sizePolicy</name>
174 <sizepolicy> 174 <sizepolicy>
175 <hsizetype>7</hsizetype> 175 <hsizetype>7</hsizetype>
176 <vsizetype>0</vsizetype> 176 <vsizetype>0</vsizetype>
177 </sizepolicy> 177 </sizepolicy>
178 </property> 178 </property>
179 <property stdset="1"> 179 <property stdset="1">
180 <name>editable</name> 180 <name>editable</name>
181 <bool>false</bool> 181 <bool>false</bool>
182 </property> 182 </property>
183 <property> 183 <property>
184 <name>whatsThis</name> 184 <name>whatsThis</name>
185 <string>Choose the interface used for sniffing.</string> 185 <string>Choose the interface used for sniffing.</string>
186 </property> 186 </property>
187 </widget> 187 </widget>
188 <widget row="0" column="0" > 188 <widget row="0" column="0" >
189 <class>QLabel</class> 189 <class>QLabel</class>
190 <property stdset="1"> 190 <property stdset="1">
191 <name>name</name> 191 <name>name</name>
192 <cstring>TextLabel1_2</cstring> 192 <cstring>TextLabel1_2</cstring>
193 </property> 193 </property>
194 <property stdset="1"> 194 <property stdset="1">
195 <name>enabled</name> 195 <name>enabled</name>
196 <bool>true</bool> 196 <bool>true</bool>
197 </property> 197 </property>
198 <property stdset="1"> 198 <property stdset="1">
199 <name>text</name> 199 <name>text</name>
200 <string>Name:</string> 200 <string>Name:</string>
201 </property> 201 </property>
202 </widget> 202 </widget>
203 </grid> 203 </grid>
204 </widget> 204 </widget>
205 <widget> 205 <widget>
206 <class>QLayoutWidget</class> 206 <class>QLayoutWidget</class>
207 <property stdset="1"> 207 <property stdset="1">
208 <name>name</name> 208 <name>name</name>
209 <cstring>Layout5</cstring> 209 <cstring>Layout5</cstring>
210 </property> 210 </property>
211 <hbox> 211 <hbox>
212 <property stdset="1"> 212 <property stdset="1">
213 <name>margin</name> 213 <name>margin</name>
214 <number>0</number> 214 <number>0</number>
215 </property> 215 </property>
216 <property stdset="1"> 216 <property stdset="1">
217 <name>spacing</name> 217 <name>spacing</name>
218 <number>6</number> 218 <number>6</number>
219 </property> 219 </property>
220 <widget> 220 <widget>
221 <class>QPushButton</class> 221 <class>QPushButton</class>
222 <property stdset="1"> 222 <property stdset="1">
223 <name>name</name> 223 <name>name</name>
224 <cstring>autodetect</cstring> 224 <cstring>autodetect</cstring>
225 </property> 225 </property>
226 <property stdset="1"> 226 <property stdset="1">
227 <name>text</name> 227 <name>text</name>
228 <string>Perform Autodetection</string> 228 <string>Perform Autodetection</string>
229 </property> 229 </property>
230 </widget> 230 </widget>
231 </hbox> 231 </hbox>
232 </widget> 232 </widget>
233 <widget> 233 <widget>
234 <class>QCheckBox</class> 234 <class>QCheckBox</class>
235 <property stdset="1"> 235 <property stdset="1">
236 <name>name</name> 236 <name>name</name>
237 <cstring>prismHeader</cstring> 237 <cstring>prismHeader</cstring>
238 </property> 238 </property>
239 <property stdset="1"> 239 <property stdset="1">
240 <name>text</name> 240 <name>text</name>
241 <string>Use additional PRISM header</string> 241 <string>Use additional PRISM header</string>
242 </property> 242 </property>
243 </widget> 243 </widget>
244 <spacer> 244 <spacer>
245 <property> 245 <property>
246 <name>name</name> 246 <name>name</name>
247 <cstring>Spacer4</cstring> 247 <cstring>Spacer4</cstring>
248 </property> 248 </property>
249 <property stdset="1"> 249 <property stdset="1">
250 <name>orientation</name> 250 <name>orientation</name>
251 <enum>Vertical</enum> 251 <enum>Vertical</enum>
252 </property> 252 </property>
253 <property stdset="1"> 253 <property stdset="1">
254 <name>sizeType</name> 254 <name>sizeType</name>
255 <enum>Expanding</enum> 255 <enum>Expanding</enum>
256 </property> 256 </property>
257 <property> 257 <property>
258 <name>sizeHint</name> 258 <name>sizeHint</name>
259 <size> 259 <size>
260 <width>20</width> 260 <width>20</width>
261 <height>20</height> 261 <height>20</height>
262 </size> 262 </size>
263 </property> 263 </property>
264 </spacer> 264 </spacer>
265 <widget> 265 <widget>
266 <class>QLayoutWidget</class> 266 <class>QLayoutWidget</class>
267 <property stdset="1"> 267 <property stdset="1">
268 <name>name</name> 268 <name>name</name>
269 <cstring>Layout6</cstring> 269 <cstring>Layout6</cstring>
270 </property> 270 </property>
271 <hbox> 271 <hbox>
272 <property stdset="1"> 272 <property stdset="1">
273 <name>margin</name> 273 <name>margin</name>
274 <number>0</number> 274 <number>0</number>
275 </property> 275 </property>
276 <property stdset="1"> 276 <property stdset="1">
277 <name>spacing</name> 277 <name>spacing</name>
278 <number>6</number> 278 <number>6</number>
279 </property> 279 </property>
280 <widget> 280 <widget>
281 <class>QCheckBox</class> 281 <class>QCheckBox</class>
282 <property stdset="1"> 282 <property stdset="1">
283 <name>name</name> 283 <name>name</name>
284 <cstring>hopChannels</cstring> 284 <cstring>hopChannels</cstring>
285 </property> 285 </property>
286 <property stdset="1"> 286 <property stdset="1">
287 <name>text</name> 287 <name>text</name>
288 <string>Hop Channels</string> 288 <string>Hop Channels</string>
289 </property> 289 </property>
290 <property stdset="1"> 290 <property stdset="1">
291 <name>checked</name> 291 <name>checked</name>
292 <bool>true</bool> 292 <bool>true</bool>
293 </property> 293 </property>
294 </widget> 294 </widget>
295 <widget> 295 <widget>
296 <class>QLabel</class> 296 <class>QLabel</class>
297 <property stdset="1"> 297 <property stdset="1">
298 <name>name</name> 298 <name>name</name>
299 <cstring>TextLabel1</cstring> 299 <cstring>TextLabel1</cstring>
300 </property> 300 </property>
301 <property stdset="1"> 301 <property stdset="1">
302 <name>text</name> 302 <name>text</name>
303 <string>every</string> 303 <string>every</string>
304 </property> 304 </property>
305 </widget> 305 </widget>
306 <widget> 306 <widget>
307 <class>QSpinBox</class> 307 <class>QSpinBox</class>
308 <property stdset="1"> 308 <property stdset="1">
309 <name>name</name> 309 <name>name</name>
310 <cstring>hopInterval</cstring> 310 <cstring>hopInterval</cstring>
311 </property> 311 </property>
312 <property stdset="1"> 312 <property stdset="1">
313 <name>enabled</name> 313 <name>enabled</name>
314 <bool>true</bool> 314 <bool>true</bool>
315 </property> 315 </property>
316 <property stdset="1"> 316 <property stdset="1">
317 <name>suffix</name> 317 <name>suffix</name>
318 <string> ms</string> 318 <string> ms</string>
319 </property> 319 </property>
320 <property stdset="1"> 320 <property stdset="1">
321 <name>maxValue</name> 321 <name>maxValue</name>
322 <number>2000</number> 322 <number>2000</number>
323 </property> 323 </property>
324 <property stdset="1"> 324 <property stdset="1">
325 <name>minValue</name> 325 <name>minValue</name>
326 <number>100</number> 326 <number>100</number>
327 </property> 327 </property>
328 <property stdset="1"> 328 <property stdset="1">
329 <name>lineStep</name> 329 <name>lineStep</name>
330 <number>100</number> 330 <number>100</number>
331 </property> 331 </property>
332 <property stdset="1"> 332 <property stdset="1">
333 <name>value</name> 333 <name>value</name>
334 <number>1000</number> 334 <number>1000</number>
335 </property> 335 </property>
336 <property> 336 <property>
337 <name>whatsThis</name> 337 <name>whatsThis</name>
338 <string>Choose the channel hop interval.</string> 338 <string>Choose the channel hop interval.</string>
339 </property> 339 </property>
340 </widget> 340 </widget>
341 </hbox> 341 </hbox>
342 </widget> 342 </widget>
343 <widget> 343 <widget>
344 <class>QCheckBox</class> 344 <class>QCheckBox</class>
345 <property stdset="1"> 345 <property stdset="1">
346 <name>name</name> 346 <name>name</name>
347 <cstring>adaptiveHopping</cstring> 347 <cstring>adaptiveHopping</cstring>
348 </property> 348 </property>
349 <property stdset="1"> 349 <property stdset="1">
350 <name>enabled</name> 350 <name>enabled</name>
351 <bool>false</bool> 351 <bool>false</bool>
352 </property> 352 </property>
353 <property stdset="1"> 353 <property stdset="1">
354 <name>text</name> 354 <name>text</name>
355 <string>Use Adaptive(TM) Hop Scheme</string> 355 <string>Use Adaptive(TM) Hop Scheme</string>
356 </property> 356 </property>
357 </widget> 357 </widget>
358 <widget> 358 <widget>
359 <class>QGroupBox</class> 359 <class>QGroupBox</class>
360 <property stdset="1"> 360 <property stdset="1">
361 <name>name</name> 361 <name>name</name>
362 <cstring>GroupBox1</cstring> 362 <cstring>GroupBox1</cstring>
363 </property> 363 </property>
364 <property stdset="1"> 364 <property stdset="1">
365 <name>enabled</name> 365 <name>enabled</name>
366 <bool>false</bool> 366 <bool>false</bool>
367 </property> 367 </property>
368 <property stdset="1"> 368 <property stdset="1">
369 <name>title</name> 369 <name>title</name>
370 <string>Scan on channel</string> 370 <string>Scan on channel</string>
371 </property> 371 </property>
372 <property> 372 <property>
373 <name>layoutMargin</name> 373 <name>layoutMargin</name>
374 </property> 374 </property>
375 <property> 375 <property>
376 <name>layoutSpacing</name> 376 <name>layoutSpacing</name>
377 </property> 377 </property>
378 <grid> 378 <grid>
379 <property stdset="1"> 379 <property stdset="1">
380 <name>margin</name> 380 <name>margin</name>
381 <number>4</number> 381 <number>4</number>
382 </property> 382 </property>
383 <property stdset="1"> 383 <property stdset="1">
384 <name>spacing</name> 384 <name>spacing</name>
385 <number>2</number> 385 <number>2</number>
386 </property> 386 </property>
387 <widget row="1" column="1" > 387 <widget row="1" column="1" >
388 <class>QCheckBox</class> 388 <class>QCheckBox</class>
389 <property stdset="1"> 389 <property stdset="1">
390 <name>name</name> 390 <name>name</name>
391 <cstring>channel6</cstring> 391 <cstring>channel6</cstring>
392 </property> 392 </property>
393 <property stdset="1"> 393 <property stdset="1">
394 <name>text</name> 394 <name>text</name>
395 <string>6</string> 395 <string>6</string>
396 </property> 396 </property>
397 </widget> 397 </widget>
398 <widget row="1" column="3" > 398 <widget row="1" column="3" >
399 <class>QCheckBox</class> 399 <class>QCheckBox</class>
400 <property stdset="1"> 400 <property stdset="1">
401 <name>name</name> 401 <name>name</name>
402 <cstring>channel8</cstring> 402 <cstring>channel8</cstring>
403 </property> 403 </property>
404 <property stdset="1"> 404 <property stdset="1">
405 <name>text</name> 405 <name>text</name>
406 <string>8</string> 406 <string>8</string>
407 </property> 407 </property>
408 </widget> 408 </widget>
409 <widget row="0" column="2" > 409 <widget row="0" column="2" >
410 <class>QCheckBox</class> 410 <class>QCheckBox</class>
411 <property stdset="1"> 411 <property stdset="1">
412 <name>name</name> 412 <name>name</name>
413 <cstring>channel2</cstring> 413 <cstring>channel2</cstring>
414 </property> 414 </property>
415 <property stdset="1"> 415 <property stdset="1">
416 <name>text</name> 416 <name>text</name>
417 <string>2</string> 417 <string>2</string>
418 </property> 418 </property>
419 </widget> 419 </widget>
420 <widget row="1" column="4" > 420 <widget row="1" column="4" >
421 <class>QCheckBox</class> 421 <class>QCheckBox</class>
422 <property stdset="1"> 422 <property stdset="1">
423 <name>name</name> 423 <name>name</name>
424 <cstring>channel9</cstring> 424 <cstring>channel9</cstring>
425 </property> 425 </property>
426 <property stdset="1"> 426 <property stdset="1">
427 <name>text</name> 427 <name>text</name>
428 <string>9</string> 428 <string>9</string>
429 </property> 429 </property>
430 </widget> 430 </widget>
431 <widget row="0" column="1" > 431 <widget row="0" column="1" >
432 <class>QCheckBox</class> 432 <class>QCheckBox</class>
433 <property stdset="1"> 433 <property stdset="1">
434 <name>name</name> 434 <name>name</name>
435 <cstring>channel1</cstring> 435 <cstring>channel1</cstring>
436 </property> 436 </property>
437 <property stdset="1"> 437 <property stdset="1">
438 <name>text</name> 438 <name>text</name>
439 <string>1</string> 439 <string>1</string>
440 </property> 440 </property>
441 </widget> 441 </widget>
442 <widget row="0" column="0" > 442 <widget row="0" column="0" >
443 <class>QCheckBox</class> 443 <class>QCheckBox</class>
444 <property stdset="1"> 444 <property stdset="1">
445 <name>name</name> 445 <name>name</name>
446 <cstring>channelAll</cstring> 446 <cstring>channelAll</cstring>
447 </property> 447 </property>
448 <property stdset="1"> 448 <property stdset="1">
449 <name>text</name> 449 <name>text</name>
450 <string>All</string> 450 <string>All</string>
451 </property> 451 </property>
452 </widget> 452 </widget>
453 <widget row="2" column="1" > 453 <widget row="2" column="1" >
454 <class>QCheckBox</class> 454 <class>QCheckBox</class>
455 <property stdset="1"> 455 <property stdset="1">
456 <name>name</name> 456 <name>name</name>
457 <cstring>channel11</cstring> 457 <cstring>channel11</cstring>
458 </property> 458 </property>
459 <property stdset="1"> 459 <property stdset="1">
460 <name>text</name> 460 <name>text</name>
461 <string>11</string> 461 <string>11</string>
462 </property> 462 </property>
463 </widget> 463 </widget>
464 <widget row="2" column="0" > 464 <widget row="2" column="0" >
465 <class>QCheckBox</class> 465 <class>QCheckBox</class>
466 <property stdset="1"> 466 <property stdset="1">
467 <name>name</name> 467 <name>name</name>
468 <cstring>channel10</cstring> 468 <cstring>channel10</cstring>
469 </property> 469 </property>
470 <property stdset="1"> 470 <property stdset="1">
471 <name>text</name> 471 <name>text</name>
472 <string>10</string> 472 <string>10</string>
473 </property> 473 </property>
474 </widget> 474 </widget>
475 <widget row="1" column="2" > 475 <widget row="1" column="2" >
476 <class>QCheckBox</class> 476 <class>QCheckBox</class>
477 <property stdset="1"> 477 <property stdset="1">
478 <name>name</name> 478 <name>name</name>
479 <cstring>channel7</cstring> 479 <cstring>channel7</cstring>
480 </property> 480 </property>
481 <property stdset="1"> 481 <property stdset="1">
482 <name>text</name> 482 <name>text</name>
483 <string>7</string> 483 <string>7</string>
484 </property> 484 </property>
485 </widget> 485 </widget>
486 <widget row="0" column="3" > 486 <widget row="0" column="3" >
487 <class>QCheckBox</class> 487 <class>QCheckBox</class>
488 <property stdset="1"> 488 <property stdset="1">
489 <name>name</name> 489 <name>name</name>
490 <cstring>channel3</cstring> 490 <cstring>channel3</cstring>
491 </property> 491 </property>
492 <property stdset="1"> 492 <property stdset="1">
493 <name>text</name> 493 <name>text</name>
494 <string>3</string> 494 <string>3</string>
495 </property> 495 </property>
496 </widget> 496 </widget>
497 <widget row="1" column="0" > 497 <widget row="1" column="0" >
498 <class>QCheckBox</class> 498 <class>QCheckBox</class>
499 <property stdset="1"> 499 <property stdset="1">
500 <name>name</name> 500 <name>name</name>
501 <cstring>channel5</cstring> 501 <cstring>channel5</cstring>
502 </property> 502 </property>
503 <property stdset="1"> 503 <property stdset="1">
504 <name>text</name> 504 <name>text</name>
505 <string>5</string> 505 <string>5</string>
506 </property> 506 </property>
507 </widget> 507 </widget>
508 <widget row="0" column="4" > 508 <widget row="0" column="4" >
509 <class>QCheckBox</class> 509 <class>QCheckBox</class>
510 <property stdset="1"> 510 <property stdset="1">
511 <name>name</name> 511 <name>name</name>
512 <cstring>channel4</cstring> 512 <cstring>channel4</cstring>
513 </property> 513 </property>
514 <property stdset="1"> 514 <property stdset="1">
515 <name>text</name> 515 <name>text</name>
516 <string>4</string> 516 <string>4</string>
517 </property> 517 </property>
518 </widget> 518 </widget>
519 <widget row="2" column="2" > 519 <widget row="2" column="2" >
520 <class>QCheckBox</class> 520 <class>QCheckBox</class>
521 <property stdset="1"> 521 <property stdset="1">
522 <name>name</name> 522 <name>name</name>
523 <cstring>channel12</cstring> 523 <cstring>channel12</cstring>
524 </property> 524 </property>
525 <property stdset="1"> 525 <property stdset="1">
526 <name>text</name> 526 <name>text</name>
527 <string>12</string> 527 <string>12</string>
528 </property> 528 </property>
529 </widget> 529 </widget>
530 <widget row="2" column="3" > 530 <widget row="2" column="3" >
531 <class>QCheckBox</class> 531 <class>QCheckBox</class>
532 <property stdset="1"> 532 <property stdset="1">
533 <name>name</name> 533 <name>name</name>
534 <cstring>channel13</cstring> 534 <cstring>channel13</cstring>
535 </property> 535 </property>
536 <property stdset="1"> 536 <property stdset="1">
537 <name>text</name> 537 <name>text</name>
538 <string>13</string> 538 <string>13</string>
539 </property> 539 </property>
540 </widget> 540 </widget>
541 <widget row="2" column="4" > 541 <widget row="2" column="4" >
542 <class>QCheckBox</class> 542 <class>QCheckBox</class>
543 <property stdset="1"> 543 <property stdset="1">
544 <name>name</name> 544 <name>name</name>
545 <cstring>channel14</cstring> 545 <cstring>channel14</cstring>
546 </property> 546 </property>
547 <property stdset="1"> 547 <property stdset="1">
548 <name>text</name> 548 <name>text</name>
549 <string>14</string> 549 <string>14</string>
550 </property> 550 </property>
551 </widget> 551 </widget>
552 </grid> 552 </grid>
553 </widget> 553 </widget>
554 </vbox> 554 </vbox>
555 </widget> 555 </widget>
556 <widget> 556 <widget>
557 <class>QWidget</class> 557 <class>QWidget</class>
558 <property stdset="1"> 558 <property stdset="1">
559 <name>name</name> 559 <name>name</name>
560 <cstring>tab</cstring> 560 <cstring>tab</cstring>
561 </property> 561 </property>
562 <attribute> 562 <attribute>
563 <name>title</name> 563 <name>title</name>
564 <string>Capture</string> 564 <string>Capture</string>
565 </attribute> 565 </attribute>
566 <grid> 566 <grid>
567 <property stdset="1"> 567 <property stdset="1">
568 <name>margin</name> 568 <name>margin</name>
569 <number>5</number> 569 <number>5</number>
570 </property> 570 </property>
571 <property stdset="1"> 571 <property stdset="1">
572 <name>spacing</name> 572 <name>spacing</name>
573 <number>3</number> 573 <number>3</number>
574 </property> 574 </property>
575 <widget row="2" column="0" rowspan="1" colspan="3" > 575 <widget row="2" column="0" rowspan="1" colspan="3" >
576 <class>ProtocolListView</class> 576 <class>ProtocolListView</class>
577 <property stdset="1"> 577 <property stdset="1">
578 <name>name</name> 578 <name>name</name>
579 <cstring>capturePackets</cstring> 579 <cstring>capturePackets</cstring>
580 </property> 580 </property>
581 <property stdset="1"> 581 <property stdset="1">
582 <name>enabled</name> 582 <name>enabled</name>
583 <bool>false</bool> 583 <bool>false</bool>
584 </property> 584 </property>
585 <property stdset="1"> 585 <property stdset="1">
586 <name>sizePolicy</name> 586 <name>sizePolicy</name>
587 <sizepolicy> 587 <sizepolicy>
588 <hsizetype>7</hsizetype> 588 <hsizetype>7</hsizetype>
589 <vsizetype>7</vsizetype> 589 <vsizetype>7</vsizetype>
590 </sizepolicy> 590 </sizepolicy>
591 </property> 591 </property>
592 </widget> 592 </widget>
593 <widget row="1" column="0" rowspan="1" colspan="3" > 593 <widget row="1" column="0" rowspan="1" colspan="3" >
594 <class>QLineEdit</class> 594 <class>QLineEdit</class>
595 <property stdset="1"> 595 <property stdset="1">
596 <name>name</name> 596 <name>name</name>
597 <cstring>captureFileName</cstring> 597 <cstring>captureFileName</cstring>
598 </property> 598 </property>
599 <property stdset="1"> 599 <property stdset="1">
600 <name>enabled</name> 600 <name>enabled</name>
601 <bool>false</bool> 601 <bool>false</bool>
602 </property> 602 </property>
603 <property stdset="1"> 603 <property stdset="1">
604 <name>text</name> 604 <name>text</name>
605 <string>/tmp/capture</string> 605 <string>/tmp/capture</string>
606 </property> 606 </property>
607 </widget> 607 </widget>
608 <widget row="0" column="2" > 608 <widget row="0" column="2" >
609 <class>QToolButton</class> 609 <class>QToolButton</class>
610 <property stdset="1"> 610 <property stdset="1">
611 <name>name</name> 611 <name>name</name>
612 <cstring>getCaptureFileName</cstring> 612 <cstring>getCaptureFileName</cstring>
613 </property> 613 </property>
614 <property stdset="1"> 614 <property stdset="1">
615 <name>enabled</name> 615 <name>enabled</name>
616 <bool>false</bool> 616 <bool>false</bool>
617 </property> 617 </property>
618 <property stdset="1"> 618 <property stdset="1">
619 <name>text</name> 619 <name>text</name>
620 <string>Browse</string> 620 <string>Browse</string>
621 </property> 621 </property>
622 </widget> 622 </widget>
623 <spacer row="0" column="1" > 623 <spacer row="0" column="1" >
624 <property> 624 <property>
625 <name>name</name> 625 <name>name</name>
626 <cstring>Spacer2</cstring> 626 <cstring>Spacer2</cstring>
627 </property> 627 </property>
628 <property stdset="1"> 628 <property stdset="1">
629 <name>orientation</name> 629 <name>orientation</name>
630 <enum>Horizontal</enum> 630 <enum>Horizontal</enum>
631 </property> 631 </property>
632 <property stdset="1"> 632 <property stdset="1">
633 <name>sizeType</name> 633 <name>sizeType</name>
634 <enum>Expanding</enum> 634 <enum>Expanding</enum>
635 </property> 635 </property>
636 <property> 636 <property>
637 <name>sizeHint</name> 637 <name>sizeHint</name>
638 <size> 638 <size>
639 <width>20</width> 639 <width>20</width>
640 <height>20</height> 640 <height>20</height>
641 </size> 641 </size>
642 </property> 642 </property>
643 </spacer> 643 </spacer>
644 <widget row="0" column="0" > 644 <widget row="0" column="0" >
645 <class>QCheckBox</class> 645 <class>QCheckBox</class>
646 <property stdset="1"> 646 <property stdset="1">
647 <name>name</name> 647 <name>name</name>
648 <cstring>writeCaptureFile</cstring> 648 <cstring>writeCaptureFile</cstring>
649 </property> 649 </property>
650 <property stdset="1"> 650 <property stdset="1">
651 <name>enabled</name> 651 <name>enabled</name>
652 <bool>true</bool> 652 <bool>true</bool>
653 </property> 653 </property>
654 <property stdset="1"> 654 <property stdset="1">
655 <name>text</name> 655 <name>text</name>
656 <string>Write Capture Files To</string> 656 <string>Write Capture Files To</string>
657 </property> 657 </property>
658 </widget> 658 </widget>
659 </grid> 659 </grid>
660 </widget> 660 </widget>
661 <widget> 661 <widget>
662 <class>QWidget</class> 662 <class>QWidget</class>
663 <property stdset="1"> 663 <property stdset="1">
664 <name>name</name> 664 <name>name</name>
665 <cstring>tab</cstring> 665 <cstring>tab</cstring>
666 </property> 666 </property>
667 <attribute> 667 <attribute>
668 <name>title</name> 668 <name>title</name>
669 <string>Parse</string> 669 <string>Parse</string>
670 </attribute> 670 </attribute>
671 <grid> 671 <grid>
672 <property stdset="1"> 672 <property stdset="1">
673 <name>margin</name> 673 <name>margin</name>
674 <number>5</number> 674 <number>5</number>
675 </property> 675 </property>
676 <property stdset="1"> 676 <property stdset="1">
677 <name>spacing</name> 677 <name>spacing</name>
678 <number>3</number> 678 <number>3</number>
679 </property> 679 </property>
680 <widget row="0" column="0" > 680 <widget row="0" column="0" >
681 <class>ProtocolListView</class> 681 <class>ProtocolListView</class>
682 <property stdset="1"> 682 <property stdset="1">
683 <name>name</name> 683 <name>name</name>
684 <cstring>parsePackets</cstring> 684 <cstring>parsePackets</cstring>
685 </property> 685 </property>
686 <property stdset="1"> 686 <property stdset="1">
687 <name>sizePolicy</name> 687 <name>sizePolicy</name>
688 <sizepolicy> 688 <sizepolicy>
689 <hsizetype>7</hsizetype> 689 <hsizetype>7</hsizetype>
690 <vsizetype>7</vsizetype> 690 <vsizetype>7</vsizetype>
691 </sizepolicy> 691 </sizepolicy>
692 </property> 692 </property>
693 </widget> 693 </widget>
694 </grid> 694 </grid>
695 </widget> 695 </widget>
696 <widget> 696 <widget>
697 <class>QWidget</class> 697 <class>QWidget</class>
698 <property stdset="1"> 698 <property stdset="1">
699 <name>name</name> 699 <name>name</name>
700 <cstring>tab</cstring> 700 <cstring>tab</cstring>
701 </property> 701 </property>
702 <attribute> 702 <attribute>
703 <name>title</name> 703 <name>title</name>
704 <string>UI</string> 704 <string>UI</string>
705 </attribute> 705 </attribute>
706 <vbox> 706 <vbox>
707 <property stdset="1"> 707 <property stdset="1">
708 <name>margin</name> 708 <name>margin</name>
709 <number>11</number> 709 <number>6</number>
710 </property> 710 </property>
711 <property stdset="1"> 711 <property stdset="1">
712 <name>spacing</name> 712 <name>spacing</name>
713 <number>6</number> 713 <number>6</number>
714 </property> 714 </property>
715 <widget> 715 <widget>
716 <class>QCheckBox</class> 716 <class>QCheckBox</class>
717 <property stdset="1"> 717 <property stdset="1">
718 <name>name</name> 718 <name>name</name>
719 <cstring>lookupVendor</cstring> 719 <cstring>lookupVendor</cstring>
720 </property> 720 </property>
721 <property stdset="1"> 721 <property stdset="1">
722 <name>text</name> 722 <name>text</name>
723 <string>Lookup MAC vendor names</string> 723 <string>Lookup MAC vendor names</string>
724 </property> 724 </property>
725 </widget> 725 </widget>
726 <widget> 726 <widget>
727 <class>QCheckBox</class> 727 <class>QCheckBox</class>
728 <property stdset="1"> 728 <property stdset="1">
729 <name>name</name> 729 <name>name</name>
730 <cstring>openTree</cstring> 730 <cstring>openTree</cstring>
731 </property> 731 </property>
732 <property stdset="1"> 732 <property stdset="1">
733 <name>text</name> 733 <name>text</name>
734 <string>Open Tree On New Station</string> 734 <string>Open Tree On New Station</string>
735 </property> 735 </property>
736 </widget> 736 </widget>
737 <widget> 737 <widget>
738 <class>QCheckBox</class> 738 <class>QCheckBox</class>
739 <property stdset="1"> 739 <property stdset="1">
740 <name>name</name> 740 <name>name</name>
741 <cstring>disablePM</cstring> 741 <cstring>disablePM</cstring>
742 </property> 742 </property>
743 <property stdset="1"> 743 <property stdset="1">
744 <name>text</name> 744 <name>text</name>
745 <string>Disable Power Management</string> 745 <string>Disable Power Management</string>
746 </property> 746 </property>
747 </widget> 747 </widget>
748 <spacer> 748 <spacer>
749 <property> 749 <property>
750 <name>name</name> 750 <name>name</name>
751 <cstring>Spacer3</cstring> 751 <cstring>Spacer3</cstring>
752 </property> 752 </property>
753 <property stdset="1"> 753 <property stdset="1">
754 <name>orientation</name> 754 <name>orientation</name>
755 <enum>Vertical</enum> 755 <enum>Vertical</enum>
756 </property> 756 </property>
757 <property stdset="1"> 757 <property stdset="1">
758 <name>sizeType</name> 758 <name>sizeType</name>
759 <enum>Expanding</enum> 759 <enum>Expanding</enum>
760 </property> 760 </property>
761 <property> 761 <property>
762 <name>sizeHint</name> 762 <name>sizeHint</name>
763 <size> 763 <size>
764 <width>20</width> 764 <width>20</width>
765 <height>20</height> 765 <height>20</height>
766 </size> 766 </size>
767 </property> 767 </property>
768 </spacer> 768 </spacer>
769 <widget> 769 <widget>
770 <class>QGroupBox</class> 770 <class>QGroupBox</class>
771 <property stdset="1"> 771 <property stdset="1">
772 <name>name</name> 772 <name>name</name>
773 <cstring>GroupBox4_2</cstring> 773 <cstring>GroupBox4_2</cstring>
774 </property> 774 </property>
775 <property stdset="1"> 775 <property stdset="1">
776 <name>enabled</name>
777 <bool>false</bool>
778 </property>
779 <property stdset="1">
776 <name>title</name> 780 <name>title</name>
777 <string>Action On Detecting</string> 781 <string>Action On Detecting</string>
778 </property> 782 </property>
779 <grid> 783 <grid>
780 <property stdset="1"> 784 <property stdset="1">
781 <name>margin</name> 785 <name>margin</name>
782 <number>11</number> 786 <number>11</number>
783 </property> 787 </property>
784 <property stdset="1"> 788 <property stdset="1">
785 <name>spacing</name> 789 <name>spacing</name>
786 <number>6</number> 790 <number>6</number>
787 </property> 791 </property>
788 <widget row="1" column="0" > 792 <widget row="1" column="0" >
789 <class>QLabel</class> 793 <class>QLabel</class>
790 <property stdset="1"> 794 <property stdset="1">
791 <name>name</name> 795 <name>name</name>
792 <cstring>TextLabel2</cstring> 796 <cstring>TextLabel2</cstring>
793 </property> 797 </property>
794 <property stdset="1"> 798 <property stdset="1">
795 <name>text</name> 799 <name>text</name>
796 <string>New Wireless Station</string> 800 <string>New Wireless Station</string>
797 </property> 801 </property>
798 </widget> 802 </widget>
799 <widget row="0" column="0" > 803 <widget row="0" column="0" >
800 <class>QLabel</class> 804 <class>QLabel</class>
801 <property stdset="1"> 805 <property stdset="1">
802 <name>name</name> 806 <name>name</name>
803 <cstring>TextLabel1_3</cstring> 807 <cstring>TextLabel1_3</cstring>
804 </property> 808 </property>
805 <property stdset="1"> 809 <property stdset="1">
806 <name>text</name> 810 <name>text</name>
807 <string>New Network</string> 811 <string>New Network</string>
808 </property> 812 </property>
809 </widget> 813 </widget>
810 <widget row="0" column="1" > 814 <widget row="0" column="1" >
811 <class>QComboBox</class> 815 <class>QComboBox</class>
812 <property stdset="1"> 816 <property stdset="1">
813 <name>name</name> 817 <name>name</name>
814 <cstring>newNetwork</cstring> 818 <cstring>newNetwork</cstring>
815 </property> 819 </property>
816 </widget> 820 </widget>
817 <widget row="1" column="1" > 821 <widget row="1" column="1" >
818 <class>QComboBox</class> 822 <class>QComboBox</class>
819 <property stdset="1"> 823 <property stdset="1">
820 <name>name</name> 824 <name>name</name>
821 <cstring>newWirelessStation</cstring> 825 <cstring>newWirelessStation</cstring>
822 </property> 826 </property>
823 </widget> 827 </widget>
824 <widget row="2" column="1" > 828 <widget row="2" column="1" >
825 <class>QComboBox</class> 829 <class>QComboBox</class>
826 <property stdset="1"> 830 <property stdset="1">
827 <name>name</name> 831 <name>name</name>
828 <cstring>newStation</cstring> 832 <cstring>newStation</cstring>
829 </property> 833 </property>
830 </widget> 834 </widget>
831 <widget row="2" column="0" > 835 <widget row="2" column="0" >
832 <class>QLabel</class> 836 <class>QLabel</class>
833 <property stdset="1"> 837 <property stdset="1">
834 <name>name</name> 838 <name>name</name>
835 <cstring>TextLabel3</cstring> 839 <cstring>TextLabel3</cstring>
836 </property> 840 </property>
837 <property stdset="1"> 841 <property stdset="1">
838 <name>text</name> 842 <name>text</name>
839 <string>New Station</string> 843 <string>New Station</string>
840 </property> 844 </property>
841 </widget> 845 </widget>
842 </grid> 846 </grid>
843 </widget> 847 </widget>
844 </vbox> 848 </vbox>
845 </widget> 849 </widget>
846 <widget> 850 <widget>
847 <class>QWidget</class> 851 <class>QWidget</class>
848 <property stdset="1"> 852 <property stdset="1">
849 <name>name</name> 853 <name>name</name>
850 <cstring>tab</cstring> 854 <cstring>tab</cstring>
851 </property> 855 </property>
852 <attribute> 856 <attribute>
853 <name>title</name> 857 <name>title</name>
854 <string>Intrusion</string> 858 <string>Intrusion</string>
855 </attribute> 859 </attribute>
856 <grid> 860 <grid>
857 <property stdset="1"> 861 <property stdset="1">
858 <name>margin</name> 862 <name>margin</name>
859 <number>11</number> 863 <number>6</number>
860 </property> 864 </property>
861 <property stdset="1"> 865 <property stdset="1">
862 <name>spacing</name> 866 <name>spacing</name>
863 <number>6</number> 867 <number>6</number>
864 </property> 868 </property>
865 <widget row="1" column="0" > 869 <widget row="1" column="0" >
866 <class>QGroupBox</class> 870 <class>QGroupBox</class>
867 <property stdset="1"> 871 <property stdset="1">
868 <name>name</name> 872 <name>name</name>
869 <cstring>GroupBox3</cstring> 873 <cstring>GroupBox3</cstring>
870 </property> 874 </property>
871 <property stdset="1"> 875 <property stdset="1">
872 <name>enabled</name> 876 <name>enabled</name>
873 <bool>false</bool> 877 <bool>false</bool>
874 </property> 878 </property>
875 <property stdset="1"> 879 <property stdset="1">
876 <name>title</name> 880 <name>title</name>
877 <string>Link Level</string> 881 <string>Link Level</string>
878 </property> 882 </property>
879 <grid> 883 <grid>
880 <property stdset="1"> 884 <property stdset="1">
881 <name>margin</name> 885 <name>margin</name>
882 <number>11</number> 886 <number>11</number>
883 </property> 887 </property>
884 <property stdset="1"> 888 <property stdset="1">
885 <name>spacing</name> 889 <name>spacing</name>
886 <number>6</number> 890 <number>6</number>
887 </property> 891 </property>
888 <widget row="0" column="0" > 892 <widget row="0" column="0" >
889 <class>QLabel</class> 893 <class>QLabel</class>
890 <property stdset="1"> 894 <property stdset="1">
891 <name>name</name> 895 <name>name</name>
892 <cstring>TextLabel1_5</cstring> 896 <cstring>TextLabel1_5</cstring>
893 </property> 897 </property>
894 <property stdset="1"> 898 <property stdset="1">
895 <name>text</name> 899 <name>text</name>
896 <string>Fake Mac:</string> 900 <string>Fake Mac:</string>
897 </property> 901 </property>
898 </widget> 902 </widget>
899 <widget row="1" column="0" rowspan="1" colspan="2" > 903 <widget row="1" column="0" rowspan="1" colspan="2" >
900 <class>QCheckBox</class> 904 <class>QCheckBox</class>
901 <property stdset="1"> 905 <property stdset="1">
902 <name>name</name> 906 <name>name</name>
903 <cstring>sendProbeRequests</cstring> 907 <cstring>sendProbeRequests</cstring>
904 </property> 908 </property>
905 <property stdset="1"> 909 <property stdset="1">
906 <name>text</name> 910 <name>text</name>
907 <string>Send proble requests</string> 911 <string>Send proble requests</string>
908 </property> 912 </property>
909 </widget> 913 </widget>
910 <widget row="0" column="1" > 914 <widget row="0" column="1" >
911 <class>QComboBox</class> 915 <class>QComboBox</class>
912 <item> 916 <item>
913 <property> 917 <property>
914 <name>text</name> 918 <name>text</name>
915 <string>&lt;automatic&gt;</string> 919 <string>&lt;automatic&gt;</string>
916 </property> 920 </property>
917 </item> 921 </item>
918 <item> 922 <item>
919 <property> 923 <property>
920 <name>text</name> 924 <name>text</name>
921 <string>44:44:44:44:44:44</string> 925 <string>44:44:44:44:44:44</string>
922 </property> 926 </property>
923 </item> 927 </item>
924 <property stdset="1"> 928 <property stdset="1">
925 <name>name</name> 929 <name>name</name>
926 <cstring>fakeMac</cstring> 930 <cstring>fakeMac</cstring>
927 </property> 931 </property>
928 <property stdset="1"> 932 <property stdset="1">
929 <name>sizePolicy</name> 933 <name>sizePolicy</name>
930 <sizepolicy> 934 <sizepolicy>
931 <hsizetype>7</hsizetype> 935 <hsizetype>7</hsizetype>
932 <vsizetype>0</vsizetype> 936 <vsizetype>0</vsizetype>
933 </sizepolicy> 937 </sizepolicy>
934 </property> 938 </property>
935 <property stdset="1"> 939 <property stdset="1">
936 <name>editable</name> 940 <name>editable</name>
937 <bool>true</bool> 941 <bool>true</bool>
938 </property> 942 </property>
939 <property stdset="1"> 943 <property stdset="1">
940 <name>currentItem</name> 944 <name>currentItem</name>
941 <number>1</number> 945 <number>1</number>
942 </property> 946 </property>
943 <property stdset="1"> 947 <property stdset="1">
944 <name>autoCompletion</name> 948 <name>autoCompletion</name>
945 <bool>true</bool> 949 <bool>true</bool>
946 </property> 950 </property>
947 </widget> 951 </widget>
948 <widget row="2" column="0" rowspan="1" colspan="2" > 952 <widget row="2" column="0" rowspan="1" colspan="2" >
949 <class>QCheckBox</class> 953 <class>QCheckBox</class>
950 <property stdset="1"> 954 <property stdset="1">
951 <name>name</name> 955 <name>name</name>
952 <cstring>tryToAuthenticate</cstring> 956 <cstring>tryToAuthenticate</cstring>
953 </property> 957 </property>
954 <property stdset="1"> 958 <property stdset="1">
955 <name>text</name> 959 <name>text</name>
956 <string>Try to authenticate</string> 960 <string>Try to authenticate</string>
957 </property> 961 </property>
958 </widget> 962 </widget>
959 </grid> 963 </grid>
960 </widget> 964 </widget>
961 <widget row="0" column="0" > 965 <widget row="0" column="0" >
962 <class>QCheckBox</class> 966 <class>QCheckBox</class>
963 <property stdset="1"> 967 <property stdset="1">
964 <name>name</name> 968 <name>name</name>
965 <cstring>enableActiveScanning</cstring> 969 <cstring>enableActiveScanning</cstring>
966 </property> 970 </property>
967 <property stdset="1"> 971 <property stdset="1">
968 <name>enabled</name> 972 <name>enabled</name>
969 <bool>false</bool> 973 <bool>false</bool>
970 </property> 974 </property>
971 <property stdset="1"> 975 <property stdset="1">
972 <name>text</name> 976 <name>text</name>
973 <string>Enable active scanning</string> 977 <string>Enable active scanning</string>
974 </property> 978 </property>
975 </widget> 979 </widget>
976 <widget row="2" column="0" > 980 <widget row="2" column="0" >
977 <class>QGroupBox</class> 981 <class>QGroupBox</class>
978 <property stdset="1"> 982 <property stdset="1">
979 <name>name</name> 983 <name>name</name>
980 <cstring>GroupBox4</cstring> 984 <cstring>GroupBox4</cstring>
981 </property> 985 </property>
982 <property stdset="1"> 986 <property stdset="1">
983 <name>enabled</name> 987 <name>enabled</name>
984 <bool>false</bool> 988 <bool>false</bool>
985 </property> 989 </property>
986 <property stdset="1"> 990 <property stdset="1">
987 <name>title</name> 991 <name>title</name>
988 <string>IP Level</string> 992 <string>IP Level</string>
989 </property> 993 </property>
990 <grid> 994 <grid>
991 <property stdset="1"> 995 <property stdset="1">
992 <name>margin</name> 996 <name>margin</name>
993 <number>11</number> 997 <number>11</number>
994 </property> 998 </property>
995 <property stdset="1"> 999 <property stdset="1">
996 <name>spacing</name> 1000 <name>spacing</name>
997 <number>6</number> 1001 <number>6</number>
998 </property> 1002 </property>
999 <widget row="1" column="0" rowspan="1" colspan="2" > 1003 <widget row="1" column="0" rowspan="1" colspan="2" >
1000 <class>QCheckBox</class> 1004 <class>QCheckBox</class>
1001 <property stdset="1"> 1005 <property stdset="1">
1002 <name>name</name> 1006 <name>name</name>
1003 <cstring>CheckBox24</cstring> 1007 <cstring>CheckBox24</cstring>
1004 </property> 1008 </property>
1005 <property stdset="1"> 1009 <property stdset="1">
1006 <name>text</name> 1010 <name>text</name>
1007 <string>Request DHCP Address</string> 1011 <string>Request DHCP Address</string>
1008 </property> 1012 </property>
1009 </widget> 1013 </widget>
1010 <widget row="0" column="0" > 1014 <widget row="0" column="0" >
1011 <class>QLabel</class> 1015 <class>QLabel</class>
1012 <property stdset="1"> 1016 <property stdset="1">
1013 <name>name</name> 1017 <name>name</name>
1014 <cstring>TextLabel1_5_2</cstring> 1018 <cstring>TextLabel1_5_2</cstring>
1015 </property> 1019 </property>
1016 <property stdset="1"> 1020 <property stdset="1">
1017 <name>text</name> 1021 <name>text</name>
1018 <string>Fake IP:</string> 1022 <string>Fake IP:</string>
1019 </property> 1023 </property>
1020 </widget> 1024 </widget>
1021 <widget row="0" column="1" > 1025 <widget row="0" column="1" >
1022 <class>QComboBox</class> 1026 <class>QComboBox</class>
1023 <item> 1027 <item>
1024 <property> 1028 <property>
1025 <name>text</name> 1029 <name>text</name>
1026 <string>192.168.125.1</string> 1030 <string>192.168.125.1</string>
1027 </property> 1031 </property>
1028 </item> 1032 </item>
1029 <item> 1033 <item>
1030 <property> 1034 <property>
1031 <name>text</name> 1035 <name>text</name>
1032 <string>&lt;automatic&gt;</string> 1036 <string>&lt;automatic&gt;</string>
1033 </property> 1037 </property>
1034 </item> 1038 </item>
1035 <property stdset="1"> 1039 <property stdset="1">
1036 <name>name</name> 1040 <name>name</name>
1037 <cstring>fakeIP</cstring> 1041 <cstring>fakeIP</cstring>
1038 </property> 1042 </property>
1039 <property stdset="1"> 1043 <property stdset="1">
1040 <name>sizePolicy</name> 1044 <name>sizePolicy</name>
1041 <sizepolicy> 1045 <sizepolicy>
1042 <hsizetype>7</hsizetype> 1046 <hsizetype>7</hsizetype>
1043 <vsizetype>0</vsizetype> 1047 <vsizetype>0</vsizetype>
1044 </sizepolicy> 1048 </sizepolicy>
1045 </property> 1049 </property>
1046 <property stdset="1"> 1050 <property stdset="1">
1047 <name>editable</name> 1051 <name>editable</name>
1048 <bool>true</bool> 1052 <bool>true</bool>
1049 </property> 1053 </property>
1050 <property stdset="1"> 1054 <property stdset="1">
1051 <name>currentItem</name> 1055 <name>currentItem</name>
1052 <number>0</number> 1056 <number>0</number>
1053 </property> 1057 </property>
1054 </widget> 1058 </widget>
1055 </grid> 1059 </grid>
1056 </widget> 1060 </widget>
1057 </grid> 1061 </grid>
1058 </widget> 1062 </widget>
1059 <widget> 1063 <widget>
1060 <class>QWidget</class> 1064 <class>QWidget</class>
1061 <property stdset="1"> 1065 <property stdset="1">
1062 <name>name</name> 1066 <name>name</name>
1063 <cstring>tab</cstring> 1067 <cstring>tab</cstring>
1064 </property> 1068 </property>
1065 <attribute> 1069 <attribute>
1066 <name>title</name> 1070 <name>title</name>
1067 <string>GPS</string> 1071 <string>GPS</string>
1068 </attribute> 1072 </attribute>
1069 <widget> 1073 <grid>
1070 <class>QLayoutWidget</class>
1071 <property stdset="1"> 1074 <property stdset="1">
1072 <name>name</name> 1075 <name>margin</name>
1073 <cstring>Layout1</cstring> 1076 <number>5</number>
1074 </property> 1077 </property>
1075 <property stdset="1"> 1078 <property stdset="1">
1076 <name>geometry</name> 1079 <name>spacing</name>
1077 <rect> 1080 <number>4</number>
1078 <x>10</x>
1079 <y>40</y>
1080 <width>216</width>
1081 <height>27</height>
1082 </rect>
1083 </property> 1081 </property>
1084 <hbox> 1082 <widget row="0" column="0" >
1085 <property stdset="1"> 1083 <class>QLayoutWidget</class>
1086 <name>margin</name>
1087 <number>0</number>
1088 </property>
1089 <property stdset="1"> 1084 <property stdset="1">
1090 <name>spacing</name> 1085 <name>name</name>
1091 <number>6</number> 1086 <cstring>Layout6</cstring>
1092 </property> 1087 </property>
1093 <widget> 1088 <vbox>
1094 <class>QLabel</class>
1095 <property stdset="1"> 1089 <property stdset="1">
1096 <name>name</name> 1090 <name>margin</name>
1097 <cstring>TextLabel1_4</cstring> 1091 <number>0</number>
1098 </property> 1092 </property>
1099 <property stdset="1"> 1093 <property stdset="1">
1100 <name>text</name> 1094 <name>spacing</name>
1101 <string>Host</string> 1095 <number>6</number>
1102 </property> 1096 </property>
1103 </widget> 1097 <widget>
1104 <widget> 1098 <class>QCheckBox</class>
1105 <class>QComboBox</class> 1099 <property stdset="1">
1106 <item> 1100 <name>name</name>
1107 <property> 1101 <cstring>enableGPS</cstring>
1102 </property>
1103 <property stdset="1">
1108 <name>text</name> 1104 <name>text</name>
1109 <string>localhost</string> 1105 <string>Enable GPS logging w/ gpsd</string>
1110 </property> 1106 </property>
1111 </item> 1107 </widget>
1112 <property stdset="1"> 1108 <widget>
1113 <name>name</name> 1109 <class>QLayoutWidget</class>
1114 <cstring>gpsdHost</cstring> 1110 <property stdset="1">
1115 </property> 1111 <name>name</name>
1116 <property stdset="1"> 1112 <cstring>Layout1</cstring>
1117 <name>enabled</name> 1113 </property>
1118 <bool>false</bool> 1114 <hbox>
1119 </property> 1115 <property stdset="1">
1120 <property stdset="1"> 1116 <name>margin</name>
1121 <name>editable</name> 1117 <number>0</number>
1122 <bool>true</bool> 1118 </property>
1123 </property> 1119 <property stdset="1">
1124 <property stdset="1"> 1120 <name>spacing</name>
1125 <name>currentItem</name> 1121 <number>6</number>
1126 <number>0</number> 1122 </property>
1127 </property> 1123 <widget>
1128 </widget> 1124 <class>QLabel</class>
1129 <widget> 1125 <property stdset="1">
1130 <class>QLabel</class> 1126 <name>name</name>
1131 <property stdset="1"> 1127 <cstring>TextLabel1_4</cstring>
1132 <name>name</name> 1128 </property>
1133 <cstring>TextLabel2_2</cstring> 1129 <property stdset="1">
1134 </property> 1130 <name>text</name>
1135 <property stdset="1"> 1131 <string>Host</string>
1136 <name>text</name> 1132 </property>
1137 <string>:</string> 1133 </widget>
1138 </property> 1134 <widget>
1139 </widget> 1135 <class>QComboBox</class>
1140 <widget> 1136 <item>
1141 <class>QSpinBox</class> 1137 <property>
1142 <property stdset="1"> 1138 <name>text</name>
1143 <name>name</name> 1139 <string>localhost</string>
1144 <cstring>gpsdPort</cstring> 1140 </property>
1145 </property> 1141 </item>
1146 <property stdset="1"> 1142 <property stdset="1">
1147 <name>enabled</name> 1143 <name>name</name>
1148 <bool>false</bool> 1144 <cstring>gpsdHost</cstring>
1149 </property> 1145 </property>
1150 <property stdset="1"> 1146 <property stdset="1">
1151 <name>maxValue</name> 1147 <name>enabled</name>
1152 <number>65535</number> 1148 <bool>false</bool>
1153 </property> 1149 </property>
1154 <property stdset="1"> 1150 <property stdset="1">
1155 <name>minValue</name> 1151 <name>editable</name>
1156 <number>1024</number> 1152 <bool>true</bool>
1157 </property> 1153 </property>
1158 <property stdset="1"> 1154 <property stdset="1">
1159 <name>value</name> 1155 <name>currentItem</name>
1160 <number>2947</number> 1156 <number>0</number>
1161 </property> 1157 </property>
1162 </widget> 1158 </widget>
1163 </hbox> 1159 <widget>
1164 </widget> 1160 <class>QLabel</class>
1165 <widget> 1161 <property stdset="1">
1166 <class>QLineEdit</class> 1162 <name>name</name>
1167 <property stdset="1"> 1163 <cstring>TextLabel2_2</cstring>
1168 <name>name</name> 1164 </property>
1169 <cstring>commandGPS</cstring> 1165 <property stdset="1">
1170 </property> 1166 <name>text</name>
1171 <property stdset="1"> 1167 <string>:</string>
1172 <name>enabled</name> 1168 </property>
1173 <bool>false</bool> 1169 </widget>
1174 </property> 1170 <widget>
1175 <property stdset="1"> 1171 <class>QSpinBox</class>
1176 <name>geometry</name> 1172 <property stdset="1">
1177 <rect> 1173 <name>name</name>
1178 <x>10</x> 1174 <cstring>gpsdPort</cstring>
1179 <y>110</y> 1175 </property>
1180 <width>210</width> 1176 <property stdset="1">
1181 <height>22</height> 1177 <name>enabled</name>
1182 </rect> 1178 <bool>false</bool>
1183 </property> 1179 </property>
1184 <property stdset="1"> 1180 <property stdset="1">
1185 <name>text</name> 1181 <name>maxValue</name>
1186 <string>gpsd -p /dev/ttyS3 -s 57600</string> 1182 <number>65535</number>
1187 </property> 1183 </property>
1188 </widget> 1184 <property stdset="1">
1189 <widget> 1185 <name>minValue</name>
1190 <class>QCheckBox</class> 1186 <number>1024</number>
1191 <property stdset="1"> 1187 </property>
1192 <name>name</name> 1188 <property stdset="1">
1193 <cstring>enableGPS</cstring> 1189 <name>value</name>
1194 </property> 1190 <number>2947</number>
1195 <property stdset="1"> 1191 </property>
1196 <name>geometry</name> 1192 </widget>
1197 <rect> 1193 </hbox>
1198 <x>10</x> 1194 </widget>
1199 <y>10</y> 1195 <widget>
1200 <width>199</width> 1196 <class>QCheckBox</class>
1201 <height>21</height> 1197 <property stdset="1">
1202 </rect> 1198 <name>name</name>
1203 </property> 1199 <cstring>startGPS</cstring>
1204 <property stdset="1"> 1200 </property>
1205 <name>text</name> 1201 <property stdset="1">
1206 <string>Enable GPS logging w/ gpsd</string> 1202 <name>text</name>
1207 </property> 1203 <string>Start gpsd on localhost</string>
1208 </widget> 1204 </property>
1209 <widget> 1205 </widget>
1210 <class>QCheckBox</class> 1206 <widget>
1211 <property stdset="1"> 1207 <class>QLineEdit</class>
1212 <name>name</name> 1208 <property stdset="1">
1213 <cstring>startGPS</cstring> 1209 <name>name</name>
1214 </property> 1210 <cstring>commandGPS</cstring>
1215 <property stdset="1"> 1211 </property>
1216 <name>geometry</name> 1212 <property stdset="1">
1217 <rect> 1213 <name>enabled</name>
1218 <x>10</x> 1214 <bool>false</bool>
1219 <y>80</y> 1215 </property>
1220 <width>171</width> 1216 <property stdset="1">
1221 <height>21</height> 1217 <name>text</name>
1222 </rect> 1218 <string>gpsd -p /dev/ttyS3 -s 57600</string>
1223 </property> 1219 </property>
1224 <property stdset="1"> 1220 </widget>
1225 <name>text</name> 1221 <spacer>
1226 <string>Start gpsd on localhost</string> 1222 <property>
1227 </property> 1223 <name>name</name>
1228 </widget> 1224 <cstring>Spacer4_2</cstring>
1225 </property>
1226 <property stdset="1">
1227 <name>orientation</name>
1228 <enum>Vertical</enum>
1229 </property>
1230 <property stdset="1">
1231 <name>sizeType</name>
1232 <enum>Expanding</enum>
1233 </property>
1234 <property>
1235 <name>sizeHint</name>
1236 <size>
1237 <width>20</width>
1238 <height>20</height>
1239 </size>
1240 </property>
1241 </spacer>
1242 </vbox>
1243 </widget>
1244 </grid>
1229 </widget> 1245 </widget>
1230 </widget> 1246 </widget>
1231 </grid> 1247 </grid>
1232</widget> 1248</widget>
1233<customwidgets> 1249<customwidgets>
1234 <customwidget> 1250 <customwidget>
1235 <class>ProtocolListView</class> 1251 <class>ProtocolListView</class>
1236 <header location="local">protolistview.h</header> 1252 <header location="local">protolistview.h</header>
1237 <sizehint> 1253 <sizehint>
1238 <width>100</width> 1254 <width>100</width>
1239 <height>100</height> 1255 <height>100</height>
1240 </sizehint> 1256 </sizehint>
1241 <container>0</container> 1257 <container>0</container>
1242 <sizepolicy> 1258 <sizepolicy>
1243 <hordata>3</hordata> 1259 <hordata>3</hordata>
1244 <verdata>3</verdata> 1260 <verdata>3</verdata>
1245 </sizepolicy> 1261 </sizepolicy>
1246 <pixmap>image0</pixmap> 1262 <pixmap>image0</pixmap>
1247 </customwidget> 1263 </customwidget>
1248</customwidgets> 1264</customwidgets>
1249<images> 1265<images>
1250 <image> 1266 <image>
1251 <name>image0</name> 1267 <name>image0</name>
1252 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> 1268 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
1253 </image> 1269 </image>
1254</images> 1270</images>
1255<connections> 1271<connections>
1256 <connection> 1272 <connection>
1257 <sender>hopChannels</sender> 1273 <sender>hopChannels</sender>
1258 <signal>toggled(bool)</signal> 1274 <signal>toggled(bool)</signal>
1259 <receiver>hopInterval</receiver> 1275 <receiver>hopInterval</receiver>
1260 <slot>setEnabled(bool)</slot> 1276 <slot>setEnabled(bool)</slot>
1261 </connection> 1277 </connection>
1262 <connection> 1278 <connection>
1263 <sender>hopChannels</sender> 1279 <sender>hopChannels</sender>
1264 <signal>toggled(bool)</signal> 1280 <signal>toggled(bool)</signal>
1265 <receiver>TextLabel1</receiver> 1281 <receiver>TextLabel1</receiver>
1266 <slot>setEnabled(bool)</slot> 1282 <slot>setEnabled(bool)</slot>
1267 </connection> 1283 </connection>
1268 <connection> 1284 <connection>
1269 <sender>enableActiveScanning</sender> 1285 <sender>enableActiveScanning</sender>
1270 <signal>toggled(bool)</signal> 1286 <signal>toggled(bool)</signal>
1271 <receiver>GroupBox3</receiver> 1287 <receiver>GroupBox3</receiver>
1272 <slot>setEnabled(bool)</slot> 1288 <slot>setEnabled(bool)</slot>
1273 </connection> 1289 </connection>
1274 <connection> 1290 <connection>
1275 <sender>enableActiveScanning</sender> 1291 <sender>enableActiveScanning</sender>
1276 <signal>toggled(bool)</signal> 1292 <signal>toggled(bool)</signal>
1277 <receiver>GroupBox4</receiver> 1293 <receiver>GroupBox4</receiver>
1278 <slot>setEnabled(bool)</slot> 1294 <slot>setEnabled(bool)</slot>
1279 </connection> 1295 </connection>
1280 <connection> 1296 <connection>
1281 <sender>writeCaptureFile</sender> 1297 <sender>writeCaptureFile</sender>
1282 <signal>toggled(bool)</signal> 1298 <signal>toggled(bool)</signal>
1283 <receiver>getCaptureFileName</receiver> 1299 <receiver>getCaptureFileName</receiver>
1284 <slot>setEnabled(bool)</slot> 1300 <slot>setEnabled(bool)</slot>
1285 </connection> 1301 </connection>
1286 <connection> 1302 <connection>
1287 <sender>writeCaptureFile</sender> 1303 <sender>writeCaptureFile</sender>
1288 <signal>toggled(bool)</signal> 1304 <signal>toggled(bool)</signal>
1289 <receiver>captureFileName</receiver> 1305 <receiver>captureFileName</receiver>
1290 <slot>setEnabled(bool)</slot> 1306 <slot>setEnabled(bool)</slot>
1291 </connection> 1307 </connection>
1292 <connection> 1308 <connection>
1293 <sender>writeCaptureFile</sender> 1309 <sender>writeCaptureFile</sender>
1294 <signal>toggled(bool)</signal> 1310 <signal>toggled(bool)</signal>
1295 <receiver>capturePackets</receiver> 1311 <receiver>capturePackets</receiver>
1296 <slot>setEnabled(bool)</slot> 1312 <slot>setEnabled(bool)</slot>
1297 </connection> 1313 </connection>
1298 <connection> 1314 <connection>
1299 <sender>enableGPS</sender> 1315 <sender>enableGPS</sender>
1300 <signal>toggled(bool)</signal> 1316 <signal>toggled(bool)</signal>
1301 <receiver>gpsdHost</receiver> 1317 <receiver>gpsdHost</receiver>
1302 <slot>setEnabled(bool)</slot> 1318 <slot>setEnabled(bool)</slot>
1303 </connection> 1319 </connection>
1304 <connection> 1320 <connection>
1305 <sender>enableGPS</sender> 1321 <sender>enableGPS</sender>
1306 <signal>toggled(bool)</signal> 1322 <signal>toggled(bool)</signal>
1307 <receiver>gpsdPort</receiver> 1323 <receiver>gpsdPort</receiver>
1308 <slot>setEnabled(bool)</slot> 1324 <slot>setEnabled(bool)</slot>
1309 </connection> 1325 </connection>
1310 <connection> 1326 <connection>
1311 <sender>startGPS</sender> 1327 <sender>startGPS</sender>
1312 <signal>toggled(bool)</signal> 1328 <signal>toggled(bool)</signal>
1313 <receiver>commandGPS</receiver> 1329 <receiver>commandGPS</receiver>
1314 <slot>setEnabled(bool)</slot> 1330 <slot>setEnabled(bool)</slot>
1315 </connection> 1331 </connection>
1316</connections> 1332</connections>
1317</UI> 1333</UI>
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp
index bb46dd7..ca9851c 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.cpp
+++ b/noncore/net/wellenreiter/gui/mainwindow.cpp
@@ -1,538 +1,541 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. 2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3** 3**
4** This file is part of Opie Environment. 4** This file is part of Opie Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
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 "configwindow.h" 16#include "configwindow.h"
17#include "gps.h" 17#include "gps.h"
18#include "logwindow.h" 18#include "logwindow.h"
19#include "hexwindow.h" 19#include "hexwindow.h"
20#include "mainwindow.h" 20#include "mainwindow.h"
21#include "wellenreiter.h" 21#include "wellenreiter.h"
22#include "scanlist.h" 22#include "scanlist.h"
23 23
24#include <qcombobox.h> 24#include <qcombobox.h>
25#include <qdatastream.h> 25#include <qdatastream.h>
26#include <qfile.h> 26#include <qfile.h>
27#include <qfileinfo.h> 27#include <qfileinfo.h>
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qlineedit.h> 30#include <qlineedit.h>
31#include <qiconset.h> 31#include <qiconset.h>
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qmessagebox.h> 33#include <qmessagebox.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <qpushbutton.h> 35#include <qpushbutton.h>
36#include <qstatusbar.h> 36#include <qstatusbar.h>
37#include <qtextstream.h> 37#include <qtextstream.h>
38#include <qtoolbutton.h> 38#include <qtoolbutton.h>
39 39
40#ifdef QWS 40#ifdef QWS
41#include <qpe/resource.h> 41#include <qpe/resource.h>
42#include <opie/ofiledialog.h> 42#include <opie/ofiledialog.h>
43#else 43#else
44#include "resource.h" 44#include "resource.h"
45#include <qapplication.h> 45#include <qapplication.h>
46#include <qfiledialog.h> 46#include <qfiledialog.h>
47#endif 47#endif
48 48
49WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * name, WFlags f ) 49WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * name, WFlags f )
50 :QMainWindow( parent, name, f ) 50 :QMainWindow( parent, name, f )
51{ 51{
52 cw = new WellenreiterConfigWindow( this ); 52 cw = new WellenreiterConfigWindow( this );
53 mw = new Wellenreiter( this ); 53 mw = new Wellenreiter( this );
54 mw->setConfigWindow( cw ); 54 mw->setConfigWindow( cw );
55 setCentralWidget( mw ); 55 setCentralWidget( mw );
56 56
57 // setup application icon 57 // setup application icon
58 58
59 #ifndef QWS 59 #ifndef QWS
60 setIcon( Resource::loadPixmap( "wellenreiter/appicon-trans" ) ); 60 setIcon( Resource::loadPixmap( "wellenreiter/appicon-trans" ) );
61 setIconText( "Wellenreiter/X11" ); 61 setIconText( "Wellenreiter/X11" );
62 #endif 62 #endif
63 63
64 // setup tool buttons 64 // setup tool buttons
65 65
66 startButton = new QToolButton( 0 ); 66 startButton = new QToolButton( 0 );
67 #ifdef QWS 67 #ifdef QWS
68 startButton->setAutoRaise( true ); 68 startButton->setAutoRaise( true );
69 #endif 69 #endif
70 startButton->setIconSet( Resource::loadIconSet( "wellenreiter/SearchIcon" ) ); 70 startButton->setIconSet( Resource::loadIconSet( "wellenreiter/SearchIcon" ) );
71 startButton->setEnabled( false ); 71 startButton->setEnabled( false );
72 connect( startButton, SIGNAL( clicked() ), mw, SLOT( startClicked() ) ); 72 connect( startButton, SIGNAL( clicked() ), mw, SLOT( startClicked() ) );
73 73
74 stopButton = new QToolButton( 0 ); 74 stopButton = new QToolButton( 0 );
75 #ifdef QWS 75 #ifdef QWS
76 stopButton->setAutoRaise( true ); 76 stopButton->setAutoRaise( true );
77 #endif 77 #endif
78 stopButton->setIconSet( Resource::loadIconSet( "wellenreiter/CancelIcon" ) ); 78 stopButton->setIconSet( Resource::loadIconSet( "wellenreiter/CancelIcon" ) );
79 stopButton->setEnabled( false ); 79 stopButton->setEnabled( false );
80 connect( stopButton, SIGNAL( clicked() ), mw, SLOT( stopClicked() ) ); 80 connect( stopButton, SIGNAL( clicked() ), mw, SLOT( stopClicked() ) );
81 81
82 QToolButton* d = new QToolButton( 0 ); 82 QToolButton* d = new QToolButton( 0 );
83 #ifdef QWS 83 #ifdef QWS
84 d->setAutoRaise( true ); 84 d->setAutoRaise( true );
85 #endif 85 #endif
86 d->setIconSet( Resource::loadIconSet( "wellenreiter/SettingsIcon" ) ); 86 d->setIconSet( Resource::loadIconSet( "wellenreiter/SettingsIcon" ) );
87 connect( d, SIGNAL( clicked() ), this, SLOT( showConfigure() ) ); 87 connect( d, SIGNAL( clicked() ), this, SLOT( showConfigure() ) );
88 88
89 uploadButton = new QToolButton( 0 ); 89 uploadButton = new QToolButton( 0 );
90 #ifdef QWS 90 #ifdef QWS
91 uploadButton->setAutoRaise( true ); 91 uploadButton->setAutoRaise( true );
92 #endif 92 #endif
93 uploadButton->setIconSet( Resource::loadIconSet( "up" ) ); 93 uploadButton->setIconSet( Resource::loadIconSet( "up" ) );
94 uploadButton->setEnabled( false ); 94 uploadButton->setEnabled( false );
95 //uploadButton->setEnabled( true ); // DEBUGGING 95 //uploadButton->setEnabled( true ); // DEBUGGING
96 connect( uploadButton, SIGNAL( clicked() ), this, SLOT( uploadSession() ) ); 96 connect( uploadButton, SIGNAL( clicked() ), this, SLOT( uploadSession() ) );
97 97
98 // setup menu bar 98 // setup menu bar
99 99
100 int id; 100 int id;
101 101
102 QMenuBar* mb = menuBar(); 102 QMenuBar* mb = menuBar();
103 103
104 QPopupMenu* fileSave = new QPopupMenu( mb ); 104 QPopupMenu* fileSave = new QPopupMenu( mb );
105 fileSave->insertItem( tr( "&Session..." ), this, SLOT( fileSaveSession() ) ); 105 fileSave->insertItem( tr( "&Session..." ), this, SLOT( fileSaveSession() ) );
106 fileSave->insertItem( tr( "&Text Log..." ), this, SLOT( fileSaveLog() ) ); 106 fileSave->insertItem( tr( "&Text Log..." ), this, SLOT( fileSaveLog() ) );
107 fileSave->insertItem( tr( "&Hex Log..." ), this, SLOT( fileSaveHex() ) ); 107 fileSave->insertItem( tr( "&Hex Log..." ), this, SLOT( fileSaveHex() ) );
108 108
109 QPopupMenu* fileLoad = new QPopupMenu( mb ); 109 QPopupMenu* fileLoad = new QPopupMenu( mb );
110 fileLoad->insertItem( tr( "&Session..." ), this, SLOT( fileLoadSession() ) ); 110 fileLoad->insertItem( tr( "&Session..." ), this, SLOT( fileLoadSession() ) );
111 //fileLoad->insertItem( "&Log", this, SLOT( fileLoadLog() ) ); 111 //fileLoad->insertItem( "&Log", this, SLOT( fileLoadLog() ) );
112 112
113 QPopupMenu* file = new QPopupMenu( mb ); 113 QPopupMenu* file = new QPopupMenu( mb );
114 file->insertItem( tr( "&New" ), this, SLOT( fileNew() ) ); 114 file->insertItem( tr( "&New" ), this, SLOT( fileNew() ) );
115 id = file->insertItem( tr( "&Load" ), fileLoad ); 115 id = file->insertItem( tr( "&Load" ), fileLoad );
116 file->insertItem( tr( "&Save" ), fileSave ); 116 file->insertItem( tr( "&Save" ), fileSave );
117 file->insertSeparator(); 117 file->insertSeparator();
118 uploadID = file->insertItem( tr( "&Upload Session" ), this, SLOT( uploadSession() ) ); 118 uploadID = file->insertItem( tr( "&Upload Session" ), this, SLOT( uploadSession() ) );
119 file->insertSeparator(); 119 file->insertSeparator();
120 file->insertItem( tr( "&Exit" ), qApp, SLOT( quit() ) ); 120 file->insertItem( tr( "&Exit" ), qApp, SLOT( quit() ) );
121 121
122 QPopupMenu* view = new QPopupMenu( mb ); 122 QPopupMenu* view = new QPopupMenu( mb );
123 view->insertItem( tr( "&Configure..." ) ); 123 view->insertItem( tr( "&Configure..." ) );
124 124
125 QPopupMenu* sniffer = new QPopupMenu( mb ); 125 QPopupMenu* sniffer = new QPopupMenu( mb );
126 sniffer->insertItem( tr( "&Configure..." ), this, SLOT( showConfigure() ) ); 126 sniffer->insertItem( tr( "&Configure..." ), this, SLOT( showConfigure() ) );
127 sniffer->insertSeparator(); 127 sniffer->insertSeparator();
128 startID = sniffer->insertItem( tr( "&Start" ), mw, SLOT( startClicked() ) ); 128 startID = sniffer->insertItem( tr( "&Start" ), mw, SLOT( startClicked() ) );
129 sniffer->setItemEnabled( startID, false ); 129 sniffer->setItemEnabled( startID, false );
130 stopID = sniffer->insertItem( tr( "Sto&p" ), mw, SLOT( stopClicked() ) ); 130 stopID = sniffer->insertItem( tr( "Sto&p" ), mw, SLOT( stopClicked() ) );
131 sniffer->setItemEnabled( stopID, false ); 131 sniffer->setItemEnabled( stopID, false );
132 132
133 QPopupMenu* demo = new QPopupMenu( mb ); 133 QPopupMenu* demo = new QPopupMenu( mb );
134 demo->insertItem( tr( "&Add something" ), this, SLOT( demoAddStations() ) ); 134 demo->insertItem( tr( "&Add something" ), this, SLOT( demoAddStations() ) );
135 135
136 id = mb->insertItem( tr( "&File" ), file ); 136 id = mb->insertItem( tr( "&File" ), file );
137 //id = mb->insertItem( tr( "&View" ), view ); 137 //id = mb->insertItem( tr( "&View" ), view );
138 //mb->setItemEnabled( id, false ); 138 //mb->setItemEnabled( id, false );
139 id = mb->insertItem( tr( "&Sniffer" ), sniffer ); 139 id = mb->insertItem( tr( "&Sniffer" ), sniffer );
140 140
141 id = mb->insertItem( tr( "&Demo" ), demo ); 141 id = mb->insertItem( tr( "&Demo" ), demo );
142 mb->setItemEnabled( id, true ); 142 mb->setItemEnabled( id, true );
143 mb->setItemEnabled( uploadID, false ); 143 mb->setItemEnabled( uploadID, false );
144 144
145 #ifdef QWS 145 #ifdef QWS
146 mb->insertItem( startButton ); 146 mb->insertItem( startButton );
147 mb->insertItem( stopButton ); 147 mb->insertItem( stopButton );
148 mb->insertItem( uploadButton ); 148 mb->insertItem( uploadButton );
149 mb->insertItem( d ); 149 mb->insertItem( d );
150 #else // Qt3 changed the insertion order. It's now totally random :( 150 #else // Qt3 changed the insertion order. It's now totally random :(
151 mb->insertItem( d ); 151 mb->insertItem( d );
152 mb->insertItem( uploadButton ); 152 mb->insertItem( uploadButton );
153 mb->insertItem( stopButton ); 153 mb->insertItem( stopButton );
154 mb->insertItem( startButton ); 154 mb->insertItem( startButton );
155 #endif 155 #endif
156 156
157 updateToolButtonState(); 157 updateToolButtonState();
158 158
159 // setup status bar (for now only on X11) 159 // setup status bar (for now only on X11)
160 160
161 #ifndef QWS 161 #ifndef QWS
162 statusBar()->message( tr( "Ready." ) ); 162 statusBar()->message( tr( "Ready." ) );
163 #endif 163 #endif
164 164
165 connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) ); 165 connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) );
166 connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) ); 166 connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) );
167}; 167};
168 168
169 169
170 170
171void WellenreiterMainWindow::showConfigure() 171void WellenreiterMainWindow::showConfigure()
172{ 172{
173 qDebug( "show configure..." ); 173 qDebug( "show configure..." );
174 cw->setCaption( tr( "Configure" ) ); 174 cw->setCaption( tr( "Configure" ) );
175 #ifdef QWS 175 #ifdef QWS
176 cw->showMaximized(); 176 cw->showMaximized();
177 #endif 177 #endif
178 int result = cw->exec(); 178 int result = cw->exec();
179 179
180 if ( result ) updateToolButtonState(); 180 if ( result ) updateToolButtonState();
181} 181}
182 182
183 183
184void WellenreiterMainWindow::updateToolButtonState() 184void WellenreiterMainWindow::updateToolButtonState()
185{ 185{
186 const QString& interface = cw->interfaceName->currentText(); 186 const QString& interface = cw->interfaceName->currentText();
187 const int cardtype = cw->driverType(); 187 const int cardtype = cw->driverType();
188 188
189 if ( ( interface != "<select>" ) && ( cardtype != 0 ) ) 189 if ( ( interface != "<select>" ) && ( cardtype != 0 ) )
190 { 190 {
191 startButton->setEnabled( true ); 191 startButton->setEnabled( true );
192 menuBar()->setItemEnabled( startID, true ); 192 menuBar()->setItemEnabled( startID, true );
193 } 193 }
194 else 194 else
195 { 195 {
196 startButton->setEnabled( false ); 196 startButton->setEnabled( false );
197 menuBar()->setItemEnabled( startID, false ); 197 menuBar()->setItemEnabled( startID, false );
198 } 198 }
199} 199}
200 200
201 201
202void WellenreiterMainWindow::changedSniffingState() 202void WellenreiterMainWindow::changedSniffingState()
203{ 203{
204 startButton->setEnabled( !mw->sniffing ); 204 startButton->setEnabled( !mw->sniffing );
205 menuBar()->setItemEnabled( startID, !mw->sniffing ); 205 menuBar()->setItemEnabled( startID, !mw->sniffing );
206 stopButton->setEnabled( mw->sniffing ); 206 stopButton->setEnabled( mw->sniffing );
207 menuBar()->setItemEnabled( stopID, mw->sniffing ); 207 menuBar()->setItemEnabled( stopID, mw->sniffing );
208 208
209 if ( !mw->sniffing ) 209 if ( !mw->sniffing )
210 { 210 {
211 menuBar()->setItemEnabled( uploadID, true ); 211 menuBar()->setItemEnabled( uploadID, true );
212 uploadButton->setEnabled( true ); 212 uploadButton->setEnabled( true );
213 } 213 }
214} 214}
215 215
216 216
217WellenreiterMainWindow::~WellenreiterMainWindow() 217WellenreiterMainWindow::~WellenreiterMainWindow()
218{ 218{
219 qDebug( "Wellenreiter:: bye." ); 219 qDebug( "Wellenreiter:: bye." );
220}; 220};
221 221
222 222
223void WellenreiterMainWindow::demoAddStations() 223void WellenreiterMainWindow::demoAddStations()
224{ 224{
225 //mw = 0; // test SIGSGV handling 225 //mw = 0; // test SIGSGV handling
226 226
227 mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 10.10, 20.20 ) ); 227 mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 10.10, 20.20 ) );
228 mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) ); 228 mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) );
229 mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:A0:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) ); 229 mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:A0:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) );
230 mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:AA:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) ); 230 mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:AA:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) );
231 mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:B0:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) ); 231 mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:B0:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) );
232} 232}
233 233
234 234
235QString WellenreiterMainWindow::getFileName( bool save ) 235QString WellenreiterMainWindow::getFileName( bool save )
236{ 236{
237 QMap<QString, QStringList> map; 237 QMap<QString, QStringList> map;
238 map.insert( tr("All"), QStringList() ); 238 map.insert( tr("All"), QStringList() );
239 QStringList text; 239 QStringList text;
240 text << "text/*"; 240 text << "text/*";
241 map.insert( tr("Text"), text ); 241 map.insert( tr("Text"), text );
242 text << "*"; 242 text << "*";
243 map.insert( tr("All"), text ); 243 map.insert( tr("All"), text );
244 244
245 QString str; 245 QString str;
246 if ( save ) 246 if ( save )
247 { 247 {
248 #ifdef QWS 248 #ifdef QWS
249 str = OFileDialog::getSaveFileName( 2, "/", QString::null, map ); 249 str = OFileDialog::getSaveFileName( 2, "/", QString::null, map );
250 #else 250 #else
251 str = QFileDialog::getSaveFileName(); 251 str = QFileDialog::getSaveFileName();
252 #endif 252 #endif
253 if ( str.isEmpty() /*|| QFileInfo(str).isDir()*/ ) 253 if ( str.isEmpty() /*|| QFileInfo(str).isDir()*/ )
254 return ""; 254 return "";
255 } 255 }
256 else 256 else
257 { 257 {
258 #ifdef QWS 258 #ifdef QWS
259 str = OFileDialog::getOpenFileName( 2, "/", QString::null, map ); 259 str = OFileDialog::getOpenFileName( 2, "/", QString::null, map );
260 #else 260 #else
261 str = QFileDialog::getOpenFileName(); 261 str = QFileDialog::getOpenFileName();
262 #endif 262 #endif
263 if ( str.isEmpty() || !QFile(str).exists() || QFileInfo(str).isDir() ) 263 if ( str.isEmpty() || !QFile(str).exists() || QFileInfo(str).isDir() )
264 return ""; 264 return "";
265 } 265 }
266 return str; 266 return str;
267} 267}
268 268
269 269
270void WellenreiterMainWindow::fileSaveLog() 270void WellenreiterMainWindow::fileSaveLog()
271{ 271{
272 QString fname = getFileName( true ); 272 QString fname = getFileName( true );
273 if ( !fname.isEmpty() ) 273 if ( !fname.isEmpty() )
274 { 274 {
275 QFile f( fname ); 275 QFile f( fname );
276 if ( f.open(IO_WriteOnly) ) 276 if ( f.open(IO_WriteOnly) )
277 { 277 {
278 QTextStream t( &f ); 278 QTextStream t( &f );
279 t << mw->logWindow()->getLog(); 279 t << mw->logWindow()->getLog();
280 f.close(); 280 f.close();
281 qDebug( "Saved log to file '%s'", (const char*) fname ); 281 qDebug( "Saved log to file '%s'", (const char*) fname );
282 } 282 }
283 else 283 else
284 { 284 {
285 qDebug( "Problem saving log to file '%s'", (const char*) fname ); 285 qDebug( "Problem saving log to file '%s'", (const char*) fname );
286 } 286 }
287 } 287 }
288} 288}
289 289
290void WellenreiterMainWindow::fileSaveSession() 290void WellenreiterMainWindow::fileSaveSession()
291{ 291{
292 QString fname = getFileName( true ); 292 QString fname = getFileName( true );
293 if ( !fname.isEmpty() ) 293 if ( !fname.isEmpty() )
294 { 294 {
295 295
296 QFile f( fname ); 296 QFile f( fname );
297 if ( f.open(IO_WriteOnly) ) 297 if ( f.open(IO_WriteOnly) )
298 { 298 {
299 QDataStream t( &f ); 299 QDataStream t( &f );
300 t << *mw->netView(); 300 t << *mw->netView();
301 f.close(); 301 f.close();
302 qDebug( "Saved session to file '%s'", (const char*) fname ); 302 qDebug( "Saved session to file '%s'", (const char*) fname );
303 } 303 }
304 else 304 else
305 { 305 {
306 qDebug( "Problem saving session to file '%s'", (const char*) fname ); 306 qDebug( "Problem saving session to file '%s'", (const char*) fname );
307 } 307 }
308 } 308 }
309} 309}
310 310
311void WellenreiterMainWindow::fileSaveHex() 311void WellenreiterMainWindow::fileSaveHex()
312{ 312{
313 QString fname = getFileName( true ); 313 QString fname = getFileName( true );
314 if ( !fname.isEmpty() ) 314 if ( !fname.isEmpty() )
315 { 315 {
316 QFile f( fname ); 316 QFile f( fname );
317 if ( f.open(IO_WriteOnly) ) 317 if ( f.open(IO_WriteOnly) )
318 { 318 {
319 QTextStream t( &f ); 319 QTextStream t( &f );
320 t << mw->hexWindow()->getLog(); 320 t << mw->hexWindow()->getLog();
321 f.close(); 321 f.close();
322 qDebug( "Saved hex log to file '%s'", (const char*) fname ); 322 qDebug( "Saved hex log to file '%s'", (const char*) fname );
323 } 323 }
324 else 324 else
325 { 325 {
326 qDebug( "Problem saving hex log to file '%s'", (const char*) fname ); 326 qDebug( "Problem saving hex log to file '%s'", (const char*) fname );
327 } 327 }
328 } 328 }
329} 329}
330 330
331void WellenreiterMainWindow::fileLoadSession() 331void WellenreiterMainWindow::fileLoadSession()
332{ 332{
333 QString fname = getFileName( false ); 333 QString fname = getFileName( false );
334 if ( !fname.isEmpty() ) 334 if ( !fname.isEmpty() )
335 { 335 {
336 QFile f( fname ); 336 QFile f( fname );
337 if ( f.open(IO_ReadOnly) ) 337 if ( f.open(IO_ReadOnly) )
338 { 338 {
339 QDataStream t( &f ); 339 QDataStream t( &f );
340 t >> *mw->netView(); 340 t >> *mw->netView();
341 f.close(); 341 f.close();
342 qDebug( "Loaded session from file '%s'", (const char*) fname ); 342 qDebug( "Loaded session from file '%s'", (const char*) fname );
343 } 343 }
344 else 344 else
345 { 345 {
346 qDebug( "Problem loading session from file '%s'", (const char*) fname ); 346 qDebug( "Problem loading session from file '%s'", (const char*) fname );
347 } 347 }
348 } 348 }
349} 349}
350 350
351 351
352void WellenreiterMainWindow::fileNew() 352void WellenreiterMainWindow::fileNew()
353{ 353{
354 mw->netView()->clear(); 354 mw->netView()->clear();
355 mw->logWindow()->clear(); 355 mw->logWindow()->clear();
356 mw->hexWindow()->clear(); 356 mw->hexWindow()->clear();
357} 357}
358 358
359 359
360void WellenreiterMainWindow::closeEvent( QCloseEvent* e ) 360void WellenreiterMainWindow::closeEvent( QCloseEvent* e )
361{ 361{
362 if ( mw->isDaemonRunning() ) 362 if ( mw->isDaemonRunning() )
363 { 363 {
364 QMessageBox::warning( this, "Wellenreiter/Opie", 364 QMessageBox::warning( this, "Wellenreiter/Opie",
365 tr( "Sniffing in progress!\nPlease stop sniffing before closing." ) ); 365 tr( "Sniffing in progress!\nPlease stop sniffing before closing." ) );
366 e->ignore(); 366 e->ignore();
367 } 367 }
368 else 368 else
369 { 369 {
370 QMainWindow::closeEvent( e ); 370 QMainWindow::closeEvent( e );
371 } 371 }
372} 372}
373 373
374static const char* CAP_hostname = "www.vanille.de"; 374static const char* CAP_hostname = "www.vanille.de";
375 375
376#include <netdb.h> 376#include <netdb.h>
377#include <unistd.h> 377#include <unistd.h>
378#include <sys/types.h> 378#include <sys/types.h>
379#include <sys/socket.h> 379#include <sys/socket.h>
380 380
381void WellenreiterMainWindow::uploadSession() 381void WellenreiterMainWindow::uploadSession()
382{ 382{
383 QLineEdit* from; 383 QLineEdit* from;
384 QLineEdit* location; 384 QLineEdit* location;
385 QLineEdit* comments; 385 QLineEdit* comments;
386 QPushButton* accept; 386 QPushButton* accept;
387 QPushButton* reject; 387 QPushButton* reject;
388 388
389 QDialog* d = new QDialog( 0, "session upload", true ); 389 QDialog* d = new QDialog( 0, "session upload", true );
390 d->setCaption( tr( "Upload Session" ) ); 390 d->setCaption( tr( "Upload Session" ) );
391 QGridLayout* g = new QGridLayout( d, 4, 2, 3 ); 391 QGridLayout* g = new QGridLayout( d, 4, 2, 3 );
392 g->addWidget( new QLabel( tr( "From: " ), d ), 0, 0 ); 392 g->addWidget( new QLabel( tr( "From: " ), d ), 0, 0 );
393 g->addWidget( from = new QLineEdit( d ), 0, 1 ); 393 g->addWidget( from = new QLineEdit( d ), 0, 1 );
394 g->addWidget( new QLabel( tr( "Location: " ), d ), 1, 0 ); 394 g->addWidget( new QLabel( tr( "Location: " ), d ), 1, 0 );
395 g->addWidget( location = new QLineEdit( d ), 1, 1 ); 395 g->addWidget( location = new QLineEdit( d ), 1, 1 );
396 g->addWidget( new QLabel( tr( "Comments: " ), d ), 2, 0 ); 396 g->addWidget( new QLabel( tr( "Comments: " ), d ), 2, 0 );
397 g->addWidget( comments = new QLineEdit( d ), 2, 1 ); 397 g->addWidget( comments = new QLineEdit( d ), 2, 1 );
398 g->addWidget( accept = new QPushButton( tr( "&Ok" ), d ), 3, 0 ); 398 g->addWidget( accept = new QPushButton( tr( "&Ok" ), d ), 3, 0 );
399 g->addWidget( reject = new QPushButton( tr( "&Cancel" ), d ), 3, 1 ); 399 g->addWidget( reject = new QPushButton( tr( "&Cancel" ), d ), 3, 1 );
400 accept->setDefault( true ); 400 accept->setDefault( true );
401 accept->setAutoDefault( true ); 401 accept->setAutoDefault( true );
402 from->setText( "WL II User" ); 402 from->setText( "WL II User" );
403 location->setText( "WL II Location" ); 403 location->setText( "WL II Location" );
404 comments->setText( "No Comments." ); 404 comments->setText( "No Comments." );
405 connect( accept, SIGNAL( clicked() ), d, SLOT( accept() ) ); 405 connect( accept, SIGNAL( clicked() ), d, SLOT( accept() ) );
406 connect( reject, SIGNAL( clicked() ), d, SLOT( reject() ) ); 406 connect( reject, SIGNAL( clicked() ), d, SLOT( reject() ) );
407 int result = d->exec(); 407 int result = d->exec();
408 408
409 if ( !result ) 409 if ( !result )
410 { 410 {
411 qDebug( "Session upload cancelled :(" ); 411 qDebug( "Session upload cancelled :(" );
412 return; 412 return;
413 } 413 }
414 414
415 qDebug( "Starting upload..." ); 415 qDebug( "Starting upload..." );
416 416
417 struct sockaddr_in raddr; 417 struct sockaddr_in raddr;
418 struct hostent *rhost_info; 418 struct hostent *rhost_info;
419 int sock = -1; 419 int sock = -1;
420 bool ok = false; 420 bool ok = false;
421 421
422 rhost_info = (struct hostent *) ::gethostbyname( CAP_hostname ); 422 rhost_info = (struct hostent *) ::gethostbyname( CAP_hostname );
423 if ( rhost_info ) 423 if ( rhost_info )
424 { 424 {
425 if ( !QFile::exists( "/var/log/dump.wellenreiter" ) ) 425
426
427 if ( !QFile::exists( mw->captureFileName() ) )
426 { 428 {
427 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Logfile doesn't exist</p>") ); 429 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Logfile '%1' doesn't exist</p>").arg( mw->captureFileName() ) );
428 return; 430 return;
429 } 431 }
430 432
431 QFile f( "/var/log/dump.wellenreiter" ); 433 QFile f( mw->captureFileName() );
432 if ( !f.open( IO_ReadOnly ) ) 434 if ( !f.open( IO_ReadOnly ) )
433 { 435 {
434 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Can't open Logfile</p>") ); 436 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Can't open Logfile '%1'</p>").arg( mw->captureFileName() ) );
435 return; 437 return;
436 } 438 }
437 439
438 int content_length = f.size(); 440 int content_length = f.size();
439 441
440 ::memset( &raddr, 0, sizeof (struct sockaddr_in) ); 442 ::memset( &raddr, 0, sizeof (struct sockaddr_in) );
441 ::memcpy( &raddr. sin_addr, rhost_info-> h_addr, rhost_info-> h_length ); 443 ::memcpy( &raddr. sin_addr, rhost_info-> h_addr, rhost_info-> h_length );
442 raddr.sin_family = rhost_info-> h_addrtype; 444 raddr.sin_family = rhost_info-> h_addrtype;
443 raddr.sin_port = htons ( 80 ); 445 raddr.sin_port = htons ( 80 );
444 446
445 sock = ::socket( AF_INET, SOCK_STREAM, 0 ); 447 sock = ::socket( AF_INET, SOCK_STREAM, 0 );
446 448
447 if ( sock >= 0 ) 449 if ( sock >= 0 )
448 { 450 {
449 if ( ::connect ( sock, (struct sockaddr *) & raddr, sizeof (struct sockaddr)) >= 0 ) 451 if ( ::connect ( sock, (struct sockaddr *) & raddr, sizeof (struct sockaddr)) >= 0 )
450 { 452 {
451 QString header; 453 QString header;
452 QString content; 454 QString content;
453 QString preambel; 455 QString preambel;
454 456
455 header = "" 457 header = ""
456 "POST /projects/capturedump.spy HTTP/1.1\r\n" 458 "POST /projects/capturedump.spy HTTP/1.1\r\n"
457 "Host: www.vanille.de\r\n" 459 "Host: www.vanille.de\r\n"
458 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031010 Galeon/1.3.10\r\n" 460 "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031010 Galeon/1.3.10\r\n"
459 "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1\r\n" 461 "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1\r\n"
460 "Accept-Language: en\r\n" 462 "Accept-Language: en\r\n"
461 "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n" 463 "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n"
462 "Accept-Charset: us-ascii,utf-8;q=0.7,*;q=0.7\r\n" 464 "Accept-Charset: us-ascii,utf-8;q=0.7,*;q=0.7\r\n"
463 "Keep-Alive: 300\r\n" 465 "Keep-Alive: 300\r\n"
464 "Connection: keep-alive\r\n" 466 "Connection: keep-alive\r\n"
465 "Referer: http://www.vanille.de/projects/capturedump.spy\r\n" 467 "Referer: http://www.vanille.de/projects/capturedump.spy\r\n"
466 "Content-Type: multipart/form-data; boundary=---------------------------97267758015830030481215568065\r\n" 468 "Content-Type: multipart/form-data; boundary=---------------------------97267758015830030481215568065\r\n"
467 "Content-Length: %1\r\n" 469 "Content-Length: %1\r\n"
468 "\r\n"; 470 "\r\n";
469 471
470 content = "" 472 content = ""
471 "-----------------------------97267758015830030481215568065\r\n" 473 "-----------------------------97267758015830030481215568065\r\n"
472 "Content-Disposition: form-data; name=\"Name\"\r\n" 474 "Content-Disposition: form-data; name=\"Name\"\r\n"
473 "\r\n" 475 "\r\n"
474 "%1\r\n" 476 "%1\r\n"
475 "-----------------------------97267758015830030481215568065\r\n" 477 "-----------------------------97267758015830030481215568065\r\n"
476 "Content-Disposition: form-data; name=\"Location\"\r\n" 478 "Content-Disposition: form-data; name=\"Location\"\r\n"
477 "\r\n" 479 "\r\n"
478 "%2\r\n" 480 "%2\r\n"
479 "-----------------------------97267758015830030481215568065\r\n" 481 "-----------------------------97267758015830030481215568065\r\n"
480 "Content-Disposition: form-data; name=\"Comments\"\r\n" 482 "Content-Disposition: form-data; name=\"Comments\"\r\n"
481 "\r\n" 483 "\r\n"
482 "%3\r\n" 484 "%3\r\n"
483 "-----------------------------97267758015830030481215568065\r\n" 485 "-----------------------------97267758015830030481215568065\r\n"
484 "Content-Disposition: form-data; name=\"upfile\"; filename=\"/var/log/dump.wellenreiter\"\r\n" 486 "Content-Disposition: form-data; name=\"upfile\"; filename=\"%4\"\r\n"
485 "Content-Type: application/octet-stream\r\n" 487 "Content-Type: application/octet-stream\r\n"
486 "\r\n"; 488 "\r\n";
487 489
488 preambel = "" 490 preambel = ""
489 "\r\n-----------------------------97267758015830030481215568065--\r\n"; 491 "\r\n-----------------------------97267758015830030481215568065--\r\n";
490 492
491 content = content.arg( from->text().isEmpty() ? QString( "Anonymous Wellenreiter II User" ) : from->text() ); 493 content = content.arg( from->text().isEmpty() ? QString( "Anonymous Wellenreiter II User" ) : from->text() );
492 content = content.arg( location->text().isEmpty() ? QString( "Anonymous Wellenreiter II Location" ) : location->text() ); 494 content = content.arg( location->text().isEmpty() ? QString( "Anonymous Wellenreiter II Location" ) : location->text() );
493 content = content.arg( comments->text().isEmpty() ? QString( "Anonymous Wellenreiter II Comments" ) : comments->text() ); 495 content = content.arg( comments->text().isEmpty() ? QString( "Anonymous Wellenreiter II Comments" ) : comments->text() );
496 content = content.arg( mw->captureFileName() );
494 497
495 header = header.arg( QString::number( content.length() + f.size() + preambel.length() ) ); 498 header = header.arg( QString::number( content.length() + f.size() + preambel.length() ) );
496 499
497 // write header 500 // write header
498 501
499 const char* ascii = header.latin1(); 502 const char* ascii = header.latin1();
500 uint ascii_len = ::strlen( ascii ); 503 uint ascii_len = ::strlen( ascii );
501 ::write ( sock, ascii, ascii_len ); 504 ::write ( sock, ascii, ascii_len );
502 505
503 // write fixed content 506 // write fixed content
504 507
505 ascii = content.latin1(); 508 ascii = content.latin1();
506 ascii_len = ::strlen( ascii ); 509 ascii_len = ::strlen( ascii );
507 ::write ( sock, ascii, ascii_len ); 510 ::write ( sock, ascii, ascii_len );
508 511
509 // write variable content 512 // write variable content
510 513
511 char ch; 514 char ch;
512 while ( !f.atEnd() ) 515 while ( !f.atEnd() )
513 { 516 {
514 f.readBlock( &ch, 1 ); 517 f.readBlock( &ch, 1 );
515 ::write ( sock, &ch, 1 ); 518 ::write ( sock, &ch, 1 );
516 } 519 }
517 520
518 // write preambel 521 // write preambel
519 522
520 ascii = preambel.latin1(); 523 ascii = preambel.latin1();
521 ascii_len = ::strlen( ascii ); 524 ascii_len = ::strlen( ascii );
522 ::write ( sock, ascii, ascii_len ); 525 ::write ( sock, ascii, ascii_len );
523 526
524 // done! 527 // done!
525 528
526 ok = true; 529 ok = true;
527 } 530 }
528 } 531 }
529 ::close ( sock ); 532 ::close ( sock );
530 } 533 }
531 if ( ok ) 534 if ( ok )
532 QMessageBox::information( 0, tr( "Success" ), 535 QMessageBox::information( 0, tr( "Success" ),
533 QString ( "<p>%1</p>" ).arg( tr( "Capture Dump was uploaded to %1" ) ).arg( CAP_hostname ) ); 536 QString ( "<p>%1</p>" ).arg( tr( "Capture Dump was uploaded to %1" ) ).arg( CAP_hostname ) );
534 else 537 else
535 QMessageBox::warning( 0, tr( "Error" ), 538 QMessageBox::warning( 0, tr( "Error" ),
536 QString ( "<p>%1</p>" ).arg ( tr( "Connection to %1 failed" ) ).arg( CAP_hostname ) ); 539 QString ( "<p>%1</p>" ).arg ( tr( "Connection to %1 failed" ) ).arg( CAP_hostname ) );
537} 540}
538 541
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index ec89f1e..9255a6d 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -1,661 +1,660 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. 2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3** 3**
4** This file is part of Opie Environment. 4** This file is part of Opie Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
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// Local 16// Local
17 17
18#include "gps.h" 18#include "gps.h"
19#include "wellenreiter.h" 19#include "wellenreiter.h"
20#include "scanlist.h" 20#include "scanlist.h"
21#include "logwindow.h" 21#include "logwindow.h"
22#include "hexwindow.h" 22#include "hexwindow.h"
23#include "configwindow.h" 23#include "configwindow.h"
24#include "statwindow.h" 24#include "statwindow.h"
25#include "graphwindow.h" 25#include "graphwindow.h"
26#include "protolistview.h" 26#include "protolistview.h"
27 27
28// Opie 28// Opie
29 29
30#ifdef QWS 30#ifdef QWS
31#include <opie/odevice.h> 31#include <opie/odevice.h>
32#include <qpe/qcopenvelope_qws.h> 32#include <qpe/qcopenvelope_qws.h>
33using namespace Opie; 33using namespace Opie;
34#endif 34#endif
35 35
36#ifdef QWS 36#ifdef QWS
37#include <opie2/oapplication.h> 37#include <opie2/oapplication.h>
38#else 38#else
39#include <qapplication.h> 39#include <qapplication.h>
40#endif 40#endif
41#include <opie2/omanufacturerdb.h> 41#include <opie2/omanufacturerdb.h>
42#include <opie2/onetwork.h> 42#include <opie2/onetwork.h>
43#include <opie2/opcap.h> 43#include <opie2/opcap.h>
44 44
45// Qt 45// Qt
46 46
47#include <qcheckbox.h> 47#include <qcheckbox.h>
48#include <qcombobox.h> 48#include <qcombobox.h>
49#include <qdatetime.h> 49#include <qdatetime.h>
50#include <qpushbutton.h> 50#include <qpushbutton.h>
51#include <qlineedit.h> 51#include <qlineedit.h>
52#include <qmessagebox.h> 52#include <qmessagebox.h>
53#include <qobjectlist.h> 53#include <qobjectlist.h>
54#include <qregexp.h> 54#include <qregexp.h>
55#include <qspinbox.h> 55#include <qspinbox.h>
56#include <qtimer.h> 56#include <qtimer.h>
57#include <qtoolbutton.h> 57#include <qtoolbutton.h>
58#include <qmainwindow.h> 58#include <qmainwindow.h>
59 59
60// Standard 60// Standard
61 61
62#include <assert.h> 62#include <assert.h>
63#include <errno.h> 63#include <errno.h>
64#include <unistd.h> 64#include <unistd.h>
65#include <string.h> 65#include <string.h>
66#include <sys/types.h> 66#include <sys/types.h>
67#include <stdlib.h> 67#include <stdlib.h>
68 68
69Wellenreiter::Wellenreiter( QWidget* parent ) 69Wellenreiter::Wellenreiter( QWidget* parent )
70 : WellenreiterBase( parent, 0, 0 ), 70 : WellenreiterBase( parent, 0, 0 ),
71 sniffing( false ), iface( 0 ), configwindow( 0 ) 71 sniffing( false ), iface( 0 ), configwindow( 0 )
72{ 72{
73 73
74 logwindow->log( "(i) Wellenreiter has been started." ); 74 logwindow->log( "(i) Wellenreiter has been started." );
75 75
76 // 76 //
77 // detect operating system 77 // detect operating system
78 // 78 //
79 79
80 #ifdef QWS 80 #ifdef QWS
81 QString sys; 81 QString sys;
82 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() ); 82 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() );
83 _system = ODevice::inst()->system(); 83 _system = ODevice::inst()->system();
84 logwindow->log( sys ); 84 logwindow->log( sys );
85 #endif 85 #endif
86 86
87 netview->setColumnWidthMode( 1, QListView::Manual ); 87 netview->setColumnWidthMode( 1, QListView::Manual );
88 connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ), 88 connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ),
89 this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) ); 89 this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) );
90 pcap = new OPacketCapturer(); 90 pcap = new OPacketCapturer();
91 91
92 gps = new GPS( this ); 92 gps = new GPS( this );
93 93
94 QTimer::singleShot( 1000, this, SLOT( initialTimer() ) ); 94 QTimer::singleShot( 1000, this, SLOT( initialTimer() ) );
95 95
96} 96}
97 97
98 98
99Wellenreiter::~Wellenreiter() 99Wellenreiter::~Wellenreiter()
100{ 100{
101 delete pcap; 101 delete pcap;
102} 102}
103 103
104 104
105void Wellenreiter::initialTimer() 105void Wellenreiter::initialTimer()
106{ 106{
107 qDebug( "Wellenreiter::preloading manufacturer database..." ); 107 qDebug( "Wellenreiter::preloading manufacturer database..." );
108 OManufacturerDB::instance(); 108 OManufacturerDB::instance();
109} 109}
110 110
111 111
112void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) 112void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw )
113{ 113{
114 configwindow = cw; 114 configwindow = cw;
115} 115}
116 116
117 117
118void Wellenreiter::channelHopped(int c) 118void Wellenreiter::channelHopped(int c)
119{ 119{
120 QString title = "Wellenreiter II -scan- ["; 120 QString title = "Wellenreiter II -scan- [";
121 QString left; 121 QString left;
122 if ( c > 1 ) left.fill( '.', c-1 ); 122 if ( c > 1 ) left.fill( '.', c-1 );
123 title.append( left ); 123 title.append( left );
124 title.append( '|' ); 124 title.append( '|' );
125 if ( c < iface->channels() ) 125 if ( c < iface->channels() )
126 { 126 {
127 QString right; 127 QString right;
128 right.fill( '.', iface->channels()-c ); 128 right.fill( '.', iface->channels()-c );
129 title.append( right ); 129 title.append( right );
130 } 130 }
131 title.append( "]" ); 131 title.append( "]" );
132 //title.append( QString().sprintf( " %02d", c ) ); 132 //title.append( QString().sprintf( " %02d", c ) );
133 assert( parent() ); 133 assert( parent() );
134 ( (QMainWindow*) parent() )->setCaption( title ); 134 ( (QMainWindow*) parent() )->setCaption( title );
135} 135}
136 136
137 137
138void Wellenreiter::handleNotification( OPacket* p ) 138void Wellenreiter::handleNotification( OPacket* p )
139{ 139{
140 QObjectList* l = p->queryList(); 140 QObjectList* l = p->queryList();
141 QObjectListIt it( *l ); 141 QObjectListIt it( *l );
142 QObject* o; 142 QObject* o;
143 143
144 while ( (o = it.current()) != 0 ) 144 while ( (o = it.current()) != 0 )
145 { 145 {
146 QString name = it.current()->name(); 146 QString name = it.current()->name();
147 if ( configwindow->parsePackets->isProtocolChecked( name ) ) 147 if ( configwindow->parsePackets->isProtocolChecked( name ) )
148 { 148 {
149 QString action = configwindow->parsePackets->protocolAction( name ); 149 QString action = configwindow->parsePackets->protocolAction( name );
150 qDebug( "parsePacket-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); 150 qDebug( "parsePacket-action for '%s' seems to be '%s'", (const char*) name, (const char*) action );
151 doAction( action, name, p ); 151 doAction( action, name, p );
152 } 152 }
153 else 153 else
154 { 154 {
155 qDebug( "protocol '%s' not checked in parsePackets.", (const char*) name ); 155 qDebug( "protocol '%s' not checked in parsePackets.", (const char*) name );
156 } 156 }
157 ++it; 157 ++it;
158 } 158 }
159} 159}
160 160
161 161
162void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) 162void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon )
163{ 163{
164 QString type; 164 QString type;
165 if ( beacon->canIBSS() ) 165 if ( beacon->canIBSS() )
166 { 166 {
167 type = "adhoc"; 167 type = "adhoc";
168 } 168 }
169 else if ( beacon->canESS() ) 169 else if ( beacon->canESS() )
170 { 170 {
171 type = "managed"; 171 type = "managed";
172 } 172 }
173 else 173 else
174 { 174 {
175 qWarning( "Wellenreiter::invalid frame [possibly noise] detected!" ); 175 qWarning( "Wellenreiter::invalid frame [possibly noise] detected!" );
176 return; 176 return;
177 } 177 }
178 178
179 OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); 179 OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) );
180 QString essid = ssid ? ssid->ID() : QString("<unknown>"); 180 QString essid = ssid ? ssid->ID() : QString("<unknown>");
181 OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); 181 OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) );
182 int channel = ds ? ds->channel() : -1; 182 int channel = ds ? ds->channel() : -1;
183 183
184 OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); 184 OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) );
185 185
186 GpsLocation loc( 0, 0 ); 186 GpsLocation loc( 0, 0 );
187 if ( configwindow->enableGPS->isChecked() ) 187 if ( configwindow->enableGPS->isChecked() )
188 { 188 {
189 // TODO: add check if GPS is working!? 189 // TODO: add check if GPS is working!?
190 qDebug( "Wellenreiter::gathering GPS data..." ); 190 qDebug( "Wellenreiter::gathering GPS data..." );
191 loc = gps->position(); 191 loc = gps->position();
192 qDebug( "Wellenreiter::GPS data received is ( %f , %f )", loc.latitude, loc.longitude ); 192 qDebug( "Wellenreiter::GPS data received is ( %f , %f )", loc.latitude, loc.longitude );
193 } 193 }
194 194
195 netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0, loc ); 195 netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0, loc );
196 196
197 // update graph window 197 // update graph window
198 if ( ds ) 198 if ( ds )
199 { 199 {
200 OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) ); 200 OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) );
201 if ( prism ) 201 if ( prism )
202 graphwindow->traffic( ds->channel(), prism->signalStrength() ); 202 graphwindow->traffic( ds->channel(), prism->signalStrength() );
203 else 203 else
204 graphwindow->traffic( ds->channel(), 95 ); 204 graphwindow->traffic( ds->channel(), 95 );
205 } 205 }
206} 206}
207 207
208 208
209void Wellenreiter::handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to ) 209void Wellenreiter::handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to )
210{ 210{
211 OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); 211 OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" );
212 if ( wlan->fromDS() && !wlan->toDS() ) 212 if ( wlan->fromDS() && !wlan->toDS() )
213 { 213 {
214 netView()->fromDStraffic( wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); 214 netView()->fromDStraffic( wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() );
215 from = wlan->macAddress3(); 215 from = wlan->macAddress3();
216 to = wlan->macAddress2(); 216 to = wlan->macAddress2();
217 } 217 }
218 else if ( !wlan->fromDS() && wlan->toDS() ) 218 else if ( !wlan->fromDS() && wlan->toDS() )
219 { 219 {
220 netView()->toDStraffic( wlan->macAddress2(), wlan->macAddress3(), wlan->macAddress1() ); 220 netView()->toDStraffic( wlan->macAddress2(), wlan->macAddress3(), wlan->macAddress1() );
221 from = wlan->macAddress2(); 221 from = wlan->macAddress2();
222 to = wlan->macAddress3(); 222 to = wlan->macAddress3();
223 } 223 }
224 else if ( wlan->fromDS() && wlan->toDS() ) 224 else if ( wlan->fromDS() && wlan->toDS() )
225 { 225 {
226 netView()->WDStraffic( wlan->macAddress4(), wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); 226 netView()->WDStraffic( wlan->macAddress4(), wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() );
227 from = wlan->macAddress4(); 227 from = wlan->macAddress4();
228 to = wlan->macAddress3(); 228 to = wlan->macAddress3();
229 } 229 }
230 else 230 else
231 { 231 {
232 netView()->IBSStraffic( wlan->macAddress2(), wlan->macAddress1(), wlan->macAddress3() ); 232 netView()->IBSStraffic( wlan->macAddress2(), wlan->macAddress1(), wlan->macAddress3() );
233 from = wlan->macAddress2(); 233 from = wlan->macAddress2();
234 to = wlan->macAddress1(); 234 to = wlan->macAddress1();
235 } 235 }
236} 236}
237 237
238 238
239void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to ) 239void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to )
240{ 240{
241 from = data->sourceAddress(); 241 from = data->sourceAddress();
242 to = data->destinationAddress(); 242 to = data->destinationAddress();
243 243
244 netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( 0, 0 ) ); 244 netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( 0, 0 ) );
245} 245}
246 246
247 247
248void Wellenreiter::handleARPData( OPacket* p, OARPPacket*, OMacAddress& source, OMacAddress& dest ) 248void Wellenreiter::handleARPData( OPacket* p, OARPPacket*, OMacAddress& source, OMacAddress& dest )
249{ 249{
250 OARPPacket* arp = (OARPPacket*) p->child( "ARP" ); 250 OARPPacket* arp = (OARPPacket*) p->child( "ARP" );
251 if ( arp ) 251 if ( arp )
252 { 252 {
253 qDebug( "Received ARP traffic (type '%s'): ", (const char*) arp->type() ); 253 qDebug( "Received ARP traffic (type '%s'): ", (const char*) arp->type() );
254 if ( arp->type() == "REQUEST" ) 254 if ( arp->type() == "REQUEST" )
255 { 255 {
256 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); 256 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() );
257 } 257 }
258 else if ( arp->type() == "REPLY" ) 258 else if ( arp->type() == "REPLY" )
259 { 259 {
260 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); 260 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() );
261 netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() ); 261 netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() );
262 } 262 }
263 } 263 }
264} 264}
265 265
266 266
267void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, OMacAddress& dest ) 267void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, OMacAddress& dest )
268{ 268{
269 //TODO: Implement more IP based protocols 269 //TODO: Implement more IP based protocols
270 270
271 ODHCPPacket* dhcp = (ODHCPPacket*) p->child( "DHCP" ); 271 ODHCPPacket* dhcp = (ODHCPPacket*) p->child( "DHCP" );
272 if ( dhcp ) 272 if ( dhcp )
273 { 273 {
274 qDebug( "Received DHCP '%s' packet", (const char*) dhcp->type() ); 274 qDebug( "Received DHCP '%s' packet", (const char*) dhcp->type() );
275 if ( dhcp->type() == "OFFER" ) 275 if ( dhcp->type() == "OFFER" )
276 { 276 {
277 qDebug( "DHCP: '%s' ('%s') seems to be a DHCP server.", (const char*) source.toString(), (const char*) dhcp->serverAddress().toString() ); 277 qDebug( "DHCP: '%s' ('%s') seems to be a DHCP server.", (const char*) source.toString(), (const char*) dhcp->serverAddress().toString() );
278 netView()->identify( source, dhcp->serverAddress().toString() ); 278 netView()->identify( source, dhcp->serverAddress().toString() );
279 netView()->addService( "DHCP", source, dhcp->serverAddress().toString() ); 279 netView()->addService( "DHCP", source, dhcp->serverAddress().toString() );
280 } 280 }
281 else if ( dhcp->type() == "ACK" ) 281 else if ( dhcp->type() == "ACK" )
282 { 282 {
283 qDebug( "DHCP: '%s' ('%s') accepted the offered DHCP address.", (const char*) dhcp->clientMacAddress().toString(), (const char*) dhcp->yourAddress().toString() ); 283 qDebug( "DHCP: '%s' ('%s') accepted the offered DHCP address.", (const char*) dhcp->clientMacAddress().toString(), (const char*) dhcp->yourAddress().toString() );
284 netView()->identify( dhcp->clientMacAddress(), dhcp->yourAddress().toString() ); 284 netView()->identify( dhcp->clientMacAddress(), dhcp->yourAddress().toString() );
285 } 285 }
286 } 286 }
287} 287}
288 288
289 289
290QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol ) 290QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol )
291{ 291{
292 if ( configwindow->parsePackets->isProtocolChecked( protocol ) ) 292 if ( configwindow->parsePackets->isProtocolChecked( protocol ) )
293 if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" ) 293 if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" )
294 return 0; 294 return 0;
295 295
296 return p->child( protocol ); 296 return p->child( protocol );
297} 297}
298 298
299 299
300bool Wellenreiter::checkDumpPacket( OPacket* p ) 300bool Wellenreiter::checkDumpPacket( OPacket* p )
301{ 301{
302 // go through all child packets and see if one is inside the child hierarchy for p 302 // go through all child packets and see if one is inside the child hierarchy for p
303 // if so, do what the user requested (protocolAction), e.g. pass or discard 303 // if so, do what the user requested (protocolAction), e.g. pass or discard
304 if ( !configwindow->writeCaptureFile->isChecked() ) 304 if ( !configwindow->writeCaptureFile->isChecked() )
305 return true; // semantic change - we're logging anyway now to /tmp/wellenreiter 305 return true; // semantic change - we're logging anyway now to /tmp/wellenreiter
306 306
307 QObjectList* l = p->queryList(); 307 QObjectList* l = p->queryList();
308 QObjectListIt it( *l ); 308 QObjectListIt it( *l );
309 QObject* o; 309 QObject* o;
310 310
311 while ( (o = it.current()) != 0 ) 311 while ( (o = it.current()) != 0 )
312 { 312 {
313 QString name = it.current()->name(); 313 QString name = it.current()->name();
314 if ( configwindow->capturePackets->isProtocolChecked( name ) ) 314 if ( configwindow->capturePackets->isProtocolChecked( name ) )
315 { 315 {
316 QString action = configwindow->capturePackets->protocolAction( name ); 316 QString action = configwindow->capturePackets->protocolAction( name );
317 qDebug( "capturePackets-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); 317 qDebug( "capturePackets-action for '%s' seems to be '%s'", (const char*) name, (const char*) action );
318 if ( action == "Discard" ) 318 if ( action == "Discard" )
319 { 319 {
320 logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) ); 320 logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) );
321 return false; 321 return false;
322 } 322 }
323 } 323 }
324 else 324 else
325 { 325 {
326 qDebug( "protocol '%s' not checked in capturePackets.", (const char*) name ); 326 qDebug( "protocol '%s' not checked in capturePackets.", (const char*) name );
327 } 327 }
328 ++it; 328 ++it;
329 } 329 }
330 return true; 330 return true;
331} 331}
332 332
333 333
334void Wellenreiter::receivePacket( OPacket* p ) 334void Wellenreiter::receivePacket( OPacket* p )
335{ 335{
336 hexWindow()->log( p->dump( 8 ) ); 336 hexWindow()->log( p->dump( 8 ) );
337 337
338 if ( checkDumpPacket( p ) ) 338 if ( checkDumpPacket( p ) )
339 { 339 {
340 pcap->dump( p ); 340 pcap->dump( p );
341 } 341 }
342 342
343 // check if we received a beacon frame 343 // check if we received a beacon frame
344 OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); 344 OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) );
345 if ( beacon && beacon->managementType() == "Beacon" ) 345 if ( beacon && beacon->managementType() == "Beacon" )
346 { 346 {
347 handleBeacon( p, beacon ); 347 handleBeacon( p, beacon );
348 return; 348 return;
349 } 349 }
350 350
351 OMacAddress source; 351 OMacAddress source;
352 OMacAddress dest; 352 OMacAddress dest;
353 353
354 //TODO: WEP check here 354 //TODO: WEP check here
355 355
356 // check for a wireless data frame 356 // check for a wireless data frame
357 OWaveLanDataPacket* wlan = static_cast<OWaveLanDataPacket*>( childIfToParse( p, "802.11 Data" ) ); 357 OWaveLanDataPacket* wlan = static_cast<OWaveLanDataPacket*>( childIfToParse( p, "802.11 Data" ) );
358 if ( wlan ) 358 if ( wlan )
359 { 359 {
360 handleWlanData( p, wlan, source, dest ); 360 handleWlanData( p, wlan, source, dest );
361 } 361 }
362 362
363 // check for a wired data frame 363 // check for a wired data frame
364 OEthernetPacket* eth = static_cast<OEthernetPacket*>( childIfToParse( p, "Ethernet" ) ); 364 OEthernetPacket* eth = static_cast<OEthernetPacket*>( childIfToParse( p, "Ethernet" ) );
365 if ( eth ) 365 if ( eth )
366 { 366 {
367 handleEthernetData( p, eth, source, dest ); 367 handleEthernetData( p, eth, source, dest );
368 } 368 }
369 369
370 // check for an arp frame since arp frames come in two flavours: 370 // check for an arp frame since arp frames come in two flavours:
371 // 802.11 encapsulates ARP data within IP packets while wired ethernet doesn't. 371 // 802.11 encapsulates ARP data within IP packets while wired ethernet doesn't.
372 OARPPacket* arp = static_cast<OARPPacket*>( childIfToParse( p, "ARP" ) ); 372 OARPPacket* arp = static_cast<OARPPacket*>( childIfToParse( p, "ARP" ) );
373 if ( arp ) 373 if ( arp )
374 { 374 {
375 handleARPData( p, arp, source, dest ); 375 handleARPData( p, arp, source, dest );
376 } 376 }
377 377
378 // check for a ip frame 378 // check for a ip frame
379 OIPPacket* ip = static_cast<OIPPacket*>( childIfToParse( p, "IP" ) ); 379 OIPPacket* ip = static_cast<OIPPacket*>( childIfToParse( p, "IP" ) );
380 if ( ip ) 380 if ( ip )
381 { 381 {
382 handleIPData( p, ip, source, dest ); 382 handleIPData( p, ip, source, dest );
383 } 383 }
384 384
385 //handleNotification( p ); 385 //handleNotification( p );
386 386
387} 387}
388 388
389 389
390void Wellenreiter::stopClicked() 390void Wellenreiter::stopClicked()
391{ 391{
392 if ( iface ) 392 if ( iface )
393 { 393 {
394 disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); 394 disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) );
395 disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); 395 disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) );
396 iface->setChannelHopping(); // stop hopping channels 396 iface->setChannelHopping(); // stop hopping channels
397 } 397 }
398 else 398 else
399 killTimers(); 399 killTimers();
400 400
401 pcap->close(); 401 pcap->close();
402 sniffing = false; 402 sniffing = false;
403 403
404 if ( iface ) 404 if ( iface )
405 { 405 {
406 // switch off monitor mode 406 // switch off monitor mode
407 iface->setMode( "managed" ); 407 iface->setMode( "managed" );
408 // switch off promisc flag 408 // switch off promisc flag
409 iface->setPromiscuousMode( false ); 409 iface->setPromiscuousMode( false );
410 410
411 system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess 411 system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess
412 } 412 }
413 413
414 logwindow->log( "(i) Stopped Scanning." ); 414 logwindow->log( "(i) Stopped Scanning." );
415 assert( parent() ); 415 assert( parent() );
416 ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" ); 416 ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" );
417 417
418 // message the user 418 // message the user
419 QMessageBox::information( this, "Wellenreiter II", 419 QMessageBox::information( this, "Wellenreiter II",
420 tr( "Your wireless card\nshould now be usable again." ) ); 420 tr( "Your wireless card\nshould now be usable again." ) );
421 421
422 sniffing = false; 422 sniffing = false;
423 emit( stoppedSniffing() ); 423 emit( stoppedSniffing() );
424 424
425 #ifdef QWS 425 #ifdef QWS
426 if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() ) 426 if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() )
427 { 427 {
428 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 428 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
429 } 429 }
430 #else 430 #else
431 #warning FIXME: setScreenSaverMode is not operational on the X11 build 431 #warning FIXME: setScreenSaverMode is not operational on the X11 build
432 #endif 432 #endif
433 433
434 // print out statistics 434 // print out statistics
435 for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it ) 435 for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it )
436 statwindow->updateCounter( it.key(), it.data() ); 436 statwindow->updateCounter( it.key(), it.data() );
437} 437}
438 438
439 439
440void Wellenreiter::startClicked() 440void Wellenreiter::startClicked()
441{ 441{
442 // get configuration from config window 442 // get configuration from config window
443 443
444 const QString& interface = configwindow->interfaceName->currentText(); 444 const QString& interface = configwindow->interfaceName->currentText();
445 const int cardtype = configwindow->driverType(); 445 const int cardtype = configwindow->driverType();
446 const int interval = configwindow->hoppingInterval(); 446 const int interval = configwindow->hoppingInterval();
447 447
448 if ( ( interface == "" ) || ( cardtype == 0 ) ) 448 if ( ( interface == "" ) || ( cardtype == 0 ) )
449 { 449 {
450 QMessageBox::information( this, "Wellenreiter II", 450 QMessageBox::information( this, "Wellenreiter II",
451 tr( "Your device is not\nproperly configured. Please reconfigure!" ) ); 451 tr( "Your device is not\nproperly configured. Please reconfigure!" ) );
452 return; 452 return;
453 } 453 }
454 454
455 // configure device 455 // configure device
456 ONetwork* net = ONetwork::instance(); 456 ONetwork* net = ONetwork::instance();
457 457
458 // TODO: check if interface is wireless and support sniffing for non-wireless interfaces 458 // TODO: check if interface is wireless and support sniffing for non-wireless interfaces
459 459
460 iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); // fails if network is not wireless! 460 iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); // fails if network is not wireless!
461 461
462 // bring device UP 462 // bring device UP
463 if ( cardtype != DEVTYPE_FILE ) 463 if ( cardtype != DEVTYPE_FILE )
464 { 464 {
465 iface->setUp( true ); 465 iface->setUp( true );
466 if ( !iface->isUp() ) 466 if ( !iface->isUp() )
467 { 467 {
468 QMessageBox::warning( this, "Wellenreiter II", 468 QMessageBox::warning( this, "Wellenreiter II",
469 tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) ); 469 tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) );
470 return; 470 return;
471 } 471 }
472 } 472 }
473 // set monitor mode 473 // set monitor mode
474 bool usePrism = configwindow->usePrismHeader(); 474 bool usePrism = configwindow->usePrismHeader();
475 475
476 switch ( cardtype ) 476 switch ( cardtype )
477 { 477 {
478 case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break; 478 case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break;
479 case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break; 479 case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break;
480 case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break; 480 case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break;
481 case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break; 481 case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break;
482 case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break; 482 case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break;
483 case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break; 483 case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break;
484 default: assert( 0 ); // shouldn't reach this 484 default: assert( 0 ); // shouldn't reach this
485 } 485 }
486 486
487 // switch device into monitor mode 487 // switch device into monitor mode
488 if ( cardtype < DEVTYPE_FILE ) 488 if ( cardtype < DEVTYPE_FILE )
489 { 489 {
490 if ( cardtype != DEVTYPE_MANUAL ) 490 if ( cardtype != DEVTYPE_MANUAL )
491 iface->setMode( "monitor" ); 491 iface->setMode( "monitor" );
492 if ( iface->mode() != "monitor" ) 492 if ( iface->mode() != "monitor" )
493 { 493 {
494 if ( QMessageBox::warning( this, "Wellenreiter II", 494 if ( QMessageBox::warning( this, "Wellenreiter II",
495 tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) + 495 tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) +
496 tr( "\nContinue with limited functionality?" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) 496 tr( "\nContinue with limited functionality?" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No )
497 return; 497 return;
498 } 498 }
499 } 499 }
500 500
501 // open GPS device 501 // open GPS device
502 if ( configwindow->enableGPS->isChecked() ) 502 if ( configwindow->enableGPS->isChecked() )
503 { 503 {
504 qDebug( "Wellenreiter:GPS enabled @ %s:%d", (const char*) configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); 504 qDebug( "Wellenreiter:GPS enabled @ %s:%d", (const char*) configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
505 gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); 505 gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
506 } 506 }
507 507
508 // open pcap and start sniffing 508 // open pcap and start sniffing
509 509
510 QString dumpname;
511 if ( configwindow->writeCaptureFile->isChecked() ) // write to a user specified capture file? 510 if ( configwindow->writeCaptureFile->isChecked() ) // write to a user specified capture file?
512 { 511 {
513 dumpname = configwindow->captureFileName->text(); 512 dumpname = configwindow->captureFileName->text();
514 if ( dumpname.isEmpty() ) dumpname = "captureFile"; 513 if ( dumpname.isEmpty() ) dumpname = "captureFile";
515 dumpname.append( '-' ); 514 dumpname.append( '-' );
516 dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); 515 dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) );
517 dumpname.append( ".wellenreiter" ); 516 dumpname.append( ".wellenreiter" );
518 } 517 }
519 else // write it anyway ;) 518 else // write it anyway ;)
520 { 519 {
521 dumpname = "/var/log/dump.wellenreiter"; 520 dumpname = "/var/log/dump.wellenreiter";
522 } 521 }
523 522
524 if ( cardtype != DEVTYPE_FILE ) 523 if ( cardtype != DEVTYPE_FILE )
525 pcap->open( interface ); 524 pcap->open( interface );
526 else 525 else
527 pcap->open( QFile( interface ) ); 526 pcap->open( QFile( interface ) );
528 527
529 qDebug( "Wellenreiter:: dumping to %s", (const char*) dumpname ); 528 qDebug( "Wellenreiter:: dumping to %s", (const char*) dumpname );
530 pcap->openDumpFile( dumpname ); 529 pcap->openDumpFile( dumpname );
531 530
532 if ( !pcap->isOpen() ) 531 if ( !pcap->isOpen() )
533 { 532 {
534 QMessageBox::warning( this, "Wellenreiter II", tr( "Can't open packet capturer for\n'%1':\n" ).arg( 533 QMessageBox::warning( this, "Wellenreiter II", tr( "Can't open packet capturer for\n'%1':\n" ).arg(
535 cardtype == DEVTYPE_FILE ? (const char*) interface : iface->name() ) + QString(strerror( errno ) )); 534 cardtype == DEVTYPE_FILE ? (const char*) interface : iface->name() ) + QString(strerror( errno ) ));
536 return; 535 return;
537 } 536 }
538 537
539 // set capturer to non-blocking mode 538 // set capturer to non-blocking mode
540 pcap->setBlocking( false ); 539 pcap->setBlocking( false );
541 540
542 // start channel hopper 541 // start channel hopper
543 if ( cardtype != DEVTYPE_FILE ) 542 if ( cardtype != DEVTYPE_FILE )
544 { 543 {
545 logwindow->log( QString().sprintf( "(i) Starting channel hopper (d=%d ms)", configwindow->hopInterval->value() ) ); 544 logwindow->log( QString().sprintf( "(i) Starting channel hopper (d=%d ms)", configwindow->hopInterval->value() ) );
546 iface->setChannelHopping( configwindow->hopInterval->value() ); //use interval from config window 545 iface->setChannelHopping( configwindow->hopInterval->value() ); //use interval from config window
547 } 546 }
548 547
549 if ( cardtype != DEVTYPE_FILE ) 548 if ( cardtype != DEVTYPE_FILE )
550 { 549 {
551 // connect socket notifier and start channel hopper 550 // connect socket notifier and start channel hopper
552 connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); 551 connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) );
553 connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); 552 connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) );
554 } 553 }
555 else 554 else
556 { 555 {
557 // start timer for reading packets 556 // start timer for reading packets
558 startTimer( 100 ); 557 startTimer( 100 );
559 } 558 }
560 559
561 logwindow->log( "(i) Started Scanning." ); 560 logwindow->log( "(i) Started Scanning." );
562 sniffing = true; 561 sniffing = true;
563 562
564 #ifdef QWS 563 #ifdef QWS
565 if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() ) 564 if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() )
566 { 565 {
567 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; 566 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable;
568 } 567 }
569 #else 568 #else
570 #warning FIXME: setScreenSaverMode is not operational on the X11 build 569 #warning FIXME: setScreenSaverMode is not operational on the X11 build
571 #endif 570 #endif
572 571
573 emit( startedSniffing() ); 572 emit( startedSniffing() );
574 if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title 573 if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title
575 else 574 else
576 { 575 {
577 assert( parent() ); 576 assert( parent() );
578 ( (QMainWindow*) parent() )->setCaption( tr( "Wellenreiter II - replaying capture file..." ) ); 577 ( (QMainWindow*) parent() )->setCaption( tr( "Wellenreiter II - replaying capture file..." ) );
579 } 578 }
580} 579}
581 580
582 581
583void Wellenreiter::timerEvent( QTimerEvent* ) 582void Wellenreiter::timerEvent( QTimerEvent* )
584{ 583{
585 qDebug( "Wellenreiter::timerEvent()" ); 584 qDebug( "Wellenreiter::timerEvent()" );
586 OPacket* p = pcap->next(); 585 OPacket* p = pcap->next();
587 if ( !p ) // no more packets available 586 if ( !p ) // no more packets available
588 { 587 {
589 stopClicked(); 588 stopClicked();
590 } 589 }
591 else 590 else
592 { 591 {
593 receivePacket( p ); 592 receivePacket( p );
594 delete p; 593 delete p;
595 } 594 }
596} 595}
597 596
598 597
599void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p ) 598void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p )
600{ 599{
601 #ifdef QWS 600 #ifdef QWS
602 if ( action == "TouchSound" ) 601 if ( action == "TouchSound" )
603 ODevice::inst()->touchSound(); 602 ODevice::inst()->touchSound();
604 else if ( action == "AlarmSound" ) 603 else if ( action == "AlarmSound" )
605 ODevice::inst()->alarmSound(); 604 ODevice::inst()->alarmSound();
606 else if ( action == "KeySound" ) 605 else if ( action == "KeySound" )
607 ODevice::inst()->keySound(); 606 ODevice::inst()->keySound();
608 else if ( action == "LedOn" ) 607 else if ( action == "LedOn" )
609 ODevice::inst()->setLedState( Led_Mail, Led_On ); 608 ODevice::inst()->setLedState( Led_Mail, Led_On );
610 else if ( action == "LedOff" ) 609 else if ( action == "LedOff" )
611 ODevice::inst()->setLedState( Led_Mail, Led_Off ); 610 ODevice::inst()->setLedState( Led_Mail, Led_Off );
612 else if ( action == "LogMessage" ) 611 else if ( action == "LogMessage" )
613 logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); 612 logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
614 else if ( action == "MessageBox" ) 613 else if ( action == "MessageBox" )
615 QMessageBox::information( this, "Notification!", 614 QMessageBox::information( this, "Notification!",
616 QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); 615 QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
617 #else 616 #else
618 #warning Actions do not work with Qt/X11 yet 617 #warning Actions do not work with Qt/X11 yet
619 #endif 618 #endif
620} 619}
621 620
622void Wellenreiter::joinNetwork(const QString& type, const QString& essid, int channel, const QString& macaddr) 621void Wellenreiter::joinNetwork(const QString& type, const QString& essid, int channel, const QString& macaddr)
623{ 622{
624 #ifdef QWS 623 #ifdef QWS
625 if ( !iface ) 624 if ( !iface )
626 { 625 {
627 QMessageBox::warning( this, tr( "Can't do that!" ), tr( "No wireless\ninterface available." ) ); 626 QMessageBox::warning( this, tr( "Can't do that!" ), tr( "No wireless\ninterface available." ) );
628 return; 627 return;
629 } 628 }
630 629
631 if ( sniffing ) 630 if ( sniffing )
632 { 631 {
633 QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Stop sniffing before\njoining a net." ) ); 632 QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Stop sniffing before\njoining a net." ) );
634 return; 633 return;
635 } 634 }
636 635
637 qDebug( "joinNetwork() with Interface %s: %s, %s, %d, %s", 636 qDebug( "joinNetwork() with Interface %s: %s, %s, %d, %s",
638 (const char*) iface->name(), 637 (const char*) iface->name(),
639 (const char*) type, 638 (const char*) type,
640 (const char*) essid, 639 (const char*) essid,
641 channel, 640 channel,
642 (const char*) macaddr ); 641 (const char*) macaddr );
643 642
644 QCopEnvelope msg( "QPE/Application/networksettings", "wlan(QString,QString,QString)" ); 643 QCopEnvelope msg( "QPE/Application/networksettings", "wlan(QString,QString,QString)" );
645 int count = 3; 644 int count = 3;
646 qDebug("sending %d messages",count); 645 qDebug("sending %d messages",count);
647 msg << QString("count") << QString::number(count); 646 msg << QString("count") << QString::number(count);
648 qDebug("msg >%s< Mode >%s<", iface->name(),type.latin1() ); 647 qDebug("msg >%s< Mode >%s<", iface->name(),type.latin1() );
649 msg << QString(iface->name()) << QString("Mode") << type; 648 msg << QString(iface->name()) << QString("Mode") << type;
650 qDebug("msg >%s< essid >%s<", iface->name(),essid.latin1()); 649 qDebug("msg >%s< essid >%s<", iface->name(),essid.latin1());
651 msg << QString(iface->name()) << QString("ESSID") << essid; 650 msg << QString(iface->name()) << QString("ESSID") << essid;
652 qDebug("msg >%s< channel >%d<", iface->name(),channel); 651 qDebug("msg >%s< channel >%d<", iface->name(),channel);
653 msg << QString(iface->name()) << QString("Channel") << channel; 652 msg << QString(iface->name()) << QString("Channel") << channel;
654// qDebug("msg >%s< mac >%s<", iface->name(),macaddr); 653// qDebug("msg >%s< mac >%s<", iface->name(),macaddr);
655// msg << QString(iface->name()) << QString("MacAddr") << macaddr; 654// msg << QString(iface->name()) << QString("MacAddr") << macaddr;
656 #else 655 #else
657 QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Function only available on Embedded build" ) ); 656 QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Function only available on Embedded build" ) );
658 #endif 657 #endif
659 658
660} 659}
661 660
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index d882500..58dd1fd 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -1,102 +1,104 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. 2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3** 3**
4** This file is part of Opie Environment. 4** This file is part of Opie Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
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#ifndef WELLENREITER_H 16#ifndef WELLENREITER_H
17#define WELLENREITER_H 17#define WELLENREITER_H
18 18
19#include "wellenreiterbase.h" 19#include "wellenreiterbase.h"
20 20
21#ifdef QWS 21#ifdef QWS
22#include <opie/odevice.h> 22#include <opie/odevice.h>
23using namespace Opie; 23using namespace Opie;
24#endif 24#endif
25 25
26class QTimerEvent; 26class QTimerEvent;
27class QPixmap; 27class QPixmap;
28class OPacket; 28class OPacket;
29class OWaveLanManagementPacket; 29class OWaveLanManagementPacket;
30class OWaveLanDataPacket; 30class OWaveLanDataPacket;
31class OEthernetPacket; 31class OEthernetPacket;
32class OARPPacket; 32class OARPPacket;
33class OMacAddress; 33class OMacAddress;
34class OIPPacket; 34class OIPPacket;
35class OPacketCapturer; 35class OPacketCapturer;
36class OWirelessNetworkInterface; 36class OWirelessNetworkInterface;
37class WellenreiterConfigWindow; 37class WellenreiterConfigWindow;
38class MLogWindow; 38class MLogWindow;
39class MHexWindow; 39class MHexWindow;
40class GPS; 40class GPS;
41 41
42class Wellenreiter : public WellenreiterBase { 42class Wellenreiter : public WellenreiterBase {
43 Q_OBJECT 43 Q_OBJECT
44 44
45 public: 45 public:
46 Wellenreiter( QWidget* parent = 0 ); 46 Wellenreiter( QWidget* parent = 0 );
47 ~Wellenreiter(); 47 ~Wellenreiter();
48 48
49 void setConfigWindow( WellenreiterConfigWindow* cw ); 49 void setConfigWindow( WellenreiterConfigWindow* cw );
50 MScanListView* netView() const { return netview; }; 50 MScanListView* netView() const { return netview; };
51 MLogWindow* logWindow() const { return logwindow; }; 51 MLogWindow* logWindow() const { return logwindow; };
52 MHexWindow* hexWindow() const { return hexwindow; }; 52 MHexWindow* hexWindow() const { return hexwindow; };
53 bool isDaemonRunning() const { return sniffing; }; 53 bool isDaemonRunning() const { return sniffing; };
54 QString captureFileName() const { return dumpname; };
54 55
55 public: 56 public:
56 bool sniffing; 57 bool sniffing;
57 58
58 protected: 59 protected:
59 virtual void timerEvent( QTimerEvent* ); 60 virtual void timerEvent( QTimerEvent* );
60 61
61 public slots: 62 public slots:
62 void initialTimer(); 63 void initialTimer();
63 64
64 void channelHopped(int); 65 void channelHopped(int);
65 void receivePacket(OPacket*); 66 void receivePacket(OPacket*);
66 void startClicked(); 67 void startClicked();
67 void stopClicked(); 68 void stopClicked();
68 69
69 void joinNetwork(const QString&,const QString&,int,const QString&); 70 void joinNetwork(const QString&,const QString&,int,const QString&);
70 71
71 signals: 72 signals:
72 void startedSniffing(); 73 void startedSniffing();
73 void stoppedSniffing(); 74 void stoppedSniffing();
74 75
75 private: 76 private:
76 void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ); 77 void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon );
77 void handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to ); 78 void handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to );
78 void handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to ); 79 void handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to );
79 void handleARPData( OPacket* p, OARPPacket* arp, OMacAddress& from, OMacAddress& to ); 80 void handleARPData( OPacket* p, OARPPacket* arp, OMacAddress& from, OMacAddress& to );
80 void handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& from, OMacAddress& to ); 81 void handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& from, OMacAddress& to );
81 void handleNotification( OPacket* p ); 82 void handleNotification( OPacket* p );
82 void doAction( const QString& action, const QString& protocol, OPacket* p ); 83 void doAction( const QString& action, const QString& protocol, OPacket* p );
83 QObject* childIfToParse( OPacket* p, const QString& protocol ); 84 QObject* childIfToParse( OPacket* p, const QString& protocol );
84 bool checkDumpPacket( OPacket* p ); 85 bool checkDumpPacket( OPacket* p );
85 86
86 private: 87 private:
87 #ifdef QWS 88 #ifdef QWS
88 OSystem _system; // Opie Operating System identifier 89 OSystem _system; // Opie Operating System identifier
89 #endif 90 #endif
90 91
92 QString dumpname;
91 OWirelessNetworkInterface* iface; 93 OWirelessNetworkInterface* iface;
92 OPacketCapturer* pcap; 94 OPacketCapturer* pcap;
93 WellenreiterConfigWindow* configwindow; 95 WellenreiterConfigWindow* configwindow;
94 GPS* gps; 96 GPS* gps;
95 97
96 //void readConfig(); 98 //void readConfig();
97 //void writeConfig(); 99 //void writeConfig();
98}; 100};
99 101
100 102
101 103
102#endif 104#endif