diff options
Diffstat (limited to 'src/fbgui/networkdiscovery.h')
-rw-r--r-- | src/fbgui/networkdiscovery.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/fbgui/networkdiscovery.h b/src/fbgui/networkdiscovery.h new file mode 100644 index 0000000..c422b18 --- /dev/null +++ b/src/fbgui/networkdiscovery.h @@ -0,0 +1,139 @@ +/** + * Copyright (c) 2010,2011 - RZ Uni Freiburg + * Copyright (c) 2010,2011 - OpenSLX Project + * + * This program/file is free software distributed under the GPL version 2. + * See http://openslx.org/COPYING + * + * If you have any feedback please consult http://openslx.org/feedback and + * send your feedback to feedback@openslx.org + * + * General information about OpenSLX can be found under http://openslx.org + */ + + + +#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 "dhcp.h" + +#include "../common/fbgui.h" + + + +#define DEFAULT_PATHTODHCPCDEXE "/bin/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(); + void tryAgain(); + void prepareTryAgain(); + bool checkConnectivity(QString ifName); + bool checkConnectivityViaTcp(); + QVariantMap getInterfaceConfig(QString ifName); + QString GetErrorStr(); + +public 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 updateIfStatus(QString ifName, QString status); + void updateStatus(QString status); + void allProcessesFinished(); + void continueBoot(QString ifName); + void continueBootWithoutCheck(QString ifName); + 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 _serverPath; + 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; + QList<Q_PID> _pidsList; + QString _errorStr; + QMap<QString,interfaceconfiguration*> _ifcMap; + void mainWork(); + + void killDHCPCD(); + + void handleNewInput(QLocalSocket * client); + + void runDHCPCD(QList<QString> &interfaces); + void runDHCPCD(QString interface); + + bool checkCarrierState(QString interface); + bool checkConnectivityViaTcp(QString server); + + bool checkBlackList(QString i); + + void getListOfNetworkInterfaces(); + void getListOfNetworkInterfacesWithAutoUp(); + + +}; + +#endif // NetworkDiscovery_H |