1 diff -urN kismet-2005-04-R1.old/Makefile.in kismet-2005-04-R1.dev/Makefile.in
2 --- kismet-2005-04-R1.old/Makefile.in 2005-05-04 21:09:18.000000000 +0200
3 +++ kismet-2005-04-R1.dev/Makefile.in 2005-05-04 21:19:26.000000000 +0200
8 -PSO = util.o ringbuf.o configfile.o speech.o ifcontrol.o iwcontrol.o packet.o \
9 +PSO = util.o ringbuf.o configfile.o ifcontrol.o iwcontrol.o packet.o \
10 pcapsource.o wtapfilesource.o \
11 dronesource.o packetsourcetracker.o kis_packsources.o \
12 wtapdump.o wtaplocaldump.o gpsdump.o airsnortdump.o fifodump.o \
14 timetracker.o gpsd.o server_globals.o kismet_drone.o
17 -NCO = util.o configfile.o speech.o manuf.o tcpclient.o \
18 +NCO = util.o configfile.o manuf.o tcpclient.o \
19 frontend.o cursesfront.o \
20 panelfront.o panelfront_display.o panelfront_input.o \
21 gpsd.o getopt.o kismet_client.o
22 diff -urN kismet-2005-04-R1.old/kismet_client.cc kismet-2005-04-R1.dev/kismet_client.cc
23 --- kismet-2005-04-R1.old/kismet_client.cc 2005-04-03 07:33:42.000000000 +0200
24 +++ kismet-2005-04-R1.dev/kismet_client.cc 2005-05-04 21:23:14.000000000 +0200
26 #include "cursesfront.h"
27 #include "panelfront.h"
28 #include "configfile.h"
39 -int speech_encoding = 0;
40 -string speech_sentence_encrypted, speech_sentence_unencrypted;
41 unsigned int metric = 0;
42 unsigned int reconnect = 0;
45 string configdir, groupfile;
46 FILE *group_file = NULL;
48 -// Pipe file descriptor pairs and fd's
51 -pid_t soundpid = -1, speechpid = -1;
53 // Catch our interrupt
54 void CatchShutdown(int sig) {
56 - // Kill our sound players
63 if ((group_file = fopen(groupfile.c_str(), "w")) == NULL) {
64 fprintf(stderr, "WARNING: Unable to open '%s' for writing, groups will not be saved.\n",
69 -// Subprocess sound handler
70 -void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
71 - int read_sock = fds[0];
75 - signal(SIGPIPE, PipeHandler);
86 - FD_SET(read_sock, &rset);
89 - memset(data, 0, 1024);
91 - if (harvested == 0) {
92 - // We consider a wait error to be a sign that the child pid died
93 - // so we flag it as harvested and keep on going
94 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
95 - if (harvestpid == -1 || harvestpid == sndpid)
103 - if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
104 - if (errno != EINTR) {
109 - if (FD_ISSET(read_sock, &rset)) {
111 - ret = read(read_sock, data, 1024);
113 - // We'll die off if we get a read error, and we'll let kismet on the
114 - // other side detact that it died
115 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
118 - if ((end = strstr(data, "\n")) == NULL)
124 - if (data[0] == '\0')
127 - // If we've harvested the process, spawn a new one and watch it
128 - // instead. Otherwise, we just let go of the data we read
129 - if (harvested == 1) {
130 - // Only take the first line
132 - if ((nl = strchr(data, '\n')) != NULL)
137 - if (soundmap.size() == 0)
138 - snprintf(snd, 1024, "%s", data);
139 - if (soundmap.find(data) != soundmap.end())
140 - snprintf(snd, 1024, "%s", soundmap[data].c_str());
145 - snprintf(plr, 1024, "%s", player);
148 - if ((sndpid = fork()) == 0) {
150 - int nulfd = open("/dev/null", O_RDWR);
154 - char * const echoarg[] = { plr, snd, NULL };
155 - execve(echoarg[0], echoarg, NULL);
163 -// Subprocess speech handler
164 -void SpeechHandler(int *fds, const char *player) {
165 - int read_sock = fds[0];
177 - FD_SET(read_sock, &rset);
180 - memset(data, 0, 1024);
182 - struct timeval tim;
186 - if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
187 - if (errno != EINTR) {
192 - if (harvested == 0) {
193 - // We consider a wait error to be a sign that the child pid died
194 - // so we flag it as harvested and keep on going
195 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
196 - if (harvestpid == -1 || harvestpid == sndpid)
200 - if (FD_ISSET(read_sock, &rset)) {
202 - ret = read(read_sock, data, 1024);
204 - // We'll die off if we get a read error, and we'll let kismet on the
205 - // other side detact that it died
206 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
213 - if (data[0] == '\0')
216 - // If we've harvested the process, spawn a new one and watch it
217 - // instead. Otherwise, we just let go of the data we read
218 - if (harvested == 1) {
220 - if ((sndpid = fork()) == 0) {
221 - // Only take the first line
223 - if ((nl = strchr(data, '\n')) != NULL)
226 - // Make sure it's shell-clean
227 - MungeToShell(data, strlen(data));
228 - char spk_call[1024];
229 - snprintf(spk_call, 1024, "echo \"(SayText \\\"%s\\\")\" | %s >/dev/null 2>/dev/null",
243 -int PlaySound(string in_sound) {
247 - snprintf(snd, 1024, "%s\n", in_sound.c_str());
249 - if (write(soundpair[1], snd, strlen(snd)) < 0) {
250 - char status[STATUS_MAX];
251 - snprintf(status, STATUS_MAX,
252 - "ERROR: Could not write to sound pipe. Stopping sound.");
253 - gui->WriteStatus(status);
261 -int SayText(string in_text) {
264 - snprintf(snd, 1024, "%s\n", in_text.c_str());
266 - if (write(speechpair[1], snd, strlen(snd)) < 0) {
267 - char status[STATUS_MAX];
268 - snprintf(status, STATUS_MAX,
269 - "ERROR: Could not write to speech pipe. Stopping speech.");
270 - gui->WriteStatus(status);
278 int main(int argc, char *argv[]) {
286 - const char *festival = NULL;
288 char *columns = NULL;
289 char *clientcolumns = NULL;
292 fprintf(stderr, "Using alternate UI config file: %s\n", uiconfigfile);
298 reqgui = strdup(optarg);
300 server = strdup(gui_conf->FetchOpt("host").c_str());
303 - if (gui_conf->FetchOpt("sound") == "true" && sound == -1) {
304 - if (gui_conf->FetchOpt("soundplay") != "") {
305 - sndplay = gui_conf->FetchOpt("soundplay");
308 - if (gui_conf->FetchOpt("soundopts") != "")
309 - sndplay += " " + gui_conf->FetchOpt("soundopts");
311 - if (gui_conf->FetchOpt("sound_new") != "")
312 - wav_map["new"] = gui_conf->FetchOpt("sound_new");
313 - if (gui_conf->FetchOpt("sound_new_wep") != "")
314 - wav_map["new_wep"] = gui_conf->FetchOpt("sound_new_wep");
315 - if (gui_conf->FetchOpt("sound_traffic") != "")
316 - wav_map["traffic"] = gui_conf->FetchOpt("sound_traffic");
317 - if (gui_conf->FetchOpt("sound_junktraffic") != "")
318 - wav_map["junktraffic"] = gui_conf->FetchOpt("sound_junktraffic");
319 - if (gui_conf->FetchOpt("sound_gpslock") != "")
320 - wav_map["gpslock"] = gui_conf->FetchOpt("sound_gpslock");
321 - if (gui_conf->FetchOpt("sound_gpslost") != "")
322 - wav_map["gpslost"] = gui_conf->FetchOpt("sound_gpslost");
323 - if (gui_conf->FetchOpt("sound_alert") != "")
324 - wav_map["alert"] = gui_conf->FetchOpt("sound_alert");
327 - fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n");
330 - } else if (sound == -1)
333 - /* Added by Shaw Innes 17/2/02 */
334 - if (gui_conf->FetchOpt("speech") == "true" && speech == -1) {
335 - if (gui_conf->FetchOpt("festival") != "") {
336 - festival = strdup(gui_conf->FetchOpt("festival").c_str());
339 - string speechtype = gui_conf->FetchOpt("speech_type");
341 - if (!strcasecmp(speechtype.c_str(), "nato"))
342 - speech_encoding = SPEECH_ENCODING_NATO;
343 - else if (!strcasecmp(speechtype.c_str(), "spell"))
344 - speech_encoding = SPEECH_ENCODING_SPELL;
346 - speech_encoding = SPEECH_ENCODING_NORMAL;
348 - // Make sure we have encrypted text lines
349 - if (gui_conf->FetchOpt("speech_encrypted") == "" || gui_conf->FetchOpt("speech_unencrypted") == "") {
350 - fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n");
354 - speech_sentence_encrypted = gui_conf->FetchOpt("speech_encrypted");
355 - speech_sentence_unencrypted = gui_conf->FetchOpt("speech_unencrypted");
358 - fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
361 - } else if (speech == -1)
364 if (gui_conf->FetchOpt("decay") != "") {
365 if (sscanf(gui_conf->FetchOpt("decay").c_str(), "%d", &decay) != 1) {
366 fprintf(stderr, "FATAL: Illegal config file value for decay.\n");
371 - // Fork and find the sound options
373 - if (pipe(soundpair) == -1) {
374 - fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n");
379 - if (soundpid < 0) {
380 - fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n");
382 - } else if (soundpid == 0) {
383 - SoundHandler(soundpair, sndplay.c_str(), wav_map);
387 - close(soundpair[0]);
392 - if (pipe(speechpair) == -1) {
393 - fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n");
396 - speechpid = fork();
398 - if (speechpid < 0) {
399 - fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n");
401 - } else if (speechpid == 0) {
402 - SpeechHandler(speechpair, festival);
406 - close(speechpair[0]);
410 if (kismet_serv.Connect(guiport, guihost) < 0) {
411 fprintf(stderr, "FATAL: Could not connect to %s:%d.\n", guihost, guiport);
415 int num_networks = 0, num_packets = 0, num_noise = 0, num_dropped = 0;
417 - time_t last_click = time(0);
426 - if (pollret == CLIENT_ALERT)
428 - sound = PlaySound("alert");
430 if (strlen(tcpcli->FetchStatus()) != 0) {
431 gui->WriteStatus(tcpcli->FetchStatus());
432 // gui->DrawDisplay();
434 // The GPS only gets updated for the primary client
435 if (tcpcli == primary_client) {
436 if (tcpcli->FetchMode() == 0 && gpsmode != 0) {
437 - if (sound == 1 && gpsmode != -1)
438 - sound = PlaySound("gpslost");
440 } else if (tcpcli->FetchMode() != 0 && gpsmode == 0) {
441 - if (sound == 1 && gpsmode != -1)
442 - sound = PlaySound("gpslock");
447 if (tcpcli->FetchDeltaNumNetworks() > 0) {
448 wireless_network *newnet = tcpcli->FetchLastNewNetwork();
450 - if (sound == 1 && newnet != lastspoken) {
451 - if (newnet->crypt_set &&
452 - wav_map.find("new_wep") != wav_map.end())
453 - sound = PlaySound("new_wep");
455 - sound = PlaySound("new");
458 - if (speech == 1 && newnet != lastspoken) {
461 - if (newnet != NULL) {
462 - if (newnet->crypt_set)
463 - text = ExpandSpeechString(speech_sentence_encrypted, newnet, speech_encoding);
465 - text = ExpandSpeechString(speech_sentence_unencrypted, newnet, speech_encoding);
467 - speech = SayText(text.c_str());
471 - lastspoken = newnet;
474 num_networks += tcpcli->FetchNumNetworks();
476 num_noise += tcpcli->FetchNumNoise();
477 num_dropped += tcpcli->FetchNumDropped();
479 - if (tcpcli->FetchDeltaNumPackets() != 0) {
480 - if (time(0) - last_click >= decay && sound == 1) {
481 - if (tcpcli->FetchDeltaNumPackets() > tcpcli->FetchDeltaNumDropped()) {
482 - sound = PlaySound("traffic");
484 - sound = PlaySound("junktraffic");
487 - last_click = time(0);
493 diff -urN kismet-2005-04-R1.old/kismet_server.cc kismet-2005-04-R1.dev/kismet_server.cc
494 --- kismet-2005-04-R1.old/kismet_server.cc 2005-05-04 21:09:18.000000000 +0200
495 +++ kismet-2005-04-R1.dev/kismet_server.cc 2005-05-04 21:23:01.000000000 +0200
497 #include "timetracker.h"
498 #include "alertracker.h"
501 #include "tcpserver.h"
502 #include "server_globals.h"
503 #include "kismet_server.h"
506 FifoDumpFile fifodump;
509 packet_info last_info;
511 channel_power channel_graph[CHANNEL_MAX];
513 macmap<wep_key_info *> bssid_wep_map;
515 // Pipe file descriptor pairs and fd's
519 -pid_t soundpid = -1, speechpid = -1, chanpid = -1;
523 unsigned int max_alerts = 50;
528 -//const char *sndplay = NULL;
531 -const char *festival = NULL;
533 -int speech_encoding = 0;
534 -string speech_sentence_encrypted, speech_sentence_unencrypted;
536 -map<string, string> wav_map;
545 - // Kill our sound players
549 - kill(speechpid, 9);
551 // Shut down the packet sources
552 sourcetracker.CloseSources();
554 @@ -365,227 +345,10 @@
558 -// Subprocess sound handler
559 -void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
560 - int read_sock = fds[0];
572 - FD_SET(read_sock, &rset);
575 - memset(data, 0, 1024);
581 - if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
582 - if (errno != EINTR) {
587 - if (harvested == 0) {
588 - // We consider a wait error to be a sign that the child pid died
589 - // so we flag it as harvested and keep on going
590 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
591 - if (harvestpid == -1 || harvestpid == sndpid)
595 - if (FD_ISSET(read_sock, &rset)) {
597 - ret = read(read_sock, data, 1024);
599 - // We'll die off if we get a read error, and we'll let kismet on the
600 - // other side detact that it died
601 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
604 - if ((end = strstr(data, "\n")) == NULL)
610 - if (data[0] == '\0')
614 - // If we've harvested the process, spawn a new one and watch it
615 - // instead. Otherwise, we just let go of the data we read
616 - if (harvested == 1) {
617 - // Only take the first line
619 - if ((nl = strchr(data, '\n')) != NULL)
622 - // Make sure it's shell-clean
626 - if (soundmap.size() == 0)
627 - snprintf(snd, 1024, "%s", data);
628 - if (soundmap.find(data) != soundmap.end())
629 - snprintf(snd, 1024, "%s", soundmap[data].c_str());
634 - snprintf(plr, 1024, "%s", player);
637 - if ((sndpid = fork()) == 0) {
640 - int nulfd = open("/dev/null", O_RDWR);
645 - char * const echoarg[] = { plr, snd, NULL };
646 - execve(echoarg[0], echoarg, NULL);
653 -// Subprocess speech handler
654 -void SpeechHandler(int *fds, const char *player) {
655 - int read_sock = fds[0];
667 - FD_SET(read_sock, &rset);
670 - memset(data, 0, 1024);
672 - if (harvested == 0) {
673 - // We consider a wait error to be a sign that the child pid died
674 - // so we flag it as harvested and keep on going
675 - pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
676 - if (harvestpid == -1 || harvestpid == sndpid)
684 - if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
685 - if (errno != EINTR) {
690 - if (FD_ISSET(read_sock, &rset)) {
692 - ret = read(read_sock, data, 1024);
694 - // We'll die off if we get a read error, and we'll let kismet on the
695 - // other side detact that it died
696 - if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
702 - if (data[0] == '\0')
705 - // If we've harvested the process, spawn a new one and watch it
706 - // instead. Otherwise, we just let go of the data we read
707 - if (harvested == 1) {
709 - if ((sndpid = fork()) == 0) {
710 - // Only take the first line
712 - if ((nl = strchr(data, '\n')) != NULL)
715 - // Make sure it's shell-clean
716 - MungeToShell(data, strlen(data));
717 - char spk_call[1024];
718 - snprintf(spk_call, 1024, "echo \"(SayText \\\"%s\\\")\" | %s >/dev/null 2>/dev/null",
731 -// Fork and run a system call to play a sound
732 -int PlaySound(string in_sound) {
736 - snprintf(snd, 1024, "%s\n", in_sound.c_str());
738 - if (write(soundpair[1], snd, strlen(snd)) < 0) {
739 - char status[STATUS_MAX];
741 - fprintf(stderr, "ERROR: Write error, closing sound pipe.\n");
742 - snprintf(status, STATUS_MAX, "ERROR: Write error on sound pipe, closing sound connection");
743 - NetWriteStatus(status);
751 -int SayText(string in_text) {
755 - snprintf(snd, 1024, "%s\n", in_text.c_str());
756 - MungeToShell(snd, 1024);
758 - if (write(speechpair[1], snd, strlen(snd)) < 0) {
759 - char status[STATUS_MAX];
761 - fprintf(stderr, "ERROR: Write error, closing speech pipe.\n");
762 - snprintf(status, STATUS_MAX, "ERROR: Write error on speech pipe, closing speech connection");
763 - NetWriteStatus(status);
771 void KisLocalAlert(const char *in_text) {
772 time_t now = time(0);
774 fprintf(stderr, "ALERT %.24s %s\n", ctime(&now), in_text);
777 - sound = PlaySound("alert");
781 void KisLocalStatus(const char *in_status) {
782 @@ -842,15 +605,11 @@
783 if (gpsret == 0 && gpsmode != 0) {
784 if (!silent || NetWriteStatus("Lost GPS signal.") == 0)
785 fprintf(stderr, "Lost GPS signal.\n");
787 - sound = PlaySound("gpslost");
790 } else if (gpsret != 0 && gpsmode == 0) {
791 if (!silent || NetWriteStatus("Acquired GPS signal.") == 0)
792 fprintf(stderr, "Acquired GPS signal.\n");
794 - sound = PlaySound("gpslock");
798 @@ -1533,69 +1292,6 @@
799 legal_ipblock_vec.push_back(ipb);
802 - // Process sound stuff
803 - if (conf->FetchOpt("sound") == "true" && sound == -1) {
804 - if (conf->FetchOpt("soundplay") != "") {
805 - sndplay = conf->FetchOpt("soundplay");
807 - if (conf->FetchOpt("soundopts") != "")
808 - sndplay += " " + conf->FetchOpt("soundopts");
812 - if (conf->FetchOpt("sound_new") != "")
813 - wav_map["new"] = conf->FetchOpt("sound_new");
814 - if (conf->FetchOpt("sound_new_wep") != "")
815 - wav_map["new_wep"] = conf->FetchOpt("sound_new_wep");
816 - if (conf->FetchOpt("sound_traffic") != "")
817 - wav_map["traffic"] = conf->FetchOpt("sound_traffic");
818 - if (conf->FetchOpt("sound_junktraffic") != "")
819 - wav_map["junktraffic"] = conf->FetchOpt("sound_traffic");
820 - if (conf->FetchOpt("sound_gpslock") != "")
821 - wav_map["gpslock"] = conf->FetchOpt("sound_gpslock");
822 - if (conf->FetchOpt("sound_gpslost") != "")
823 - wav_map["gpslost"] = conf->FetchOpt("sound_gpslost");
824 - if (conf->FetchOpt("sound_alert") != "")
825 - wav_map["alert"] = conf->FetchOpt("sound_alert");
828 - fprintf(stderr, "ERROR: Sound alerts enabled but no sound playing binary specified.\n");
831 - } else if (sound == -1)
834 - /* Added by Shaw Innes 17/2/02 */
835 - /* Modified by Andrew Etter 15/9/02 */
836 - if (conf->FetchOpt("speech") == "true" && speech == -1) {
837 - if (conf->FetchOpt("festival") != "") {
838 - festival = strdup(conf->FetchOpt("festival").c_str());
841 - string speechtype = conf->FetchOpt("speech_type");
843 - if (!strcasecmp(speechtype.c_str(), "nato"))
844 - speech_encoding = SPEECH_ENCODING_NATO;
845 - else if (!strcasecmp(speechtype.c_str(), "spell"))
846 - speech_encoding = SPEECH_ENCODING_SPELL;
848 - speech_encoding = SPEECH_ENCODING_NORMAL;
850 - // Make sure we have encrypted text lines
851 - if (conf->FetchOpt("speech_encrypted") == "" || conf->FetchOpt("speech_unencrypted") == "") {
852 - fprintf(stderr, "ERROR: Speech request but speech_encrypted or speech_unencrypted line missing.\n");
856 - speech_sentence_encrypted = conf->FetchOpt("speech_encrypted");
857 - speech_sentence_unencrypted = conf->FetchOpt("speech_unencrypted");
859 - fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
862 - } else if (speech == -1)
865 if (conf->FetchOpt("writeinterval") != "") {
866 if (sscanf(conf->FetchOpt("writeinterval").c_str(), "%d", &datainterval) != 1) {
867 fprintf(stderr, "FATAL: Illegal config file value for data interval.\n");
868 @@ -1615,45 +1311,6 @@
869 fprintf(stderr, "WARNING: No client_manuf file specified. Client manufacturers will not be detected.\n");
872 - // Fork and find the sound options
874 - if (pipe(soundpair) == -1) {
875 - fprintf(stderr, "WARNING: Unable to create pipe for audio. Disabling sound.\n");
880 - if (soundpid < 0) {
881 - fprintf(stderr, "WARNING: Unable to fork for audio. Disabling sound.\n");
883 - } else if (soundpid == 0) {
884 - SoundHandler(soundpair, sndplay.c_str(), wav_map);
888 - close(soundpair[0]);
893 - if (pipe(speechpair) == -1) {
894 - fprintf(stderr, "WARNING: Unable to create pipe for speech. Disabling speech.\n");
897 - speechpid = fork();
899 - if (speechpid < 0) {
900 - fprintf(stderr, "WARNING: Unable to fork for speech. Disabling speech.\n");
902 - } else if (speechpid == 0) {
903 - SpeechHandler(speechpair, festival);
907 - close(speechpair[0]);
911 // Grab the filtering
914 @@ -2172,7 +1829,6 @@
922 @@ -2781,7 +2437,6 @@
923 snprintf(status, 1024, "%s", TIMESTAMP);
924 kdata.timestamp = status;
926 - time_t last_click = 0;
927 int num_networks = 0, num_packets = 0, num_noise = 0, num_dropped = 0;
930 @@ -2944,38 +2599,9 @@
932 tracker.ProcessPacket(info);
934 - if (tracker.FetchNumNetworks() > num_networks) {
936 - if (info.wep && wav_map.find("new_wep") != wav_map.end())
937 - sound = PlaySound("new_wep");
939 - sound = PlaySound("new");
944 - text = ExpandSpeechString(speech_sentence_encrypted, &info,
947 - text = ExpandSpeechString(speech_sentence_unencrypted,
948 - &info, speech_encoding);
950 - speech = SayText(MungeToShell(text).c_str());
953 num_networks = tracker.FetchNumNetworks();
955 if (tracker.FetchNumPackets() != num_packets) {
956 - if (cur_time - last_click >= decay && sound == 1) {
957 - if (tracker.FetchNumPackets() - num_packets >
958 - tracker.FetchNumDropped() + localdropnum - num_dropped) {
959 - sound = PlaySound("traffic");
961 - sound = PlaySound("junktraffic");
964 - last_click = cur_time;
967 num_packets = tracker.FetchNumPackets();
968 num_noise = tracker.FetchNumNoise();
969 diff -urN kismet-2005-04-R1.old/kismet_server.h kismet-2005-04-R1.dev/kismet_server.h
970 --- kismet-2005-04-R1.old/kismet_server.h 2005-04-03 07:33:42.000000000 +0200
971 +++ kismet-2005-04-R1.dev/kismet_server.h 2005-05-04 21:17:50.000000000 +0200
973 void handle_command(TcpServer *tcps, client_command *cc);
974 int NetWriteStatus(const char *in_status);
976 -int SayText(string in_text);
977 -int PlaySound(string in_sound);
978 -void SpeechHandler(int *fds, const char *player);
979 -void SoundHandler(int *fds, const char *player, map<string, string> soundmap);
980 void ProtocolAlertEnable(int in_fd);
981 void ProtocolNetworkEnable(int in_fd);
982 void ProtocolClientEnable(int in_fd);
983 diff -urN kismet-2005-04-R1.old/panelfront.cc kismet-2005-04-R1.dev/panelfront.cc
984 --- kismet-2005-04-R1.old/panelfront.cc 2005-04-03 07:33:42.000000000 +0200
985 +++ kismet-2005-04-R1.dev/panelfront.cc 2005-05-04 21:19:03.000000000 +0200
992 // Push blanks into the RRD history vector
993 packet_history.reserve(60 * 5);
994 for (unsigned int x = 0; x < (60 * 5); x++)
1002 WriteStatus("Terminal cannot support colors, turning off color options.");
1004 diff -urN kismet-2005-04-R1.old/panelfront.h kismet-2005-04-R1.dev/panelfront.h
1005 --- kismet-2005-04-R1.old/panelfront.h 2005-04-03 07:33:42.000000000 +0200
1006 +++ kismet-2005-04-R1.dev/panelfront.h 2005-05-04 21:18:48.000000000 +0200
1008 extern char *KismetIntroText[];
1010 // These are in the kismet_curses.cc main code
1013 extern unsigned int metric;
1015 class PanelFront : public Frontend {
1016 @@ -383,10 +381,6 @@
1024 vector<int> packet_history;
1026 float lat, lon, spd, alt, heading;
1027 diff -urN kismet-2005-04-R1.old/panelfront_input.cc kismet-2005-04-R1.dev/panelfront_input.cc
1028 --- kismet-2005-04-R1.old/panelfront_input.cc 2005-04-03 07:33:42.000000000 +0200
1029 +++ kismet-2005-04-R1.dev/panelfront_input.cc 2005-05-04 21:18:19.000000000 +0200
1030 @@ -639,21 +639,6 @@
1033 void PanelFront::MuteToggle() {
1035 - speech = old_speech;
1036 - sound = old_sound;
1038 - WriteStatus("Restoring sound");
1039 - } else if (sound != 0 || speech != 0) {
1040 - old_speech = speech;
1041 - old_sound = sound;
1045 - WriteStatus("Muting sound");
1046 - } else if (sound == 0 && speech == 0) {
1047 - WriteStatus("Sound not enabled.");
1051 int PanelFront::AlertInput(void *in_window, int in_chr) {