update kismet package and fix broken ssid handling
[openwrt/svn-archive/archive.git] / openwrt / package / kismet / patches / 120-cleanup.patch
1 diff -urN kismet.dev/Makefile.in kismet.dev2/Makefile.in
2 --- kismet.dev/Makefile.in 2005-08-16 03:22:51.000000000 +0200
3 +++ kismet.dev2/Makefile.in 2005-08-23 01:59:25.643220248 +0200
4 @@ -39,26 +39,25 @@
5 DEPEND = .depend
6
7 # Objects
8 -PSO = util.o ringbuf.o configfile.o speech.o ifcontrol.o iwcontrol.o packet.o \
9 - pcapsource.o prism2source.o wtapfilesource.o wsp100source.o \
10 - dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \
11 - wtapdump.o wtaplocaldump.o gpsdump.o airsnortdump.o fifodump.o \
12 - gpsd.o manuf.o \
13 +PSO = util.o ringbuf.o configfile.o ifcontrol.o iwcontrol.o packet.o \
14 + pcapsource.o manuf.o \
15 + dronesource.o packetsourcetracker.o kis_packsources.o \
16 + wtapdump.o wtaplocaldump.o airsnortdump.o fifodump.o \
17 packetracker.o timetracker.o alertracker.o finitestate.o \
18 getopt.o \
19 tcpserver.o server_protocols.o server_globals.o kismet_server.o
20 PS = kismet_server
21
22 DRONEO = util.o ringbuf.o configfile.o getopt.o ifcontrol.o iwcontrol.o packet.o \
23 - tcpstreamer.o prism2source.o pcapsource.o wtapfilesource.o wsp100source.o \
24 - dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \
25 - timetracker.o gpsd.o server_globals.o kismet_drone.o
26 + tcpstreamer.o pcapsource.o \
27 + dronesource.o packetsourcetracker.o kis_packsources.o \
28 + timetracker.o server_globals.o kismet_drone.o
29 DRONE = kismet_drone
30
31 -NCO = util.o configfile.o speech.o manuf.o tcpclient.o \
32 +NCO = util.o configfile.o manuf.o tcpclient.o \
33 frontend.o cursesfront.o \
34 panelfront.o panelfront_display.o panelfront_input.o \
35 - gpsd.o getopt.o kismet_client.o
36 + getopt.o kismet_client.o
37 NC = kismet_client
38
39 GPSLO = getopt.o util.o configfile.o expat.o manuf.o \
40 diff -urN kismet.dev/cursesfront.cc kismet.dev2/cursesfront.cc
41 --- kismet.dev/cursesfront.cc 2005-08-16 03:22:51.000000000 +0200
42 +++ kismet.dev2/cursesfront.cc 2005-08-23 01:59:25.643220248 +0200
43 @@ -30,7 +30,6 @@
44 // Enable the protocols we can use
45 void NCurseFront::AddClient(TcpClient *in_client) {
46 client = in_client;
47 - client->EnableProtocol("GPS");
48 client->EnableProtocol("INFO");
49 client->EnableProtocol("REMOVE");
50 client->EnableProtocol("NETWORK");
51 @@ -88,32 +87,8 @@
52 mvwaddstr(netborder, 1, 2, " SSID T W Ch Data LLC Crypt Wk Flags");
53 }
54
55 - char gpsdata[1024];
56 - float lat, lon, alt, spd, heading;
57 int mode;
58
59 - client->FetchLoc(&lat, &lon, &alt, &spd, &heading, &mode);
60 -
61 - if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && mode == 0)) {
62 -
63 - char fix[16];
64 -
65 - if (mode == -1)
66 - snprintf(fix, 16, "No signal");
67 - else if (mode == 2)
68 - snprintf(fix, 5, "2D");
69 - else if (mode == 3)
70 - snprintf(fix, 5, "3D");
71 - else
72 - snprintf(fix, 5, "NONE");
73 -
74 - snprintf(gpsdata, 1024, "Lat %.3f Lon %.3f Alt %.3f Spd %.3f Fix %s",
75 - lat, lon, alt, spd, fix);
76 -
77 - mvwaddstr(netborder, LINES-statheight-1, 2, gpsdata);
78 -
79 - }
80 -
81 box(infoborder, '|', '-');
82 mvwaddstr(infoborder, 0, 2, "Info");
83
84 diff -urN kismet.dev/dronesource.cc kismet.dev2/dronesource.cc
85 --- kismet.dev/dronesource.cc 2005-08-16 03:22:51.000000000 +0200
86 +++ kismet.dev2/dronesource.cc 2005-08-23 01:59:25.644220096 +0200
87 @@ -201,9 +201,6 @@
88 return -1;
89 }
90
91 - // Grab the GPS info
92 - gps_enabled = vpkt.gps_enabled;
93 -
94 stream_recv_bytes = 0;
95
96 // printf("debug - version packet valid\n\n");
97 @@ -336,25 +333,6 @@
98 packet->encoding = (encoding_type) phdr.encoding;
99 packet->datarate = (uint32_t) ntohl(phdr.datarate);
100
101 - if (gps_enabled) {
102 - // If the drone is sending us GPS data, use it
103 - packet->gps_lat = Pair2Float((int16_t) ntohs(phdr.gps_lat),
104 - (int64_t) kis_ntoh64(phdr.gps_lat_mant));
105 - packet->gps_lon = Pair2Float((int16_t) ntohs(phdr.gps_lon),
106 - (int64_t) kis_ntoh64(phdr.gps_lon_mant));
107 - packet->gps_alt = Pair2Float((int16_t) ntohs(phdr.gps_alt),
108 - (int64_t) kis_ntoh64(phdr.gps_alt_mant));
109 - packet->gps_spd = Pair2Float((int16_t) ntohs(phdr.gps_spd),
110 - (int64_t) kis_ntoh64(phdr.gps_spd_mant));
111 - packet->gps_heading = Pair2Float((int16_t) ntohs(phdr.gps_heading),
112 - (int64_t) kis_ntoh64(phdr.gps_heading_mant));
113 - packet->gps_fix = phdr.gps_fix;
114 - } else if (gpsd != NULL) {
115 - // Otherwise, no
116 - gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt,
117 - &packet->gps_spd, &packet->gps_heading, &packet->gps_fix);
118 - }
119 -
120 packet->data = data;
121 packet->moddata = moddata;
122 packet->modified = 0;
123 diff -urN kismet.dev/dronesource.h kismet.dev2/dronesource.h
124 --- kismet.dev/dronesource.h 2005-08-16 03:22:51.000000000 +0200
125 +++ kismet.dev2/dronesource.h 2005-08-23 01:59:25.644220096 +0200
126 @@ -79,9 +79,6 @@
127 uint8_t databuf[MAX_PACKET_LEN];
128
129 unsigned int resyncing;
130 -
131 - // Is the drone pushing GPS data to us?
132 - int gps_enabled;
133 };
134
135 // Nothing but a registrant for us
136 diff -urN kismet.dev/frontend.cc kismet.dev2/frontend.cc
137 --- kismet.dev/frontend.cc 2005-08-16 03:22:51.000000000 +0200
138 +++ kismet.dev2/frontend.cc 2005-08-23 01:59:25.645219944 +0200
139 @@ -248,33 +248,6 @@
140
141 }
142
143 - // Aggregate the GPS data
144 - if (wnet->aggregate_points > 0) {
145 - dnet->virtnet->aggregate_lat += wnet->aggregate_lat;
146 - dnet->virtnet->aggregate_lon += wnet->aggregate_lon;
147 - dnet->virtnet->aggregate_alt += wnet->aggregate_alt;
148 - dnet->virtnet->aggregate_points += wnet->aggregate_points;
149 - }
150 -
151 - if (wnet->gps_fixed > dnet->virtnet->gps_fixed)
152 - dnet->virtnet->gps_fixed = wnet->gps_fixed;
153 - if (wnet->min_lat < dnet->virtnet->min_lat || dnet->virtnet->min_lat == 0)
154 - dnet->virtnet->min_lat = wnet->min_lat;
155 - if (wnet->min_lon < dnet->virtnet->min_lon || dnet->virtnet->min_lon == 0)
156 - dnet->virtnet->min_lon = wnet->min_lon;
157 - if (wnet->min_alt < dnet->virtnet->min_alt || dnet->virtnet->min_alt == 0)
158 - dnet->virtnet->min_alt = wnet->min_alt;
159 - if (wnet->min_spd < dnet->virtnet->min_spd || dnet->virtnet->min_spd == 0)
160 - dnet->virtnet->min_spd = wnet->min_spd;
161 - if (wnet->max_lat > dnet->virtnet->max_lat || dnet->virtnet->max_lat == 0)
162 - dnet->virtnet->max_lat = wnet->max_lat;
163 - if (wnet->max_lon > dnet->virtnet->max_lon || dnet->virtnet->max_lon == 0)
164 - dnet->virtnet->max_lon = wnet->max_lon;
165 - if (wnet->max_alt > dnet->virtnet->max_alt || dnet->virtnet->max_alt == 0)
166 - dnet->virtnet->max_alt = wnet->max_alt;
167 - if (wnet->max_spd > dnet->virtnet->max_spd || dnet->virtnet->max_spd == 0)
168 - dnet->virtnet->max_spd = wnet->max_spd;
169 -
170 // Aggregate the carriers and encodings
171 dnet->virtnet->carrier_set |= wnet->carrier_set;
172 dnet->virtnet->encoding_set |= wnet->encoding_set;
173 diff -urN kismet.dev/kis_packsources.cc kismet.dev2/kis_packsources.cc
174 --- kismet.dev/kis_packsources.cc 2005-08-23 00:59:04.465379568 +0200
175 +++ kismet.dev2/kis_packsources.cc 2005-08-23 02:01:08.585570632 +0200
176 @@ -60,13 +60,8 @@
177
178 #if defined(HAVE_LIBPCAP) && defined(HAVE_LINUX_WIRELESS)
179 // Linux wext-driven cards
180 - sourcetracker->RegisterPacketsource("cisco", 1, "IEEE80211b", 6,
181 - pcapsource_wext_registrant,
182 - monitor_cisco, unmonitor_cisco,
183 - chancontrol_wext, 1);
184 - sourcetracker->RegisterPacketsource("cisco_wifix", 1, "IEEE80211b", 6,
185 - pcapsource_ciscowifix_registrant,
186 - monitor_cisco_wifix, NULL, NULL, 1);
187 + REG_EMPTY_CARD(sourcetracker, "cisco");
188 + REG_EMPTY_CARD(sourcetracker, "cisco_wifix");
189 sourcetracker->RegisterPacketsource("hostap", 1, "IEEE80211b", 6,
190 pcapsource_wext_registrant,
191 monitor_hostap, unmonitor_hostap,
192 @@ -79,21 +74,9 @@
193 pcapsource_wext_registrant,
194 monitor_orinoco, unmonitor_orinoco,
195 chancontrol_orinoco, 1);
196 - sourcetracker->RegisterPacketsource("acx100", 1, "IEEE80211b", 6,
197 - pcapsource_wextfcs_registrant,
198 - monitor_acx100, unmonitor_acx100,
199 - chancontrol_wext, 1);
200 - sourcetracker->RegisterPacketsource("admtek", 1, "IEEE80211b", 6,
201 - pcapsource_wext_registrant,
202 - monitor_admtek, unmonitor_admtek,
203 - chancontrol_wext, 1);
204 - sourcetracker->RegisterPacketsource("vtar5k", 1, "IEEE80211a", 36,
205 - pcapsource_wext_registrant,
206 - monitor_vtar5k, NULL, chancontrol_wext, 1);
207 - sourcetracker->RegisterPacketsource("atmel_usb", 1, "IEEE80211b", 6,
208 - pcapsource_wext_registrant,
209 - monitor_wext, unmonitor_wext,
210 - chancontrol_wext, 1);
211 + REG_EMPTY_CARD(sourcetracker, "acx100");
212 + REG_EMPTY_CARD(sourcetracker, "admtek");
213 + REG_EMPTY_CARD(sourcetracker, "vtar5k");
214
215 sourcetracker->RegisterPacketsource("madwifi_a", 1, "IEEE80211a", 36,
216 pcapsource_wextfcs_registrant,
217 @@ -121,38 +104,14 @@
218 monitor_prism54g, unmonitor_prism54g,
219 chancontrol_prism54g, 1);
220
221 - sourcetracker->RegisterPacketsource("wlanng_wext", 1, "IEEE80211b", 6,
222 - pcapsource_wlanng_registrant,
223 - monitor_wlanng_avs, NULL,
224 - chancontrol_wext, 1);
225 -
226 - sourcetracker->RegisterPacketsource("ipw2100", 1, "IEEE80211b", 6,
227 - pcapsource_wext_registrant,
228 - monitor_ipw2100, unmonitor_ipw2100,
229 - chancontrol_ipw2100, 1);
230 -
231 - sourcetracker->RegisterPacketsource("ipw2200", 1, "IEEE80211g", 6,
232 - pcapsource_wext_registrant,
233 - monitor_ipw2200, unmonitor_ipw2200,
234 - chancontrol_ipw2200, 1);
235 -
236 - sourcetracker->RegisterPacketsource("ipw2915", 1, "IEEE80211ab", 6,
237 - pcapsource_wext_registrant,
238 - monitor_ipw2200, unmonitor_ipw2200,
239 - chancontrol_ipw2200, 1);
240 + REG_EMPTY_CARD(sourcetracker, "wlanng_wext");
241 + REG_EMPTY_CARD(sourcetracker, "ipw2100");
242 + REG_EMPTY_CARD(sourcetracker, "ipw2200");
243 + REG_EMPTY_CARD(sourcetracker, "ipw2915");
244 + REG_EMPTY_CARD(sourcetracker, "rt2400");
245 + REG_EMPTY_CARD(sourcetracker, "rt2500");
246 + REG_EMPTY_CARD(sourcetracker, "rt8180");
247
248 - sourcetracker->RegisterPacketsource("rt2400", 1, "IEEE80211b", 6,
249 - pcapsource_wext_registrant,
250 - monitor_wext, unmonitor_wext,
251 - chancontrol_wext, 1);
252 - sourcetracker->RegisterPacketsource("rt2500", 1, "IEEE80211g", 6,
253 - pcapsource_11g_registrant,
254 - monitor_wext, unmonitor_wext,
255 - chancontrol_wext, 1);
256 - sourcetracker->RegisterPacketsource("rt8180", 1, "IEEE80211b", 6,
257 - pcapsource_wext_registrant,
258 - monitor_wext, unmonitor_wext,
259 - chancontrol_wext, 1);
260
261 #else
262 // Register the linuxwireless pcap stuff as null
263 @@ -182,31 +141,13 @@
264 REG_EMPTY_CARD(sourcetracker, "wlanng_wext");
265 #endif
266
267 -#if defined(HAVE_LIBPCAP) && defined(SYS_LINUX)
268 - sourcetracker->RegisterPacketsource("wlanng", 1, "IEEE80211b", 6,
269 - pcapsource_wlanng_registrant,
270 - monitor_wlanng, NULL, chancontrol_wlanng, 1);
271 - sourcetracker->RegisterPacketsource("wlanng_avs", 1, "IEEE80211b", 6,
272 - pcapsource_wlanng_registrant,
273 - monitor_wlanng_avs, NULL,
274 - chancontrol_wlanng_avs, 1);
275 sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0,
276 pcapsource_wrt54g_registrant,
277 - monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
278 -#else
279 + monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
280 +
281 REG_EMPTY_CARD(sourcetracker, "wlanng");
282 REG_EMPTY_CARD(sourcetracker, "wlanng_avs");
283 - REG_EMPTY_CARD(sourcetracker, "wrt54g");
284 -#endif
285 -
286 -#if defined(SYS_LINUX) && defined(HAVE_LINUX_NETLINK)
287 - sourcetracker->RegisterPacketsource("wlanng_legacy", 1, "IEEE80211b", 6,
288 - prism2source_registrant,
289 - monitor_wlanng_legacy, NULL,
290 - chancontrol_wlanng_legacy, 1);
291 -#else
292 REG_EMPTY_CARD(sourcetracker, "wlanng_legacy");
293 -#endif
294
295 #if defined(HAVE_LIBPCAP) && defined(SYS_OPENBSD)
296 sourcetracker->RegisterPacketsource("cisco_openbsd", 1, "IEEE80211b", 6,
297 @@ -240,29 +181,11 @@
298 REG_EMPTY_CARD(sourcetracker, "radiotap_bsd_b");
299 #endif
300
301 -#if defined(HAVE_LIBWIRETAP)
302 - sourcetracker->RegisterPacketsource("wtapfile", 0, "na", 0,
303 - wtapfilesource_registrant,
304 - NULL, NULL, NULL, 0);
305 -#else
306 REG_EMPTY_CARD(sourcetracker, "wtapfile");
307 -#endif
308
309 -#if defined(HAVE_WSP100)
310 - sourcetracker->RegisterPacketsource("wsp100", 0, "IEEE80211b", 6,
311 - wsp100source_registrant,
312 - monitor_wsp100, NULL, chancontrol_wsp100, 0);
313 -#else
314 REG_EMPTY_CARD(sourcetracker, "wsp100");
315 -#endif
316
317 -#if defined(HAVE_VIHAHEADERS)
318 - sourcetracker->RegisterPacketsource("viha", 1, "IEEE80211b", 6,
319 - vihasource_registrant,
320 - NULL, NULL, chancontrol_viha, 0);
321 -#else
322 REG_EMPTY_CARD(sourcetracker, "viha");
323 -#endif
324
325 return 1;
326 }
327 diff -urN kismet.dev/kis_packsources.h kismet.dev2/kis_packsources.h
328 --- kismet.dev/kis_packsources.h 2005-08-16 03:22:51.000000000 +0200
329 +++ kismet.dev2/kis_packsources.h 2005-08-23 01:59:25.646219792 +0200
330 @@ -22,11 +22,7 @@
331 #include "config.h"
332
333 #include "packetsource.h"
334 -#include "prism2source.h"
335 #include "pcapsource.h"
336 -#include "wtapfilesource.h"
337 -#include "wsp100source.h"
338 -#include "vihasource.h"
339 #include "dronesource.h"
340 #include "packetsourcetracker.h"
341
342 diff -urN kismet.dev/kismet_client.cc kismet.dev2/kismet_client.cc
343 --- kismet.dev/kismet_client.cc 2005-08-16 03:22:51.000000000 +0200
344 +++ kismet.dev2/kismet_client.cc 2005-08-23 01:59:25.648219488 +0200
345 @@ -28,7 +28,6 @@
346 #include "cursesfront.h"
347 #include "panelfront.h"
348 #include "configfile.h"
349 -#include "speech.h"
350
351 #ifndef exec_name
352 char *exec_name;
353 @@ -47,11 +46,7 @@
354 char *configfile;
355 char *uiconfigfile;
356 char *server = NULL;
357 -int sound = -1;
358 -int speech = -1;
359 int flite = 0;
360 -int speech_encoding = 0;
361 -string speech_sentence_encrypted, speech_sentence_unencrypted;
362 unsigned int metric = 0;
363 unsigned int reconnect = 0;
364
365 @@ -59,20 +54,9 @@
366 string configdir, groupfile;
367 FILE *group_file = NULL;
368
369 -// Pipe file descriptor pairs and fd's
370 -int soundpair[2];
371 -int speechpair[2];
372 -pid_t soundpid = -1, speechpid = -1;
373 -
374 // Catch our interrupt
375 void CatchShutdown(int sig) {
376
377 - // Kill our sound players
378 - if (soundpid > 0)
379 - kill(soundpid, 9);
380 - if (speechpid > 0)
381 - kill(speechpid, 9);
382 -
383 if (group_track) {
384 if ((group_file = fopen(groupfile.c_str(), "w")) == NULL) {
385 fprintf(stderr, "WARNING: Unable to open '%s' for writing, groups will not be saved.\n",
386 @@ -116,215 +100,6 @@
387 exit(0);
388 }
389
390 -// Subprocess sound handler
391 -void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
392 - int read_sock = fds[0];
393 -
394 - close(fds[1]);
395 -
396 - signal(SIGPIPE, PipeHandler);
397 -
398 - fd_set rset;
399 -
400 - char data[1024];
401 -
402 - pid_t sndpid = -1;
403 - int harvested = 1;
404 -
405 - while (1) {
406 - FD_ZERO(&rset);
407 - FD_SET(read_sock, &rset);
408 - char *end;
409 -
410 - memset(data, 0, 1024);
411 -
412 - if (harvested == 0) {
413 - // We consider a wait error to be a sign that the child pid died
414 - // so we flag it as harvested and keep on going
415 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
416 - if (harvestpid == -1 || harvestpid == sndpid)
417 - harvested = 1;
418 - }
419 -
420 - struct timeval tim;
421 - tim.tv_sec = 1;
422 - tim.tv_usec = 0;
423 -
424 - if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
425 - if (errno != EINTR) {
426 - exit(1);
427 - }
428 - }
429 -
430 - if (FD_ISSET(read_sock, &rset)) {
431 - int ret;
432 - ret = read(read_sock, data, 1024);
433 -
434 - // We'll die off if we get a read error, and we'll let kismet on the
435 - // other side detact that it died
436 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
437 - exit(1);
438 -
439 - if ((end = strstr(data, "\n")) == NULL)
440 - continue;
441 -
442 - end[0] = '\0';
443 - }
444 -
445 - if (data[0] == '\0')
446 - continue;
447 -
448 - // If we've harvested the process, spawn a new one and watch it
449 - // instead. Otherwise, we just let go of the data we read
450 - if (harvested == 1) {
451 - // Only take the first line
452 - char *nl;
453 - if ((nl = strchr(data, '\n')) != NULL)
454 - *nl = '\0';
455 -
456 - char snd[1024];
457 -
458 - if (soundmap.size() == 0)
459 - snprintf(snd, 1024, "%s", data);
460 - if (soundmap.find(data) != soundmap.end())
461 - snprintf(snd, 1024, "%s", soundmap[data].c_str());
462 - else
463 - continue;
464 -
465 - char plr[1024];
466 - snprintf(plr, 1024, "%s", player);
467 -
468 - harvested = 0;
469 - if ((sndpid = fork()) == 0) {
470 - // Suppress errors
471 - int nulfd = open("/dev/null", O_RDWR);
472 - dup2(nulfd, 1);
473 - dup2(nulfd, 2);
474 -
475 - char * const echoarg[] = { plr, snd, NULL };
476 - execve(echoarg[0], echoarg, NULL);
477 - }
478 - }
479 -
480 - data[0] = '\0';
481 - }
482 -}
483 -
484 -// Subprocess speech handler
485 -void SpeechHandler(int *fds, const char *player) {
486 - int read_sock = fds[0];
487 - close(fds[1]);
488 -
489 - fd_set rset;
490 -
491 - char data[1024];
492 -
493 - pid_t sndpid = -1;
494 - int harvested = 1;
495 -
496 - while (1) {
497 - FD_ZERO(&rset);
498 - FD_SET(read_sock, &rset);
499 - //char *end;
500 -
501 - memset(data, 0, 1024);
502 -
503 - struct timeval tim;
504 - tim.tv_sec = 1;
505 - tim.tv_usec = 0;
506 -
507 - if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
508 - if (errno != EINTR) {
509 - exit(1);
510 - }
511 - }
512 -
513 - if (harvested == 0) {
514 - // We consider a wait error to be a sign that the child pid died
515 - // so we flag it as harvested and keep on going
516 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
517 - if (harvestpid == -1 || harvestpid == sndpid)
518 - harvested = 1;
519 - }
520 -
521 - if (FD_ISSET(read_sock, &rset)) {
522 - int ret;
523 - ret = read(read_sock, data, 1024);
524 -
525 - // We'll die off if we get a read error, and we'll let kismet on the
526 - // other side detact that it died
527 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
528 - exit(1);
529 -
530 - data[ret] = '\0';
531 -
532 - }
533 -
534 - if (data[0] == '\0')
535 - continue;
536 -
537 - // If we've harvested the process, spawn a new one and watch it
538 - // instead. Otherwise, we just let go of the data we read
539 - if (harvested == 1) {
540 - harvested = 0;
541 - if ((sndpid = fork()) == 0) {
542 - // Only take the first line
543 - char *nl;
544 - if ((nl = strchr(data, '\n')) != NULL)
545 - *nl = '\0';
546 -
547 - // Make sure it's shell-clean
548 - MungeToShell(data, strlen(data));
549 - char spk_call[1024];
550 - snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s "
551 - ">/dev/null 2>/dev/null",
552 - flite ? "": "SayText ", data, player);
553 -
554 - system(spk_call);
555 -
556 - exit(0);
557 - }
558 - }
559 -
560 - data[0] = '\0';
561 - }
562 -}
563 -
564 -
565 -int PlaySound(string in_sound) {
566 -
567 - char snd[1024];
568 -
569 - snprintf(snd, 1024, "%s\n", in_sound.c_str());
570 -
571 - if (write(soundpair[1], snd, strlen(snd)) < 0) {
572 - char status[STATUS_MAX];
573 - snprintf(status, STATUS_MAX,
574 - "ERROR: Could not write to sound pipe. Stopping sound.");
575 - gui->WriteStatus(status);
576 -
577 - return 0;
578 - }
579 -
580 - return 1;
581 -}
582 -
583 -int SayText(string in_text) {
584 - char snd[1024];
585 -
586 - snprintf(snd, 1024, "%s\n", in_text.c_str());
587 -
588 - if (write(speechpair[1], snd, strlen(snd)) < 0) {
589 - char status[STATUS_MAX];
590 - snprintf(status, STATUS_MAX,
591 - "ERROR: Could not write to speech pipe. Stopping speech.");
592 - gui->WriteStatus(status);
593 -
594 - return 0;
595 - }
596 -
597 - return 1;
598 -}
599
600 int main(int argc, char *argv[]) {
601 exec_name = argv[0];
602 @@ -345,8 +120,6 @@
603 char guihost[1024];
604 int guiport = -1;
605
606 - int gpsmode = -1;
607 -
608 configfile = NULL;
609 uiconfigfile = NULL;
610
611 @@ -391,7 +164,6 @@
612 fprintf(stderr, "Using alternate UI config file: %s\n", uiconfigfile);
613 break;
614 case 'q':
615 - sound = 0;
616 break;
617 case 'g':
618 reqgui = strdup(optarg);
619 @@ -515,70 +287,6 @@
620 server = strdup(gui_conf->FetchOpt("host").c_str());
621 }
622
623 - if (gui_conf->FetchOpt("sound") == "true" && sound == -1) {
624 - if (gui_conf->FetchOpt("soundplay") != "") {
625 - sndplay = gui_conf->FetchOpt("soundplay");
626 - sound = 1;
627 -
628 - if (gui_conf->FetchOpt("soundopts") != "")
629 - sndplay += " " + gui_conf->FetchOpt("soundopts");
630 -
631 - if (gui_conf->FetchOpt("sound_new") != "")
632 - wav_map["new"] = gui_conf->FetchOpt("sound_new");
633 - if (gui_conf->FetchOpt("sound_new_wep") != "")
634 - wav_map["new_wep"] = gui_conf->FetchOpt("sound_new_wep");
635 - if (gui_conf->FetchOpt("sound_traffic") != "")
636 - wav_map["traffic"] = gui_conf->FetchOpt("sound_traffic");
637 - if (gui_conf->FetchOpt("sound_junktraffic") != "")
638 - wav_map["junktraffic"] = gui_conf->FetchOpt("sound_junktraffic");
639 - if (gui_conf->FetchOpt("sound_gpslock") != "")
640 - wav_map["gpslock"] = gui_conf->FetchOpt("sound_gpslock");
641 - if (gui_conf->FetchOpt("sound_gpslost") != "")
642 - wav_map["gpslost"] = gui_conf->FetchOpt("sound_gpslost");
643 - if (gui_conf->FetchOpt("sound_alert") != "")
644 - wav_map["alert"] = gui_conf->FetchOpt("sound_alert");
645 -
646 - } else {
647 - fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n");
648 - sound = 0;
649 - }
650 - } else if (sound == -1)
651 - sound = 0;
652 -
653 - /* Added by Shaw Innes 17/2/02 */
654 - if (gui_conf->FetchOpt("speech") == "true" && speech == -1) {
655 - if (gui_conf->FetchOpt("festival") != "") {
656 - festival = strdup(gui_conf->FetchOpt("festival").c_str());
657 - speech = 1;
658 -
659 - if (gui_conf->FetchOpt("flite") == "true")
660 - flite = 1;
661 -
662 - string speechtype = gui_conf->FetchOpt("speech_type");
663 -
664 - if (!strcasecmp(speechtype.c_str(), "nato"))
665 - speech_encoding = SPEECH_ENCODING_NATO;
666 - else if (!strcasecmp(speechtype.c_str(), "spell"))
667 - speech_encoding = SPEECH_ENCODING_SPELL;
668 - else
669 - speech_encoding = SPEECH_ENCODING_NORMAL;
670 -
671 - // Make sure we have encrypted text lines
672 - if (gui_conf->FetchOpt("speech_encrypted") == "" || gui_conf->FetchOpt("speech_unencrypted") == "") {
673 - fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n");
674 - speech = 0;
675 - }
676 -
677 - speech_sentence_encrypted = gui_conf->FetchOpt("speech_encrypted");
678 - speech_sentence_unencrypted = gui_conf->FetchOpt("speech_unencrypted");
679 -
680 - } else {
681 - fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
682 - speech = 0;
683 - }
684 - } else if (speech == -1)
685 - speech = 0;
686 -
687 if (gui_conf->FetchOpt("decay") != "") {
688 if (sscanf(gui_conf->FetchOpt("decay").c_str(), "%d", &decay) != 1) {
689 fprintf(stderr, "FATAL: Illegal config file value for decay.\n");
690 @@ -636,45 +344,6 @@
691 }
692 }
693
694 - // Fork and find the sound options
695 - if (sound) {
696 - if (pipe(soundpair) == -1) {
697 - fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n");
698 - sound = 0;
699 - } else {
700 - soundpid = fork();
701 -
702 - if (soundpid < 0) {
703 - fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n");
704 - sound = 0;
705 - } else if (soundpid == 0) {
706 - SoundHandler(soundpair, sndplay.c_str(), wav_map);
707 - exit(0);
708 - }
709 -
710 - close(soundpair[0]);
711 - }
712 - }
713 -
714 - if (speech) {
715 - if (pipe(speechpair) == -1) {
716 - fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n");
717 - speech = 0;
718 - } else {
719 - speechpid = fork();
720 -
721 - if (speechpid < 0) {
722 - fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n");
723 - speech = 0;
724 - } else if (speechpid == 0) {
725 - SpeechHandler(speechpair, festival);
726 - exit(0);
727 - }
728 -
729 - close(speechpair[0]);
730 - }
731 - }
732 -
733 if (kismet_serv.Connect(guiport, guihost) < 0) {
734 fprintf(stderr, "FATAL: Could not connect to %s:%d.\n", guihost, guiport);
735 CatchShutdown(-1);
736 @@ -884,53 +553,13 @@
737 }
738
739 if (pollret != 0) {
740 - if (pollret == CLIENT_ALERT)
741 - if (sound == 1)
742 - sound = PlaySound("alert");
743 -
744 if (strlen(tcpcli->FetchStatus()) != 0) {
745 gui->WriteStatus(tcpcli->FetchStatus());
746 // gui->DrawDisplay();
747 }
748
749 - // The GPS only gets updated for the primary client
750 - if (tcpcli == primary_client) {
751 - if (tcpcli->FetchMode() == 0 && gpsmode != 0) {
752 - if (sound == 1 && gpsmode != -1)
753 - sound = PlaySound("gpslost");
754 - gpsmode = 0;
755 - } else if (tcpcli->FetchMode() != 0 && gpsmode == 0) {
756 - if (sound == 1 && gpsmode != -1)
757 - sound = PlaySound("gpslock");
758 - gpsmode = 1;
759 - }
760 - }
761 -
762 if (tcpcli->FetchDeltaNumNetworks() > 0) {
763 wireless_network *newnet = tcpcli->FetchLastNewNetwork();
764 -
765 - if (sound == 1 && newnet != lastspoken) {
766 - if (newnet->crypt_set &&
767 - wav_map.find("new_wep") != wav_map.end())
768 - sound = PlaySound("new_wep");
769 - else
770 - sound = PlaySound("new");
771 - }
772 -
773 - if (speech == 1 && newnet != lastspoken) {
774 - string text;
775 -
776 - if (newnet != NULL) {
777 - if (newnet->crypt_set)
778 - text = ExpandSpeechString(speech_sentence_encrypted, newnet, speech_encoding);
779 - else
780 - text = ExpandSpeechString(speech_sentence_unencrypted, newnet, speech_encoding);
781 -
782 - speech = SayText(text.c_str());
783 - }
784 - }
785 -
786 - lastspoken = newnet;
787 }
788
789 num_networks += tcpcli->FetchNumNetworks();
790 @@ -938,17 +567,7 @@
791 num_noise += tcpcli->FetchNumNoise();
792 num_dropped += tcpcli->FetchNumDropped();
793
794 - if (tcpcli->FetchDeltaNumPackets() != 0) {
795 - if (time(0) - last_click >= decay && sound == 1) {
796 - if (tcpcli->FetchDeltaNumPackets() > tcpcli->FetchDeltaNumDropped()) {
797 - sound = PlaySound("traffic");
798 - } else {
799 - sound = PlaySound("junktraffic");
800 - }
801 -
802 - last_click = time(0);
803 - }
804 - }
805 + tcpcli->FetchDeltaNumPackets();
806 }
807 }
808 } else {
809 diff -urN kismet.dev/kismet_drone.cc kismet.dev2/kismet_drone.cc
810 --- kismet.dev/kismet_drone.cc 2005-08-16 03:22:51.000000000 +0200
811 +++ kismet.dev2/kismet_drone.cc 2005-08-23 01:59:25.649219336 +0200
812 @@ -32,16 +32,11 @@
813 #include "packet.h"
814
815 #include "packetsource.h"
816 -#include "prism2source.h"
817 #include "pcapsource.h"
818 -#include "wtapfilesource.h"
819 -#include "wsp100source.h"
820 -#include "vihasource.h"
821 #include "dronesource.h"
822 #include "packetsourcetracker.h"
823 #include "kis_packsources.h"
824
825 -#include "gpsd.h"
826 #include "tcpstreamer.h"
827 #include "configfile.h"
828
829 @@ -53,10 +48,6 @@
830
831 const char *config_base = "kismet_drone.conf";
832
833 -GPSD *gps = NULL;
834 -int gpsmode = 0;
835 -int gps_enable = 0;
836 -
837 // Timetracker
838 Timetracker timetracker;
839
840 @@ -81,26 +72,6 @@
841 exit(0);
842 }
843
844 -int GpsEvent(Timetracker::timer_event *evt, void *parm) {
845 - // The GPS only provides us a new update once per second we might
846 - // as well only update it here once a second
847 - if (gps_enable) {
848 - int gpsret;
849 - gpsret = gps->Scan();
850 - if (gpsret < 0) {
851 - if (!silent)
852 - fprintf(stderr, "GPS error fetching data: %s\n",
853 - gps->FetchError());
854 -
855 - gps_enable = 0;
856 - }
857 -
858 - }
859 -
860 - // We want to be rescheduled
861 - return 1;
862 -}
863 -
864 // Handle channel hopping... this is actually really simple.
865 int ChannelHopEvent(Timetracker::timer_event *evt, void *parm) {
866 sourcetracker.AdvanceChannel();
867 @@ -148,9 +119,6 @@
868
869 TcpStreamer streamer;
870
871 - char gpshost[1024];
872 - int gpsport = -1;
873 -
874 int channel_hop = -1;
875 int channel_velocity = 1;
876 int channel_dwell = 0;
877 @@ -351,46 +319,6 @@
878 exit(1);
879 }
880
881 - if (conf->FetchOpt("gps") == "true") {
882 - if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost, &gpsport) != 2) {
883 - fprintf(stderr, "Invalid GPS host in config (host:port required)\n");
884 - exit(1);
885 - }
886 -
887 - gps_enable = 1;
888 - } else {
889 - gps_enable = 0;
890 - }
891 -
892 - if (gps_enable == 1) {
893 - // Open the GPS
894 - gps = new GPSD(gpshost, gpsport);
895 -
896 - // Lock GPS position
897 - if (conf->FetchOpt("gpsmodelock") == "true") {
898 - fprintf(stderr, "Enabling GPS position lock override (broken GPS unit reports 0 always)\n");
899 - gps->SetOptions(GPSD_OPT_FORCEMODE);
900 - }
901 -
902 - if (gps->OpenGPSD() < 0) {
903 - fprintf(stderr, "%s\n", gps->FetchError());
904 -
905 - gps_enable = 0;
906 - } else {
907 - fprintf(stderr, "Opened GPS connection to %s port %d\n",
908 - gpshost, gpsport);
909 -
910 - }
911 - }
912 -
913 - // Update GPS coordinates and handle signal loss if defined
914 - timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL);
915 -
916 - // Add the GPS to the tcpstreamer
917 - streamer.AddGpstracker(gps);
918 -
919 - // Register the gps and timetracker with the sourcetracker
920 - sourcetracker.AddGpstracker(gps);
921 sourcetracker.AddTimetracker(&timetracker);
922
923 // Register the sources
924 diff -urN kismet.dev/kismet_server.cc kismet.dev2/kismet_server.cc
925 --- kismet.dev/kismet_server.cc 2005-08-16 03:22:51.000000000 +0200
926 +++ kismet.dev2/kismet_server.cc 2005-08-23 01:59:25.653218728 +0200
927 @@ -37,11 +37,7 @@
928 #include "packet.h"
929
930 #include "packetsource.h"
931 -#include "prism2source.h"
932 #include "pcapsource.h"
933 -#include "wtapfilesource.h"
934 -#include "wsp100source.h"
935 -#include "vihasource.h"
936 #include "dronesource.h"
937 #include "packetsourcetracker.h"
938 #include "kis_packsources.h"
939 @@ -51,15 +47,11 @@
940 #include "wtaplocaldump.h"
941 #include "airsnortdump.h"
942 #include "fifodump.h"
943 -#include "gpsdump.h"
944 -
945 -#include "gpsd.h"
946
947 #include "packetracker.h"
948 #include "timetracker.h"
949 #include "alertracker.h"
950
951 -#include "speech.h"
952 #include "tcpserver.h"
953 #include "server_globals.h"
954 #include "kismet_server.h"
955 @@ -89,17 +81,8 @@
956 Alertracker alertracker;
957 Timetracker timetracker;
958
959 -GPSD *gps = NULL;
960 -int gpsmode = 0;
961 -GPSDump gpsdump;
962 -
963 -// Last time we tried to reconnect to the gps
964 -time_t last_gpsd_reconnect = 0;
965 -int gpsd_reconnect_attempt = 0;
966 -
967 FifoDumpFile fifodump;
968 TcpServer ui_server;
969 -int sound = -1;
970 packet_info last_info;
971 int decay;
972 channel_power channel_graph[CHANNEL_MAX];
973 @@ -112,11 +95,8 @@
974 // Wep keys
975 macmap<wep_key_info *> bssid_wep_map;
976
977 -// Pipe file descriptor pairs and fd's
978 -int soundpair[2];
979 -int speechpair[2];
980 int chanpair[2];
981 -pid_t soundpid = -1, speechpid = -1, chanpid = -1;
982 +pid_t chanpid = -1;
983
984 // Past alerts
985 unsigned int max_alerts = 50;
986 @@ -177,17 +157,6 @@
987 int tcpport = -1;
988 int tcpmax;
989
990 -//const char *sndplay = NULL;
991 -string sndplay;
992 -
993 -const char *festival = NULL;
994 -int speech = -1;
995 -int flite = 0;
996 -int speech_encoding = 0;
997 -string speech_sentence_encrypted, speech_sentence_unencrypted;
998 -
999 -map<string, string> wav_map;
1000 -
1001 int beacon_log = 1;
1002 int phy_log = 1;
1003 int mangle_log = 0;
1004 @@ -347,17 +316,6 @@
1005 // delete cryptfile;
1006 }
1007
1008 - if (gps_log == 1) {
1009 - if (gpsdump.CloseDump(1) < 0)
1010 - fprintf(stderr, "Didn't log any GPS coordinates, unlinking gps file\n");
1011 - }
1012 -
1013 - // Kill our sound players
1014 - if (soundpid > 0)
1015 - kill(soundpid, 9);
1016 - if (speechpid > 0)
1017 - kill(speechpid, 9);
1018 -
1019 // Shut down the packet sources
1020 sourcetracker.CloseSources();
1021
1022 @@ -368,228 +326,10 @@
1023 exit(0);
1024 }
1025
1026 -// Subprocess sound handler
1027 -void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
1028 - int read_sock = fds[0];
1029 - close(fds[1]);
1030 -
1031 - fd_set rset;
1032 -
1033 - char data[1024];
1034 -
1035 - pid_t sndpid = -1;
1036 - int harvested = 1;
1037 -
1038 - while (1) {
1039 - FD_ZERO(&rset);
1040 - FD_SET(read_sock, &rset);
1041 - char *end;
1042 -
1043 - memset(data, 0, 1024);
1044 -
1045 - struct timeval tm;
1046 - tm.tv_sec = 1;
1047 - tm.tv_usec = 0;
1048 -
1049 - if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
1050 - if (errno != EINTR) {
1051 - exit(1);
1052 - }
1053 - }
1054 -
1055 - if (harvested == 0) {
1056 - // We consider a wait error to be a sign that the child pid died
1057 - // so we flag it as harvested and keep on going
1058 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
1059 - if (harvestpid == -1 || harvestpid == sndpid)
1060 - harvested = 1;
1061 - }
1062 -
1063 - if (FD_ISSET(read_sock, &rset)) {
1064 - int ret;
1065 - ret = read(read_sock, data, 1024);
1066 -
1067 - // We'll die off if we get a read error, and we'll let kismet on the
1068 - // other side detact that it died
1069 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
1070 - exit(1);
1071 -
1072 - if ((end = strstr(data, "\n")) == NULL)
1073 - continue;
1074 -
1075 - end[0] = '\0';
1076 - }
1077 -
1078 - if (data[0] == '\0')
1079 - continue;
1080 -
1081 -
1082 - // If we've harvested the process, spawn a new one and watch it
1083 - // instead. Otherwise, we just let go of the data we read
1084 - if (harvested == 1) {
1085 - // Only take the first line
1086 - char *nl;
1087 - if ((nl = strchr(data, '\n')) != NULL)
1088 - *nl = '\0';
1089 -
1090 - // Make sure it's shell-clean
1091 -
1092 - char snd[1024];
1093 -
1094 - if (soundmap.size() == 0)
1095 - snprintf(snd, 1024, "%s", data);
1096 - if (soundmap.find(data) != soundmap.end())
1097 - snprintf(snd, 1024, "%s", soundmap[data].c_str());
1098 - else
1099 - continue;
1100 -
1101 - char plr[1024];
1102 - snprintf(plr, 1024, "%s", player);
1103 -
1104 - harvested = 0;
1105 - if ((sndpid = fork()) == 0) {
1106 - // Suppress errors
1107 - if (silent) {
1108 - int nulfd = open("/dev/null", O_RDWR);
1109 - dup2(nulfd, 1);
1110 - dup2(nulfd, 2);
1111 - }
1112 -
1113 - char * const echoarg[] = { plr, snd, NULL };
1114 - execve(echoarg[0], echoarg, NULL);
1115 - }
1116 - }
1117 - data[0] = '\0';
1118 - }
1119 -}
1120 -
1121 -// Subprocess speech handler
1122 -void SpeechHandler(int *fds, const char *player) {
1123 - int read_sock = fds[0];
1124 - close(fds[1]);
1125 -
1126 - fd_set rset;
1127 -
1128 - char data[1024];
1129 -
1130 - pid_t sndpid = -1;
1131 - int harvested = 1;
1132 -
1133 - while (1) {
1134 - FD_ZERO(&rset);
1135 - FD_SET(read_sock, &rset);
1136 - //char *end;
1137 -
1138 - memset(data, 0, 1024);
1139 -
1140 - if (harvested == 0) {
1141 - // We consider a wait error to be a sign that the child pid died
1142 - // so we flag it as harvested and keep on going
1143 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
1144 - if (harvestpid == -1 || harvestpid == sndpid)
1145 - harvested = 1;
1146 - }
1147 -
1148 - struct timeval tm;
1149 - tm.tv_sec = 1;
1150 - tm.tv_usec = 0;
1151 -
1152 - if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
1153 - if (errno != EINTR) {
1154 - exit(1);
1155 - }
1156 - }
1157 -
1158 - if (FD_ISSET(read_sock, &rset)) {
1159 - int ret;
1160 - ret = read(read_sock, data, 1024);
1161 -
1162 - // We'll die off if we get a read error, and we'll let kismet on the
1163 - // other side detact that it died
1164 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
1165 - exit(1);
1166 -
1167 - data[ret] = '\0';
1168 - }
1169 -
1170 - if (data[0] == '\0')
1171 - continue;
1172 -
1173 - // If we've harvested the process, spawn a new one and watch it
1174 - // instead. Otherwise, we just let go of the data we read
1175 - if (harvested == 1) {
1176 - harvested = 0;
1177 - if ((sndpid = fork()) == 0) {
1178 - // Only take the first line
1179 - char *nl;
1180 - if ((nl = strchr(data, '\n')) != NULL)
1181 - *nl = '\0';
1182 -
1183 - // Make sure it's shell-clean
1184 - MungeToShell(data, strlen(data));
1185 - char spk_call[1024];
1186 - snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s "
1187 - ">/dev/null 2>/dev/null",
1188 - flite ? "" : "SayText ", data, player);
1189 - system(spk_call);
1190 -
1191 - exit(0);
1192 - }
1193 - }
1194 -
1195 - data[0] = '\0';
1196 - }
1197 -}
1198 -
1199 -
1200 -// Fork and run a system call to play a sound
1201 -int PlaySound(string in_sound) {
1202 -
1203 - char snd[1024];
1204 -
1205 - snprintf(snd, 1024, "%s\n", in_sound.c_str());
1206 -
1207 - if (write(soundpair[1], snd, strlen(snd)) < 0) {
1208 - char status[STATUS_MAX];
1209 - if (!silent)
1210 - fprintf(stderr, "ERROR: Write error, closing sound pipe.\n");
1211 - snprintf(status, STATUS_MAX, "ERROR: Write error on sound pipe, closing sound connection");
1212 - NetWriteStatus(status);
1213 -
1214 - return 0;
1215 - }
1216 -
1217 - return 1;
1218 -}
1219 -
1220 -int SayText(string in_text) {
1221 -
1222 - char snd[1024];
1223 -
1224 - snprintf(snd, 1024, "%s\n", in_text.c_str());
1225 - MungeToShell(snd, 1024);
1226 -
1227 - if (write(speechpair[1], snd, strlen(snd)) < 0) {
1228 - char status[STATUS_MAX];
1229 - if (!silent)
1230 - fprintf(stderr, "ERROR: Write error, closing speech pipe.\n");
1231 - snprintf(status, STATUS_MAX, "ERROR: Write error on speech pipe, closing speech connection");
1232 - NetWriteStatus(status);
1233 -
1234 - return 0;
1235 - }
1236 -
1237 - return 1;
1238 -}
1239 -
1240 void KisLocalAlert(const char *in_text) {
1241 time_t now = time(0);
1242 if (!silent)
1243 fprintf(stderr, "ALERT %.24s %s\n", ctime(&now), in_text);
1244 -
1245 - if (sound == 1)
1246 - sound = PlaySound("alert");
1247 -
1248 }
1249
1250 void KisLocalStatus(const char *in_status) {
1251 @@ -638,37 +378,6 @@
1252
1253 char tmpstr[32];
1254
1255 - GPS_data gdata;
1256 -
1257 - if (gps_enable) {
1258 - float lat, lon, alt, spd, hed;
1259 - int mode;
1260 -
1261 - gps->FetchLoc(&lat, &lon, &alt, &spd, &hed, &mode);
1262 -
1263 - snprintf(tmpstr, 32, "%f", lat);
1264 - gdata.lat = tmpstr;
1265 - snprintf(tmpstr, 32, "%f", lon);
1266 - gdata.lon = tmpstr;
1267 - snprintf(tmpstr, 32, "%f", alt);
1268 - gdata.alt = tmpstr;
1269 - snprintf(tmpstr, 32, "%f", spd);
1270 - gdata.spd = tmpstr;
1271 - snprintf(tmpstr, 32, "%f", hed);
1272 - gdata.heading = tmpstr;
1273 - snprintf(tmpstr, 32, "%d", mode);
1274 - gdata.mode = tmpstr;
1275 - } else {
1276 - gdata.lat = "0.0";
1277 - gdata.lon = "0.0";
1278 - gdata.alt = "0.0";
1279 - gdata.spd = "0.0";
1280 - gdata.heading = "0.0";
1281 - gdata.mode = "0";
1282 - }
1283 -
1284 - ui_server.SendToAll(gps_ref, (void *) &gdata);
1285 -
1286 INFO_data idata;
1287 snprintf(tmpstr, 32, "%d", tracker.FetchNumNetworks());
1288 idata.networks = tmpstr;
1289 @@ -789,81 +498,6 @@
1290 }
1291 }
1292
1293 -int GpsEvent(Timetracker::timer_event *evt, void *parm) {
1294 - char status[STATUS_MAX];
1295 -
1296 - // The GPS only provides us a new update once per second we might
1297 - // as well only update it here once a second
1298 -
1299 - // If we're disconnected, try to reconnect.
1300 - if (gpsd_reconnect_attempt > 0) {
1301 - // Increment the time between connection attempts
1302 - if (last_gpsd_reconnect + ((gpsd_reconnect_attempt - 1) * 2) < time(0)) {
1303 - if (gps->OpenGPSD() < 0) {
1304 - last_gpsd_reconnect = time(0);
1305 -
1306 - if (gpsd_reconnect_attempt < 20)
1307 - gpsd_reconnect_attempt++;
1308 -
1309 - snprintf(status, STATUS_MAX, "Unable to reconnect to GPSD, trying "
1310 - "again in %d seconds.", ((gpsd_reconnect_attempt - 1) * 2));
1311 -
1312 - if (!silent || NetWriteStatus(status) == 0)
1313 - fprintf(stderr, "WARNING: %s\n", status);
1314 -
1315 - return 1;
1316 - } else {
1317 - gpsd_reconnect_attempt = 0;
1318 -
1319 - snprintf(status, STATUS_MAX, "Reopened connection to GPSD");
1320 - if (!silent || NetWriteStatus(status) == 0)
1321 - fprintf(stderr, "NOTICE: %s\n", status);
1322 - }
1323 - } else {
1324 - // Don't process more if we haven't woken up yet
1325 - return 1;
1326 - }
1327 -
1328 - }
1329 -
1330 - if (gps_enable) {
1331 - int gpsret;
1332 - gpsret = gps->Scan();
1333 -
1334 - if (gpsret < 0) {
1335 - snprintf(status, STATUS_MAX, "GPS error requesting data: %s",
1336 - gps->FetchError());
1337 -
1338 - if (!silent || NetWriteStatus(status) == 0)
1339 - fprintf(stderr, "WARNING: %s\n", status);
1340 -
1341 - gpsd_reconnect_attempt = 1;
1342 - }
1343 -
1344 - if (gpsret == 0 && gpsmode != 0) {
1345 - if (!silent || NetWriteStatus("Lost GPS signal.") == 0)
1346 - fprintf(stderr, "Lost GPS signal.\n");
1347 - if (sound == 1)
1348 - sound = PlaySound("gpslost");
1349 -
1350 - gpsmode = 0;
1351 - } else if (gpsret != 0 && gpsmode == 0) {
1352 - if (!silent || NetWriteStatus("Acquired GPS signal.") == 0)
1353 - fprintf(stderr, "Acquired GPS signal.\n");
1354 - if (sound == 1)
1355 - sound = PlaySound("gpslock");
1356 -
1357 - gpsmode = 1;
1358 - }
1359 - }
1360 -
1361 - if (gps_log == 1 && gpsmode != 0 && gps != NULL) {
1362 - gpsdump.DumpTrack(gps);
1363 - }
1364 -
1365 - // We want to be rescheduled
1366 - return 1;
1367 -}
1368
1369 // Simple redirect to the network info drawer. We don't want to change netwriteinfo to a
1370 // timer event since we call it un-timed too
1371 @@ -884,13 +518,6 @@
1372 return 1;
1373 }
1374
1375 -// Write the waypoints for gpsdrive
1376 -int WaypointSyncEvent(Timetracker::timer_event *evt, void *parm) {
1377 - tracker.WriteGpsdriveWaypt(waypoint_file);
1378 -
1379 - return 1;
1380 -}
1381 -
1382 // Handle tracker maintenance
1383 int TrackerTickEvent(Timetracker::timer_event *evt, void *parm) {
1384 tracker.Tick();
1385 @@ -1159,11 +786,9 @@
1386 " -c, --capture-source <src> Packet capture source line (type,interface,name)\n"
1387 " -C, --enable-capture-sources Comma separated list of named packet sources to use.\n"
1388 " -l, --log-types <types> Comma separated list of types to log,\n"
1389 - " (ie, dump,cisco,weak,network,gps)\n"
1390 + " (ie, dump,cisco,weak,network)\n"
1391 " -d, --dump-type <type> Dumpfile type (wiretap)\n"
1392 " -m, --max-packets <num> Maximum number of packets before starting new dump\n"
1393 - " -q, --quiet Don't play sounds\n"
1394 - " -g, --gps <host:port> GPS server (host:port or off)\n"
1395 " -p, --port <port> TCPIP server port for GUI connections\n"
1396 " -a, --allowed-hosts <hosts> Comma separated list of hosts allowed to connect\n"
1397 " -b, --bind-address <address> Bind to this address. Default INADDR_ANY\n."
1398 @@ -1287,23 +912,6 @@
1399 ip_track = 1;
1400 }
1401
1402 -
1403 - if (conf->FetchOpt("waypoints") == "true") {
1404 - if(conf->FetchOpt("waypointdata") == "") {
1405 - fprintf(stderr, "WARNING: Waypoint logging requested but no waypoint data file given.\n"
1406 - "Waypoint logging will be disabled.\n");
1407 - waypoint = 0;
1408 - } else {
1409 - waypointfile = conf->ExpandLogPath(conf->FetchOpt("waypointdata"), "", "", 0, 1);
1410 - waypoint = 1;
1411 - }
1412 - if(conf->FetchOpt("waypoint_essid") == "true") {
1413 - waypointformat = 1;
1414 - } else {
1415 - waypointformat = 0;
1416 - }
1417 - }
1418 -
1419 if (conf->FetchOpt("metric") == "true") {
1420 fprintf(stderr, "Using metric measurements.\n");
1421 metric = 1;
1422 @@ -1421,26 +1029,6 @@
1423 }
1424
1425 }
1426 -
1427 - if (strstr(logtypes, "gps")) {
1428 - if (gps_log == 0) {
1429 - fprintf(stderr, "WARNING: Disabling GPS logging.\n");
1430 - } else {
1431 - gps_log = 1;
1432 -
1433 - if (conf->FetchOpt("logtemplate") == "") {
1434 - fprintf(stderr, "FATAL: Logging (gps coordinates) enabled but no logtemplate given in config.\n");
1435 - ErrorShutdown();
1436 - }
1437 - }
1438 -
1439 - }
1440 -
1441 - if (gps_log == 1 && !net_log) {
1442 - fprintf(stderr, "WARNING: Logging (gps coordinates) enabled but XML logging (networks) was not.\n"
1443 - "It will be enabled now.\n");
1444 - xml_log = 1;
1445 - }
1446 }
1447
1448 if (conf->FetchOpt("decay") != "") {
1449 @@ -1561,72 +1149,6 @@
1450 legal_ipblock_vec.push_back(ipb);
1451 }
1452
1453 - // Process sound stuff
1454 - if (conf->FetchOpt("sound") == "true" && sound == -1) {
1455 - if (conf->FetchOpt("soundplay") != "") {
1456 - sndplay = conf->FetchOpt("soundplay");
1457 -
1458 - if (conf->FetchOpt("soundopts") != "")
1459 - sndplay += " " + conf->FetchOpt("soundopts");
1460 -
1461 - sound = 1;
1462 -
1463 - if (conf->FetchOpt("sound_new") != "")
1464 - wav_map["new"] = conf->FetchOpt("sound_new");
1465 - if (conf->FetchOpt("sound_new_wep") != "")
1466 - wav_map["new_wep"] = conf->FetchOpt("sound_new_wep");
1467 - if (conf->FetchOpt("sound_traffic") != "")
1468 - wav_map["traffic"] = conf->FetchOpt("sound_traffic");
1469 - if (conf->FetchOpt("sound_junktraffic") != "")
1470 - wav_map["junktraffic"] = conf->FetchOpt("sound_traffic");
1471 - if (conf->FetchOpt("sound_gpslock") != "")
1472 - wav_map["gpslock"] = conf->FetchOpt("sound_gpslock");
1473 - if (conf->FetchOpt("sound_gpslost") != "")
1474 - wav_map["gpslost"] = conf->FetchOpt("sound_gpslost");
1475 - if (conf->FetchOpt("sound_alert") != "")
1476 - wav_map["alert"] = conf->FetchOpt("sound_alert");
1477 -
1478 - } else {
1479 - fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n");
1480 - sound = 0;
1481 - }
1482 - } else if (sound == -1)
1483 - sound = 0;
1484 -
1485 - /* Added by Shaw Innes 17/2/02 */
1486 - /* Modified by Andrew Etter 15/9/02 */
1487 - if (conf->FetchOpt("speech") == "true" && speech == -1) {
1488 - if (conf->FetchOpt("festival") != "") {
1489 - festival = strdup(conf->FetchOpt("festival").c_str());
1490 - speech = 1;
1491 -
1492 - if (conf->FetchOpt("flite") == "true")
1493 - flite = 1;
1494 -
1495 - string speechtype = conf->FetchOpt("speech_type");
1496 -
1497 - if (!strcasecmp(speechtype.c_str(), "nato"))
1498 - speech_encoding = SPEECH_ENCODING_NATO;
1499 - else if (!strcasecmp(speechtype.c_str(), "spell"))
1500 - speech_encoding = SPEECH_ENCODING_SPELL;
1501 - else
1502 - speech_encoding = SPEECH_ENCODING_NORMAL;
1503 -
1504 - // Make sure we have encrypted text lines
1505 - if (conf->FetchOpt("speech_encrypted") == "" || conf->FetchOpt("speech_unencrypted") == "") {
1506 - fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n");
1507 - speech = 0;
1508 - }
1509 -
1510 - speech_sentence_encrypted = conf->FetchOpt("speech_encrypted");
1511 - speech_sentence_unencrypted = conf->FetchOpt("speech_unencrypted");
1512 - } else {
1513 - fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
1514 - speech = 0;
1515 - }
1516 - } else if (speech == -1)
1517 - speech = 0;
1518 -
1519 if (conf->FetchOpt("writeinterval") != "") {
1520 if (sscanf(conf->FetchOpt("writeinterval").c_str(), "%d", &datainterval) != 1) {
1521 fprintf(stderr, "FATAL: Illegal config file value for data interval.\n");
1522 @@ -1646,45 +1168,6 @@
1523 fprintf(stderr, "WARNING: No client_manuf file specified. Client manufacturers will not be detected.\n");
1524 }
1525
1526 - // Fork and find the sound options
1527 - if (sound) {
1528 - if (pipe(soundpair) == -1) {
1529 - fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n");
1530 - sound = 0;
1531 - } else {
1532 - soundpid = fork();
1533 -
1534 - if (soundpid < 0) {
1535 - fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n");
1536 - sound = 0;
1537 - } else if (soundpid == 0) {
1538 - SoundHandler(soundpair, sndplay.c_str(), wav_map);
1539 - exit(0);
1540 - }
1541 -
1542 - close(soundpair[0]);
1543 - }
1544 - }
1545 -
1546 - if (speech) {
1547 - if (pipe(speechpair) == -1) {
1548 - fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n");
1549 - speech = 0;
1550 - } else {
1551 - speechpid = fork();
1552 -
1553 - if (speechpid < 0) {
1554 - fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n");
1555 - speech = 0;
1556 - } else if (speechpid == 0) {
1557 - SpeechHandler(speechpair, festival);
1558 - exit(0);
1559 - }
1560 -
1561 - close(speechpair[0]);
1562 - }
1563 - }
1564 -
1565 // Grab the filtering
1566 string filter_bit;
1567
1568 @@ -1710,7 +1193,7 @@
1569 }
1570
1571 if ((filter_bit = conf->FetchOpt("filter_export")) != "") {
1572 - fprintf(stderr, "Enabling filtering on exported (csv, xml, network, gps) files.\n");
1573 + fprintf(stderr, "Enabling filtering on exported (csv, xml, network) files.\n");
1574 filter_export = 1;
1575 if (ConfigFile::ParseFilterLine(filter_bit, &filter_export_bssid, &filter_export_source,
1576 &filter_export_dest, &filter_export_bssid_invert,
1577 @@ -1816,14 +1299,6 @@
1578
1579 }
1580
1581 - if (waypoint) {
1582 - if ((waypoint_file = fopen(waypointfile.c_str(), "a")) == NULL) {
1583 - fprintf(stderr, "WARNING: Could not open waypoint file '%s' for writing: %s\n",
1584 - waypointfile.c_str(), strerror(errno));
1585 - waypoint = 0;
1586 - }
1587 - }
1588 -
1589 // Create all the logs and title/number them appropriately
1590 // We need to save this for after we toast the conf record
1591 int logfile_matched = 0;
1592 @@ -1871,13 +1346,6 @@
1593 continue;
1594 }
1595
1596 - if (gps_log == 1) {
1597 - gpslogfile = conf->ExpandLogPath(conf->FetchOpt("logtemplate"), logname, "gps", run_num);
1598 -
1599 - if (gpslogfile == "")
1600 - continue;
1601 - }
1602 -
1603 // if we made it this far we're cool -- all the logfiles we're writing to matched
1604 // this number
1605 logfile_matched = 1;
1606 @@ -1906,9 +1374,6 @@
1607 if (cisco_log)
1608 fprintf(stderr, "Logging cisco product information to %s\n", ciscologfile.c_str());
1609
1610 - if (gps_log == 1)
1611 - fprintf(stderr, "Logging gps coordinates to %s\n", gpslogfile.c_str());
1612 -
1613 if (data_log)
1614 fprintf(stderr, "Logging data to %s\n", dumplogfile.c_str());
1615
1616 @@ -2055,7 +1520,6 @@
1617 { "dump-type", required_argument, 0, 'd' },
1618 { "max-packets", required_argument, 0, 'm' },
1619 { "quiet", no_argument, 0, 'q' },
1620 - { "gps", required_argument, 0, 'g' },
1621 { "port", required_argument, 0, 'p' },
1622 { "allowed-hosts", required_argument, 0, 'a' },
1623 { "bind-address", required_argument, 0, 'b'},
1624 @@ -2136,18 +1600,6 @@
1625 Usage(argv[0]);
1626 }
1627 break;
1628 - case 'g':
1629 - // GPS
1630 - if (strcmp(optarg, "off") == 0) {
1631 - gps_enable = 0;
1632 - }
1633 - else if (sscanf(optarg, "%1023[^:]:%d", gpshost, &gpsport) < 2) {
1634 - fprintf(stderr, "Invalid GPS host '%s' (host:port or off required)\n",
1635 - optarg);
1636 - gps_enable = 1;
1637 - Usage(argv[0]);
1638 - }
1639 - break;
1640 case 'p':
1641 // Port
1642 if (sscanf(optarg, "%d", &tcpport) != 1) {
1643 @@ -2169,7 +1621,6 @@
1644 break;
1645 case 'q':
1646 // Quiet
1647 - sound = 0;
1648 break;
1649 case 'v':
1650 // version
1651 @@ -2323,39 +1774,6 @@
1652 // And we're done
1653 fclose(pid_file);
1654
1655 -
1656 - // Set up the GPS object to give to the children
1657 - if (gpsport == -1 && gps_enable) {
1658 - if (conf->FetchOpt("gps") == "true") {
1659 - if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost,
1660 - &gpsport) != 2) {
1661 - fprintf(stderr, "Invalid GPS host in config (host:port required)\n");
1662 - exit(1);
1663 - }
1664 -
1665 - gps_enable = 1;
1666 - } else {
1667 - gps_enable = 0;
1668 - gps_log = 0;
1669 - }
1670 - }
1671 -
1672 - if (gps_enable == 1) {
1673 - gps = new GPSD(gpshost, gpsport);
1674 -
1675 - // Lock GPS position
1676 - if (conf->FetchOpt("gpsmodelock") == "true") {
1677 - fprintf(stderr, "Enabling GPS position lock override (broken GPS unit "
1678 - "reports 0 always)\n");
1679 - gps->SetOptions(GPSD_OPT_FORCEMODE);
1680 - }
1681 -
1682 - } else {
1683 - gps_log = 0;
1684 - }
1685 -
1686 - // Register the gps and timetracker with the sourcetracker
1687 - sourcetracker.AddGpstracker(gps);
1688 sourcetracker.AddTimetracker(&timetracker);
1689
1690 // Handle errors here maybe in the future
1691 @@ -2522,13 +1940,6 @@
1692 fprintf(stderr, "Dump file format: %s\n", dumpfile->FetchType());
1693 }
1694
1695 - if (gps_enable && gps_log == 1) {
1696 - if (gpsdump.OpenDump(gpslogfile.c_str(), xmllogfile.c_str()) < 0) {
1697 - fprintf(stderr, "FATAL: GPS dump error: %s\n", gpsdump.FetchError());
1698 - ErrorShutdown();
1699 - }
1700 - }
1701 -
1702 // Open our files first to make sure we can, we'll unlink the empties later.
1703 FILE *testfile = NULL;
1704 if (net_log) {
1705 @@ -2600,14 +2011,13 @@
1706 */
1707
1708 if (data_log || net_log || crypt_log) {
1709 - snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s%s",
1710 + snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s",
1711 data_log ? " data" : "" ,
1712 net_log ? " networks" : "" ,
1713 csv_log ? " CSV" : "" ,
1714 xml_log ? " XML" : "" ,
1715 crypt_log ? " weak" : "",
1716 - cisco_log ? " cisco" : "",
1717 - gps_log == 1 ? " gps" : "");
1718 + cisco_log ? " cisco" : "");
1719 fprintf(stderr, "%s\n", status);
1720 } else if (no_log) {
1721 snprintf(status, STATUS_MAX, "Not logging any data.");
1722 @@ -2625,23 +2035,6 @@
1723 }
1724 }
1725
1726 - if (gps_enable) {
1727 - // Open the GPS
1728 - if (gps->OpenGPSD() < 0) {
1729 - fprintf(stderr, "%s\n", gps->FetchError());
1730 -
1731 - gps_enable = 0;
1732 - gps_log = 0;
1733 - } else {
1734 - fprintf(stderr, "Opened GPS connection to %s port %d\n",
1735 - gpshost, gpsport);
1736 -
1737 - gpsmode = gps->FetchMode();
1738 -
1739 - last_gpsd_reconnect = time(0);
1740 - }
1741 - }
1742 -
1743 fprintf(stderr, "Listening on port %d.\n", tcpport);
1744 for (unsigned int ipvi = 0; ipvi < legal_ipblock_vec.size(); ipvi++) {
1745 char *netaddr = strdup(inet_ntoa(legal_ipblock_vec[ipvi]->network));
1746 @@ -2682,8 +2075,6 @@
1747 &Protocol_NETWORK, &ProtocolNetworkEnable);
1748 client_ref = ui_server.RegisterProtocol("CLIENT", 0, CLIENT_fields_text,
1749 &Protocol_CLIENT, &ProtocolClientEnable);
1750 - gps_ref = ui_server.RegisterProtocol("GPS", 0, GPS_fields_text,
1751 - &Protocol_GPS, NULL);
1752 info_ref = ui_server.RegisterProtocol("INFO", 0, INFO_fields_text,
1753 &Protocol_INFO, NULL);
1754 remove_ref = ui_server.RegisterProtocol("REMOVE", 0, REMOVE_fields_text,
1755 @@ -2738,14 +2129,9 @@
1756 // Write network info and tick the tracker once per second
1757 timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &NetWriteEvent, NULL);
1758 timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &TrackerTickEvent, NULL);
1759 - // Update GPS coordinates and handle signal loss if defined
1760 - timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL);
1761 // Sync the data files if requested
1762 if (datainterval > 0 && no_log == 0)
1763 timetracker.RegisterTimer(datainterval * SERVER_TIMESLICES_SEC, NULL, 1, &ExportSyncEvent, NULL);
1764 - // Write waypoints if requested
1765 - if (waypoint)
1766 - timetracker.RegisterTimer(decay * SERVER_TIMESLICES_SEC, NULL, 1, &WaypointSyncEvent, NULL);
1767 // Channel hop if requested
1768 if (channel_hop) {
1769 if (channel_dwell)
1770 @@ -2769,7 +2155,6 @@
1771 snprintf(status, 1024, "%s", TIMESTAMP);
1772 kdata.timestamp = status;
1773
1774 - time_t last_click = 0;
1775 int num_networks = 0, num_packets = 0, num_noise = 0, num_dropped = 0;
1776
1777
1778 @@ -2918,54 +2303,13 @@
1779
1780 }
1781
1782 - if (gps_log == 1 && info.type != packet_noise &&
1783 - info.type != packet_unknown && info.type != packet_phy &&
1784 - info.corrupt == 0) {
1785 - if (gpsdump.DumpPacket(&info) < 0) {
1786 - snprintf(status, STATUS_MAX, "%s", gpsdump.FetchError());
1787 - if (!silent || NetWriteStatus(status) == 0)
1788 - fprintf(stderr, "%s\n", status);
1789 - }
1790 - }
1791 -
1792 // tracker.ProcessPacket(info);
1793 tracker.ProcessPacket(&packet, &info, &bssid_wep_map,
1794 wep_identity);
1795
1796 - if (tracker.FetchNumNetworks() > num_networks) {
1797 - if (sound == 1)
1798 - if (info.crypt_set &&
1799 - wav_map.find("new_wep") != wav_map.end())
1800 - sound = PlaySound("new_wep");
1801 - else
1802 - sound = PlaySound("new");
1803 - if (speech == 1) {
1804 - string text;
1805 -
1806 - if (info.crypt_set)
1807 - text = ExpandSpeechString(speech_sentence_encrypted, &info,
1808 - speech_encoding);
1809 - else
1810 - text = ExpandSpeechString(speech_sentence_unencrypted,
1811 - &info, speech_encoding);
1812 -
1813 - speech = SayText(MungeToShell(text).c_str());
1814 - }
1815 - }
1816 num_networks = tracker.FetchNumNetworks();
1817
1818 if (tracker.FetchNumPackets() != num_packets) {
1819 - if (cur_time - last_click >= decay && sound == 1) {
1820 - if (tracker.FetchNumPackets() - num_packets >
1821 - tracker.FetchNumDropped() + localdropnum - num_dropped) {
1822 - sound = PlaySound("traffic");
1823 - } else {
1824 - sound = PlaySound("junktraffic");
1825 - }
1826 -
1827 - last_click = cur_time;
1828 - }
1829 -
1830 num_packets = tracker.FetchNumPackets();
1831 num_noise = tracker.FetchNumNoise();
1832 num_dropped = tracker.FetchNumDropped() + localdropnum;
1833 diff -urN kismet.dev/kismet_server.h kismet.dev2/kismet_server.h
1834 --- kismet.dev/kismet_server.h 2005-08-16 03:22:51.000000000 +0200
1835 +++ kismet.dev2/kismet_server.h 2005-08-23 01:59:25.653218728 +0200
1836 @@ -33,10 +33,6 @@
1837 void handle_command(TcpServer *tcps, client_command *cc);
1838 int NetWriteStatus(const char *in_status);
1839 void NetWriteInfo();
1840 -int SayText(string in_text);
1841 -int PlaySound(string in_sound);
1842 -void SpeechHandler(int *fds, const char *player);
1843 -void SoundHandler(int *fds, const char *player, map<string, string> soundmap);
1844 void ProtocolAlertEnable(int in_fd);
1845 void ProtocolNetworkEnable(int in_fd);
1846 void ProtocolClientEnable(int in_fd);
1847 diff -urN kismet.dev/packetracker.cc kismet.dev2/packetracker.cc
1848 --- kismet.dev/packetracker.cc 2005-08-16 03:22:51.000000000 +0200
1849 +++ kismet.dev2/packetracker.cc 2005-08-23 01:59:25.656218272 +0200
1850 @@ -2439,23 +2439,3 @@
1851
1852 }
1853
1854 -// Write a gpsdrive compatable waypoint file
1855 -int Packetracker::WriteGpsdriveWaypt(FILE *in_file) {
1856 - fseek(in_file, 0L, SEEK_SET);
1857 - ftruncate(fileno(in_file), 0);
1858 -
1859 - // Convert the map to a vector and sort it
1860 - for (map<mac_addr, wireless_network *>::const_iterator i = bssid_map.begin();
1861 - i != bssid_map.end(); ++i) {
1862 - wireless_network *net = i->second;
1863 -
1864 - float lat, lon;
1865 - lat = (net->min_lat + net->max_lat) / 2;
1866 - lon = (net->min_lon + net->max_lon) / 2;
1867 - fprintf(in_file, "%s\t%f %f\n", waypointformat == 1 ? net->ssid.c_str() : net->bssid.Mac2String().c_str(), lat, lon);
1868 - }
1869 -
1870 - fflush(in_file);
1871 -
1872 - return 1;
1873 -}
1874 diff -urN kismet.dev/packetracker.h kismet.dev2/packetracker.h
1875 --- kismet.dev/packetracker.h 2005-08-16 03:22:51.000000000 +0200
1876 +++ kismet.dev2/packetracker.h 2005-08-23 01:59:25.656218272 +0200
1877 @@ -30,7 +30,6 @@
1878 #include <string>
1879
1880 #include "util.h"
1881 -#include "gpsd.h"
1882 #include "packet.h"
1883 #include "tracktypes.h"
1884 #include "manuf.h"
1885 @@ -85,8 +84,6 @@
1886 int WriteXMLNetworks(string in_fname);
1887 int WriteCisco(string in_fname);
1888
1889 - int WriteGpsdriveWaypt(FILE *in_file);
1890 -
1891 void WriteSSIDMap(FILE *in_file);
1892 void ReadSSIDMap(FILE *in_file);
1893
1894 diff -urN kismet.dev/packetsourcetracker.cc kismet.dev2/packetsourcetracker.cc
1895 --- kismet.dev/packetsourcetracker.cc 2005-08-23 00:59:39.969982048 +0200
1896 +++ kismet.dev2/packetsourcetracker.cc 2005-08-23 01:59:25.657218120 +0200
1897 @@ -24,7 +24,6 @@
1898 Packetsourcetracker::Packetsourcetracker() {
1899 next_packsource_id = 0;
1900 next_meta_id = 0;
1901 - gpsd = NULL;
1902 timetracker = NULL;
1903 chanchild_pid = 0;
1904 sockpair[0] = sockpair[1] = 0;
1905 @@ -691,7 +690,6 @@
1906
1907 // Register the trackers with it
1908 meta->capsource->AddTimetracker(timetracker);
1909 - meta->capsource->AddGpstracker(gpsd);
1910
1911 // Open it
1912 fprintf(stderr, "Source %d (%s): Opening %s source interface %s...\n",
1913 diff -urN kismet.dev/packetsourcetracker.h kismet.dev2/packetsourcetracker.h
1914 --- kismet.dev/packetsourcetracker.h 2005-08-16 03:22:51.000000000 +0200
1915 +++ kismet.dev2/packetsourcetracker.h 2005-08-23 01:59:25.658217968 +0200
1916 @@ -30,7 +30,6 @@
1917 #include <string>
1918
1919 #include "timetracker.h"
1920 -#include "gpsd.h"
1921 #include "packetsource.h"
1922
1923 // Sentinel for starting a new packet
1924 @@ -144,9 +143,6 @@
1925 // Register a timer event handler for us to use
1926 void AddTimetracker(Timetracker *in_tracker) { timetracker = in_tracker; }
1927
1928 - // Register the GPS server for us to use
1929 - void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; }
1930 -
1931 // Register a packet prototype source... Card type string, root binding requirement,
1932 // function to generate an instance of the source, and function to change channel
1933 // for this card type. This fills out the prototype. Sources that don't hop
1934 @@ -221,7 +217,6 @@
1935 uint16_t channel;
1936 } chanchild_changepacket;
1937
1938 - GPSD *gpsd;
1939 Timetracker *timetracker;
1940
1941 char errstr[1024];
1942 diff -urN kismet.dev/panelfront.cc kismet.dev2/panelfront.cc
1943 --- kismet.dev/panelfront.cc 2005-08-16 03:22:51.000000000 +0200
1944 +++ kismet.dev2/panelfront.cc 2005-08-23 01:59:25.659217816 +0200
1945 @@ -37,7 +37,6 @@
1946 " Key Action",
1947 " e List Kismet servers",
1948 " z Toggle fullscreen zoom of network view",
1949 - " m Toggle muting of sound and speech",
1950 " t Tag (or untag) selected network",
1951 " g Group tagged networks",
1952 " u Ungroup current group",
1953 @@ -121,7 +120,6 @@
1954 "Key Action",
1955 " e List Kismet servers",
1956 " z Toggle fullscreen net list",
1957 - " m Toggle muting",
1958 " t Tag (or untag) selected",
1959 " g Group tagged networks",
1960 " u Ungroup current group",
1961 @@ -237,19 +235,6 @@
1962 };
1963
1964
1965 -char *KismetHelpGps[] = {
1966 - "KISMET NETWORK FOLLOW",
1967 - "This panel estimates the center of a network, the current",
1968 - "direction of travel, and the direction of the network center",
1969 - "and distance relative to the current direction of movement.",
1970 - " Key Action",
1971 - " s Follow location of strongest packet",
1972 - " c Follow location of estimated network center",
1973 - " q Close popup",
1974 - NULL
1975 -};
1976 -
1977 -
1978 char *KismetHelpStats[] = {
1979 "KISMET NETWORK STATISTICS",
1980 "This panel displays overall statistics about the wireless",
1981 @@ -678,7 +663,6 @@
1982 }
1983
1984 // Enable all the protocols we handle
1985 - in_client->EnableProtocol("GPS");
1986 in_client->EnableProtocol("INFO");
1987 in_client->EnableProtocol("REMOVE");
1988 in_client->EnableProtocol("NETWORK");
1989 @@ -1282,27 +1266,6 @@
1990 if (con->client == NULL)
1991 continue;
1992
1993 - // Update GPS
1994 - float newlat, newlon, newalt, newspd, newheading;
1995 - int newfix;
1996 - con->client->FetchLoc(&newlat, &newlon, &newalt, &newspd, &newheading, &newfix);
1997 -
1998 - if (GPSD::EarthDistance(newlat, newlon, last_lat, last_lon) > 10) {
1999 - con->last_lat = con->lat;
2000 - con->last_lon = con->lon;
2001 - con->last_spd = con->spd;
2002 - con->last_alt = con->alt;
2003 - con->last_fix = con->fix;
2004 - con->last_heading = con->heading;
2005 - }
2006 -
2007 - con->lat = newlat;
2008 - con->lon = newlon;
2009 - con->alt = newalt;
2010 - con->spd = newspd;
2011 - con->heading = newheading;
2012 - con->fix = newfix;
2013 -
2014 // Update quality
2015 con->quality = con->client->FetchQuality();
2016 con->power = con->client->FetchPower();
2017 diff -urN kismet.dev/panelfront.h kismet.dev2/panelfront.h
2018 --- kismet.dev/panelfront.h 2005-08-16 03:22:51.000000000 +0200
2019 +++ kismet.dev2/panelfront.h 2005-08-23 01:59:25.660217664 +0200
2020 @@ -65,7 +65,6 @@
2021 #define SORT_SIZE 10
2022 extern char *KismetHelpPower[];
2023 extern char *KismetHelpRate[];
2024 -extern char *KismetHelpGps[];
2025 extern char *KismetHelpStats[];
2026 extern char *KismetHelpDump[];
2027 extern char *KismetHelpPack[];
2028 @@ -269,7 +268,6 @@
2029 int RatePrinter(void *in_window);
2030 int StatsPrinter(void *in_window);
2031 int PackPrinter(void *in_window);
2032 - int GpsPrinter(void *in_window);
2033 int AlertPrinter(void *in_window);
2034
2035 int MainClientPrinter(void *in_window);
2036 @@ -298,7 +296,6 @@
2037 int PackInput(void *in_window, int in_chr);
2038 // Help has a generic handler
2039 int TextInput(void *in_window, int in_chr);
2040 - int GpsInput(void *in_window, int in_chr);
2041 int AlertInput(void *in_window, int in_chr);
2042
2043 int MainClientInput(void *in_window, int in_chr);
2044 diff -urN kismet.dev/panelfront_display.cc kismet.dev2/panelfront_display.cc
2045 --- kismet.dev/panelfront_display.cc 2005-08-16 03:22:51.000000000 +0200
2046 +++ kismet.dev2/panelfront_display.cc 2005-08-23 01:59:25.663217208 +0200
2047 @@ -727,7 +727,7 @@
2048 mvwaddstr(netwin, netwin->_maxy, netwin->_maxx - 14, ptxt);
2049 }
2050
2051 -#ifdef HAVE_GPS
2052 +#if 0
2053
2054
2055 if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && fix == 0)) {
2056 @@ -1496,51 +1496,6 @@
2057 snprintf(output, print_width, "Networks: %d", (int) details_network->networks.size());
2058 kwin->text.push_back(output);
2059
2060 - if (details_network->virtnet->gps_fixed != -1) {
2061 - if ((details_network->virtnet->min_lat == 90) && (details_network->virtnet->min_lon == 180) &&
2062 - (details_network->virtnet->max_lat == -90) && (details_network->virtnet->max_lon == -180)) {
2063 - snprintf(output, print_width, "Min Loc : N/A");
2064 - kwin->text.push_back(output);
2065 - snprintf(output, print_width, "Max Loc : N/A");
2066 - kwin->text.push_back(output);
2067 - snprintf(output, print_width, "Range : N/A");
2068 - kwin->text.push_back(output);
2069 - }
2070 - else {
2071 - snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
2072 - details_network->virtnet->min_lat, details_network->virtnet->min_lon,
2073 - metric ? details_network->virtnet->min_alt / 3.3 : details_network->virtnet->min_alt,
2074 - metric ? details_network->virtnet->min_spd * 1.6093 : details_network->virtnet->min_spd);
2075 - kwin->text.push_back(output);
2076 - snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
2077 - details_network->virtnet->max_lat, details_network->virtnet->max_lon,
2078 - metric ? details_network->virtnet->max_alt / 3.3 : details_network->virtnet->max_alt,
2079 - metric ? details_network->virtnet->max_spd * 1.6093 : details_network->virtnet->max_spd);
2080 - kwin->text.push_back(output);
2081 -
2082 - double diagdist = GPSD::EarthDistance(details_network->virtnet->min_lat,
2083 - details_network->virtnet->min_lon,
2084 - details_network->virtnet->max_lat,
2085 - details_network->virtnet->max_lon);
2086 -
2087 - if (finite(diagdist)) {
2088 - if (metric) {
2089 - if (diagdist < 1000)
2090 - snprintf(output, print_width, "Range : %.3f meters", diagdist);
2091 - else
2092 - snprintf(output, print_width, "Range : %.3f kilometers", diagdist / 1000);
2093 - } else {
2094 - diagdist *= 3.3;
2095 - if (diagdist < 5280)
2096 - snprintf(output, print_width, "Range : %.3f feet", diagdist);
2097 - else
2098 - snprintf(output, print_width, "Range : %.3f miles", diagdist / 5280);
2099 - }
2100 - kwin->text.push_back(output);
2101 - }
2102 - }
2103 - }
2104 -
2105 if (details_network->virtnet->carrier_set & (1 << (int) carrier_80211b)) {
2106 snprintf(output, print_width, "Carrier : IEEE 802.11b");
2107 kwin->text.push_back(output);
2108 @@ -1853,49 +1808,6 @@
2109 dnet->ipdata.range_ip[2], dnet->ipdata.range_ip[3]);
2110 kwin->text.push_back(output);
2111 }
2112 -
2113 - if (dnet->gps_fixed != -1) {
2114 - if ((dnet->min_lat == 90) && (dnet->min_lon == 180) &&
2115 - (dnet->max_lat == -90) && (dnet->max_lon == -180)) {
2116 - snprintf(output, print_width, "Min Loc : N/A");
2117 - kwin->text.push_back(output);
2118 - snprintf(output, print_width, "Max Loc : N/A");
2119 - kwin->text.push_back(output);
2120 - snprintf(output, print_width, "Range : N/A");
2121 - kwin->text.push_back(output);
2122 - }
2123 - else {
2124 - snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
2125 - dnet->min_lat, dnet->min_lon,
2126 - metric ? dnet->min_alt / 3.3 : dnet->min_alt,
2127 - metric ? dnet->min_spd * 1.6093 : dnet->min_spd);
2128 - kwin->text.push_back(output);
2129 - snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
2130 - dnet->max_lat, dnet->max_lon,
2131 - metric ? dnet->max_alt / 3.3 : dnet->max_alt,
2132 - metric ? dnet->max_spd * 1.6093 : dnet->max_spd);
2133 - kwin->text.push_back(output);
2134 -
2135 - double diagdist = GPSD::EarthDistance(dnet->min_lat, dnet->min_lon,
2136 - dnet->max_lat, dnet->max_lon);
2137 -
2138 - if (finite(diagdist)) {
2139 - if (metric) {
2140 - if (diagdist < 1000)
2141 - snprintf(output, print_width, "Range : %f meters", diagdist);
2142 - else
2143 - snprintf(output, print_width, "Range : %f kilometers", diagdist / 1000);
2144 - } else {
2145 - diagdist *= 3.3;
2146 - if (diagdist < 5280)
2147 - snprintf(output, print_width, "Range : %f feet", diagdist);
2148 - else
2149 - snprintf(output, print_width, "Range : %f miles", diagdist / 5280);
2150 - }
2151 - kwin->text.push_back(output);
2152 - }
2153 - }
2154 - }
2155 }
2156
2157 // Now we just use the text printer to handle the rest for us
2158 @@ -1903,184 +1815,6 @@
2159 return TextPrinter(in_window);
2160 }
2161
2162 -int PanelFront::GpsPrinter(void *in_window) {
2163 - kis_window *kwin = (kis_window *) in_window;
2164 -
2165 - char output[1024];
2166 - kwin->text.clear();
2167 -
2168 - if (details_network == NULL) {
2169 - kwin->text.push_back("The network or group being displayed");
2170 - kwin->text.push_back("has been deleted. Please select a ");
2171 - kwin->text.push_back("different network.");
2172 - return TextPrinter(in_window);
2173 - }
2174 -
2175 - wireless_network *dnet = details_network->virtnet;
2176 -
2177 - int print_width = kwin->print_width;
2178 - if (print_width > 1024)
2179 - print_width = 1023;
2180 -
2181 - if (print_width < 32) {
2182 - kwin->text.push_back("Display not wide enough");
2183 - return TextPrinter(in_window);
2184 - }
2185 -
2186 - if (dnet->aggregate_points == 0) {
2187 - kwin->text.push_back("No GPS data.");
2188 - return TextPrinter(in_window);
2189 - }
2190 -
2191 - float center_lat, center_lon;
2192 -
2193 - // We hijack the "selected" field as a toggle
2194 - if (kwin->selected == 1) {
2195 - center_lat = dnet->best_lat;
2196 - center_lon = dnet->best_lon;
2197 - } else {
2198 - center_lat = dnet->aggregate_lat / dnet->aggregate_points;
2199 - center_lon = dnet->aggregate_lon / dnet->aggregate_points;
2200 - }
2201 -
2202 - // Get bearing to the center
2203 - float center_angle = GPSD::CalcHeading(center_lat, center_lon, lat, lon);
2204 -
2205 - float difference_angle = heading - center_angle;
2206 - if (difference_angle < 0)
2207 - difference_angle += 360;
2208 -
2209 - double diagdist = GPSD::EarthDistance(lat, lon, center_lat, center_lon);
2210 -
2211 - // Now we know everything - where we are, where we are headed, where we SHOULD be headed
2212 - // to get to the supposed center of the network, how far it is, and the orientation on our
2213 - // compass to get to it. Time to start drawing our output.
2214 -
2215 - char compass[5][10];
2216 - memset(compass, 0, sizeof(char) * 5 * 10);
2217 -
2218 - // | 41.12345x-74.12345 .-|-/ |
2219 - // | Bearing: / |/ \ |
2220 - // | 123.23 degrees | O | |
2221 - // | \ \ / |
2222 - // | Estimated center: '---\ |
2223 -
2224 -
2225 - // Find the orientation on our compass:
2226 - if (difference_angle > 330 || difference_angle <= 22) {
2227 - snprintf(compass[0], 10, " .-|-. ");
2228 - snprintf(compass[1], 10, " / | \\ ");
2229 - snprintf(compass[2], 10, "| O |");
2230 - snprintf(compass[3], 10, " \\ / ");
2231 - snprintf(compass[4], 10, " '---' ");
2232 - } else if (difference_angle > 22 && difference_angle <= 66) {
2233 - snprintf(compass[0], 10, " .---/ ");
2234 - snprintf(compass[1], 10, " / / \\ ");
2235 - snprintf(compass[2], 10, "| O |");
2236 - snprintf(compass[3], 10, " \\ / ");
2237 - snprintf(compass[4], 10, " '---' ");
2238 - } else if (difference_angle > 66 && difference_angle <= 110) {
2239 - snprintf(compass[0], 10, " .---. ");
2240 - snprintf(compass[1], 10, " / \\ ");
2241 - snprintf(compass[2], 10, "| O----");
2242 - snprintf(compass[3], 10, " \\ / ");
2243 - snprintf(compass[4], 10, " '---' ");
2244 - } else if (difference_angle > 110 && difference_angle <= 154) {
2245 - snprintf(compass[0], 10, " .---. ");
2246 - snprintf(compass[1], 10, " / \\ ");
2247 - snprintf(compass[2], 10, "| O |");
2248 - snprintf(compass[3], 10, " \\ \\ / ");
2249 - snprintf(compass[4], 10, " '---\\ ");
2250 - } else if (difference_angle > 154 && difference_angle <= 198) {
2251 - snprintf(compass[0], 10, " .---. ");
2252 - snprintf(compass[1], 10, " / \\ ");
2253 - snprintf(compass[2], 10, "| O |");
2254 - snprintf(compass[3], 10, " \\ | / ");
2255 - snprintf(compass[4], 10, " '-|-' ");
2256 - } else if (difference_angle > 198 && difference_angle <= 242) {
2257 - snprintf(compass[0], 10, " .---. ");
2258 - snprintf(compass[1], 10, " / \\ ");
2259 - snprintf(compass[2], 10, "| O |");
2260 - snprintf(compass[3], 10, " \\ / / ");
2261 - snprintf(compass[4], 10, " /---' ");
2262 - } else if (difference_angle > 242 && difference_angle <= 286) {
2263 - snprintf(compass[0], 10, " .---. ");
2264 - snprintf(compass[1], 10, " / \\ ");
2265 - snprintf(compass[2], 10, "----O |");
2266 - snprintf(compass[3], 10, " \\ / ");
2267 - snprintf(compass[4], 10, " '---' ");
2268 - } else if (difference_angle > 286 && difference_angle <= 330) {
2269 - snprintf(compass[0], 10, " \\---. ");
2270 - snprintf(compass[1], 10, " / \\ \\ ");
2271 - snprintf(compass[2], 10, "| O |");
2272 - snprintf(compass[3], 10, " \\ / ");
2273 - snprintf(compass[4], 10, " '---' ");
2274 - } else {
2275 - snprintf(compass[0], 10, "%f\n", difference_angle);
2276 - }
2277 -
2278 -
2279 - // - Network GPS ---------------------|
2280 - // | Current: |
2281 - // | 41.12345x-74.12345 .-|-. |
2282 - // | Bearing: / | \ |
2283 - // | 123.23 degrees | O | |
2284 - // | \ \ / |
2285 - // | Estimated center: '---\ |
2286 - // | -73.12345x43.12345 |
2287 - // | 120 feet |
2288 - // ------------------------------------
2289 - char textfrag[23];
2290 -
2291 - snprintf(output, print_width, "Current:");
2292 - kwin->text.push_back(output);
2293 -
2294 - snprintf(textfrag, 23, "%.3f x %.3f", lat, lon);
2295 - snprintf(output, print_width, "%-22s%s", textfrag, compass[0]);
2296 - kwin->text.push_back(output);
2297 -
2298 - snprintf(textfrag, 23, " Bearing:");
2299 - snprintf(output, print_width, "%-22s%s", textfrag, compass[1]);
2300 - kwin->text.push_back(output);
2301 -
2302 - snprintf(textfrag, 23, " %.2f*", heading);
2303 - snprintf(output, print_width, "%-22s%s", textfrag, compass[2]);
2304 - kwin->text.push_back(output);
2305 -
2306 - snprintf(textfrag, 23, " ");
2307 - snprintf(output, print_width, "%-22s%s", textfrag, compass[3]);
2308 - kwin->text.push_back(output);
2309 -
2310 - if (kwin->selected == 1)
2311 - snprintf(textfrag, 23, "Strongest signal:");
2312 - else
2313 - snprintf(textfrag, 23, "Estimated Center:");
2314 - snprintf(output, print_width, "%-22s%s", textfrag, compass[4]);
2315 - kwin->text.push_back(output);
2316 -
2317 - snprintf(textfrag, 23, "%.3f x %.3f", center_lat, center_lon);
2318 - snprintf(output, print_width, "%-22s%.2f*", textfrag, difference_angle);
2319 - kwin->text.push_back(output);
2320 -
2321 - if (metric) {
2322 - if (diagdist < 1000)
2323 - snprintf(textfrag, 23, "%.2f m", diagdist);
2324 - else
2325 - snprintf(textfrag, 23, "%.2f km", diagdist / 1000);
2326 - } else {
2327 - diagdist *= 3.3;
2328 - if (diagdist < 5280)
2329 - snprintf(textfrag, 23, "%.2f ft", diagdist);
2330 - else
2331 - snprintf(textfrag, 23, "%.2f mi", diagdist / 5280);
2332 - }
2333 -
2334 - snprintf(output, print_width, "%-22s%s", "", textfrag);
2335 - kwin->text.push_back(output);
2336 -
2337 - return TextPrinter(in_window);
2338 -}
2339 -
2340 int PanelFront::PackPrinter(void *in_window) {
2341 kis_window *kwin = (kis_window *) in_window;
2342
2343 @@ -3049,53 +2783,6 @@
2344 details_client->ipdata.ip[2], details_client->ipdata.ip[3]);
2345 kwin->text.push_back(output);
2346
2347 - if (details_client->gps_fixed != -1) {
2348 - kwin->text.push_back("");
2349 -
2350 - if ((details_client->min_lat == 90) && (details_client->min_lon == 180) &&
2351 - (details_client->max_lat == -90) && (details_client->max_lon == -180)) {
2352 - snprintf(output, print_width, "Min Loc : N/A");
2353 - kwin->text.push_back(output);
2354 - snprintf(output, print_width, "Max Loc : N/A");
2355 - kwin->text.push_back(output);
2356 - snprintf(output, print_width, "Range : N/A");
2357 - kwin->text.push_back(output);
2358 - }
2359 - else {
2360 - snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
2361 - details_client->min_lat, details_client->min_lon,
2362 - metric ? details_client->min_alt / 3.3 : details_client->min_alt,
2363 - metric ? details_client->min_spd * 1.6093 : details_client->min_spd);
2364 - kwin->text.push_back(output);
2365 - snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
2366 - details_client->max_lat, details_client->max_lon,
2367 - metric ? details_client->max_alt / 3.3 : details_client->max_alt,
2368 - metric ? details_client->max_spd * 1.6093 : details_client->max_spd);
2369 - kwin->text.push_back(output);
2370 -
2371 - double diagdist = GPSD::EarthDistance(details_client->min_lat,
2372 - details_client->min_lon,
2373 - details_client->max_lat,
2374 - details_client->max_lon);
2375 -
2376 - if (finite(diagdist)) {
2377 - if (metric) {
2378 - if (diagdist < 1000)
2379 - snprintf(output, print_width, "Range : %f meters", diagdist);
2380 - else
2381 - snprintf(output, print_width, "Range : %f kilometers", diagdist / 1000);
2382 - } else {
2383 - diagdist *= 3.3;
2384 - if (diagdist < 5280)
2385 - snprintf(output, print_width, "Range : %f feet", diagdist);
2386 - else
2387 - snprintf(output, print_width, "Range : %f miles", diagdist / 5280);
2388 - }
2389 - kwin->text.push_back(output);
2390 - }
2391 - }
2392 - kwin->text.push_back("");
2393 - }
2394
2395 snprintf(output, print_width, "Packets :");
2396 kwin->text.push_back(output);
2397 diff -urN kismet.dev/panelfront_input.cc kismet.dev2/panelfront_input.cc
2398 --- kismet.dev/panelfront_input.cc 2005-08-16 03:22:51.000000000 +0200
2399 +++ kismet.dev2/panelfront_input.cc 2005-08-23 01:59:25.665216904 +0200
2400 @@ -300,16 +300,9 @@
2401 break;
2402 case 'f':
2403 case 'F':
2404 - if (sortby != sort_auto && last_displayed.size() > 0) {
2405 - details_network = last_displayed[kwin->selected];
2406 - SpawnWindow("Network Location", &PanelFront::GpsPrinter, &PanelFront::GpsInput, 8, 34);
2407 - } else {
2408 - WriteStatus("Cannot view network GPS info in autofit sort mode. Sort by a different method.");
2409 - }
2410 break;
2411 case 'm':
2412 case 'M':
2413 - MuteToggle();
2414 break;
2415 case 'e':
2416 case 'E':
2417 @@ -447,7 +440,6 @@
2418 switch(in_chr) {
2419 case 'm':
2420 case 'M':
2421 - MuteToggle();
2422 break;
2423 case 'p':
2424 case 'P':
2425 @@ -546,33 +538,6 @@
2426 return 1;
2427 }
2428
2429 -int PanelFront::GpsInput(void *in_window, int in_chr) {
2430 - kis_window *kwin = (kis_window *) in_window;
2431 -
2432 - switch (in_chr) {
2433 - case 's':
2434 - case 'S':
2435 - kwin->selected = 1;
2436 - break;
2437 - case 'c':
2438 - case 'C':
2439 - kwin->selected = 0;
2440 - break;
2441 - case 'h':
2442 - case 'H':
2443 - SpawnHelp(KismetHelpGps);
2444 - break;
2445 - case 'x':
2446 - case 'X':
2447 - case 'q':
2448 - case 'Q':
2449 - return 0;
2450 - break;
2451 - }
2452 -
2453 - return 1;
2454 -}
2455 -
2456 int PanelFront::RateInput(void *in_window, int in_chr) {
2457 switch (in_chr) {
2458 case 'h':
2459 @@ -645,24 +610,6 @@
2460 return 1;
2461 }
2462
2463 -void PanelFront::MuteToggle() {
2464 - if (muted) {
2465 - speech = old_speech;
2466 - sound = old_sound;
2467 - muted = 0;
2468 - WriteStatus("Restoring sound");
2469 - } else if (sound != 0 || speech != 0) {
2470 - old_speech = speech;
2471 - old_sound = sound;
2472 - sound = 0;
2473 - speech = 0;
2474 - muted = 1;
2475 - WriteStatus("Muting sound");
2476 - } else if (sound == 0 && speech == 0) {
2477 - WriteStatus("Sound not enabled.");
2478 - }
2479 -}
2480 -
2481 int PanelFront::AlertInput(void *in_window, int in_chr) {
2482 kis_window *kwin = (kis_window *) in_window;
2483
2484 diff -urN kismet.dev/pcapsource.cc kismet.dev2/pcapsource.cc
2485 --- kismet.dev/pcapsource.cc 2005-08-23 01:03:45.652632608 +0200
2486 +++ kismet.dev2/pcapsource.cc 2005-08-23 01:59:25.667216600 +0200
2487 @@ -343,11 +343,6 @@
2488 packet->moddata = moddata;
2489 packet->modified = 0;
2490
2491 - if (gpsd != NULL) {
2492 - gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt,
2493 - &packet->gps_spd, &packet->gps_heading, &packet->gps_fix);
2494 - }
2495 -
2496 if (datalink_type == DLT_PRISM_HEADER) {
2497 ret = Prism2KisPack(packet, data, moddata);
2498 } else if (datalink_type == KDLT_BSD802_11) {
2499 @@ -1146,133 +1141,6 @@
2500
2501 // Monitor commands
2502 #ifdef HAVE_LINUX_WIRELESS
2503 -// Cisco uses its own config file in /proc to control modes
2504 -int monitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2505 - FILE *cisco_config;
2506 - char cisco_path[128];
2507 -
2508 - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
2509 - (*in_if) = ifparm;
2510 -
2511 - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
2512 - return -1;
2513 - }
2514 -
2515 - if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
2516 - return -1;
2517 -
2518 - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
2519 - return -1;
2520 -
2521 - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
2522 - return -1;
2523 -
2524 - if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
2525 - return -1;
2526 -
2527 - // Try the iwpriv
2528 - if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 1, 0, in_err) >= 0) {
2529 - return 0;
2530 - }
2531 -
2532 - // Zero the ssid - nonfatal
2533 - Iwconfig_Set_SSID(in_dev, in_err, NULL);
2534 -
2535 - // Build the proc control path
2536 - snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", in_dev);
2537 -
2538 - if ((cisco_config = fopen(cisco_path, "w")) == NULL) {
2539 - snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s",
2540 - cisco_path, errno, strerror(errno));
2541 - return -1;
2542 - }
2543 -
2544 - fprintf(cisco_config, "Mode: r\n");
2545 - fprintf(cisco_config, "Mode: y\n");
2546 - fprintf(cisco_config, "XmitPower: 1\n");
2547 -
2548 - fclose(cisco_config);
2549 -
2550 - // Channel can't be set on cisco with these drivers.
2551 -
2552 - return 0;
2553 -}
2554 -
2555 -int unmonitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2556 - linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2557 - int ret = -1;
2558 -
2559 - // Try the iwpriv
2560 - if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 0, 0, in_err) >= 0) {
2561 - // If we're the new drivers, unmonitor
2562 - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
2563 - return -1;
2564 - }
2565 -
2566 - // Reset the SSID since monitor mode nukes it
2567 - if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
2568 - return -1;
2569 -
2570 - if (ifparm->channel > 0) {
2571 - if (Iwconfig_Set_Channel(in_dev, ifparm->channel, in_err) < 0)
2572 - return -1;
2573 - }
2574 -
2575 - ret = 1;
2576 - }
2577 -
2578 - free(ifparm);
2579 -
2580 - return ret;
2581 -}
2582 -
2583 -// Cisco uses its own config file in /proc to control modes
2584 -//
2585 -// I was doing this with ioctls but that seems to cause lockups while
2586 -// this method doesn't. I don't think I like these drivers.
2587 -int monitor_cisco_wifix(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2588 - FILE *cisco_config;
2589 - char cisco_path[128];
2590 - vector<string> devbits = StrTokenize(in_dev, ":");
2591 -
2592 - if (devbits.size() < 2) {
2593 - snprintf(in_err, STATUS_MAX, "Invalid device pair '%s'. Proper device "
2594 - "for cisco_wifix is eth?:wifi?.", in_dev);
2595 - return -1;
2596 - }
2597 -
2598 - // Bring the device up, zero its ip, and set promisc
2599 - if (Ifconfig_Delta_Flags(devbits[0].c_str(), in_err,
2600 - IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
2601 - return -1;
2602 - if (Ifconfig_Delta_Flags(devbits[1].c_str(), in_err,
2603 - IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
2604 - return -1;
2605 -
2606 - // Zero the ssid, nonfatally
2607 - Iwconfig_Set_SSID(devbits[0].c_str(), in_err, NULL);
2608 - Iwconfig_Set_SSID(devbits[1].c_str(), in_err, NULL);
2609 -
2610 - // Build the proc control path
2611 - snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", devbits[0].c_str());
2612 -
2613 - if ((cisco_config = fopen(cisco_path, "w")) == NULL) {
2614 - snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s",
2615 - cisco_path, errno, strerror(errno));
2616 - return -1;
2617 - }
2618 -
2619 - fprintf(cisco_config, "Mode: r\n");
2620 - fprintf(cisco_config, "Mode: y\n");
2621 - fprintf(cisco_config, "XmitPower: 1\n");
2622 -
2623 - fclose(cisco_config);
2624 -
2625 - // Channel can't be set on cisco with these drivers.
2626 -
2627 - return 0;
2628 -}
2629 -
2630 // Hostap uses iwpriv and iwcontrol settings to control monitor mode
2631 int monitor_hostap(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2632 int ret;
2633 @@ -1421,134 +1289,6 @@
2634 return 1;
2635
2636 }
2637 -
2638 -// Acx100 uses the packhdr iwpriv control to set link state, rest is normal
2639 -int monitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2640 - int ret;
2641 -
2642 - // Allocate a tracking record for the interface settings and remember our
2643 - // setup
2644 - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
2645 - (*in_if) = ifparm;
2646 -
2647 - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
2648 - return -1;
2649 - }
2650 -
2651 - if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
2652 - return -1;
2653 -
2654 - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
2655 - return -1;
2656 -
2657 - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
2658 - return -1;
2659 -
2660 - // it looks like an orinoco now, apparently
2661 - if ((ret = Iwconfig_Set_IntPriv(in_dev, "monitor", 1, initch, in_err)) < 0) {
2662 - if (ret == -2)
2663 - snprintf(in_err, 1024, "Could not find 'monitor' private ioctl "
2664 - "Make sure you have the latest ACX100 development release.");
2665 - return -1;
2666 - }
2667 -
2668 - if (chancontrol_wext(in_dev, initch, in_err, NULL) < 0)
2669 - return -1;
2670 -
2671 - return 0;
2672 -}
2673 -
2674 -int unmonitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2675 - // Restore the IP settings
2676 - linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2677 -
2678 - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
2679 - return -1;
2680 - }
2681 -
2682 - Iwconfig_Set_IntPriv(in_dev, "monitor", 0, ifparm->channel, in_err);
2683 - Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode);
2684 -
2685 - if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
2686 - return -1;
2687 -
2688 - free(ifparm);
2689 -
2690 - return 1;
2691 -}
2692 -
2693 -int monitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2694 - // Allocate a tracking record for the interface settings and remember our
2695 - // setup
2696 - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
2697 - (*in_if) = ifparm;
2698 -
2699 - // Try to figure out the name so we know if we have fcs bytes or not
2700 - char iwname[IFNAMSIZ+1];
2701 - if (Iwconfig_Get_Name(in_dev, in_err, iwname) < 0)
2702 - return -1;
2703 -
2704 - if (strncmp(iwname, "IEEE 802.11b", IFNAMSIZ) == 0) {
2705 - // Looks like the GPL driver, we need to adjust the fcsbytes
2706 - PcapSource *psrc = (PcapSource *) in_ext;
2707 - psrc->fcsbytes = 4;
2708 - }
2709 -
2710 - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
2711 - return -1;
2712 - }
2713 -
2714 - if ((ifparm->flags & IFF_UP)) {
2715 - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
2716 - return -1;
2717 -
2718 - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
2719 - return -1;
2720 -
2721 - if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
2722 - return -1;
2723 -
2724 - } else {
2725 - ifparm->channel = -1;
2726 - ifparm->mode = -1;
2727 - }
2728 -
2729 - int ret = monitor_wext(in_dev, initch, in_err, in_if, in_ext);
2730 -
2731 - if (ret < 0 && ret != -2)
2732 - return ret;
2733 -
2734 - if (Iwconfig_Set_SSID(in_dev, in_err, "") < 0)
2735 - return -1;
2736 -
2737 - return 0;
2738 -}
2739 -
2740 -int unmonitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2741 - linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2742 -
2743 - if (unmonitor_wext(in_dev, initch, in_err, in_if, in_ext))
2744 - return -1;
2745 -
2746 - if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
2747 - return -1;
2748 -
2749 - return 1;
2750 -}
2751 -// vtar5k iwpriv control to set link state, rest is normal
2752 -int monitor_vtar5k(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2753 - // Set the prism iwpriv control to 1
2754 - if (Iwconfig_Set_IntPriv(in_dev, "prism", 1, 0, in_err) < 0) {
2755 - return -1;
2756 - }
2757 -
2758 - // The rest is standard wireless extensions
2759 - if (monitor_wext(in_dev, initch, in_err, in_if, in_ext) < 0)
2760 - return -1;
2761 -
2762 - return 0;
2763 -}
2764 -
2765 // Madwifi stuff uses iwpriv mode
2766 int monitor_madwifi_a(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2767 // Allocate a tracking record for the interface settings and remember our
2768 @@ -1726,89 +1466,6 @@
2769
2770 return unmonitor_wext(in_dev, initch, in_err, in_if, in_ext);
2771 }
2772 -
2773 -int monitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2774 - // Allocate a tracking record for the interface settings and remember our
2775 - // setup
2776 - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
2777 - (*in_if) = ifparm;
2778 -
2779 - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
2780 - return -1;
2781 - }
2782 -
2783 - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
2784 - return -1;
2785 -
2786 - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
2787 - return -1;
2788 -
2789 - // Call the normal monitor mode
2790 - return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
2791 -}
2792 -
2793 -int unmonitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2794 - // Restore initial monitor header
2795 - // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2796 -
2797 - linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2798 -
2799 - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
2800 - return -1;
2801 - }
2802 -
2803 - if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
2804 - return -1;
2805 -
2806 - free(ifparm);
2807 -
2808 - return 1;
2809 -}
2810 -
2811 -int monitor_ipw2200(const char *in_dev, int initch, char *in_err,
2812 - void **in_if, void *in_ext) {
2813 - // Allocate a tracking record for the interface settings and remember our
2814 - // setup
2815 - linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
2816 - (*in_if) = ifparm;
2817 -
2818 - if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
2819 - return -1;
2820 - }
2821 -
2822 - if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
2823 - return -1;
2824 -
2825 - if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
2826 - return -1;
2827 -
2828 - // Call the normal monitor mode
2829 - return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
2830 -}
2831 -
2832 -int unmonitor_ipw2200(const char *in_dev, int initch, char *in_err,
2833 - void **in_if, void *in_ext) {
2834 - // Restore initial monitor header
2835 - // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2836 -
2837 - linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
2838 -
2839 - if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
2840 - return -1;
2841 - }
2842 -
2843 - if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
2844 - return -1;
2845 -
2846 - // James says this wants to be set to channel 0 for proper scanning operation
2847 - if (Iwconfig_Set_Channel(in_dev, 0, in_err) < 0)
2848 - return -1;
2849 -
2850 - free(ifparm);
2851 -
2852 - return 1;
2853 -}
2854 -
2855 // "standard" wireless extension monitor mode
2856 int monitor_wext(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2857 int mode;
2858 @@ -1870,108 +1527,6 @@
2859 #endif
2860
2861 #ifdef SYS_LINUX
2862 -// wlan-ng modern standard
2863 -int monitor_wlanng(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2864 - // I really didn't want to do this...
2865 - char cmdline[2048];
2866 -
2867 - // Sanitize the device just to be safe. The ifconfig should fail if
2868 - // the device is invalid, but why take risks
2869 - for (unsigned int x = 0; x < strlen(in_dev); x++) {
2870 - if (!isalnum(in_dev[x])) {
2871 - snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev);
2872 - return -1;
2873 - }
2874 - }
2875 -
2876 - if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
2877 - return -1;
2878 -
2879 - // Enable the interface
2880 - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev);
2881 - if (RunSysCmd(cmdline) < 0) {
2882 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2883 - return -1;
2884 - }
2885 -
2886 - // Turn off WEP
2887 - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
2888 - "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev);
2889 - if (RunSysCmd(cmdline) < 0) {
2890 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2891 - return -1;
2892 - }
2893 -
2894 - // Don't exclude packets
2895 - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
2896 - "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev);
2897 - if (RunSysCmd(cmdline) < 0) {
2898 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2899 - return -1;
2900 - }
2901 -
2902 - // Turn on rfmon on the initial channel
2903 - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d "
2904 - "enable=true prismheader=true >/dev/null 2>/dev/null", in_dev, initch);
2905 - if (RunSysCmd(cmdline) < 0) {
2906 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2907 - return -1;
2908 - }
2909 -
2910 - return 0;
2911 -}
2912 -
2913 -// wlan-ng avs
2914 -int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
2915 - // I really didn't want to do this...
2916 - char cmdline[2048];
2917 -
2918 - // Sanitize the device just to be safe. The ifconfig should fail if
2919 - // the device is invalid, but why take risks
2920 - for (unsigned int x = 0; x < strlen(in_dev); x++) {
2921 - if (!isalnum(in_dev[x])) {
2922 - snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev);
2923 - return -1;
2924 - }
2925 - }
2926 -
2927 - if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
2928 - return -1;
2929 -
2930 - // Enable the interface
2931 - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev);
2932 - if (RunSysCmd(cmdline) < 0) {
2933 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2934 - return -1;
2935 - }
2936 -
2937 - // Turn off WEP
2938 - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
2939 - "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev);
2940 - if (RunSysCmd(cmdline) < 0) {
2941 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2942 - return -1;
2943 - }
2944 -
2945 - // Don't exclude packets
2946 - snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
2947 - "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev);
2948 - if (RunSysCmd(cmdline) < 0) {
2949 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2950 - return -1;
2951 - }
2952 -
2953 - // Turn on rfmon on the initial channel
2954 - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d prismheader=false "
2955 - "wlanheader=true stripfcs=false keepwepflags=false enable=true >/dev/null 2>/dev/null", in_dev, initch);
2956 - if (RunSysCmd(cmdline) < 0) {
2957 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
2958 - return -1;
2959 - }
2960 -
2961 - return 0;
2962 -}
2963 -
2964 int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if,
2965 void *in_ext) {
2966 char cmdline[2048];
2967 @@ -1981,7 +1536,7 @@
2968 snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 1'. "
2969 "Some custom firmware images require you to specify the origial "
2970 "device and a new dynamic device and use the iwconfig controls. "
2971 - "see the README for how to configure your capture source.");
2972 + "see the README for how to configure your capture source.", in_dev);
2973 return -1;
2974 }
2975
2976 @@ -1998,7 +1553,7 @@
2977 snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 0'. "
2978 "Some custom firmware images require you to specify the origial "
2979 "device and a new dynamic device and use the iwconfig controls. "
2980 - "see the README for how to configure your capture source.");
2981 + "see the README for how to configure your capture source.", in_dev);
2982 return -1;
2983 }
2984
2985 @@ -2244,75 +1799,6 @@
2986 return 0;
2987 }
2988
2989 -int chancontrol_ipw2100(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
2990 - // Introduce a slight delay to let the driver settle, a la orinoco. I don't
2991 - // like doing this at all since it introduces hiccups into the channel control
2992 - // process, but....
2993 -
2994 - int ret = 0;
2995 -
2996 - ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext);
2997 - usleep(5000);
2998 -
2999 - return ret;
3000 -}
3001 -
3002 -int chancontrol_ipw2200(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
3003 - // Lets see if this really needs the channel change delay like the 2100 did
3004 - int ret = 0;
3005 -
3006 - ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext);
3007 - // Drop a tiny sleep in here to let the channel set settle, otherwise we
3008 - // run the risk of the card freaking out
3009 - usleep(7000);
3010 -
3011 - return ret;
3012 -}
3013 -
3014 -#endif
3015 -
3016 -#ifdef SYS_LINUX
3017 -int chancontrol_wlanng(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
3018 - // I really didn't want to do this...
3019 - char cmdline[2048];
3020 -
3021 - // Turn on rfmon on the initial channel
3022 - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d enable=true "
3023 - "prismheader=true >/dev/null 2>&1", in_dev, in_ch);
3024 - if (RunSysCmd(cmdline) < 0) {
3025 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
3026 - return -1;
3027 - }
3028 -
3029 - if (in_ext != NULL) {
3030 - PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext;
3031 - src->last_channel = in_ch;
3032 - }
3033 -
3034 - return 0;
3035 -}
3036 -
3037 -int chancontrol_wlanng_avs(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
3038 - // I really didn't want to do this...
3039 - char cmdline[2048];
3040 -
3041 - // Turn on rfmon on the initial channel
3042 - snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d "
3043 - "prismheader=false wlanheader=true stripfcs=false keepwepflags=false "
3044 - "enable=true >/dev/null 2>&1", in_dev, in_ch);
3045 -
3046 - if (RunSysCmd(cmdline) < 0) {
3047 - snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
3048 - return -1;
3049 - }
3050 -
3051 - if (in_ext != NULL) {
3052 - PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext;
3053 - src->last_channel = in_ch;
3054 - }
3055 -
3056 - return 0;
3057 -}
3058 #endif
3059
3060 #ifdef SYS_OPENBSD
3061 diff -urN kismet.dev/tcpstreamer.cc kismet.dev2/tcpstreamer.cc
3062 --- kismet.dev/tcpstreamer.cc 2005-08-16 03:22:51.000000000 +0200
3063 +++ kismet.dev2/tcpstreamer.cc 2005-08-23 01:59:25.668216448 +0200
3064 @@ -30,8 +30,6 @@
3065 serv_fd = 0;
3066
3067 max_fd = 0;
3068 -
3069 - gpsd = NULL;
3070 }
3071
3072 TcpStreamer::~TcpStreamer()
3073 @@ -287,10 +285,6 @@
3074 hdr.frame_len = (uint32_t) htonl(sizeof(struct stream_version_packet));
3075
3076 vpkt.drone_version = (uint16_t) htons(STREAM_DRONE_VERSION);
3077 - if (gpsd != NULL)
3078 - vpkt.gps_enabled = 1;
3079 - else
3080 - vpkt.gps_enabled = 0;
3081
3082 if (!FD_ISSET(in_fd, &client_fds))
3083 return -1;
3084 diff -urN kismet.dev/tcpstreamer.h kismet.dev2/tcpstreamer.h
3085 --- kismet.dev/tcpstreamer.h 2005-08-16 03:22:51.000000000 +0200
3086 +++ kismet.dev2/tcpstreamer.h 2005-08-23 01:59:25.669216296 +0200
3087 @@ -42,7 +42,6 @@
3088 #include "ringbuf.h"
3089 #include "packet.h"
3090 #include "packetstream.h"
3091 -#include "gpsd.h"
3092
3093 // Global in kismet_drone.cc
3094 extern int silent;
3095 @@ -76,9 +75,6 @@
3096
3097 int FetchDescriptor() { return serv_fd; }
3098
3099 - // Register the GPS server for us to use
3100 - void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; }
3101 -
3102 void Kill(int in_fd);
3103
3104 int Poll(fd_set& in_rset, fd_set& in_wset);
3105 @@ -124,8 +120,6 @@
3106 fd_set client_fds;
3107
3108 unsigned int max_fd;
3109 -
3110 - GPSD *gpsd;
3111 };
3112
3113 #endif