diff --git a/sources/gui/docs/netctl-gui-dbus-api.html b/sources/gui/docs/netctl-gui-dbus-api.html
index 610bcf8..eae89be 100644
--- a/sources/gui/docs/netctl-gui-dbus-api.html
+++ b/sources/gui/docs/netctl-gui-dbus-api.html
@@ -196,6 +196,11 @@ small {
yes |
+
+ QStringList CurrentWiFi() |
+ returns current WiFi point in format NAME|SECURITY|TYPE|FREQS|MACS|SIGNAL|ACTIVE|EXISTS |
+ yes |
+
QStringList VerboseWiFi() |
returns available WiFi points in format NAME|SECURITY|TYPE|FREQS|MACS|SIGNAL|ACTIVE|EXISTS |
@@ -238,7 +243,7 @@ small {
QStringList netctlVerboseProfileList() |
- returns available profiles in format NAME|DESCRIPTION|ESSID|ACTIVE|ENABLED from netctl even if netctl-auto is running |
+ returns available profiles in format NAME|DESCRIPTION|TYPE|INTERFACE|ESSID|ACTIVE|ENABLED from netctl even if netctl-auto is running |
no |
@@ -248,7 +253,7 @@ small {
QStringList VerboseProfileList() |
- returns available profiles in format NAME|DESCRIPTION|ESSID|ACTIVE|ENABLED |
+ returns available profiles in format NAME|DESCRIPTION|TYPE|INTERFACE|ESSID|ACTIVE|ENABLED |
no |
diff --git a/sources/gui/src/dbusoperation.cpp b/sources/gui/src/dbusoperation.cpp
index de353c2..f242dd6 100644
--- a/sources/gui/src/dbusoperation.cpp
+++ b/sources/gui/src/dbusoperation.cpp
@@ -33,13 +33,15 @@ QList parseOutputNetctl(const QList raw)
QStringList list = raw[0].toStringList();
for (int i=0; itableWidget_main->setItem(i, 0, new QTableWidgetItem(profiles[i].name));
ui->tableWidget_main->item(i, 0)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
@@ -296,9 +301,12 @@ void MainWindow::updateWifiTab()
.arg(scanResults[i].macs[j])
.arg(scanResults[i].frequencies[j])
.arg(QApplication::translate("MainWindow", "MHz"));
- toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Type")).arg(type);
- toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Active")).arg(checkStatus(scanResults[i].active));
- toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Exists")).arg(checkStatus(scanResults[i].exists));
+ toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Type"))
+ .arg(type);
+ toolTip += QString("%1: %2\n").arg(QApplication::translate("MainWindow", "Active"))
+ .arg(checkStatus(scanResults[i].active));
+ toolTip += QString("%1: %2").arg(QApplication::translate("MainWindow", "Exists"))
+ .arg(checkStatus(scanResults[i].exists));
// name
ui->tableWidget_wifi->setItem(i, 0, new QTableWidgetItem(scanResults[i].name));
ui->tableWidget_wifi->item(i, 0)->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
diff --git a/sources/gui/src/settingswindow.cpp b/sources/gui/src/settingswindow.cpp
index 709f3b8..888b5d6 100644
--- a/sources/gui/src/settingswindow.cpp
+++ b/sources/gui/src/settingswindow.cpp
@@ -435,9 +435,9 @@ QMap SettingsWindow::getSettings(QString fileName)
settings.beginGroup(QString("wpa_supplicant"));
config[QString("WPASUP_PATH")] = settings.value(QString("WPASUP_PATH"), QString("/usr/bin/wpa_supplicant")).toString();
config[QString("WPACLI_PATH")] = settings.value(QString("WPACLI_PATH"), QString("/usr/bin/wpa_cli")).toString();
- config[QString("PID_FILE")] = settings.value(QString("PID_FILE"), QString("/run/wpa_supplicant_netctl-gui.pid")).toString();
+ config[QString("PID_FILE")] = settings.value(QString("PID_FILE"), QString("/run/wpa_supplicant_$i.pid")).toString();
config[QString("WPA_DRIVERS")] = settings.value(QString("WPA_DRIVERS"), QString("nl80211,wext")).toString();
- config[QString("CTRL_DIR")] = settings.value(QString("CTRL_DIR"), QString("/run/wpa_supplicant_netctl-gui")).toString();
+ config[QString("CTRL_DIR")] = settings.value(QString("CTRL_DIR"), QString("/run/wpa_supplicant")).toString();
config[QString("CTRL_GROUP")] = settings.value(QString("CTRL_GROUP"), QString("users")).toString();
settings.endGroup();
diff --git a/sources/helper/netctl-gui.conf b/sources/helper/netctl-gui.conf
index 454c569..1d4ad88 100644
--- a/sources/helper/netctl-gui.conf
+++ b/sources/helper/netctl-gui.conf
@@ -60,11 +60,12 @@ WPASUP_PATH=/usr/bin/wpa_supplicant
# path to wpa_cli
WPACLI_PATH=/usr/bin/wpa_cli
# wpa_supplicant PID file
-PID_FILE=/run/wpa_supplicant_netctl-gui.pid
+# $i is interface
+PID_FILE=/run/wpa_supplicant_$i.pid
# wpa_supplicant drivers for wireless interface comma separated
WPA_DRIVERS=nl80211,wext
# path to control directory which is required by wpa_supplicant
-CTRL_DIR=/run/wpa_supplicant_netctl-gui
+CTRL_DIR=/run/wpa_supplicant
# group which is owner of CTRL_DIR
CTRL_GROUP=users
diff --git a/sources/helper/netctl-gui.conf.5 b/sources/helper/netctl-gui.conf.5
index 007a96c..327bc21 100644
--- a/sources/helper/netctl-gui.conf.5
+++ b/sources/helper/netctl-gui.conf.5
@@ -20,7 +20,7 @@ close helper after GUI application quit. This option is not recognized by
.IP "CLOSETOTRAY=true"
hide application to tray on exit if tray is available. This option is not recognized by
.BR netctlgui-helper (1)
-.IP "CTRL_DIR=/run/wpa_supplicant_netctl-gui"
+.IP "CTRL_DIR=/run/wpa_supplicant"
path to control directory which is required by
.BR wpa_supplicant (8)
.IP "CTRL_GROUP=users"
@@ -56,7 +56,7 @@ path to
service name without
.I .service
suffix
-.IP "PID_FILE=/run/wpa_supplicant_netctl-gui.pid"
+.IP "PID_FILE=/run/wpa_supplicant_$i.pid"
.BR wpa_supplicant (8)
PID file
.IP "PREFERED_IFACE="
diff --git a/sources/helper/src/controladaptor.cpp b/sources/helper/src/controladaptor.cpp
index cd9118d..68762af 100644
--- a/sources/helper/src/controladaptor.cpp
+++ b/sources/helper/src/controladaptor.cpp
@@ -90,7 +90,7 @@ QStringList ControlAdaptor::FindSettings()
QString ControlAdaptor::LibraryDocs()
{
- return (QString("html/index.html").arg(QString(DOCS_PATH)));
+ return (QString("%1html/index.html").arg(QString(DOCS_PATH)));
}
@@ -249,6 +249,26 @@ bool ControlAdaptor::Remove(const QString profile)
// wpaCommand
+QString ControlAdaptor::CurrentWiFi()
+{
+ netctlWifiInfo wifiPoint = wpaCommand->current();
+ QStringList point;
+ point.append(wifiPoint.name);
+ point.append(wifiPoint.security);
+ point.append(QString::number(wifiPoint.type));
+ QStringList freqList;
+ for (int j=0; j wifiPoints = wpaCommand->scanWifi();
diff --git a/sources/helper/src/controladaptor.h b/sources/helper/src/controladaptor.h
index 9d3b5f6..fabde9a 100644
--- a/sources/helper/src/controladaptor.h
+++ b/sources/helper/src/controladaptor.h
@@ -68,6 +68,7 @@ public slots:
bool Create(const QString profile, const QStringList settingsList);
bool Remove(const QString profile);
// wpaCommand
+ QString CurrentWiFi();
QStringList VerboseWiFi();
QStringList WiFi();
diff --git a/sources/helper/src/netctladaptor.cpp b/sources/helper/src/netctladaptor.cpp
index 2f3194b..9b1f725 100644
--- a/sources/helper/src/netctladaptor.cpp
+++ b/sources/helper/src/netctladaptor.cpp
@@ -137,6 +137,8 @@ QStringList NetctlAdaptor::netctlVerboseProfileList()
QStringList profileInfo;
profileInfo.append(profilesInfo[i].name);
profileInfo.append(profilesInfo[i].description);
+ profileInfo.append(profilesInfo[i].type);
+ profileInfo.append(profilesInfo[i].interface);
profileInfo.append(profilesInfo[i].essid);
profileInfo.append(QString::number(profilesInfo[i].active));
profileInfo.append(QString::number(profilesInfo[i].enabled));
diff --git a/sources/helper/src/netctlhelper.cpp b/sources/helper/src/netctlhelper.cpp
index e7c7551..f7f5ee1 100644
--- a/sources/helper/src/netctlhelper.cpp
+++ b/sources/helper/src/netctlhelper.cpp
@@ -164,9 +164,9 @@ QMap NetctlHelper::getSettings(const QString file)
settings.beginGroup(QString("wpa_supplicant"));
config[QString("WPASUP_PATH")] = settings.value(QString("WPASUP_PATH"), QString("/usr/bin/wpa_supplicant")).toString();
config[QString("WPACLI_PATH")] = settings.value(QString("WPACLI_PATH"), QString("/usr/bin/wpa_cli")).toString();
- config[QString("PID_FILE")] = settings.value(QString("PID_FILE"), QString("/run/wpa_supplicant_netctl-gui.pid")).toString();
+ config[QString("PID_FILE")] = settings.value(QString("PID_FILE"), QString("/run/wpa_supplicant_$i.pid")).toString();
config[QString("WPA_DRIVERS")] = settings.value(QString("WPA_DRIVERS"), QString("nl80211,wext")).toString();
- config[QString("CTRL_DIR")] = settings.value(QString("CTRL_DIR"), QString("/run/wpa_supplicant_netctl-gui")).toString();
+ config[QString("CTRL_DIR")] = settings.value(QString("CTRL_DIR"), QString("/run/wpa_supplicant")).toString();
config[QString("CTRL_GROUP")] = settings.value(QString("CTRL_GROUP"), QString("users")).toString();
settings.endGroup();
diff --git a/sources/netctlgui/include/netctlgui/netctlinteract.h b/sources/netctlgui/include/netctlgui/netctlinteract.h
index 53ca7b6..70b5c4a 100644
--- a/sources/netctlgui/include/netctlgui/netctlinteract.h
+++ b/sources/netctlgui/include/netctlgui/netctlinteract.h
@@ -42,6 +42,10 @@ class NetctlProfile;
* profile description
* @var netctlProfileInfo::essid
* ESSID if any
+ * @var netctlProfileInfo::interface
+ * profile interface
+ * @var netctlProfileInfo::type
+ * profile type
* @var netctlProfileInfo::active
* whether profile is active
* @var netctlProfileInfo::enabled
@@ -52,8 +56,10 @@ typedef struct
QString name;
QString description;
QString essid;
- bool active;
- bool enabled;
+ QString interface;
+ QString type;
+ bool active = false;
+ bool enabled = false;
} netctlProfileInfo;
/**
diff --git a/sources/netctlgui/include/netctlgui/wpasupinteract.h b/sources/netctlgui/include/netctlgui/wpasupinteract.h
index 9631231..1b7e05f 100644
--- a/sources/netctlgui/include/netctlgui/wpasupinteract.h
+++ b/sources/netctlgui/include/netctlgui/wpasupinteract.h
@@ -81,8 +81,8 @@ typedef struct
QString security;
int signal;
PointType type = PointType::None;
- bool active;
- bool exists;
+ bool active = false;
+ bool exists = false;
} netctlWifiInfo;
/**
@@ -141,6 +141,11 @@ public:
public slots:
// functions
+ /**
+ * @brief method which returns active point information
+ * @return current point information
+ */
+ netctlWifiInfo current();
/**
* @brief method which scans WiFi networks
* @return list of essids
@@ -177,17 +182,17 @@ private:
*/
bool useSuid = true;
/**
- * @brief path to ctrl_directory. Defaults is "/run/wpa_supplicant_netctl-gui"
+ * @brief path to ctrl_directory. Defaults is "/run/wpa_supplicant"
*/
- QString ctrlDir = QString("/run/wpa_supplicant_netctl-gui");
+ QString ctrlDir = QString("/run/wpa_supplicant");
/**
* @brief group which is owner of CTRL_DIR. Default is "users"
*/
QString ctrlGroup = QString("users");
/**
- * @brief wpa_supplicant PID file. Default is "/run/wpa_supplicant_netctl-gui.pid"
+ * @brief wpa_supplicant PID file. $i is interface. Default is "/run/wpa_supplicant_$i.pid"
*/
- QString pidFile = QString("/run/wpa_supplicant_netctl-gui.pid");
+ QString pidFile = QString("/run/wpa_supplicant_$i.pid");
/**
* @brief path to sudo command. Default is "/usr/bin/kdesu"
*/
diff --git a/sources/netctlgui/src/netctlinteract.cpp b/sources/netctlgui/src/netctlinteract.cpp
index da9dd9a..7729f18 100644
--- a/sources/netctlgui/src/netctlinteract.cpp
+++ b/sources/netctlgui/src/netctlinteract.cpp
@@ -193,12 +193,16 @@ QList Netctl::getProfileList()
profileInfo.enabled = isProfileEnabled(profileInfo.name);
// external
QStringList keys;
+ keys.append(QString("Connection"));
keys.append(QString("Description"));
keys.append(QString("ESSID"));
+ keys.append(QString("Interface"));
QStringList profileValues = netctlProfile->getValuesFromProfile(profileInfo.name,
keys);
- profileInfo.description = profileValues[0];
- profileInfo.essid = profileValues[1];
+ profileInfo.description = profileValues[1];
+ profileInfo.essid = profileValues[2];
+ profileInfo.interface = profileValues[3];
+ profileInfo.type = profileValues[0];
fullProfilesInfo.append(profileInfo);
}
diff --git a/sources/netctlgui/src/netctlprofile.cpp b/sources/netctlgui/src/netctlprofile.cpp
index 6371ec7..484463c 100644
--- a/sources/netctlgui/src/netctlprofile.cpp
+++ b/sources/netctlgui/src/netctlprofile.cpp
@@ -245,9 +245,7 @@ QString NetctlProfile::getValueFromProfile(const QString profile, const QString
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
if (debug) qDebug() << PDEBUG << ":" << "Key" << key;
- QMap settings = getSettingsFromProfile(profile);
-
- return settings[key];
+ return getValuesFromProfile(profile, QStringList() << key)[0];
}
diff --git a/sources/netctlgui/src/wpasupinteract.cpp b/sources/netctlgui/src/wpasupinteract.cpp
index 7283cb4..de9e245 100644
--- a/sources/netctlgui/src/wpasupinteract.cpp
+++ b/sources/netctlgui/src/wpasupinteract.cpp
@@ -115,7 +115,7 @@ QMap WpaSup::getRecommendedConfiguration()
QStringList recommended;
// ctrl directory
// nothing to do
- settings[QString("CTRL_DIR")] = QString("/run/wpa_supplicant_netctl-gui");
+ settings[QString("CTRL_DIR")] = QString("/run/wpa_supplicant");
// ctrl group
// check group list and find out 'network', 'users', 'root'
settings[QString("CTRL_GROUP")] = QString("");
@@ -148,7 +148,7 @@ QMap WpaSup::getRecommendedConfiguration()
}
// pid file
// nothing to do
- settings[QString("PID_FILE")] = QString("/run/wpa_supplicant_netctl-gui.pid");
+ settings[QString("PID_FILE")] = QString("/run/wpa_supplicant_$i.pid");
// sudo path
// find out sudo, kdesu, gksu exes
settings[QString("SUDO_PATH")] = QString("");
@@ -251,20 +251,102 @@ bool WpaSup::isProfileExists(const QString essid)
}
+/**
+ * @fn current
+ */
+netctlWifiInfo WpaSup::current()
+{
+ if (debug) qDebug() << PDEBUG;
+ if (pidFile.isEmpty()) {
+ if (debug) qDebug() << PDEBUG << ":" << "Could not find PID file";
+ return netctlWifiInfo();
+ }
+ QStringList interfaces = netctlCommand->getWirelessInterfaceList();
+ if (interfaces.isEmpty()) {
+ if (debug) qDebug() << PDEBUG << ":" << "Could not find interfaces";
+ return netctlWifiInfo();
+ }
+ QString _pidFile = pidFile;
+ _pidFile.replace(QString("$i"), interfaces[0]);
+ if (debug) qDebug() << PDEBUG << ":" << "PID file" << _pidFile << QFile(_pidFile).exists();
+
+ bool terminateOnExit = (!QFile(_pidFile).exists());
+ netctlWifiInfo current;
+ if (!startWpaSupplicant()) {
+ if (terminateOnExit) stopWpaSupplicant();
+ return current;
+ }
+
+ QStringList rawList = getWpaCliOutput(QString("status")).split(QChar('\n'), QString::SkipEmptyParts);
+ for (int i=0; i= 5000) && (line[1].toInt() < 6000))
+ current.type = PointType::FiveG;
+ else if ((line[1].toInt() < 5000) && (line[1].toInt() > 2000))
+ current.type = PointType::TwoG;
+ current.frequencies.append(line[1].toInt());
+ } else if (line[0] == QString("ssid"))
+ current.name = line[1];
+ else if (line[0] == QString("key_mgmt")) {
+ QString security = line[1];
+ if (security.contains(QString("WPA2")))
+ security = QString("WPA2");
+ else if (security.contains(QString("WPA")))
+ security = QString("WPA");
+ else if (security.contains(QString("WEP")))
+ security = QString("WEP");
+ else
+ security = QString("none");
+ current.security = security;
+ }
+ }
+ current.signal = 0;
+ if (terminateOnExit) stopWpaSupplicant();
+
+ // status
+ current.active = true;
+ QList profiles = netctlCommand->getProfileList();
+ for (int j=0; j WpaSup::scanWifi()
{
if (debug) qDebug() << PDEBUG;
+ if (pidFile.isEmpty()) {
+ if (debug) qDebug() << PDEBUG << ":" << "Could not find PID file";
+ return QList();
+ }
+ QStringList interfaces = netctlCommand->getWirelessInterfaceList();
+ if (interfaces.isEmpty()) {
+ if (debug) qDebug() << PDEBUG << ":" << "Could not find interfaces";
+ return QList();
+ }
+ QString _pidFile = pidFile;
+ _pidFile.replace(QString("$i"), interfaces[0]);
+ if (debug) qDebug() << PDEBUG << ":" << "PID file" << _pidFile << QFile(_pidFile).exists();
+ bool terminateOnExit = (!QFile(_pidFile).exists());
QList scanResults;
if (!startWpaSupplicant()) {
- stopWpaSupplicant();
+ if (terminateOnExit) stopWpaSupplicant();
return scanResults;
}
if (!wpaCliCall(QString("scan"))) return scanResults;
- waitForProcess(1);
+ waitForProcess(3);
QStringList rawList = getWpaCliOutput(QString("scan_results")).split(QChar('\n'), QString::SkipEmptyParts);
// remove table header
@@ -343,7 +425,7 @@ QList WpaSup::scanWifi()
names.append(name);
scanResults.append(wifiPoint);
}
- stopWpaSupplicant();
+ if (terminateOnExit) stopWpaSupplicant();
return scanResults;
}
@@ -384,10 +466,13 @@ bool WpaSup::startWpaSupplicant()
if (debug) qDebug() << PDEBUG << ":" << "Could not find interfaces";
return false;
}
+ QString _pidFile = pidFile;
+ _pidFile.replace(QString("$i"), interfaces[0]);
+ if (debug) qDebug() << PDEBUG << ":" << "PID file" << _pidFile << QFile(_pidFile).exists();
- if (QFile(pidFile).exists()) return true;
+ if (QFile(_pidFile).exists()) return true;
QString cmd = QString("%1 %2 -B -P \"%3\" -i %4 -D %5 -C \"DIR=%6 GROUP=%7\"")
- .arg(sudoCommand).arg(wpaSupPath).arg(pidFile).arg(interfaces[0])
+ .arg(sudoCommand).arg(wpaSupPath).arg(_pidFile).arg(interfaces[0])
.arg(wpaDrivers).arg(ctrlDir).arg(ctrlGroup);
if (debug) qDebug() << PDEBUG << ":" << "Run cmd" << cmd;
TaskResult process = runTask(cmd, useSuid);
@@ -423,27 +508,12 @@ QString WpaSup::getWpaCliOutput(const QString commandLine)
if (debug) qDebug() << PDEBUG << ":" << "Could not find directory";
return QString();
}
- if (pidFile.isEmpty()) {
- if (debug) qDebug() << PDEBUG << ":" << "Could not find PID file";
- return QString();
- }
if (wpaCliPath.isEmpty()) {
if (debug) qDebug() << PDEBUG << ":" << "Could not find wpa_cli";
return QString();
}
- if (netctlCommand == nullptr) {
- if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
- return QString();
- }
- QStringList interfaces = netctlCommand->getWirelessInterfaceList();
- if (interfaces.isEmpty()) {
- if (debug) qDebug() << PDEBUG << ":" << "Could not find interfaces";
- return QString();
- }
- QString interface = interfaces[0];
- QString cmd = QString("%1 -i %2 -p %3 -P %4 %5").arg(wpaCliPath).arg(interface)
- .arg(ctrlDir).arg(pidFile).arg(commandLine);
+ QString cmd = QString("%1 -p %2 %3").arg(wpaCliPath).arg(ctrlDir).arg(commandLine);
if (debug) qDebug() << PDEBUG << ":" << "Run cmd" << cmd;
TaskResult process = runTask(cmd);
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
@@ -462,7 +532,7 @@ bool WpaSup::waitForProcess(const int sec)
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Interval" << sec;
- QString cmd = QString("sleep %1").arg(QString::number(sec));
+ QString cmd = QString("sleep %1").arg(sec);
runTask(cmd);
return true;
@@ -480,27 +550,12 @@ bool WpaSup::wpaCliCall(const QString commandLine)
if (debug) qDebug() << PDEBUG << ":" << "Could not find directory";
return false;
}
- if (pidFile.isEmpty()) {
- if (debug) qDebug() << PDEBUG << ":" << "Could not find PID file";
- return false;
- }
if (wpaCliPath.isEmpty()) {
if (debug) qDebug() << PDEBUG << ":" << "Could not find wpa_cli";
return false;
}
- if (netctlCommand == nullptr) {
- if (debug) qDebug() << PDEBUG << ":" << "Could not find library";
- return false;
- }
- QStringList interfaces = netctlCommand->getWirelessInterfaceList();
- if (interfaces.isEmpty()) {
- if (debug) qDebug() << PDEBUG << ":" << "Could not find interfaces";
- return false;
- }
- QString interface = interfaces[0];
- QString cmd = QString("%1 -i %2 -p %3 -P %4 %5").arg(wpaCliPath).arg(interface)
- .arg(ctrlDir).arg(pidFile).arg(commandLine);
+ QString cmd = QString("%1 -p %2 %3").arg(wpaCliPath).arg(ctrlDir).arg(commandLine);
if (debug) qDebug() << PDEBUG << ":" << "Run cmd" << cmd;
TaskResult process = runTask(cmd);
waitForProcess(1);
diff --git a/sources/test/testwpasup.cpp b/sources/test/testwpasup.cpp
index b00eb58..444b4d7 100644
--- a/sources/test/testwpasup.cpp
+++ b/sources/test/testwpasup.cpp
@@ -74,10 +74,10 @@ void TestWpaSup::cleanupTestCase()
void TestWpaSup::test_getRecommendedConfiguration()
{
QStringList original;
- original.append(QString("CTRL_DIR==/run/wpa_supplicant_netctl-gui"));
+ original.append(QString("CTRL_DIR==/run/wpa_supplicant"));
original.append(QString("CTRL_GROUP==network"));
original.append(QString("FORCE_SUDO==false"));
- original.append(QString("PID_FILE==/run/wpa_supplicant_netctl-gui.pid"));
+ original.append(QString("PID_FILE==/run/wpa_supplicant_$i.pid"));
original.append(QString("SUDO_PATH==/usr/bin/sudo"));
original.append(QString("WPACLI_PATH==/usr/bin/wpa_cli"));
original.append(QString("WPASUP_PATH==/usr/bin/wpa_supplicant"));