diff --git a/sources/netctlgui/include/netctlgui/wpasupinteract.h b/sources/netctlgui/include/netctlgui/wpasupinteract.h index 256f291..efc69a0 100644 --- a/sources/netctlgui/include/netctlgui/wpasupinteract.h +++ b/sources/netctlgui/include/netctlgui/wpasupinteract.h @@ -91,6 +91,11 @@ public: * @return profile name */ QString existentProfile(const QString essid); + /** + * @brief method which check system configuration and return recommended values to keys + * @return recommended parametrs + */ + static QMap getRecommendedConfiguration(); /** * @brief method which checks profile status by ESSID * @param essid ESSID name diff --git a/sources/netctlgui/src/wpasupinteract.cpp b/sources/netctlgui/src/wpasupinteract.cpp index da1391c..659f062 100644 --- a/sources/netctlgui/src/wpasupinteract.cpp +++ b/sources/netctlgui/src/wpasupinteract.cpp @@ -24,6 +24,7 @@ #include +#include #include "netctlgui.h" #include "pdebug.h" @@ -104,6 +105,102 @@ QString WpaSup::existentProfile(const QString essid) } +/** + * @fn getRecommendedConfiguration + */ +QMap WpaSup::getRecommendedConfiguration() +{ + QMap 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; igr_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