intermediate commit

This commit is contained in:
arcan1s
2014-08-09 07:56:17 +04:00
parent 6a3e3b14b3
commit 6b7d5d3800
23 changed files with 287 additions and 162 deletions

View File

@ -10,3 +10,5 @@ set (TARGETS "")
set (HEADERS "")
add_subdirectory (${SUBPROJECT_SOURCE_DIR})
install (FILES org.netctlgui.helper.conf DESTINATION ${DBUS_SYSTEMCONF_PATH})
install (FILES netctlgui-helper.service DESTINATION ${SYSTEMD_SERVICE_PATH})

View File

@ -0,0 +1,8 @@
[Unit]
Description=netctlgui-helper daemon
[Service]
ExecStart=/usr/bin/netctlgui-helper
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,20 @@
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Only root or user avahi can own the service -->
<policy user="root">
<allow own="org.netctlgui.helper"/>
</policy>
<!-- Allow everything, including access to SetHostName to users of the group "users" -->
<policy group="users">
<allow send_destination="org.netctlgui.helper"/>
<allow receive_sender="org.netctlgui.helper"/>
</policy>
<policy user="root">
<allow send_destination="org.netctlgui.helper"/>
<allow receive_sender="org.netctlgui.helper"/>
</policy>
</busconfig>

View File

@ -20,6 +20,7 @@
#include <QDBusConnection>
#include <QDBusMessage>
#include <QDir>
#include <QDebug>
#include <iostream>
#include <unistd.h>
@ -33,10 +34,10 @@ using namespace std;
bool checkExistSession()
{
QDBusConnection bus = QDBusConnection::sessionBus();
QDBusMessage request = QDBusMessage::createMethodCall(QString(DBUS_HELPER_SERVICE),
QString(DBUS_CONTROL_PATH),
QString(DBUS_HELPER_INTERFACE),
QDBusConnection bus = QDBusConnection::systemBus();
QDBusMessage request = QDBusMessage::createMethodCall(DBUS_HELPER_SERVICE,
DBUS_CONTROL_PATH,
DBUS_HELPER_INTERFACE,
QString("Active"));
QDBusMessage response = bus.call(request);
QList<QVariant> arguments = response.arguments();
@ -46,6 +47,9 @@ bool checkExistSession()
int main(int argc, char *argv[])
{
// setuid(getuid());
// qDebug() << getuid();
// qDebug() << geteuid();
// detach from console
bool isDaemon = true;
for (int i=0; i<argc; i++)

View File

@ -90,9 +90,11 @@ QString infoMessage()
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "DBus configuration"));
infoMessage += QString("\tDBUS_SERVICE=%1\n").arg(QString(DBUS_SERVICE));
infoMessage += QString("\tDBUS_INTERFACE=%1\n").arg(QString(DBUS_INTERFACE));
infoMessage += QString("\tDBUS_OBJECT_PATH=%1\n").arg(QString(DBUS_OBJECT_PATH));
infoMessage += QString("\tDBUS_HELPER_SERVICE=%1\n").arg(QString(DBUS_HELPER_SERVICE));
infoMessage += QString("\tDBUS_HELPER_INTERFACE=%1\n").arg(QString(DBUS_HELPER_INTERFACE));
infoMessage += QString("\tDBUS_CONTROL_PATH=%1\n").arg(QString(DBUS_CONTROL_PATH));
infoMessage += QString("\tDBUS_LIB_PATH=%1\n").arg(QString(DBUS_LIB_PATH));
infoMessage += QString("\tDBUS_OBJECT_PATH=%1\n").arg(QString(DBUS_OBJECT_PATH));
return infoMessage;
}

View File

@ -18,7 +18,9 @@
#include <QCoreApplication>
#include <QDBusConnection>
#include <QDBusError>
#include <QDebug>
#include <unistd.h>
#include <netctlgui/netctlgui.h>
@ -50,9 +52,12 @@ QMap<QString, QString> NetctlHelper::getDefault()
if (debug) qDebug() << "[NetctlHelper]" << "[getDefault]";
QMap<QString, QString> settings;
settings[QString("CLOSE_HELPER")] = QString("false");
settings[QString("CLOSETOTRAY")] = QString("true");
settings[QString("CTRL_DIR")] = QString("/run/wpa_supplicant_netctl-gui");
settings[QString("CTRL_GROUP")] = QString("users");
settings[QString("FORCE_SUDO")] = QString("false");
settings[QString("HELPER_PATH")] = QString("/usr/bin/netctlgui-helper");
settings[QString("IFACE_DIR")] = QString("/sys/class/net/");
settings[QString("LANGUAGE")] = QString("en");
settings[QString("NETCTL_PATH")] = QString("/usr/bin/netctl");
@ -66,6 +71,7 @@ QMap<QString, QString> NetctlHelper::getDefault()
settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu");
settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl");
settings[QString("SYSTRAY")] = QString("true");
settings[QString("USE_HELPER")] = QString("true");
settings[QString("WPACLI_PATH")] = QString("/usr/bin/wpa_cli");
settings[QString("WPASUP_PATH")] = QString("/usr/bin/wpa_supplicant");
settings[QString("WPA_DRIVERS")] = QString("nl80211,wext");
@ -116,17 +122,26 @@ void NetctlHelper::createInterface()
{
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]";
QDBusConnection bus = QDBusConnection::sessionBus();
if (!bus.registerService(QString(DBUS_HELPER_SERVICE)))
QDBusConnection bus = QDBusConnection::systemBus();
if (!bus.registerService(DBUS_HELPER_SERVICE)) {
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]" << ":" << "Could not register service";
if (!bus.registerObject(QString(DBUS_LIB_PATH),
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]" << ":" << bus.lastError().message();
return quitHelper();
}
if (!bus.registerObject(DBUS_LIB_PATH,
new NetctlAdaptor(this, configuration),
QDBusConnection::ExportAllContents))
QDBusConnection::ExportAllContents)) {
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]" << ":" << "Could not register library object";
if (!bus.registerObject(QString(DBUS_CONTROL_PATH),
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]" << ":" << bus.lastError().message();
return quitHelper();
}
if (!bus.registerObject(DBUS_CONTROL_PATH,
new ControlAdaptor(this, configuration),
QDBusConnection::ExportAllContents))
QDBusConnection::ExportAllContents)) {
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]" << ":" << "Could not register control object";
if (debug) qDebug() << "[NetctlHelper]" << "[createInterface]" << ":" << bus.lastError().message();
return quitHelper();
}
}
@ -134,9 +149,9 @@ void NetctlHelper::deleteInterface()
{
if (debug) qDebug() << "[NetctlHelper]" << "[deleteInterface]";
QDBusConnection::sessionBus().unregisterObject(QString(DBUS_LIB_PATH));
QDBusConnection::sessionBus().unregisterObject(QString(DBUS_CONTROL_PATH));
QDBusConnection::sessionBus().unregisterService(QString(DBUS_HELPER_SERVICE));
QDBusConnection::systemBus().unregisterObject(DBUS_LIB_PATH);
QDBusConnection::systemBus().unregisterObject(DBUS_CONTROL_PATH);
QDBusConnection::systemBus().unregisterService(DBUS_HELPER_SERVICE);
}