From ddac93a94b860c94e6fb893ed5a9c508c19231f1 Mon Sep 17 00:00:00 2001 From: Niklas Date: Thu, 21 Jul 2011 17:29:53 +0200 Subject: log messages are delivered to qt app. --- workspace/LogReceiver/LogReceiver | Bin 56166 -> 60452 bytes workspace/LogReceiver/logreceiver.cpp | 37 ++++++++++++++++++++++++--------- workspace/LogReceiver/logreceiver.h | 1 + workspace/customdhcpcd/src/client.c | 2 +- workspace/customdhcpcd/src/dhcpcd.c | 4 ++-- workspace/customdhcpcd/src/logger.c | 7 +++++++ workspace/customdhcpcd/src/logwriter.c | 28 +++++++++++++++++-------- workspace/customdhcpcd/src/logwriter.h | 1 + 8 files changed, 58 insertions(+), 22 deletions(-) diff --git a/workspace/LogReceiver/LogReceiver b/workspace/LogReceiver/LogReceiver index 13304e8..b324cb7 100755 Binary files a/workspace/LogReceiver/LogReceiver and b/workspace/LogReceiver/LogReceiver differ diff --git a/workspace/LogReceiver/logreceiver.cpp b/workspace/LogReceiver/logreceiver.cpp index f1a20b0..4aeebfc 100644 --- a/workspace/LogReceiver/logreceiver.cpp +++ b/workspace/LogReceiver/logreceiver.cpp @@ -7,6 +7,7 @@ #include #include #include + #include #include "logreceiver.h" #include @@ -50,8 +51,8 @@ LogReceiver::LogReceiver(QWidget *parent) : buildGui(); addInterfacesToGroupBox(interfacesMap); pathToDhcpcdExe = "/home/niklas/fbgui/workspace/customdhcpcd/src/dhcpcd"; - dhcpcdArguments.append("-d"); - //QString ifName(); + //dhcpcdArguments.append("-d"); + QString ifName("eth1"); runDHCPCD(list); @@ -79,7 +80,19 @@ void LogReceiver::handleNewInput() { QLocalSocket * client = clients.value(socket); - QByteArray data = client->readAll(); + QString data(client->readAll()); + + data = data.trimmed(); + + QStringList lines = data.split("\n"); + + for (int i=0; i < lines.length(); i++) { + handleNewInputLine(lines.at(i)); + } +} + +void LogReceiver::handleNewInputLine(QString data) { + QString logMsg(data); QString interface = logMsg.section(";",0,0); QString s_state = logMsg.section(";", 1, 1); @@ -88,16 +101,17 @@ void LogReceiver::handleNewInput() { int pBar = indexToIfaceNameMap.value(interface); - qDebug() << logMsg; + //qDebug() << logMsg; - qDebug() << msg; + //qDebug() << msg; int st = s_state.toInt(); int sst = s_subState.toInt(); switch (st) { - case STAT_OK: - qDebug() << "received stat_ok"; + case LOG_INFO: + qDebug() << "received LOG_INFO"; + qDebug() << sst; switch (sst) { case DHCP_DISCOVER: handleProgress(pBar,10); @@ -126,15 +140,18 @@ void LogReceiver::handleNewInput() { default: break; } + + qDebug() << msg; + break; - case STAT_ERROR: + case LOG_ERR: qDebug() << "received stat_error"; break; default: - qDebug() << "undefined status"; + qDebug() << logMsg; } - statusLabel->setText(logMsg); + //statusLabel->setText(logMsg); } QList LogReceiver::getListOfNetworkInterfaces() { diff --git a/workspace/LogReceiver/logreceiver.h b/workspace/LogReceiver/logreceiver.h index 5bd209d..2dce00a 100644 --- a/workspace/LogReceiver/logreceiver.h +++ b/workspace/LogReceiver/logreceiver.h @@ -25,6 +25,7 @@ public: private slots: void handleNewConnection(); void handleNewInput(); + void handleNewInputLine(QString data); void handleProcessFinished(int exitCode, QProcess::ExitStatus exitStatus); void handleProcessStarted(); void handleProgress(int iFaceIndex, int newValue); diff --git a/workspace/customdhcpcd/src/client.c b/workspace/customdhcpcd/src/client.c index 24c8680..5a8a9e9 100644 --- a/workspace/customdhcpcd/src/client.c +++ b/workspace/customdhcpcd/src/client.c @@ -854,7 +854,7 @@ static int handle_dhcp (state_t *state, int type, const options_t *options) } /* if we are here, than we received an ACK and can go on with configuration */ - logToQt(STAT_OK, DHCP_ACK, ""); + logToQt(LOG_INFO, DHCP_ACK, ""); switch (state->state) { case STATE_RENEW_REQUESTED: diff --git a/workspace/customdhcpcd/src/dhcpcd.c b/workspace/customdhcpcd/src/dhcpcd.c index 1fc9040..550c25a 100644 --- a/workspace/customdhcpcd/src/dhcpcd.c +++ b/workspace/customdhcpcd/src/dhcpcd.c @@ -528,7 +528,7 @@ int main (int argc, char **argv) if (IN_LINKLOCAL (ntohl (options->request_address.s_addr))) { logger (LOG_ERR, "you are not allowed to request a link local address"); - logToQt(STAT_ERROR, -1, "you are not allowed to request a link local address"); + logToQt(LOG_ERR, -1, "you are not allowed to request a link local address"); goto abort; } @@ -666,7 +666,7 @@ abort: #endif logger (LOG_INFO, "exiting"); - logToQt(STAT_INFO, -1, "exiting due abort"); + logToQt(LOG_INFO, 0, "exiting due abort"); exit (retval); /* NOTREACHED */ } diff --git a/workspace/customdhcpcd/src/logger.c b/workspace/customdhcpcd/src/logger.c index d084e62..cecd2b8 100644 --- a/workspace/customdhcpcd/src/logger.c +++ b/workspace/customdhcpcd/src/logger.c @@ -42,6 +42,7 @@ #include "common.h" #include "logger.h" +#include "logwriter.h" static int loglevel = LOG_WARNING; @@ -97,6 +98,12 @@ void logger (int level, const char *fmt, ...) vfprintf (f, fmt, p); fputc ('\n', f); + /* new function by Niklas Goby + * send the log message also to our Qt programm. + * implemented in logwriter.c + * */ + logLoggerToQt(level, fmt, p); + /* stdout, stderr may be re-directed to some kind of buffer. * So we always flush to ensure it's written. */ fflush (f); diff --git a/workspace/customdhcpcd/src/logwriter.c b/workspace/customdhcpcd/src/logwriter.c index 80f1f0a..8b6d6dc 100644 --- a/workspace/customdhcpcd/src/logwriter.c +++ b/workspace/customdhcpcd/src/logwriter.c @@ -11,6 +11,7 @@ #include "common.h" #include "dhcp.h" +#include "logger.h" #include "logwriter.h" #include "status.h" @@ -19,6 +20,7 @@ int sockfd, ns; int retval; char *socketName; char *interfaceName; +char mesg[256] = {0}; void setSocketName(char * sn) { socketName = sn; @@ -74,8 +76,10 @@ void logToQt(char * status, char * substatus, char * msg) { void sendToQt(char *msg) { int n = write(sockfd, msg, strlen(msg)); +// fflush(sockfd); if (n < 0) - fprintf(stdout, "ERROR writing to socket: %s", msg); + syslog (LOG_ERR, sprintf("[fbgui] ERROR writing to socket: %s", msg)); +// fprintf(stdout, "ERROR writing to socket: %s", msg); } void logToQt(int status, int substatus, const char * msg) { @@ -104,30 +108,36 @@ void logToQt(int status, int substatus, const char * msg) { void logSendToQt(int type) { switch(type) { case DHCP_DISCOVER: - logToQt(STAT_OK, DHCP_DISCOVER, ""); + logToQt(LOG_INFO, DHCP_DISCOVER, ""); break; case DHCP_OFFER: - logToQt(STAT_OK, DHCP_OFFER, ""); + logToQt(LOG_INFO, DHCP_OFFER, ""); break; case DHCP_REQUEST: - logToQt(STAT_OK, DHCP_REQUEST, ""); + logToQt(LOG_INFO, DHCP_REQUEST, ""); break; case DHCP_DECLINE: - logToQt(STAT_OK, DHCP_DECLINE, ""); + logToQt(LOG_INFO, DHCP_DECLINE, ""); break; case DHCP_ACK: - logToQt(STAT_OK, DHCP_ACK, ""); + logToQt(LOG_INFO, DHCP_ACK, ""); break; case DHCP_NAK: - logToQt(STAT_OK, DHCP_NAK, ""); + logToQt(LOG_INFO, DHCP_NAK, ""); break; case DHCP_RELEASE: - logToQt(STAT_OK, DHCP_RELEASE, ""); + logToQt(LOG_INFO, DHCP_RELEASE, ""); break; case DHCP_INFORM: - logToQt(STAT_OK, DHCP_INFORM, ""); + logToQt(LOG_INFO, DHCP_INFORM, ""); break; default : break; } } + +void logLoggerToQt(int level, const char *fmt, va_list args) { + vsnprintf(mesg, sizeof(mesg), fmt, args); + strcat(mesg, "\n"); + logToQt(level, 0, mesg); +} diff --git a/workspace/customdhcpcd/src/logwriter.h b/workspace/customdhcpcd/src/logwriter.h index 6276b53..84d409d 100644 --- a/workspace/customdhcpcd/src/logwriter.h +++ b/workspace/customdhcpcd/src/logwriter.h @@ -18,6 +18,7 @@ void closeQtLoggerSocket (); void sendToQt (); void logToQt(int status, int substatus, const char * msg); void logSendToQt(int type); +void logLoggerToQt(int level, const char *fmt, va_list args); //void logToQt(char * status, char * substatus, char * msg); -- cgit v1.2.3-55-g7522