From 46da51f8701747376999dcca8f034e41eeb206e0 Mon Sep 17 00:00:00 2001 From: Niklas Date: Thu, 29 Sep 2011 14:24:48 +0200 Subject: did some refactoring. added a user choice screen which is shown 2 seconds before the magic begins. (press F5 to get a choice) --- LogReceiver/networkdiscovery.cpp | 87 ++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 40 deletions(-) (limited to 'LogReceiver/networkdiscovery.cpp') diff --git a/LogReceiver/networkdiscovery.cpp b/LogReceiver/networkdiscovery.cpp index 1677573..a526a6f 100644 --- a/LogReceiver/networkdiscovery.cpp +++ b/LogReceiver/networkdiscovery.cpp @@ -4,7 +4,7 @@ NetworkDiscovery::NetworkDiscovery(QObject *parent) { - server = new QLocalServer(this); + _server = new QLocalServer(this); } NetworkDiscovery::~NetworkDiscovery() { @@ -17,12 +17,22 @@ void NetworkDiscovery::initAndRun(QString serverIp, bool userChoice,QString serv _serverIp = serverIp; _userChoice = userChoice; _blocked = false; + _pathToDhcpcdExe = pathToExe; + _numberOfProcesses = 0; if (serverPath != DEFAULT_QTSOCKETADDRESS) { - dhcpcdArguments.append("-q"); - dhcpcdArguments.append(serverPath); + _dhcpcdArguments.append("-q"); + _dhcpcdArguments.append(serverPath); } - if (!server->listen(serverPath)) { + /* delete the file at serverPath. this is necessary since in case the application crashes, the file still + * exists which leads to an error. + */ + + if(QFile::exists(serverPath)) { + QFile::remove(serverPath); + } + + if (!_server->listen(serverPath)) { /* QMessageBox::critical(this, tr("NetworkDiscovery"), tr( "Unable to start the server: %1.") .arg(server->errorString())); @@ -31,17 +41,17 @@ void NetworkDiscovery::initAndRun(QString serverIp, bool userChoice,QString serv // emit signal to the gui that a critial error occoured QString errorInfo("Unable to start server: "); qDebug() << "--- \t [NetworkDiscovery::initAndRun] " + errorInfo - << server->errorString(); + << _server->errorString(); emit - abortBoot(errorInfo + server->errorString()); + abortBoot(errorInfo + _server->errorString()); return; } - connect(server, SIGNAL(newConnection()), this, SLOT(handleNewConnection())); + connect(_server, SIGNAL(newConnection()), this, SLOT(handleNewConnection())); + - pathToDhcpcdExe = pathToExe; // check if the path to the customdhcpcd file is correct - QFileInfo fInfo(pathToDhcpcdExe); + QFileInfo fInfo(_pathToDhcpcdExe); if (!fInfo.exists()) { qDebug() << "could not find customdhcpcd exe. Please check the path to this file."; @@ -52,10 +62,10 @@ void NetworkDiscovery::initAndRun(QString serverIp, bool userChoice,QString serv if (args != NULL && !args->isEmpty()) { qDebug() << "--- \t [NetworkDiscovery::initAndRun] added additional args"; - dhcpcdArguments.append(*args); + _dhcpcdArguments.append(*args); } - numberOfProcesses = 0; + // start the main work: @@ -67,8 +77,7 @@ void NetworkDiscovery::initAndRun(QString serverIp, bool userChoice,QString serv //dhcpcdArguments.append("-d"); - QString ifName("eth0"); - numberOfProcesses = list.size(); + _numberOfProcesses = list.size(); runDHCPCD(list); } else { qDebug() << "list is empty. Have not found usable interface."; @@ -79,24 +88,23 @@ void NetworkDiscovery::initAndRun(QString serverIp, bool userChoice,QString serv } int NetworkDiscovery::replaceDefaultRoute(QString &ifName, QString &gateway, int af, int mss) { - networkManager.replaceDefaultRoute(ifName, gateway, mss, AF_INET); + _networkManager.replaceDefaultRoute(ifName, gateway, mss, AF_INET); } int NetworkDiscovery::ip4_replaceDefaultRoute(QString ifName, QString gateway, int mss) { - networkManager.replaceDefaultRoute(ifName, gateway, mss, AF_INET); + _networkManager.replaceDefaultRoute(ifName, gateway, mss, AF_INET); } int NetworkDiscovery::ip4_setManualConfiguration(QVariantMap result) { QList dns; dns.append(result["dns"].toString()); - networkManager.ip4_setManualConfiguration(result["ifname"].toString(), + _networkManager.ip4_setManualConfiguration(result["ifname"].toString(), result["ipaddr"].toString(), result["netmask"].toString(), result["broadcast"].toString(), result["gateway"].toString(), 0, AF_INET, - true, "/etc/", dns); @@ -108,14 +116,13 @@ int NetworkDiscovery::ip4_setManualConfiguration(QVariantMap result) { if(ifc != NULL) { dns.clear(); dns = ifc->getDnsservers().trimmed().split(" "); - networkManager.ip4_setManualConfiguration(result["ifname"].toString(), + _networkManager.ip4_setManualConfiguration(result["ifname"].toString(), ifc->getIpAddress(), ifc->getNetmask(), ifc->getBroadcast(), ifc->getGateway(), 0, AF_INET, - true, "/etc/", dns); } @@ -145,7 +152,7 @@ QList NetworkDiscovery::getListOfNetworkInterfaces() { continue; } if(!(nI.flags() & QNetworkInterface::IsUp)) { - networkManager.bringInterfaceUpDown(nI.humanReadableName(), true); + _networkManager.bringInterfaceUP(nI.humanReadableName()); } if (!checkCarrierState(nI.humanReadableName())) { continue; @@ -222,18 +229,18 @@ void NetworkDiscovery::runDHCPCD(QList &interfaces) { void NetworkDiscovery::runDHCPCD(QString interface) { emit updateStatusLabel(interface, "start DHCP"); - dhcpcdArguments.append(interface); + _dhcpcdArguments.append(interface); QProcess * p = new QProcess(this); - qDebug() << dhcpcdArguments; + qDebug() << _dhcpcdArguments; - clientProcessToIfNameMap.insert(p, interface); - qDebug() << clientProcessToIfNameMap; - p->start(pathToDhcpcdExe, dhcpcdArguments); + _clientProcessToIfNameMap.insert(p, interface); + qDebug() << _clientProcessToIfNameMap; + p->start(_pathToDhcpcdExe, _dhcpcdArguments); connect(p, SIGNAL(started()), this, SLOT(handleProcessStarted())); connect(p, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(handleProcessFinished(int, QProcess::ExitStatus))); - dhcpcdArguments.removeLast(); + _dhcpcdArguments.removeLast(); } bool NetworkDiscovery::checkConnectivity(QString ifName) { @@ -247,7 +254,7 @@ bool NetworkDiscovery::checkConnectivity(QString ifName) { _ifcMap.insert(ifName, ifConf); // replace default route - qDebug() << networkManager.replaceDefaultRoute(ifName, + qDebug() << _networkManager.replaceDefaultRoute(ifName, ifConf->getGateway(), 0, AF_INET); if (checkConnectivityViaTcp(_serverIp)) { @@ -289,11 +296,11 @@ void NetworkDiscovery::handleNewConnection() { qDebug() << "New Connection arrived"; /*QLocalSocket **/ - client = server ->nextPendingConnection(); - clients.insert(client, client); - connect(client, SIGNAL(disconnected()), this, + _client = _server ->nextPendingConnection(); + _clients.insert(_client, _client); + connect(_client, SIGNAL(disconnected()), this, SLOT(handleClientDisconnect())); - connect(client, SIGNAL(readyRead()), this, SLOT(handleNewInput())); + connect(_client, SIGNAL(readyRead()), this, SLOT(handleNewInput())); } /** @@ -302,7 +309,7 @@ void NetworkDiscovery::handleNewConnection() { void NetworkDiscovery::handleClientDisconnect() { QLocalSocket* socket = qobject_cast (QObject::sender()); - QLocalSocket * client = clients.value(socket); + QLocalSocket * client = _clients.value(socket); qDebug() << "disconnect client"; handleNewInput(client); @@ -336,7 +343,7 @@ void NetworkDiscovery::handleNewInput(QLocalSocket * client) { void NetworkDiscovery::handleNewInput() { QLocalSocket* socket = qobject_cast (QObject::sender()); - QLocalSocket * client = clients.value(socket); + QLocalSocket * client = _clients.value(socket); QString data(client->read(DHCP_MESSAGE_SIZE)); client->write("ACK", ACK_SIZE); client->waitForBytesWritten(); @@ -380,9 +387,9 @@ void NetworkDiscovery::handleNewInputLine(QLocalSocket * client, QString data) { int sst = s_subState.trimmed().toInt(); //qDebug() << logMsg; - if (ifNameToClient.size() < numberOfProcesses && !ifNameToClient.contains( + if (_ifNameToClient.size() < _numberOfProcesses && !_ifNameToClient.contains( interface)) { - ifNameToClient.insert(interface, client); + _ifNameToClient.insert(interface, client); } switch (st) { @@ -505,7 +512,7 @@ void NetworkDiscovery::handleProcessFinished(int exitCode, QProcess::ExitStatus exitStatus) { QProcess* p = qobject_cast (QObject::sender()); - QString ifName = clientProcessToIfNameMap.value(p, "ifName"); + QString ifName = _clientProcessToIfNameMap.value(p, "ifName"); if (!_blocked) { //_blocked becomes true, if _userChoice is false and we found a usable interface if (ifName.compare("ifName") == 0) { qDebug() @@ -524,12 +531,12 @@ void NetworkDiscovery::handleProcessFinished(int exitCode, } } if (!_blocked) { //_blocked becomes true, if _userChoice is false and we found a usable interface - QLocalSocket *client = ifNameToClient.value(ifName, 0); + QLocalSocket *client = _ifNameToClient.value(ifName, 0); if (client != 0) { handleNewInput(client); } - numberOfProcesses = numberOfProcesses - 1; - if (numberOfProcesses <= 0 && _userChoice) { + _numberOfProcesses = _numberOfProcesses - 1; + if (_numberOfProcesses <= 0 && _userChoice) { emit allProcessesFinished(); } } @@ -546,7 +553,7 @@ void NetworkDiscovery::handleProcessFinished(int exitCode, */ void NetworkDiscovery::handleProcessStarted() { QProcess* p = qobject_cast (QObject::sender()); - QString ifName = clientProcessToIfNameMap.value(p, "ifName"); + QString ifName = _clientProcessToIfNameMap.value(p, "ifName"); qDebug() << "process started for interface:" << ifName; } -- cgit v1.2.3-55-g7522