add FindSettings key

This commit is contained in:
arcan1s
2014-08-13 11:41:30 +04:00
parent b63d883eb2
commit d3e1c4bca0
7 changed files with 213 additions and 0 deletions

View File

@ -155,6 +155,11 @@ public:
* @return true if netctl-auto is active
*/
bool isNetctlAutoRunning();
/**
* @brief method which check system configuration and return recommended values to keys
* @return recommended parametrs
*/
static QMap<QString, QString> getRecommendedConfiguration();
/**
* @brief method which gets wireless interface list from PREFERED_IFACE and IFACE_DIR
* @return interface list. If PREFERED_IFACE is not empty it will be first element

View File

@ -67,6 +67,11 @@ public:
* @return temporary profile name
*/
QString createProfile(const QString profile, const QMap<QString, QString> settings);
/**
* @brief method which check system configuration and return recommended values to keys
* @return recommended parametrs
*/
static QMap<QString, QString> getRecommendedConfiguration();
/**
* @brief method which reads settings from profile
* @param profile profile name

View File

@ -24,6 +24,7 @@
#include <QDebug>
#include <QDirIterator>
#include "netctlgui.h"
#include "pdebug.h"
@ -386,6 +387,120 @@ bool Netctl::isNetctlAutoRunning()
}
/**
* @fn getRecommendedConfiguration
*/
QMap<QString, QString> Netctl::getRecommendedConfiguration()
{
QMap<QString, QString> settings;
QString cmd;
TaskResult process;
QStringList recommended;
// 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;
}
}
// interfaces
// find out dircetory which contains wireless subdirectory
// I don't think that this parametr may change =)
settings[QString("IFACE_DIR")] = QString("/sys/class/net");
settings[QString("PREFERED_IFACE")] = QString("");
QDirIterator sysIterator(QDir("/sys"), QDirIterator::Subdirectories);
while (sysIterator.hasNext()) {
sysIterator.next();
if (!sysIterator.fileInfo().isDir()) continue;
QString name = sysIterator.filePath();
if (name.contains(QString("wireless"))) {
QString interfaceDir = QFileInfo(name).path();
settings[QString("PREFERED_IFACE")] = QFileInfo(interfaceDir).fileName();
break;
}
}
// netctl path
// find out netctl exe
settings[QString("NETCTL_PATH")] = QString("");
recommended.clear();
recommended.append("netctl");
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("NETCTL_PATH")] = process.output.trimmed();
break;
}
}
// netctl-auto path
// find out netctl-auto exe
settings[QString("NETCTLAUTO_PATH")] = QString("");
recommended.clear();
recommended.append("netctl-auto");
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("NETCTLAUTO_PATH")] = process.output.trimmed();
break;
}
}
// netctl-auto service
// usually it has the same name as netctl-auto
settings[QString("NETCTLAUTO_SERVICE")] = QFileInfo(settings[QString("NETCTLAUTO_PATH")]).fileName();
// profile path
// find out netctl directory into /etc
settings[QString("PROFILE_DIR")] = QString("");
QDirIterator iterator(QDir("/etc"), QDirIterator::Subdirectories);
while (iterator.hasNext()) {
iterator.next();
if (!iterator.fileInfo().isDir()) continue;
QString name = iterator.filePath();
if (name.contains(QString("netctl"))) {
settings[QString("PROFILE_DIR")] = name;
break;
}
}
// 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;
}
}
// systemctl path
// find out systemctl exe
settings[QString("SYSTEMCTL_PATH")] = QString("");
recommended.clear();
recommended.append("systemctl");
for (int i=0; i<recommended.count(); i++) {
cmd = QString("which ") + recommended[i];
process = runTask(cmd, false);
if (process.exitCode == 0) {
settings[QString("SYSTEMCTL_PATH")] = process.output.trimmed();
break;
}
}
return settings;
}
/**
* @fn getWirelessInterfaceList
*/

View File

@ -24,6 +24,7 @@
#include <QDebug>
#include <QDirIterator>
#include <QFile>
#include <QFileInfo>
#include <QTextStream>
@ -132,6 +133,62 @@ QString NetctlProfile::createProfile(const QString profile, const QMap<QString,
}
/**
* @fn getRecommendedConfiguration
*/
QMap<QString, QString> NetctlProfile::getRecommendedConfiguration()
{
QMap<QString, QString> settings;
QString cmd;
TaskResult process;
QStringList recommended;
// 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;
}
}
// profile path
// find out netctl directory into /etc
settings[QString("PROFILE_DIR")] = QString("");
QDirIterator iterator(QDir("/etc"), QDirIterator::Subdirectories);
while (iterator.hasNext()) {
iterator.next();
if (!iterator.fileInfo().isDir()) continue;
QString name = iterator.filePath();
if (name.contains(QString("netctl"))) {
settings[QString("PROFILE_DIR")] = name;
break;
}
}
// 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;
}
}
return settings;
}
/**
* @fn getSettingsFromProfile
*/