summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/configbase.ui52
-rw-r--r--noncore/net/wellenreiter/gui/configwindow.cpp20
-rw-r--r--noncore/net/wellenreiter/gui/configwindow.h4
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp48
-rw-r--r--noncore/net/wellenreiter/gui/gps.h19
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp40
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h2
7 files changed, 153 insertions, 32 deletions
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui
index c1da98d..d9a0aea 100644
--- a/noncore/net/wellenreiter/gui/configbase.ui
+++ b/noncore/net/wellenreiter/gui/configbase.ui
@@ -267,96 +267,100 @@
267 <string>4</string> 267 <string>4</string>
268 </property> 268 </property>
269 </widget> 269 </widget>
270 <widget row="2" column="2" > 270 <widget row="2" column="2" >
271 <class>QCheckBox</class> 271 <class>QCheckBox</class>
272 <property stdset="1"> 272 <property stdset="1">
273 <name>name</name> 273 <name>name</name>
274 <cstring>channel12</cstring> 274 <cstring>channel12</cstring>
275 </property> 275 </property>
276 <property stdset="1"> 276 <property stdset="1">
277 <name>text</name> 277 <name>text</name>
278 <string>12</string> 278 <string>12</string>
279 </property> 279 </property>
280 </widget> 280 </widget>
281 <widget row="2" column="3" > 281 <widget row="2" column="3" >
282 <class>QCheckBox</class> 282 <class>QCheckBox</class>
283 <property stdset="1"> 283 <property stdset="1">
284 <name>name</name> 284 <name>name</name>
285 <cstring>channel13</cstring> 285 <cstring>channel13</cstring>
286 </property> 286 </property>
287 <property stdset="1"> 287 <property stdset="1">
288 <name>text</name> 288 <name>text</name>
289 <string>13</string> 289 <string>13</string>
290 </property> 290 </property>
291 </widget> 291 </widget>
292 <widget row="2" column="4" > 292 <widget row="2" column="4" >
293 <class>QCheckBox</class> 293 <class>QCheckBox</class>
294 <property stdset="1"> 294 <property stdset="1">
295 <name>name</name> 295 <name>name</name>
296 <cstring>channel14</cstring> 296 <cstring>channel14</cstring>
297 </property> 297 </property>
298 <property stdset="1"> 298 <property stdset="1">
299 <name>text</name> 299 <name>text</name>
300 <string>14</string> 300 <string>14</string>
301 </property> 301 </property>
302 </widget> 302 </widget>
303 </grid> 303 </grid>
304 </widget> 304 </widget>
305 <widget row="0" column="1" rowspan="1" colspan="3" > 305 <widget row="0" column="1" rowspan="1" colspan="3" >
306 <class>QComboBox</class> 306 <class>QComboBox</class>
307 <property stdset="1"> 307 <property stdset="1">
308 <name>name</name> 308 <name>name</name>
309 <cstring>interfaceName</cstring> 309 <cstring>interfaceName</cstring>
310 </property> 310 </property>
311 <property stdset="1"> 311 <property stdset="1">
312 <name>enabled</name> 312 <name>enabled</name>
313 <bool>true</bool> 313 <bool>true</bool>
314 </property> 314 </property>
315 <property stdset="1">
316 <name>editable</name>
317 <bool>false</bool>
318 </property>
315 <property> 319 <property>
316 <name>whatsThis</name> 320 <name>whatsThis</name>
317 <string>Choose the interface used for sniffing.</string> 321 <string>Choose the interface used for sniffing.</string>
318 </property> 322 </property>
319 </widget> 323 </widget>
320 <widget row="1" column="1" rowspan="1" colspan="3" > 324 <widget row="1" column="1" rowspan="1" colspan="3" >
321 <class>QComboBox</class> 325 <class>QComboBox</class>
322 <item> 326 <item>
323 <property> 327 <property>
324 <name>text</name> 328 <name>text</name>
325 <string>&lt;select&gt;</string> 329 <string>&lt;select&gt;</string>
326 </property> 330 </property>
327 </item> 331 </item>
328 <item> 332 <item>
329 <property> 333 <property>
330 <name>text</name> 334 <name>text</name>
331 <string>cisco</string> 335 <string>cisco</string>
332 </property> 336 </property>
333 </item> 337 </item>
334 <item> 338 <item>
335 <property> 339 <property>
336 <name>text</name> 340 <name>text</name>
337 <string>wlan-ng</string> 341 <string>wlan-ng</string>
338 </property> 342 </property>
339 </item> 343 </item>
340 <item> 344 <item>
341 <property> 345 <property>
342 <name>text</name> 346 <name>text</name>
343 <string>hostap</string> 347 <string>hostap</string>
344 </property> 348 </property>
345 </item> 349 </item>
346 <item> 350 <item>
347 <property> 351 <property>
348 <name>text</name> 352 <name>text</name>
349 <string>orinoco</string> 353 <string>orinoco</string>
350 </property> 354 </property>
351 </item> 355 </item>
352 <item> 356 <item>
353 <property> 357 <property>
354 <name>text</name> 358 <name>text</name>
355 <string>&lt;manual&gt;</string> 359 <string>&lt;manual&gt;</string>
356 </property> 360 </property>
357 </item> 361 </item>
358 <item> 362 <item>
359 <property> 363 <property>
360 <name>text</name> 364 <name>text</name>
361 <string>&lt;file&gt;</string> 365 <string>&lt;file&gt;</string>
362 </property> 366 </property>
@@ -975,252 +979,252 @@
975 <name>title</name> 979 <name>title</name>
976 <string>GPS</string> 980 <string>GPS</string>
977 </attribute> 981 </attribute>
978 <widget> 982 <widget>
979 <class>QLayoutWidget</class> 983 <class>QLayoutWidget</class>
980 <property stdset="1"> 984 <property stdset="1">
981 <name>name</name> 985 <name>name</name>
982 <cstring>Layout1</cstring> 986 <cstring>Layout1</cstring>
983 </property> 987 </property>
984 <property stdset="1"> 988 <property stdset="1">
985 <name>geometry</name> 989 <name>geometry</name>
986 <rect> 990 <rect>
987 <x>10</x> 991 <x>10</x>
988 <y>40</y> 992 <y>40</y>
989 <width>216</width> 993 <width>216</width>
990 <height>27</height> 994 <height>27</height>
991 </rect> 995 </rect>
992 </property> 996 </property>
993 <hbox> 997 <hbox>
994 <property stdset="1"> 998 <property stdset="1">
995 <name>margin</name> 999 <name>margin</name>
996 <number>0</number> 1000 <number>0</number>
997 </property> 1001 </property>
998 <property stdset="1"> 1002 <property stdset="1">
999 <name>spacing</name> 1003 <name>spacing</name>
1000 <number>6</number> 1004 <number>6</number>
1001 </property> 1005 </property>
1002 <widget> 1006 <widget>
1003 <class>QLabel</class> 1007 <class>QLabel</class>
1004 <property stdset="1"> 1008 <property stdset="1">
1005 <name>name</name> 1009 <name>name</name>
1006 <cstring>TextLabel1_4</cstring> 1010 <cstring>TextLabel1_4</cstring>
1007 </property> 1011 </property>
1008 <property stdset="1"> 1012 <property stdset="1">
1009 <name>text</name> 1013 <name>text</name>
1010 <string>Host</string> 1014 <string>Host</string>
1011 </property> 1015 </property>
1012 </widget> 1016 </widget>
1013 <widget> 1017 <widget>
1014 <class>QComboBox</class> 1018 <class>QComboBox</class>
1015 <item> 1019 <item>
1016 <property> 1020 <property>
1017 <name>text</name> 1021 <name>text</name>
1018 <string>localhost</string> 1022 <string>localhost</string>
1019 </property> 1023 </property>
1020 </item> 1024 </item>
1021 <property stdset="1"> 1025 <property stdset="1">
1022 <name>name</name> 1026 <name>name</name>
1023 <cstring>ComboBox8</cstring> 1027 <cstring>gpsdHost</cstring>
1024 </property> 1028 </property>
1025 <property stdset="1"> 1029 <property stdset="1">
1026 <name>enabled</name> 1030 <name>enabled</name>
1027 <bool>false</bool> 1031 <bool>false</bool>
1028 </property> 1032 </property>
1029 <property stdset="1"> 1033 <property stdset="1">
1030 <name>editable</name> 1034 <name>editable</name>
1031 <bool>true</bool> 1035 <bool>true</bool>
1032 </property> 1036 </property>
1033 <property stdset="1"> 1037 <property stdset="1">
1034 <name>currentItem</name> 1038 <name>currentItem</name>
1035 <number>0</number> 1039 <number>0</number>
1036 </property> 1040 </property>
1037 </widget> 1041 </widget>
1038 <widget> 1042 <widget>
1039 <class>QLabel</class> 1043 <class>QLabel</class>
1040 <property stdset="1"> 1044 <property stdset="1">
1041 <name>name</name> 1045 <name>name</name>
1042 <cstring>TextLabel2_2</cstring> 1046 <cstring>TextLabel2_2</cstring>
1043 </property> 1047 </property>
1044 <property stdset="1"> 1048 <property stdset="1">
1045 <name>text</name> 1049 <name>text</name>
1046 <string>:</string> 1050 <string>:</string>
1047 </property> 1051 </property>
1048 </widget> 1052 </widget>
1049 <widget> 1053 <widget>
1050 <class>QSpinBox</class> 1054 <class>QSpinBox</class>
1051 <property stdset="1"> 1055 <property stdset="1">
1052 <name>name</name> 1056 <name>name</name>
1053 <cstring>SpinBox2</cstring> 1057 <cstring>gpsdPort</cstring>
1054 </property> 1058 </property>
1055 <property stdset="1"> 1059 <property stdset="1">
1056 <name>enabled</name> 1060 <name>enabled</name>
1057 <bool>false</bool> 1061 <bool>false</bool>
1058 </property> 1062 </property>
1059 <property stdset="1"> 1063 <property stdset="1">
1060 <name>maxValue</name> 1064 <name>maxValue</name>
1061 <number>65535</number> 1065 <number>65535</number>
1062 </property> 1066 </property>
1063 <property stdset="1"> 1067 <property stdset="1">
1064 <name>minValue</name> 1068 <name>minValue</name>
1065 <number>1024</number> 1069 <number>1024</number>
1066 </property> 1070 </property>
1067 <property stdset="1"> 1071 <property stdset="1">
1068 <name>value</name> 1072 <name>value</name>
1069 <number>2947</number> 1073 <number>2947</number>
1070 </property> 1074 </property>
1071 </widget> 1075 </widget>
1072 </hbox> 1076 </hbox>
1073 </widget> 1077 </widget>
1074 <widget> 1078 <widget>
1075 <class>QCheckBox</class> 1079 <class>QLineEdit</class>
1076 <property stdset="1"> 1080 <property stdset="1">
1077 <name>name</name> 1081 <name>name</name>
1078 <cstring>enableGPS</cstring> 1082 <cstring>commandGPS</cstring>
1083 </property>
1084 <property stdset="1">
1085 <name>enabled</name>
1086 <bool>false</bool>
1079 </property> 1087 </property>
1080 <property stdset="1"> 1088 <property stdset="1">
1081 <name>geometry</name> 1089 <name>geometry</name>
1082 <rect> 1090 <rect>
1083 <x>10</x> 1091 <x>10</x>
1084 <y>10</y> 1092 <y>110</y>
1085 <width>199</width> 1093 <width>210</width>
1086 <height>21</height> 1094 <height>22</height>
1087 </rect> 1095 </rect>
1088 </property> 1096 </property>
1089 <property stdset="1"> 1097 <property stdset="1">
1090 <name>text</name> 1098 <name>text</name>
1091 <string>Enable GPS logging w/ gpsd</string> 1099 <string>gpsd -p /dev/ttyS3 -s 57600</string>
1092 </property> 1100 </property>
1093 </widget> 1101 </widget>
1094 <widget> 1102 <widget>
1095 <class>QCheckBox</class> 1103 <class>QCheckBox</class>
1096 <property stdset="1"> 1104 <property stdset="1">
1097 <name>name</name> 1105 <name>name</name>
1098 <cstring>startGPS</cstring> 1106 <cstring>enableGPS</cstring>
1099 </property> 1107 </property>
1100 <property stdset="1"> 1108 <property stdset="1">
1101 <name>geometry</name> 1109 <name>geometry</name>
1102 <rect> 1110 <rect>
1103 <x>10</x> 1111 <x>10</x>
1104 <y>80</y> 1112 <y>10</y>
1105 <width>171</width> 1113 <width>199</width>
1106 <height>21</height> 1114 <height>21</height>
1107 </rect> 1115 </rect>
1108 </property> 1116 </property>
1109 <property stdset="1"> 1117 <property stdset="1">
1110 <name>text</name> 1118 <name>text</name>
1111 <string>Start gpsd on localhost</string> 1119 <string>Enable GPS logging w/ gpsd</string>
1112 </property> 1120 </property>
1113 </widget> 1121 </widget>
1114 <widget> 1122 <widget>
1115 <class>QLineEdit</class> 1123 <class>QCheckBox</class>
1116 <property stdset="1"> 1124 <property stdset="1">
1117 <name>name</name> 1125 <name>name</name>
1118 <cstring>commandGPS</cstring> 1126 <cstring>startGPS</cstring>
1119 </property>
1120 <property stdset="1">
1121 <name>enabled</name>
1122 <bool>false</bool>
1123 </property> 1127 </property>
1124 <property stdset="1"> 1128 <property stdset="1">
1125 <name>geometry</name> 1129 <name>geometry</name>
1126 <rect> 1130 <rect>
1127 <x>10</x> 1131 <x>10</x>
1128 <y>110</y> 1132 <y>80</y>
1129 <width>210</width> 1133 <width>171</width>
1130 <height>22</height> 1134 <height>21</height>
1131 </rect> 1135 </rect>
1132 </property> 1136 </property>
1133 <property stdset="1"> 1137 <property stdset="1">
1134 <name>text</name> 1138 <name>text</name>
1135 <string>gpsd -p /dev/ttyS3 -s 57600</string> 1139 <string>Start gpsd on localhost</string>
1136 </property> 1140 </property>
1137 </widget> 1141 </widget>
1138 </widget> 1142 </widget>
1139 </widget> 1143 </widget>
1140 </grid> 1144 </grid>
1141</widget> 1145</widget>
1142<customwidgets> 1146<customwidgets>
1143 <customwidget> 1147 <customwidget>
1144 <class>ProtocolListView</class> 1148 <class>ProtocolListView</class>
1145 <header location="local">protolistview.h</header> 1149 <header location="local">protolistview.h</header>
1146 <sizehint> 1150 <sizehint>
1147 <width>100</width> 1151 <width>100</width>
1148 <height>100</height> 1152 <height>100</height>
1149 </sizehint> 1153 </sizehint>
1150 <container>0</container> 1154 <container>0</container>
1151 <sizepolicy> 1155 <sizepolicy>
1152 <hordata>3</hordata> 1156 <hordata>3</hordata>
1153 <verdata>3</verdata> 1157 <verdata>3</verdata>
1154 </sizepolicy> 1158 </sizepolicy>
1155 <pixmap>image0</pixmap> 1159 <pixmap>image0</pixmap>
1156 </customwidget> 1160 </customwidget>
1157</customwidgets> 1161</customwidgets>
1158<images> 1162<images>
1159 <image> 1163 <image>
1160 <name>image0</name> 1164 <name>image0</name>
1161 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> 1165 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
1162 </image> 1166 </image>
1163</images> 1167</images>
1164<connections> 1168<connections>
1165 <connection> 1169 <connection>
1166 <sender>hopChannels</sender> 1170 <sender>hopChannels</sender>
1167 <signal>toggled(bool)</signal> 1171 <signal>toggled(bool)</signal>
1168 <receiver>hopInterval</receiver> 1172 <receiver>hopInterval</receiver>
1169 <slot>setEnabled(bool)</slot> 1173 <slot>setEnabled(bool)</slot>
1170 </connection> 1174 </connection>
1171 <connection> 1175 <connection>
1172 <sender>hopChannels</sender> 1176 <sender>hopChannels</sender>
1173 <signal>toggled(bool)</signal> 1177 <signal>toggled(bool)</signal>
1174 <receiver>TextLabel1</receiver> 1178 <receiver>TextLabel1</receiver>
1175 <slot>setEnabled(bool)</slot> 1179 <slot>setEnabled(bool)</slot>
1176 </connection> 1180 </connection>
1177 <connection> 1181 <connection>
1178 <sender>enableActiveScanning</sender> 1182 <sender>enableActiveScanning</sender>
1179 <signal>toggled(bool)</signal> 1183 <signal>toggled(bool)</signal>
1180 <receiver>GroupBox3</receiver> 1184 <receiver>GroupBox3</receiver>
1181 <slot>setEnabled(bool)</slot> 1185 <slot>setEnabled(bool)</slot>
1182 </connection> 1186 </connection>
1183 <connection> 1187 <connection>
1184 <sender>enableActiveScanning</sender> 1188 <sender>enableActiveScanning</sender>
1185 <signal>toggled(bool)</signal> 1189 <signal>toggled(bool)</signal>
1186 <receiver>GroupBox4</receiver> 1190 <receiver>GroupBox4</receiver>
1187 <slot>setEnabled(bool)</slot> 1191 <slot>setEnabled(bool)</slot>
1188 </connection> 1192 </connection>
1189 <connection> 1193 <connection>
1190 <sender>writeCaptureFile</sender> 1194 <sender>writeCaptureFile</sender>
1191 <signal>toggled(bool)</signal> 1195 <signal>toggled(bool)</signal>
1192 <receiver>getCaptureFileName</receiver> 1196 <receiver>getCaptureFileName</receiver>
1193 <slot>setEnabled(bool)</slot> 1197 <slot>setEnabled(bool)</slot>
1194 </connection> 1198 </connection>
1195 <connection> 1199 <connection>
1196 <sender>writeCaptureFile</sender> 1200 <sender>writeCaptureFile</sender>
1197 <signal>toggled(bool)</signal> 1201 <signal>toggled(bool)</signal>
1198 <receiver>captureFileName</receiver> 1202 <receiver>captureFileName</receiver>
1199 <slot>setEnabled(bool)</slot> 1203 <slot>setEnabled(bool)</slot>
1200 </connection> 1204 </connection>
1201 <connection> 1205 <connection>
1202 <sender>writeCaptureFile</sender> 1206 <sender>writeCaptureFile</sender>
1203 <signal>toggled(bool)</signal> 1207 <signal>toggled(bool)</signal>
1204 <receiver>capturePackets</receiver> 1208 <receiver>capturePackets</receiver>
1205 <slot>setEnabled(bool)</slot> 1209 <slot>setEnabled(bool)</slot>
1206 </connection> 1210 </connection>
1207 <connection> 1211 <connection>
1208 <sender>enableGPS</sender> 1212 <sender>enableGPS</sender>
1209 <signal>toggled(bool)</signal> 1213 <signal>toggled(bool)</signal>
1210 <receiver>ComboBox8</receiver> 1214 <receiver>gpsdHost</receiver>
1211 <slot>setEnabled(bool)</slot> 1215 <slot>setEnabled(bool)</slot>
1212 </connection> 1216 </connection>
1213 <connection> 1217 <connection>
1214 <sender>enableGPS</sender> 1218 <sender>enableGPS</sender>
1215 <signal>toggled(bool)</signal> 1219 <signal>toggled(bool)</signal>
1216 <receiver>SpinBox2</receiver> 1220 <receiver>gpsdPort</receiver>
1217 <slot>setEnabled(bool)</slot> 1221 <slot>setEnabled(bool)</slot>
1218 </connection> 1222 </connection>
1219 <connection> 1223 <connection>
1220 <sender>startGPS</sender> 1224 <sender>startGPS</sender>
1221 <signal>toggled(bool)</signal> 1225 <signal>toggled(bool)</signal>
1222 <receiver>commandGPS</receiver> 1226 <receiver>commandGPS</receiver>
1223 <slot>setEnabled(bool)</slot> 1227 <slot>setEnabled(bool)</slot>
1224 </connection> 1228 </connection>
1225</connections> 1229</connections>
1226</UI> 1230</UI>
diff --git a/noncore/net/wellenreiter/gui/configwindow.cpp b/noncore/net/wellenreiter/gui/configwindow.cpp
index 11394d7..a331925 100644
--- a/noncore/net/wellenreiter/gui/configwindow.cpp
+++ b/noncore/net/wellenreiter/gui/configwindow.cpp
@@ -142,51 +142,69 @@ bool WellenreiterConfigWindow::isChannelChecked( int channel ) const
142 } 142 }
143} 143}
144 144
145 145
146void WellenreiterConfigWindow::changedDeviceType(int t) 146void WellenreiterConfigWindow::changedDeviceType(int t)
147{ 147{
148 if ( t != DEVTYPE_FILE ) return; 148 if ( t != DEVTYPE_FILE ) return;
149 QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(false); 149 QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(false);
150 if ( !name.isEmpty() && QFile::exists( name ) ) 150 if ( !name.isEmpty() && QFile::exists( name ) )
151 { 151 {
152 interfaceName->insertItem( name ); 152 interfaceName->insertItem( name );
153 interfaceName->setCurrentItem( interfaceName->count()-1 ); 153 interfaceName->setCurrentItem( interfaceName->count()-1 );
154 } 154 }
155 else 155 else
156 { 156 {
157 deviceType->setCurrentItem( _guess ); 157 deviceType->setCurrentItem( _guess );
158 } 158 }
159 159
160} 160}
161 161
162 162
163void WellenreiterConfigWindow::getCaptureFileNameClicked() 163void WellenreiterConfigWindow::getCaptureFileNameClicked()
164{ 164{
165 QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(true); 165 QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(true);
166 qDebug( "name = %s", (const char*) name ); 166 qDebug( "name = %s", (const char*) name );
167 if ( !name.isEmpty() ) 167 if ( !name.isEmpty() )
168 { 168 {
169 captureFileName->setText( name ); 169 captureFileName->setText( name );
170 } 170 }
171} 171}
172 172
173 173
174void WellenreiterConfigWindow::channelAllClicked(int state) 174void WellenreiterConfigWindow::channelAllClicked(int state)
175{ 175{
176 bool b = state; 176 bool b = state;
177 channel1->setChecked( b ); 177 channel1->setChecked( b );
178 channel2->setChecked( b ); 178 channel2->setChecked( b );
179 channel3->setChecked( b ); 179 channel3->setChecked( b );
180 channel4->setChecked( b ); 180 channel4->setChecked( b );
181 channel5->setChecked( b ); 181 channel5->setChecked( b );
182 channel6->setChecked( b ); 182 channel6->setChecked( b );
183 channel7->setChecked( b ); 183 channel7->setChecked( b );
184 channel8->setChecked( b ); 184 channel8->setChecked( b );
185 channel9->setChecked( b ); 185 channel9->setChecked( b );
186 channel10->setChecked( b ); 186 channel10->setChecked( b );
187 channel11->setChecked( b ); 187 channel11->setChecked( b );
188 channel12->setChecked( b ); 188 channel12->setChecked( b );
189 channel13->setChecked( b ); 189 channel13->setChecked( b );
190 channel14->setChecked( b ); 190 channel14->setChecked( b );
191} 191}
192 192
193
194bool WellenreiterConfigWindow::useGPS() const
195{
196 return enableGPS->isChecked();
197}
198
199
200const QString WellenreiterConfigWindow::gpsHost() const
201{
202 return useGPS() ? gpsdHost->currentText() : QString::null;
203}
204
205
206int WellenreiterConfigWindow::gpsPort() const
207{
208 bool ok;
209 return useGPS() ? gpsdPort->value() : -1;
210}
diff --git a/noncore/net/wellenreiter/gui/configwindow.h b/noncore/net/wellenreiter/gui/configwindow.h
index 32dc840..8f160b1 100644
--- a/noncore/net/wellenreiter/gui/configwindow.h
+++ b/noncore/net/wellenreiter/gui/configwindow.h
@@ -1,62 +1,66 @@
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 WELLENREITERCONFIGWINDOW_H 16#ifndef WELLENREITERCONFIGWINDOW_H
17#define WELLENREITERCONFIGWINDOW_H 17#define WELLENREITERCONFIGWINDOW_H
18 18
19#include "configbase.h" 19#include "configbase.h"
20#include <qmap.h> 20#include <qmap.h>
21#include <qcombobox.h> 21#include <qcombobox.h>
22#include <qstring.h> 22#include <qstring.h>
23 23
24const int DEVTYPE_SELECT = 0; 24const int DEVTYPE_SELECT = 0;
25const int DEVTYPE_CISCO = 1; 25const int DEVTYPE_CISCO = 1;
26const int DEVTYPE_WLAN_NG = 2; 26const int DEVTYPE_WLAN_NG = 2;
27const int DEVTYPE_HOSTAP = 3; 27const int DEVTYPE_HOSTAP = 3;
28const int DEVTYPE_ORINOCO = 4; 28const int DEVTYPE_ORINOCO = 4;
29const int DEVTYPE_MANUAL = 5; 29const int DEVTYPE_MANUAL = 5;
30const int DEVTYPE_FILE = 6; 30const int DEVTYPE_FILE = 6;
31 31
32class WellenreiterConfigWindow; 32class WellenreiterConfigWindow;
33 33
34class WellenreiterConfigWindow : public WellenreiterConfigBase 34class WellenreiterConfigWindow : public WellenreiterConfigBase
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 37
38 public: 38 public:
39 WellenreiterConfigWindow( QWidget * parent = 0, const char * name = "WellenreiterConfigWindow", WFlags f = 0 ); 39 WellenreiterConfigWindow( QWidget * parent = 0, const char * name = "WellenreiterConfigWindow", WFlags f = 0 );
40 int driverType() const; 40 int driverType() const;
41 const QString soundOnNetwork() const { return "";/*netSound->currentText();*/ }; 41 const QString soundOnNetwork() const { return "";/*netSound->currentText();*/ };
42 const QString soundOnBeacon() const { return "";/*beaconSound->currentText();*/ }; 42 const QString soundOnBeacon() const { return "";/*beaconSound->currentText();*/ };
43 static WellenreiterConfigWindow* instance() { return _instance; }; 43 static WellenreiterConfigWindow* instance() { return _instance; };
44 44
45 int hoppingInterval() const; 45 int hoppingInterval() const;
46 bool usePrismHeader() const; 46 bool usePrismHeader() const;
47 bool isChannelChecked( int ) const; 47 bool isChannelChecked( int ) const;
48 48
49 bool useGPS() const;
50 const QString gpsHost() const;
51 int gpsPort() const;
52
49 public slots: 53 public slots:
50 void changedDeviceType(int); 54 void changedDeviceType(int);
51 void getCaptureFileNameClicked(); 55 void getCaptureFileNameClicked();
52 56
53 void channelAllClicked(int); 57 void channelAllClicked(int);
54 58
55 protected: 59 protected:
56 QMap<QString, int> _devicetype; 60 QMap<QString, int> _devicetype;
57 static WellenreiterConfigWindow* _instance; 61 static WellenreiterConfigWindow* _instance;
58 int _guess; 62 int _guess;
59 63
60}; 64};
61 65
62#endif 66#endif
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp
index c3bff53..4a24647 100644
--- a/noncore/net/wellenreiter/gui/gps.cpp
+++ b/noncore/net/wellenreiter/gui/gps.cpp
@@ -1,17 +1,65 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2003 Michael 'Mickey' Lauer. All rights reserved. 2** Copyright (C) 2003 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 "gps.h" 16#include "gps.h"
17 17
18GPS::GPS( QObject* parent, const char * name )
19 :QObject( parent, name )
20{
21 qDebug( "GPS::GPS()" );
22 _socket = new QSocket( this, "gpsd commsock" );
23}
24
25
26GPS::~GPS()
27{
28 qDebug( "GPS::~GPS()" );
29}
30
31
32bool GPS::open( const QString& host, int port )
33{
34 _socket->connectToHost( host, port );
35}
36
37
38float GPS::latitude() const
39{
40 char buf[256];
41
42 int result = _socket->writeBlock( "p\r\n", 3 );
43 if ( result )
44 {
45 qDebug( "GPS write succeeded" );
46 _socket->waitForMore( 20 );
47 if ( _socket->canReadLine() )
48 {
49
50 int num = _socket->readLine( &buf[0], sizeof buf );
51 if ( num )
52 {
53 qDebug( "GPS got line: %s", &buf );
54 return 0.0;
55 }
56 }
57 }
58 return -1.0;
59}
60
61
62float GPS::longitute() const
63{
64}
65
diff --git a/noncore/net/wellenreiter/gui/gps.h b/noncore/net/wellenreiter/gui/gps.h
index e7c3dce..ad0b6de 100644
--- a/noncore/net/wellenreiter/gui/gps.h
+++ b/noncore/net/wellenreiter/gui/gps.h
@@ -1,19 +1,38 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2003 Michael 'Mickey' Lauer. All rights reserved. 2** Copyright (C) 2003 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 GPS_H 16#ifndef GPS_H
17#define GPS_H 17#define GPS_H
18 18
19#include <qobject.h>
20#include <qsocket.h>
21
22class GPS : public QObject
23{
24 Q_OBJECT
25
26 public:
27 GPS( QObject* parent = 0, const char * name = "GPS" );
28 ~GPS();
29
30 bool open( const QString& host = "localhost", int port = 2947 );
31 float latitude() const;
32 float longitute() const;
33
34 private:
35 QSocket* _socket;
36};
37
19#endif // GPS_H 38#endif // GPS_H
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 96733ff..c03debb 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -1,289 +1,300 @@
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 "wellenreiter.h" 19#include "wellenreiter.h"
19#include "scanlist.h" 20#include "scanlist.h"
20#include "logwindow.h" 21#include "logwindow.h"
21#include "hexwindow.h" 22#include "hexwindow.h"
22#include "configwindow.h" 23#include "configwindow.h"
23#include "statwindow.h" 24#include "statwindow.h"
24#include "graphwindow.h" 25#include "graphwindow.h"
25#include "protolistview.h" 26#include "protolistview.h"
26 27
27// Opie 28// Opie
28 29
29#ifdef QWS 30#ifdef QWS
30#include <opie/odevice.h> 31#include <opie/odevice.h>
31#include <qpe/qcopenvelope_qws.h> 32#include <qpe/qcopenvelope_qws.h>
32using namespace Opie; 33using namespace Opie;
33#endif 34#endif
34 35
35#ifdef QWS 36#ifdef QWS
36#include <opie2/oapplication.h> 37#include <opie2/oapplication.h>
37#else 38#else
38#include <qapplication.h> 39#include <qapplication.h>
39#endif 40#endif
40#include <opie2/onetwork.h> 41#include <opie2/onetwork.h>
41#include <opie2/opcap.h> 42#include <opie2/opcap.h>
42 43
43// Qt 44// Qt
44 45
45#include <qcheckbox.h> 46#include <qcheckbox.h>
46#include <qcombobox.h> 47#include <qcombobox.h>
47#include <qdatetime.h> 48#include <qdatetime.h>
48#include <qpushbutton.h> 49#include <qpushbutton.h>
49#include <qlineedit.h> 50#include <qlineedit.h>
50#include <qmessagebox.h> 51#include <qmessagebox.h>
51#include <qobjectlist.h> 52#include <qobjectlist.h>
52#include <qregexp.h> 53#include <qregexp.h>
53#include <qspinbox.h> 54#include <qspinbox.h>
54#include <qtoolbutton.h> 55#include <qtoolbutton.h>
55#include <qmainwindow.h> 56#include <qmainwindow.h>
56 57
57// Standard 58// Standard
58 59
59#include <assert.h> 60#include <assert.h>
60#include <errno.h> 61#include <errno.h>
61#include <unistd.h> 62#include <unistd.h>
62#include <string.h> 63#include <string.h>
63#include <sys/types.h> 64#include <sys/types.h>
64#include <stdlib.h> 65#include <stdlib.h>
65 66
66Wellenreiter::Wellenreiter( QWidget* parent ) 67Wellenreiter::Wellenreiter( QWidget* parent )
67 : WellenreiterBase( parent, 0, 0 ), 68 : WellenreiterBase( parent, 0, 0 ),
68 sniffing( false ), iface( 0 ), configwindow( 0 ) 69 sniffing( false ), iface( 0 ), configwindow( 0 )
69{ 70{
70 71
71 logwindow->log( "(i) Wellenreiter has been started." ); 72 logwindow->log( "(i) Wellenreiter has been started." );
72 73
73 // 74 //
74 // detect operating system 75 // detect operating system
75 // 76 //
76 77
77 #ifdef QWS 78 #ifdef QWS
78 QString sys; 79 QString sys;
79 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() ); 80 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() );
80 _system = ODevice::inst()->system(); 81 _system = ODevice::inst()->system();
81 logwindow->log( sys ); 82 logwindow->log( sys );
82 #endif 83 #endif
83 84
84 netview->setColumnWidthMode( 1, QListView::Manual ); 85 netview->setColumnWidthMode( 1, QListView::Manual );
85 connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ), 86 connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ),
86 this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) ); 87 this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) );
87 pcap = new OPacketCapturer(); 88 pcap = new OPacketCapturer();
89
90 gps = new GPS( this );
88} 91}
89 92
90 93
91Wellenreiter::~Wellenreiter() 94Wellenreiter::~Wellenreiter()
92{ 95{
93 delete pcap; 96 delete pcap;
94} 97}
95 98
96 99
97void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) 100void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw )
98{ 101{
99 configwindow = cw; 102 configwindow = cw;
100} 103}
101 104
102 105
103void Wellenreiter::channelHopped(int c) 106void Wellenreiter::channelHopped(int c)
104{ 107{
105 QString title = "Wellenreiter II -scan- ["; 108 QString title = "Wellenreiter II -scan- [";
106 QString left; 109 QString left;
107 if ( c > 1 ) left.fill( '.', c-1 ); 110 if ( c > 1 ) left.fill( '.', c-1 );
108 title.append( left ); 111 title.append( left );
109 title.append( '|' ); 112 title.append( '|' );
110 if ( c < iface->channels() ) 113 if ( c < iface->channels() )
111 { 114 {
112 QString right; 115 QString right;
113 right.fill( '.', iface->channels()-c ); 116 right.fill( '.', iface->channels()-c );
114 title.append( right ); 117 title.append( right );
115 } 118 }
116 title.append( "]" ); 119 title.append( "]" );
117 //title.append( QString().sprintf( " %02d", c ) ); 120 //title.append( QString().sprintf( " %02d", c ) );
118 assert( parent() ); 121 assert( parent() );
119 ( (QMainWindow*) parent() )->setCaption( title ); 122 ( (QMainWindow*) parent() )->setCaption( title );
120} 123}
121 124
122 125
123void Wellenreiter::handleNotification( OPacket* p ) 126void Wellenreiter::handleNotification( OPacket* p )
124{ 127{
125 QObjectList* l = p->queryList(); 128 QObjectList* l = p->queryList();
126 QObjectListIt it( *l ); 129 QObjectListIt it( *l );
127 QObject* o; 130 QObject* o;
128 131
129 while ( (o = it.current()) != 0 ) 132 while ( (o = it.current()) != 0 )
130 { 133 {
131 QString name = it.current()->name(); 134 QString name = it.current()->name();
132 if ( configwindow->parsePackets->isProtocolChecked( name ) ) 135 if ( configwindow->parsePackets->isProtocolChecked( name ) )
133 { 136 {
134 QString action = configwindow->parsePackets->protocolAction( name ); 137 QString action = configwindow->parsePackets->protocolAction( name );
135 qDebug( "parsePacket-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); 138 qDebug( "parsePacket-action for '%s' seems to be '%s'", (const char*) name, (const char*) action );
136 doAction( action, name, p ); 139 doAction( action, name, p );
137 } 140 }
138 else 141 else
139 { 142 {
140 qDebug( "protocol '%s' not checked in parsePackets.", (const char*) name ); 143 qDebug( "protocol '%s' not checked in parsePackets.", (const char*) name );
141 } 144 }
142 ++it; 145 ++it;
143 } 146 }
144} 147}
145 148
146 149
147void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) 150void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon )
148{ 151{
149 QString type; 152 QString type;
150 if ( beacon->canIBSS() ) 153 if ( beacon->canIBSS() )
151 { 154 {
152 type = "adhoc"; 155 type = "adhoc";
153 } 156 }
154 else if ( beacon->canESS() ) 157 else if ( beacon->canESS() )
155 { 158 {
156 type = "managed"; 159 type = "managed";
157 } 160 }
158 else 161 else
159 { 162 {
160 qWarning( "Wellenreiter::invalid frame [possibly noise] detected!" ); 163 qWarning( "Wellenreiter::invalid frame [possibly noise] detected!" );
161 return; 164 return;
162 } 165 }
163 166
164 OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); 167 OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) );
165 QString essid = ssid ? ssid->ID() : QString("<unknown>"); 168 QString essid = ssid ? ssid->ID() : QString("<unknown>");
166 OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); 169 OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) );
167 int channel = ds ? ds->channel() : -1; 170 int channel = ds ? ds->channel() : -1;
168 171
169 OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); 172 OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) );
173
174 if ( configwindow->enableGPS->isChecked() )
175 {
176 qDebug( "Wellenreiter::gathering GPS data..." );
177 float lat = gps->latitude();
178 qDebug( "Wellenreiter::GPS data received is ( %f , %f )", lat, 0.0 );
179 }
180
170 netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0 ); 181 netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0 );
171 182
172 // update graph window 183 // update graph window
173 if ( ds ) 184 if ( ds )
174 { 185 {
175 OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) ); 186 OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) );
176 if ( prism ) 187 if ( prism )
177 graphwindow->traffic( ds->channel(), prism->signalStrength() ); 188 graphwindow->traffic( ds->channel(), prism->signalStrength() );
178 else 189 else
179 graphwindow->traffic( ds->channel(), 95 ); 190 graphwindow->traffic( ds->channel(), 95 );
180 } 191 }
181} 192}
182 193
183 194
184void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data ) 195void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data )
185{ 196{
186 OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); 197 OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" );
187 if ( wlan->fromDS() && !wlan->toDS() ) 198 if ( wlan->fromDS() && !wlan->toDS() )
188 { 199 {
189 netView()->fromDStraffic( wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); 200 netView()->fromDStraffic( wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() );
190 } 201 }
191 else if ( !wlan->fromDS() && wlan->toDS() ) 202 else if ( !wlan->fromDS() && wlan->toDS() )
192 { 203 {
193 netView()->toDStraffic( wlan->macAddress2(), wlan->macAddress3(), wlan->macAddress1() ); 204 netView()->toDStraffic( wlan->macAddress2(), wlan->macAddress3(), wlan->macAddress1() );
194 } 205 }
195 else if ( wlan->fromDS() && wlan->toDS() ) 206 else if ( wlan->fromDS() && wlan->toDS() )
196 { 207 {
197 netView()->WDStraffic( wlan->macAddress4(), wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); 208 netView()->WDStraffic( wlan->macAddress4(), wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() );
198 } 209 }
199 else 210 else
200 { 211 {
201 netView()->IBSStraffic( wlan->macAddress2(), wlan->macAddress1(), wlan->macAddress3() ); 212 netView()->IBSStraffic( wlan->macAddress2(), wlan->macAddress1(), wlan->macAddress3() );
202 } 213 }
203 214
204 OARPPacket* arp = (OARPPacket*) p->child( "ARP" ); 215 OARPPacket* arp = (OARPPacket*) p->child( "ARP" );
205 if ( arp ) 216 if ( arp )
206 { 217 {
207 qDebug( "Received ARP traffic (type '%s'): ", (const char*) arp->type() ); 218 qDebug( "Received ARP traffic (type '%s'): ", (const char*) arp->type() );
208 if ( arp->type() == "REQUEST" ) 219 if ( arp->type() == "REQUEST" )
209 { 220 {
210 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); 221 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() );
211 } 222 }
212 else if ( arp->type() == "REPLY" ) 223 else if ( arp->type() == "REPLY" )
213 { 224 {
214 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); 225 netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() );
215 netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() ); 226 netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() );
216 } 227 }
217 } 228 }
218 229
219 OIPPacket* ip = (OIPPacket*) p->child( "IP" ); 230 OIPPacket* ip = (OIPPacket*) p->child( "IP" );
220 if ( ip ) 231 if ( ip )
221 { 232 {
222 qDebug( "Received IP packet." ); 233 qDebug( "Received IP packet." );
223 } 234 }
224} 235}
225 236
226 237
227QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol ) 238QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol )
228{ 239{
229 if ( configwindow->parsePackets->isProtocolChecked( protocol ) ) 240 if ( configwindow->parsePackets->isProtocolChecked( protocol ) )
230 if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" ) 241 if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" )
231 return 0; 242 return 0;
232 243
233 return p->child( protocol ); 244 return p->child( protocol );
234} 245}
235 246
236 247
237bool Wellenreiter::checkDumpPacket( OPacket* p ) 248bool Wellenreiter::checkDumpPacket( OPacket* p )
238{ 249{
239 // go through all child packets and see if one is inside the child hierarchy for p 250 // go through all child packets and see if one is inside the child hierarchy for p
240 // if so, do what the user requested (protocolAction), e.g. pass or discard 251 // if so, do what the user requested (protocolAction), e.g. pass or discard
241 if ( !configwindow->writeCaptureFile->isOn() ) 252 if ( !configwindow->writeCaptureFile->isChecked() )
242 return false; 253 return false;
243 254
244 QObjectList* l = p->queryList(); 255 QObjectList* l = p->queryList();
245 QObjectListIt it( *l ); 256 QObjectListIt it( *l );
246 QObject* o; 257 QObject* o;
247 258
248 while ( (o = it.current()) != 0 ) 259 while ( (o = it.current()) != 0 )
249 { 260 {
250 QString name = it.current()->name(); 261 QString name = it.current()->name();
251 if ( configwindow->capturePackets->isProtocolChecked( name ) ) 262 if ( configwindow->capturePackets->isProtocolChecked( name ) )
252 { 263 {
253 QString action = configwindow->capturePackets->protocolAction( name ); 264 QString action = configwindow->capturePackets->protocolAction( name );
254 qDebug( "capturePackets-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); 265 qDebug( "capturePackets-action for '%s' seems to be '%s'", (const char*) name, (const char*) action );
255 if ( action == "Discard" ) 266 if ( action == "Discard" )
256 { 267 {
257 logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) ); 268 logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) );
258 return false; 269 return false;
259 } 270 }
260 } 271 }
261 else 272 else
262 { 273 {
263 qDebug( "protocol '%s' not checked in capturePackets.", (const char*) name ); 274 qDebug( "protocol '%s' not checked in capturePackets.", (const char*) name );
264 } 275 }
265 ++it; 276 ++it;
266 } 277 }
267 return true; 278 return true;
268} 279}
269 280
270 281
271void Wellenreiter::receivePacket( OPacket* p ) 282void Wellenreiter::receivePacket( OPacket* p )
272{ 283{
273 hexWindow()->log( p->dump( 8 ) ); 284 hexWindow()->log( p->dump( 8 ) );
274 285
275 if ( checkDumpPacket( p ) ) 286 if ( checkDumpPacket( p ) )
276 { 287 {
277 pcap->dump( p ); 288 pcap->dump( p );
278 } 289 }
279 290
280 // check if we received a beacon frame 291 // check if we received a beacon frame
281 OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); 292 OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) );
282 if ( beacon && beacon->managementType() == "Beacon" ) 293 if ( beacon && beacon->managementType() == "Beacon" )
283 { 294 {
284 handleBeacon( p, beacon ); 295 handleBeacon( p, beacon );
285 return; 296 return;
286 } 297 }
287 298
288 //TODO: WEP check here 299 //TODO: WEP check here
289 300
@@ -312,170 +323,185 @@ void Wellenreiter::stopClicked()
312 323
313 pcap->close(); 324 pcap->close();
314 sniffing = false; 325 sniffing = false;
315 326
316 if ( iface ) 327 if ( iface )
317 { 328 {
318 // switch off monitor mode 329 // switch off monitor mode
319 iface->setMonitorMode( false ); 330 iface->setMonitorMode( false );
320 // switch off promisc flag 331 // switch off promisc flag
321 iface->setPromiscuousMode( false ); 332 iface->setPromiscuousMode( false );
322 333
323 system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess 334 system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess
324 } 335 }
325 336
326 logwindow->log( "(i) Stopped Scanning." ); 337 logwindow->log( "(i) Stopped Scanning." );
327 assert( parent() ); 338 assert( parent() );
328 ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" ); 339 ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" );
329 340
330 // message the user 341 // message the user
331 QMessageBox::information( this, "Wellenreiter II", 342 QMessageBox::information( this, "Wellenreiter II",
332 tr( "Your wireless card\nshould now be usable again." ) ); 343 tr( "Your wireless card\nshould now be usable again." ) );
333 344
334 sniffing = false; 345 sniffing = false;
335 emit( stoppedSniffing() ); 346 emit( stoppedSniffing() );
336 347
337 // print out statistics 348 // print out statistics
338 for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it ) 349 for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it )
339 statwindow->updateCounter( it.key(), it.data() ); 350 statwindow->updateCounter( it.key(), it.data() );
340} 351}
341 352
342 353
343void Wellenreiter::startClicked() 354void Wellenreiter::startClicked()
344{ 355{
345 // get configuration from config window 356 // get configuration from config window
346 357
347 const QString& interface = configwindow->interfaceName->currentText(); 358 const QString& interface = configwindow->interfaceName->currentText();
348 const int cardtype = configwindow->driverType(); 359 const int cardtype = configwindow->driverType();
349 const int interval = configwindow->hoppingInterval(); 360 const int interval = configwindow->hoppingInterval();
350 361
351 if ( ( interface == "" ) || ( cardtype == 0 ) ) 362 if ( ( interface == "" ) || ( cardtype == 0 ) )
352 { 363 {
353 QMessageBox::information( this, "Wellenreiter II", 364 QMessageBox::information( this, "Wellenreiter II",
354 tr( "Your device is not\nproperly configured. Please reconfigure!" ) ); 365 tr( "Your device is not\nproperly configured. Please reconfigure!" ) );
355 return; 366 return;
356 } 367 }
357 368
358 // configure device 369 // configure device
359 ONetwork* net = ONetwork::instance(); 370 ONetwork* net = ONetwork::instance();
360 iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); 371
372 // TODO: check if interface is wireless and support sniffing for non-wireless interfaces
373
374 iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); // fails if network is not wireless!
361 375
362 // bring device UP 376 // bring device UP
363 iface->setUp( true ); 377 iface->setUp( true );
364 if ( !iface->isUp() ) 378 if ( !iface->isUp() )
365 { 379 {
366 QMessageBox::warning( this, "Wellenreiter II", 380 QMessageBox::warning( this, "Wellenreiter II",
367 tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) ); 381 tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) );
368 return; 382 return;
369 } 383 }
370 384
371 // set monitor mode 385 // set monitor mode
372 bool usePrism = configwindow->usePrismHeader(); 386 bool usePrism = configwindow->usePrismHeader();
373 387
374 switch ( cardtype ) 388 switch ( cardtype )
375 { 389 {
376 case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break; 390 case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break;
377 case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break; 391 case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break;
378 case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break; 392 case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break;
379 case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break; 393 case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break;
380 case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break; 394 case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break;
381 case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break; 395 case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break;
382 default: assert( 0 ); // shouldn't reach this 396 default: assert( 0 ); // shouldn't reach this
383 } 397 }
384 398
385 // switch device into monitor mode 399 // switch device into monitor mode
386 if ( cardtype < DEVTYPE_FILE ) 400 if ( cardtype < DEVTYPE_FILE )
387 { 401 {
388 if ( cardtype != DEVTYPE_MANUAL ) 402 if ( cardtype != DEVTYPE_MANUAL )
389 iface->setMonitorMode( true ); 403 iface->setMonitorMode( true );
390 if ( !iface->monitorMode() ) 404 if ( !iface->monitorMode() )
391 { 405 {
392 QMessageBox::warning( this, "Wellenreiter II", 406 if ( QMessageBox::warning( this, "Wellenreiter II",
393 tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) ); 407 tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) +
394 return; 408 tr( "\nContinue with limited functionality?" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No )
409 return;
395 } 410 }
396 } 411 }
397 412
413 // open GPS device
414 if ( configwindow->enableGPS->isChecked() )
415 {
416 qDebug( "Wellenreiter:GPS enabled @ %s:%d", (const char*) configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
417 gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
418 }
419
398 // open pcap and start sniffing 420 // open pcap and start sniffing
399 if ( cardtype != DEVTYPE_FILE ) 421 if ( cardtype != DEVTYPE_FILE )
400 { 422 {
401 pcap->open( interface ); 423 pcap->open( interface );
402 424
403 if ( configwindow->writeCaptureFile->isOn() ) 425 if ( configwindow->writeCaptureFile->isChecked() )
404 { 426 {
405 QString dumpname( configwindow->captureFileName->text() ); 427 QString dumpname( configwindow->captureFileName->text() );
428 if ( dumpname.isEmpty() ) dumpname = "captureFile";
406 dumpname.append( '-' ); 429 dumpname.append( '-' );
407 dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); 430 dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) );
408 dumpname.append( ".wellenreiter" ); 431 dumpname.append( ".wellenreiter" );
409 pcap->openDumpFile( dumpname ); 432 pcap->openDumpFile( dumpname );
410 } 433 }
411 else 434 else
412 { 435 {
413 pcap->open( interface ); 436 pcap->open( interface );
414 } 437 }
415 } 438 }
416 else 439 else
417 { 440 {
418 pcap->open( QFile( interface ) ); 441 pcap->open( QFile( interface ) );
419 } 442 }
420 443
421 if ( !pcap->isOpen() ) 444 if ( !pcap->isOpen() )
422 { 445 {
423 QMessageBox::warning( this, "Wellenreiter II", 446 QMessageBox::warning( this, "Wellenreiter II",
424 tr( "Can't open packet capturer for '%1':\n" ).arg( iface->name() ) + QString(strerror( errno ) )); 447 tr( "Can't open packet capturer for '%1':\n" ).arg( iface->name() ) + QString(strerror( errno ) ));
425 return; 448 return;
426 } 449 }
427 450
428 // set capturer to non-blocking mode 451 // set capturer to non-blocking mode
429 pcap->setBlocking( false ); 452 pcap->setBlocking( false );
430 453
431 // start channel hopper 454 // start channel hopper
432 if ( cardtype != DEVTYPE_FILE ) 455 if ( cardtype != DEVTYPE_FILE )
433 iface->setChannelHopping( 1000 ); //use interval from config window 456 {
457 logwindow->log( QString().sprintf( "(i) Starting channel hopper (d=%d ms)", configwindow->hopInterval->value() ) );
458 iface->setChannelHopping( configwindow->hopInterval->value() ); //use interval from config window
459 }
434 460
435 if ( cardtype != DEVTYPE_FILE ) 461 if ( cardtype != DEVTYPE_FILE )
436 { 462 {
437 // connect socket notifier and start channel hopper 463 // connect socket notifier and start channel hopper
438 connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); 464 connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) );
439 connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); 465 connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) );
440 } 466 }
441 else 467 else
442 { 468 {
443 // start timer for reading packets 469 // start timer for reading packets
444 startTimer( 100 ); 470 startTimer( 100 );
445 } 471 }
446 472
447 logwindow->log( "(i) Started Scanning." ); 473 logwindow->log( "(i) Started Scanning." );
448 sniffing = true; 474 sniffing = true;
449 emit( startedSniffing() ); 475 emit( startedSniffing() );
450 if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title 476 if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title
451 else 477 else
452 { 478 {
453 assert( parent() ); 479 assert( parent() );
454 ( (QMainWindow*) parent() )->setCaption( tr( "Wellenreiter II - replaying capture file..." ) ); 480 ( (QMainWindow*) parent() )->setCaption( tr( "Wellenreiter II - replaying capture file..." ) );
455 } 481 }
456} 482}
457 483
458 484
459void Wellenreiter::timerEvent( QTimerEvent* ) 485void Wellenreiter::timerEvent( QTimerEvent* )
460{ 486{
461 qDebug( "Wellenreiter::timerEvent()" ); 487 qDebug( "Wellenreiter::timerEvent()" );
462 OPacket* p = pcap->next(); 488 OPacket* p = pcap->next();
463 if ( !p ) // no more packets available 489 if ( !p ) // no more packets available
464 { 490 {
465 stopClicked(); 491 stopClicked();
466 } 492 }
467 else 493 else
468 { 494 {
469 receivePacket( p ); 495 receivePacket( p );
470 delete p; 496 delete p;
471 } 497 }
472} 498}
473 499
474 500
475void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p ) 501void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p )
476{ 502{
477 #ifdef QWS 503 #ifdef QWS
478 if ( action == "TouchSound" ) 504 if ( action == "TouchSound" )
479 ODevice::inst()->touchSound(); 505 ODevice::inst()->touchSound();
480 else if ( action == "AlarmSound" ) 506 else if ( action == "AlarmSound" )
481 ODevice::inst()->alarmSound(); 507 ODevice::inst()->alarmSound();
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index e1062df..43f6f99 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -1,91 +1,93 @@
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 OPacketCapturer; 31class OPacketCapturer;
32class OWirelessNetworkInterface; 32class OWirelessNetworkInterface;
33class WellenreiterConfigWindow; 33class WellenreiterConfigWindow;
34class MLogWindow; 34class MLogWindow;
35class MHexWindow; 35class MHexWindow;
36class GPS;
36 37
37class Wellenreiter : public WellenreiterBase { 38class Wellenreiter : public WellenreiterBase {
38 Q_OBJECT 39 Q_OBJECT
39 40
40 public: 41 public:
41 Wellenreiter( QWidget* parent = 0 ); 42 Wellenreiter( QWidget* parent = 0 );
42 ~Wellenreiter(); 43 ~Wellenreiter();
43 44
44 void setConfigWindow( WellenreiterConfigWindow* cw ); 45 void setConfigWindow( WellenreiterConfigWindow* cw );
45 MScanListView* netView() const { return netview; }; 46 MScanListView* netView() const { return netview; };
46 MLogWindow* logWindow() const { return logwindow; }; 47 MLogWindow* logWindow() const { return logwindow; };
47 MHexWindow* hexWindow() const { return hexwindow; }; 48 MHexWindow* hexWindow() const { return hexwindow; };
48 bool isDaemonRunning() const { return sniffing; }; 49 bool isDaemonRunning() const { return sniffing; };
49 50
50 public: 51 public:
51 bool sniffing; 52 bool sniffing;
52 53
53 protected: 54 protected:
54 virtual void timerEvent( QTimerEvent* ); 55 virtual void timerEvent( QTimerEvent* );
55 56
56 public slots: 57 public slots:
57 void channelHopped(int); 58 void channelHopped(int);
58 void receivePacket(OPacket*); 59 void receivePacket(OPacket*);
59 void startClicked(); 60 void startClicked();
60 void stopClicked(); 61 void stopClicked();
61 62
62 void joinNetwork(const QString&,const QString&,int,const QString&); 63 void joinNetwork(const QString&,const QString&,int,const QString&);
63 64
64 signals: 65 signals:
65 void startedSniffing(); 66 void startedSniffing();
66 void stoppedSniffing(); 67 void stoppedSniffing();
67 68
68 private: 69 private:
69 void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ); 70 void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon );
70 void handleData( OPacket* p, OWaveLanDataPacket* data ); 71 void handleData( OPacket* p, OWaveLanDataPacket* data );
71 void handleNotification( OPacket* p ); 72 void handleNotification( OPacket* p );
72 void doAction( const QString& action, const QString& protocol, OPacket* p ); 73 void doAction( const QString& action, const QString& protocol, OPacket* p );
73 QObject* childIfToParse( OPacket* p, const QString& protocol ); 74 QObject* childIfToParse( OPacket* p, const QString& protocol );
74 bool checkDumpPacket( OPacket* p ); 75 bool checkDumpPacket( OPacket* p );
75 76
76 private: 77 private:
77 #ifdef QWS 78 #ifdef QWS
78 OSystem _system; // Opie Operating System identifier 79 OSystem _system; // Opie Operating System identifier
79 #endif 80 #endif
80 81
81 OWirelessNetworkInterface* iface; 82 OWirelessNetworkInterface* iface;
82 OPacketCapturer* pcap; 83 OPacketCapturer* pcap;
83 WellenreiterConfigWindow* configwindow; 84 WellenreiterConfigWindow* configwindow;
85 GPS* gps;
84 86
85 //void readConfig(); 87 //void readConfig();
86 //void writeConfig(); 88 //void writeConfig();
87}; 89};
88 90
89 91
90 92
91#endif 93#endif