add getrecommended to wpasup class

This commit is contained in:
arcan1s 2014-08-13 09:29:49 +04:00
parent 529e2dd995
commit b63d883eb2
2 changed files with 102 additions and 0 deletions

View File

@ -91,6 +91,11 @@ public:
* @return profile name * @return profile name
*/ */
QString existentProfile(const QString essid); QString existentProfile(const QString essid);
/**
* @brief method which check system configuration and return recommended values to keys
* @return recommended parametrs
*/
static QMap<QString, QString> getRecommendedConfiguration();
/** /**
* @brief method which checks profile status by ESSID * @brief method which checks profile status by ESSID
* @param essid ESSID name * @param essid ESSID name

View File

@ -24,6 +24,7 @@
#include <QDebug> #include <QDebug>
#include <grp.h>
#include "netctlgui.h" #include "netctlgui.h"
#include "pdebug.h" #include "pdebug.h"
@ -104,6 +105,102 @@ QString WpaSup::existentProfile(const QString essid)
} }
/**
* @fn getRecommendedConfiguration
*/
QMap<QString, QString> WpaSup::getRecommendedConfiguration()
{
QMap<QString, QString> settings;
int size = 99;
QString cmd;
TaskResult process;
QStringList recommended;
// ctrl directory
// nothing to do
settings[QString("CTRL_DIR")] = QString("/run/wpa_supplicant_netctl-gui");
// ctrl group
// check group list and find out 'network', 'users', 'root'
settings[QString("CTRL_GROUP")] = QString("");
gid_t gtpList[99];
int grpSize = getgroups(size, gtpList);
recommended.clear();
recommended.append("network");
recommended.append("users");
recommended.append("root");
for (int i=0; i<recommended.count(); i++) {
for (int j=0; j<grpSize; j++)
if (recommended[i] == QString(getgrgid(gtpList[j])->gr_name)) {
settings[QString("CTRL_GROUP")] = recommended[i];
break;
}
if (!settings[QString("CTRL_GROUP")].isEmpty()) break;
}
// force sudo
// find out helper exe
settings[QString("FORCE_SUDO")] = QString("true");
recommended.clear();
recommended.append(QString("netctlgui-helper"));
recommended.append(QString("netctlgui-helper-suid"));
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("FORCE_SUDO")] = QString("false");
break;
}
}
// pid file
// nothing to do
settings[QString("PID_FILE")] = QString("/run/wpa_supplicant_netctl-gui.pid");
// sudo path
// find out sudo, kdesu, gksu exes
settings[QString("SUDO_PATH")] = QString("");
recommended.clear();
recommended.append("sudo");
recommended.append("kdesu");
recommended.append("gksu");
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("SUDO_PATH")] = process.output.trimmed();
break;
}
}
// wpa_cli path
// find out wpa_cli exe
settings[QString("WPACLI_PATH")] = QString("true");
recommended.clear();
recommended.append("wpa_cli");
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("WPACLI_PATH")] = process.output.trimmed();
break;
}
}
// wpa drivers
// nothing to do
settings[QString("WPA_DRIVERS")] = QString("nl80211,wext");
// wpa_supplicant path
// find out wpa_supplicant exe
settings[QString("WPASUP_PATH")] = QString("true");
recommended.clear();
recommended.append("wpa_supplicant");
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("WPASUP_PATH")] = process.output.trimmed();
break;
}
}
return settings;
}
/** /**
* @fn isProfileActive * @fn isProfileActive
*/ */