diff options
author | Niklas | 2011-10-10 17:08:35 +0200 |
---|---|---|
committer | Niklas | 2011-10-10 17:08:35 +0200 |
commit | 5aa568daae23daa7ac190e56df469e9566075257 (patch) | |
tree | f339f20eccc838640cded864bf3fe37b056b4b36 /src/networkdiscovery.h | |
parent | corrected some errors (diff) | |
download | fbgui-5aa568daae23daa7ac190e56df469e9566075257.tar.gz fbgui-5aa568daae23daa7ac190e56df469e9566075257.tar.xz fbgui-5aa568daae23daa7ac190e56df469e9566075257.zip |
new veriosn of the fbgui src (same as in fbgui-ng) combined with my networkDiscovery in front.
Diffstat (limited to 'src/networkdiscovery.h')
-rw-r--r-- | src/networkdiscovery.h | 110 |
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 |