From 3e0ae6d4cc4a51c38b291910fd39154f5f2844fa Mon Sep 17 00:00:00 2001 From: arcan1s Date: Tue, 12 Aug 2014 00:23:11 +0400 Subject: [PATCH] moved helper daemonization add abillity to own users org.netctlgui.helper service --- sources/gui/src/mainprivateslots.cpp | 14 -------------- sources/gui/src/mainpublicslots.cpp | 8 ++------ sources/gui/src/mainwindow.cpp | 14 ++++++++++++++ sources/gui/src/mainwindow.h | 2 +- sources/helper/org.netctlgui.helper.conf | 8 ++------ sources/helper/src/main.cpp | 7 ++----- sources/helper/src/netctlhelper.cpp | 2 ++ sources/plasmoid/netctl.cpp | 3 +-- 8 files changed, 24 insertions(+), 34 deletions(-) diff --git a/sources/gui/src/mainprivateslots.cpp b/sources/gui/src/mainprivateslots.cpp index 8b225e9..3403c40 100644 --- a/sources/gui/src/mainprivateslots.cpp +++ b/sources/gui/src/mainprivateslots.cpp @@ -41,20 +41,6 @@ #include "wirelesswidget.h" -void MainWindow::checkHelperStatus() -{ - if (debug) qDebug() << "[MainWindow]" << "[checkHelperStatus]"; - - if (useHelper) useHelper = isHelperActive(); - if (useHelper) - sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, - DBUS_HELPER_INTERFACE, QString("Update"), - QList(), true, debug); - if (isHelperServiceActive()) - configuration[QString("CLOSE_HELPER")] = QString("false"); -} - - void MainWindow::reportABug() { if (debug) qDebug() << "[MainWindow]" << "[reportABug]"; diff --git a/sources/gui/src/mainpublicslots.cpp b/sources/gui/src/mainpublicslots.cpp index 087bb52..f84e446 100644 --- a/sources/gui/src/mainpublicslots.cpp +++ b/sources/gui/src/mainpublicslots.cpp @@ -20,7 +20,6 @@ #include #include -#include #include #include @@ -306,6 +305,7 @@ void MainWindow::updateConfiguration(const QMap args) if (args[QString("default")].toBool()) settingsWin->setDefault(); configuration = settingsWin->getSettings(); + delete settingsWin; QMap optionsDict = parseOptions(args[QString("options")].toString()); for (int i=0; i args) useHelper = false; configuration[QString("USE_HELPER")] = QString("false"); } - // some helper fixs - // because interface will be created with a delay - QTimer::singleShot(1000, this, SLOT(checkHelperStatus())); // update translation qApp->removeTranslator(translator); @@ -326,10 +323,9 @@ void MainWindow::updateConfiguration(const QMap args) args[QString("options")].toString()); translator->load(QString(":/translations/") + language); qApp->installTranslator(translator); - // update settingsWin - delete settingsWin; createObjects(); + checkHelperStatus(); createActions(); // tray diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index f8f374f..3400ef9 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -283,6 +283,20 @@ bool MainWindow::checkExternalApps(const QString apps = QString("all")) } +bool MainWindow::checkHelperStatus() +{ + if (debug) qDebug() << "[MainWindow]" << "[checkHelperStatus]"; + + if (useHelper) useHelper = isHelperActive(); + if (useHelper) + sendDBusRequest(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH, + DBUS_HELPER_INTERFACE, QString("Update"), + QList(), true, debug); + if (isHelperServiceActive()) + configuration[QString("CLOSE_HELPER")] = QString("false"); +} + + QString MainWindow::checkStatus(const bool statusBool, const bool nullFalse) { if (debug) qDebug() << "[MainWindow]" << "[checkStatus]"; diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index b41ab48..4953ce1 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -95,7 +95,6 @@ public slots: void setHiddenName(const QString name); private slots: - void checkHelperStatus(); void reportABug(); // menu update slots void setMenuActionsShown(const bool state = true); @@ -151,6 +150,7 @@ private: NetctlProfile *netctlProfile = nullptr; WpaSup *wpaCommand = nullptr; bool checkExternalApps(const QString apps); + bool checkHelperStatus(); QString checkStatus(const bool statusBool, const bool nullFalse = false); void createActions(); void createDBusSession(); diff --git a/sources/helper/org.netctlgui.helper.conf b/sources/helper/org.netctlgui.helper.conf index 1abbaa9..0948271 100644 --- a/sources/helper/org.netctlgui.helper.conf +++ b/sources/helper/org.netctlgui.helper.conf @@ -2,18 +2,14 @@ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> - - - - - - + + diff --git a/sources/helper/src/main.cpp b/sources/helper/src/main.cpp index 58000fe..a118a60 100644 --- a/sources/helper/src/main.cpp +++ b/sources/helper/src/main.cpp @@ -79,17 +79,14 @@ int main(int argc, char *argv[]) (args[QString("version")].toBool()) || (args[QString("error")].toBool())) args[QString("nodaemon")] = true; - // heck euid + // check euid if (geteuid() != 0) { - cout << QCoreApplication::translate("NetctlHelper", "The helper is running with EUID %1. Some functions will not be available.") + cout << QCoreApplication::translate("NetctlHelper", "The helper is running with EUID %1. Functions will not be available.") .arg(QString::number(geteuid())).toUtf8().data() << endl; cout << QCoreApplication::translate("NetctlHelper", "See security notes for more details.") .toUtf8().data() << endl; } - // detach from console - if (!args[QString("nodaemon")].toBool()) - daemon(0, 0); #if QT_VERSION >= 0x050000 QCoreApplication::setSetuidAllowed(true); #endif diff --git a/sources/helper/src/netctlhelper.cpp b/sources/helper/src/netctlhelper.cpp index 0e20d24..70e844d 100644 --- a/sources/helper/src/netctlhelper.cpp +++ b/sources/helper/src/netctlhelper.cpp @@ -36,6 +36,8 @@ NetctlHelper::NetctlHelper(QObject *parent, QMap args) debug(args[QString("debug")].toBool()) { updateConfiguration(); + if (!args[QString("nodaemon")].toBool()) + daemon(0, 0); } diff --git a/sources/plasmoid/netctl.cpp b/sources/plasmoid/netctl.cpp index 9025d7e..76014b1 100644 --- a/sources/plasmoid/netctl.cpp +++ b/sources/plasmoid/netctl.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include "netctl.h" #include "ui_about.h" @@ -930,7 +929,7 @@ void Netctl::configChanged() formatLine[1] = QString("

"); if (useHelper) startHelper(); - QTimer::singleShot(1000, this, SLOT(checkHelperStatus())); + checkHelperStatus(); connectToEngine(); setAssociatedApplication(paths[QString("gui")]); }