summaryrefslogtreecommitdiffstats
path: root/LogReceiver/networkdiscovery.h
diff options
context:
space:
mode:
Diffstat (limited to 'LogReceiver/networkdiscovery.h')
-rw-r--r--LogReceiver/networkdiscovery.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/LogReceiver/networkdiscovery.h b/LogReceiver/networkdiscovery.h
new file mode 100644
index 0000000..9a1441d
--- /dev/null
+++ b/LogReceiver/networkdiscovery.h
@@ -0,0 +1,98 @@
+#ifndef NetworkDiscovery_H
+#define NetworkDiscovery_H
+
+//#include <QMap>
+#include <QtNetwork>
+#include <QtCore>
+//#include <QProcess>
+
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <syslog.h>
+#include <sysfs/libsysfs.h>
+
+#include "interfaceconfiguration.h"
+#include "routemanager.h"
+//#include <qlocalserver.h>
+//#include <qlocalsocket.h>
+#include "status.h"
+#include "dhcp.h"
+#include "interface.h"
+
+//#include <QProcess>
+//#include <QLocalSocket>
+//#include <QLocalServer>
+//#include <QTcpSocket>
+//#include <QSsl>
+#include <QNetworkConfigurationManager>
+//#include <QNetworkAccessManager>
+#include <QWidget>
+
+
+#define DEFAULT_QTSOCKETADDRESS "/var/tmp/qt_c_socket_default"
+#define DEFAULT_PATHTODHCPCDEXE "/home/niklas/fbgui/customdhcpcd/src/customdhcpcd"
+#define DEFAULT_GATEWAY_INFO_LOCATION "/var/tmp/gateways_"
+#define ACK_SIZE 4
+
+class NetworkDiscovery: public QObject {
+Q_OBJECT
+
+public:
+ NetworkDiscovery(QObject *parent=0);
+ ~NetworkDiscovery();
+
+ void initAndRun(QString serverPath = DEFAULT_QTSOCKETADDRESS,
+ QString pathToExe = DEFAULT_PATHTODHCPCDEXE,
+ QStringList* args = NULL);
+ int replaceDefaultRoute(QString &ifName, QString &gateway, int af, int mss);
+
+private slots:
+ void handleNewConnection();
+ void handleNewInput();
+ void handleNewInputLine(QLocalSocket * client, QString data);
+ void handleProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
+ void handleProcessStarted();
+ void handleClientDisconnect();
+
+signals:
+ void addInterface(const QString &ifName);
+ void changeProgressBarValue(const QString & ifName, const int $newValue);
+ void connectionEstablished(interfaceconfiguration *ifConf);
+ void abortBoot(QString msg);
+ void updateStatusLabel(QString ifName, QString status);
+ void allProcessesFinished();
+ void continueBoot(QString ifName, bool userChoice);
+
+private:
+ QLocalServer *server;
+ quint16 blockSize;
+ //QMap<int, QNetworkInterface > interfacesMap;
+ //QMap<QString, int> indexToIfaceNameMap;
+ QMap<QLocalSocket *, QLocalSocket *> clients;
+ QLocalSocket * client;
+ QMap<QString, QLocalSocket*> ifNameToClient;
+ QMap<QProcess*, QString> clientProcessToIfNameMap;
+ QString pathToDhcpcdExe;
+ QStringList dhcpcdArguments;
+ QNetworkConfigurationManager configurationManager;
+ QNetworkAccessManager *accessManager;
+ int numberOfProcesses;
+ routemanager rm;
+ bool _userChoice;
+ bool _blocked;
+
+ void handleNewInput(QLocalSocket * client);
+
+ void runDHCPCD(QList<QString> &interfaces);
+ void runDHCPCD(QString interface);
+ QList<QString>checkCarrierState(QList<QString> &interfaces);
+ bool checkCarrierState(QString interface);
+ bool checkConnectivity(QString ifName);
+ QList<QString> getListOfNetworkInterfaces();
+ bool checkBlackList(QString i);
+
+};
+
+#endif // NetworkDiscovery_H