Index: sources/wifi/WifiInterface.cpp =================================================================== diff -u -r4a67c01045f365be38f1a12a8572c0070d343e1e -r7f61c3b45a50145fe5c245018d481d6266166fa6 --- sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision 4a67c01045f365be38f1a12a8572c0070d343e1e) +++ sources/wifi/WifiInterface.cpp (.../WifiInterface.cpp) (revision 7f61c3b45a50145fe5c245018d481d6266166fa6) @@ -1,13 +1,13 @@ /*! * - * Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. + * Copyright (c) 2021-2023 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file WifiInterface.cpp * \author (last) Behrouz NematiPour - * \date (last) 22-Sep-2021 + * \date (last) 02-Feb-2023 * \author (original) Behrouz NematiPour * \date (original) 11-May-2021 * @@ -139,8 +139,8 @@ connect(&_processSetDNS , SIGNAL( finished(int, QProcess::ExitStatus)), this , SLOT( onProcessFinishedSetDNS(int, QProcess::ExitStatus))); - connect(this, SIGNAL(didRequestAutoAssignedIP()), - this, SLOT( onRequestAutoAssignedIP())); + connect(this , SIGNAL( didRequestAutoAssignedIP()), + this , SLOT( onRequestAutoAssignedIP())); } @@ -318,17 +318,17 @@ if (cell.contains(searchTermSSID) && cell.contains(searchTermMacAddress) && cell.contains(searchTermSignalLevel)) { QString ssid = getTextBetweenDelimiters(cell, searchTermSSID, "\n").replace("\"", "").trimmed(); - if (ssid == "") - continue; + if (ssid == "") continue; QString macAddress = getTextBetweenDelimiters(cell, searchTermMacAddress, "\n").trimmed(); int signalLevel = getTextBetweenDelimiters(cell, searchTermSignalLevel, "dBm").trimmed().toInt(); QList securityTypes; bool requiresKey = QRegularExpression("Encryption key:on").match(cell).hasMatch(); - QStringList infoElement = cell.split("IE: "); - if (infoElement.length() > 1) + QStringList infoElements = cell.split("IE: "); + infoElements.takeFirst(); // remove the header + for (const QString &element : infoElements) { - QString element = infoElement[1]; + if ( element.startsWith("Unknown:") ) continue; bool isWPA2 = QRegularExpression(".*WPA2 ").match(element).hasMatch(); bool isWPA = QRegularExpression(".*WPA ").match(element).hasMatch(); bool supportsAES = QRegularExpression("Pairwise Ciphers.*CCMP").match(element).hasMatch(); @@ -351,8 +351,12 @@ if (securityType != MWifiNetwork::SECURITY_TYPE::UNSUPPORTED) securityTypes.append(securityType); } - - WifiNetworkData network(macAddress, ssid, securityTypes, MWifiNetwork::STATUS::NOT_CONNECTED, signalLevel); + // if no type can be found. + // we assume it was WEP which we don't support anyway. + if ( securityTypes.isEmpty() ) { + securityTypes.append(MWifiNetwork::SECURITY_TYPE::WEP); + } + WifiNetworkData network(macAddress, ssid, securityTypes, MWifiNetwork::STATUS::NOT_CONNECTED, signalLevel, requiresKey); networks.append(network); emit didAddNetwork(network); } @@ -475,10 +479,10 @@ .arg(_processRequestAutoAssignedIP.objectName())); return; } - emit didStatusChanged(tr("Obtaining IP Address...")); + QString progressDot = QString(".").repeated(_dhcpAttempts - _dhcpAttemptsLeft); + emit didStatusChanged(tr("%1.Obtaining IP Address.%1").arg(progressDot)); QString script; if ( ! checkScript(script, Wifi_Get_Auto_Assigned_IP) ) return; - _processRequestAutoAssignedIP.start(script, - QStringList() << _iface); + _processRequestAutoAssignedIP.start(script, QStringList() << _iface); } /*! @@ -499,11 +503,11 @@ } else { emit didError(QString("Could not connect to %1").arg(_network.ssid())); - _dhcpAttemptsLeft = 5; + _dhcpAttemptsLeft = _dhcpAttempts; } return; } - _dhcpAttemptsLeft = 5; + _dhcpAttemptsLeft = _dhcpAttempts; doRequestIPSettings(); } @@ -547,7 +551,7 @@ return; } QString script; if ( ! checkScript(script, Wifi_Read_Gateway) ) return; - _processReadGateway.start(script); + _processReadGateway.start(script, QStringList()); } /*! @@ -570,7 +574,7 @@ return; } QString script; if ( ! checkScript(script, Wifi_Read_DNS) ) return; - _processReadDNS.start(script); + _processReadDNS.start(script, QStringList()); } /*! @@ -912,7 +916,7 @@ * \return true if succeeds and false otherwise */ bool WifiInterface::checkScript(QString &vScript, const QString &vShellScript) { - vScript = _scriptsFolder + vShellScript; + vScript = Storage::Scripts_Path_Name() + vShellScript; QFileInfo info(vScript); if ( ! info.exists () ) { LOG_DEBUG(QString("script %1 does not exist." ).arg(vScript)); return false; } if ( ! info.isExecutable() ) { LOG_DEBUG(QString("script %1 is not executable." ).arg(vScript)); return false; }