mirror of
https://github.com/arcan1s/netctl-gui.git
synced 2025-07-05 10:05:46 +00:00
add FindSettings key
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
*/
|
||||
|
Reference in New Issue
Block a user