summaryrefslogtreecommitdiffstats
path: root/src/networkdiscovery.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/networkdiscovery.h')
-rw-r--r--src/networkdiscovery.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/networkdiscovery.h b/src/networkdiscovery.h
new file mode 100644
index 0000000..49ac731
--- /dev/null
+++ b/src/networkdiscovery.h
@@ -0,0 +1,110 @@
+#ifndef NetworkDiscovery_H
+#define NetworkDiscovery_H
+
+#include <QtNetwork>
+#include <QtCore>
+
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <syslog.h>
+#include <sysfs/libsysfs.h>
+
+#include "loggerengine.h"
+#include "interfaceconfiguration.h"
+#include "networkmanager.h"
+
+#include "../common/fbgui.h"
+
+#include "dhcp.h"
+
+
+#define DEFAULT_QTSOCKETADDRESS "/var/tmp/qt_c_socket_default"
+#define DEFAULT_PATHTODHCPCDEXE "/home/niklas/fbgui/customdhcpcd/src/build/cdhcpcd"
+
+class NetworkDiscovery: public QObject {
+Q_OBJECT
+
+public:
+ NetworkDiscovery(QObject *parent=0);
+ ~NetworkDiscovery();
+
+ void initAndRun(QString serverIp, bool userChoice,
+ bool autoUp,
+ QString pathToLogFile,
+ QString serverPath = DEFAULT_QTSOCKETADDRESS,
+ QString pathToExe = DEFAULT_PATHTODHCPCDEXE,
+ QStringList* args = NULL);
+ int ip4_replaceDefaultRoute(QString ifName, QString gateway, int mss);
+ QString getGatewayForInterface(QString ifName);
+
+ int ip4_setManualConfiguration(QVariantMap result);
+ QString readLogFile();
+
+private slots:
+ void handleNewConnection();
+ void handleNewInput();
+ void handleNewInputLine(QLocalSocket * client, QString data);
+ void handleProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
+ void handleProcessStarted();
+ void handleClientDisconnect();
+
+ void slotReadyForRun();
+
+ void checkForIsRunning();
+
+
+signals:
+ void addInterface(const QString &ifName);
+ void changeProgressBarValue(const QString & ifName, const int $newValue);
+ void connectionEstablished(QString ifName);
+ void abortBoot(QString msg);
+ void updateStatusLabel(QString ifName, QString status);
+ void allProcessesFinished();
+ void continueBoot(QString ifName, int userChoice);
+ void setManualConfInterfaces(QString jsonArr);
+
+ void readyForRun();
+
+private:
+ QString _tag;
+ QLocalServer *_server;
+ QMap<QLocalSocket *, QLocalSocket *> _clients;
+ QLocalSocket * _client;
+ QMap<QString, QLocalSocket*> _ifNameToClient;
+ QMap<QProcess*, QString> _clientProcessToIfNameMap;
+ QString _pathToDhcpcdExe;
+ QStringList _dhcpcdArguments;
+ int _numberOfProcesses;
+ NetworkManager _networkManager;
+ bool _userChoice;
+ bool _blocked;
+ bool _autoUp;
+ QString _serverIp;
+ QString _pathToLogFile;
+ QList<QString> _ifUpList;
+ QList<QString> _ifDownList;
+ int _ifUpCountdown;
+ QTimer* _timer;
+
+ QMap<QString, interfaceconfiguration*> _ifcMap;
+
+ void handleNewInput(QLocalSocket * client);
+
+ void runDHCPCD(QList<QString> &interfaces);
+ void runDHCPCD(QString interface);
+
+ bool checkCarrierState(QString interface);
+ bool checkConnectivity(QString ifName);
+ bool checkConnectivityViaTcp(QString server);
+ bool checkBlackList(QString i);
+
+ void getListOfNetworkInterfaces();
+ void getListOfNetworkInterfacesWithAutoUp();
+
+
+};
+
+#endif // NetworkDiscovery_H