diff --git a/src/daemon/systemd/nemo-devicelock.socket b/src/daemon/systemd/nemo-devicelock.socket
deleted file mode 100644
index 8f1ea31..0000000
--- a/src/daemon/systemd/nemo-devicelock.socket
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Nemo device lock socket
-DefaultDependencies=no
-After=local-fs.target
-Before=shutdown.target
-Conflicts=shutdown.target
-
-[Socket]
-ListenStream=/run/nemo-devicelock/socket
-Accept=false
diff --git a/src/daemon/systemd/org.nemomobile.devicelock.conf b/src/daemon/systemd/org.nemomobile.devicelock.conf
deleted file mode 100644
index a2f6036..0000000
--- a/src/daemon/systemd/org.nemomobile.devicelock.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/nemo-devicelock/host/hostservice.cpp b/src/nemo-devicelock/host/hostservice.cpp
index 96dc826..54c56b6 100644
--- a/src/nemo-devicelock/host/hostservice.cpp
+++ b/src/nemo-devicelock/host/hostservice.cpp
@@ -80,7 +80,7 @@ public slots:
};
HostService::HostService(const QVector objects, QObject *parent)
- : QDBusServer(QStringLiteral("unix:path=/run/nemo-devicelock/socket"), parent)
+ : QDBusServer(HostService::socketAddress(), parent)
, m_objects(objects)
{
setAnonymousAuthenticationAllowed(true);
@@ -175,6 +175,15 @@ void HostService::connectionReady(const QDBusConnection &newConnection)
}
}
+QString HostService::socketAddress()
+{
+ // Check if socket-based activation logic is enabled and at least one fd is provided
+ if (sd_listen_fds(0) > 0)
+ return QStringLiteral("systemd:");
+
+ return QStringLiteral("unix:path=/run/nemo-devicelock/socket");
+}
+
}
#include "hostservice.moc"
diff --git a/src/nemo-devicelock/host/hostservice.h b/src/nemo-devicelock/host/hostservice.h
index 96aba5b..f377625 100644
--- a/src/nemo-devicelock/host/hostservice.h
+++ b/src/nemo-devicelock/host/hostservice.h
@@ -69,6 +69,7 @@ class HostService : public QDBusServer
friend class ConnectionMonitor;
void connectionReady(const QDBusConnection &connection);
+ static QString socketAddress();
const QVector m_objects;
};
diff --git a/systemd/nemo-devicelock.socket b/systemd/nemo-devicelock.socket
index 8f1ea31..5947723 100644
--- a/systemd/nemo-devicelock.socket
+++ b/systemd/nemo-devicelock.socket
@@ -8,3 +8,6 @@ Conflicts=shutdown.target
[Socket]
ListenStream=/run/nemo-devicelock/socket
Accept=false
+SocketUser=root
+SocketGroup=privileged
+SocketMode=0660