summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas2011-07-21 17:29:53 +0200
committerNiklas2011-07-21 17:29:53 +0200
commitddac93a94b860c94e6fb893ed5a9c508c19231f1 (patch)
treefc37d45829e2d94f9fbcfe08531fdb3a10750009
parentconfiguration of more than one interface is working. Both progressbars are up... (diff)
downloadfbgui-ddac93a94b860c94e6fb893ed5a9c508c19231f1.tar.gz
fbgui-ddac93a94b860c94e6fb893ed5a9c508c19231f1.tar.xz
fbgui-ddac93a94b860c94e6fb893ed5a9c508c19231f1.zip
log messages are delivered to qt app.
-rwxr-xr-xworkspace/LogReceiver/LogReceiverbin56166 -> 60452 bytes
-rw-r--r--workspace/LogReceiver/logreceiver.cpp37
-rw-r--r--workspace/LogReceiver/logreceiver.h1
-rw-r--r--workspace/customdhcpcd/src/client.c2
-rw-r--r--workspace/customdhcpcd/src/dhcpcd.c4
-rw-r--r--workspace/customdhcpcd/src/logger.c7
-rw-r--r--workspace/customdhcpcd/src/logwriter.c28
-rw-r--r--workspace/customdhcpcd/src/logwriter.h1
8 files changed, 58 insertions, 22 deletions
diff --git a/workspace/LogReceiver/LogReceiver b/workspace/LogReceiver/LogReceiver
index 13304e8..b324cb7 100755
--- a/workspace/LogReceiver/LogReceiver
+++ b/workspace/LogReceiver/LogReceiver
Binary files 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 <stdio.h>
#include <string.h>
#include <stdlib.h>
+ #include <syslog.h>
#include "logreceiver.h"
#include <qlocalserver.h>
@@ -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<QNetworkInterface> 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);