diff --git a/monitor.cpp b/monitor.cpp new file mode 100644 --- /dev/null +++ b/monitor.cpp @@ -0,0 +1,104 @@ +/* + * $Id: monitor.cpp 54 2008-01-10 00:24:52Z mbroeker $ + * $URL: http://localhost/svn/cpp/qMonitor/trunk/monitor.cpp $ + */ + +#include "include/monitor.h" +#include "include/readerthread.h" + +#ifndef ICON_PATH +#define ICON_PATH "/usr/share/icons/qMonitor_icon.png" +#endif + +#define HTML_MESSAGE \ +"

qMonitor


" \ +"

" \ +"

  • Wählen Sie das Protokoll
  • " \ +"
  • Wählen Sie einen Port (0=ALLE)
  • " \ +"
  • Drücken Sie Start
  • " \ +"

    " \ +"
    Dieses Programm zeigt den Traffic im Netz an und unterstützt Sie bei täglichen Aufgaben:


    " \ +"
  • Kontrolle der TCP/UDP Verbindungen
  • " \ +"
  • Überwachung von textbasierten Serverdiensten
  • " \ +"
  • Protokollanalyse
  • " \ +"

    " + +Monitor::Monitor (QWidget * parent) +{ + setupUi ((QDialog *) this); + textEdit->setReadOnly (true); + + listWidget1->insertItem (0, "TCP"); + listWidget1->insertItem (1, "UDP"); + listWidget1->insertItem (2, "ICMP"); + listWidget1->insertItem (3, "RAW"); + listWidget1->insertItem (4, "IP"); + + Protocol["TCP"] = IPPROTO_TCP; + Protocol["UDP"] = IPPROTO_UDP; + Protocol["ICMP"] = IPPROTO_ICMP; + Protocol["RAW"] = IPPROTO_RAW; + Protocol["IP"] = IPPROTO_IP; + + listWidget1->setCurrentRow (0); + lineEdit1->setText ("0"); + + setWindowIcon (QPixmap (ICON_PATH)); + + textEdit->insertHtml (HTML_MESSAGE); + + try { + reader = new readerThread (this); + } + catch (std::exception const &e) { + textEdit->append (e.what ()); + reader = NULL; + } + + connect (pushButton1, SIGNAL (clicked ()), this, SLOT (startCapture ())); + connect (pushButton2, SIGNAL (clicked ()), this, SLOT (stopCapture ())); + +} + +Monitor::~Monitor () +{ + if (reader != NULL) + delete reader; +} + +void Monitor::startCapture () +{ + textEdit->clear (); + + if (reader != NULL) { + if (!reader->isRunning ()) + reader->start (QThread::NormalPriority); + } +} + +void Monitor::stopCapture () +{ + if (reader != NULL) { + if (reader->isRunning ()) + reader->terminate (); + } +} + +int Monitor::getProtocol () +{ + return Protocol[listWidget1->item (listWidget1->currentRow ())->text ()]; +} + +int Monitor::getPort () +{ + return lineEdit1->text ().toInt (); +} + +void Monitor::customEvent (QEvent * e) +{ + if (e->type () == MSG_EVENT) { + DataChangeEvent *me = (DataChangeEvent *) e; + + textEdit->append (me->Text ()); + } +}