aboutsummaryrefslogtreecommitdiffstats
path: root/conf/system
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-11-23 15:44:24 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2017-11-24 17:44:58 +0100
commit7998a472352c0272a90c66ab45c4c2758cd6040a (patch)
treede3fb484fa2bca0850354f611551b049083d1420 /conf/system
parent633ebe33015554a14b773053188e2faba0faff04 (diff)
Rework on systemd start of user sessions
Change-Id: Iad46596435eebdc5c521b572fd8320b52a61d197 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'conf/system')
-rw-r--r--conf/system/CMakeLists.txt42
-rw-r--r--conf/system/afm-system-daemon.conf27
-rw-r--r--conf/system/afm-system-daemon.service.in15
-rw-r--r--conf/system/afm-system-daemon.socket.in11
-rw-r--r--conf/system/afm-user-session@.service15
-rw-r--r--conf/system/afm-user-session@.target3
-rw-r--r--conf/system/afm-user-setup@.path7
-rw-r--r--conf/system/afm-user-setup@.service14
8 files changed, 134 insertions, 0 deletions
diff --git a/conf/system/CMakeLists.txt b/conf/system/CMakeLists.txt
new file mode 100644
index 0000000..f0e4c6a
--- /dev/null
+++ b/conf/system/CMakeLists.txt
@@ -0,0 +1,42 @@
+###########################################################################
+# Copyright 2015, 2016, 2017 IoT.bzh
+#
+# author: José Bollo <jose.bollo@iot.bzh>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###########################################################################
+
+cmake_minimum_required(VERSION 2.8)
+
+configure_file(afm-system-daemon.service.in afm-system-daemon.service)
+configure_file(afm-system-daemon.socket.in afm-system-daemon.socket)
+
+if(NOT USE_SDK)
+ set(SYSCONFDIR_DBUS_SYSTEM ${CMAKE_INSTALL_SYSCONFDIR}/dbus-1/system.d CACHE STRING "Path to dbus system configuration files")
+ set(UNITDIR_SYSTEM ${CMAKE_INSTALL_LIBDIR}/systemd/system CACHE STRING "Path to systemd system unit files")
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/afm-system-daemon.conf DESTINATION ${SYSCONFDIR_DBUS_SYSTEM})
+ install(
+ FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/afm-system-daemon.service
+ ${CMAKE_CURRENT_BINARY_DIR}/afm-system-daemon.socket
+ ${CMAKE_CURRENT_SOURCE_DIR}/afm-system-daemon.conf
+ ${CMAKE_CURRENT_SOURCE_DIR}/afm-user-session@.service
+ ${CMAKE_CURRENT_SOURCE_DIR}/afm-user-session@.target
+ ${CMAKE_CURRENT_SOURCE_DIR}/afm-user-setup@.path
+ ${CMAKE_CURRENT_SOURCE_DIR}/afm-user-setup@.service
+ DESTINATION
+ ${UNITDIR_SYSTEM}
+ )
+endif()
+
diff --git a/conf/system/afm-system-daemon.conf b/conf/system/afm-system-daemon.conf
new file mode 100644
index 0000000..18d45fb
--- /dev/null
+++ b/conf/system/afm-system-daemon.conf
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<!--
+ This file is part of afm-main
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<busconfig>
+ <policy user="afm">
+ <allow send_destination="org.freedesktop.systemd1"/>
+ <allow receive_sender="org.freedesktop.systemd1"/>
+ </policy>
+</busconfig>
+
diff --git a/conf/system/afm-system-daemon.service.in b/conf/system/afm-system-daemon.service.in
new file mode 100644
index 0000000..ca4ca1d
--- /dev/null
+++ b/conf/system/afm-system-daemon.service.in
@@ -0,0 +1,15 @@
+[Unit]
+Description=Application Framework Master, system side
+
+[Service]
+#User=afm
+#Group=afm
+SyslogIdentifier=afm-system-daemon
+ExecStart=/usr/bin/afb-daemon --name=afm-system-daemon --no-httpd --no-ldpaths --binding=@CMAKE_INSTALL_FULL_LIBEXECDIR@/afm/afm-binding.so --ws-server=sd:afm-main
+Restart=on-failure
+RestartSec=5
+CapabilityBoundingSet=CAP_DAC_OVERRIDE CAP_MAC_OVERRIDE
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/conf/system/afm-system-daemon.socket.in b/conf/system/afm-system-daemon.socket.in
new file mode 100644
index 0000000..eeae06f
--- /dev/null
+++ b/conf/system/afm-system-daemon.socket.in
@@ -0,0 +1,11 @@
+
+[Socket]
+SmackLabel=*
+ListenStream=/run/afm/apis/ws/afm-main
+FileDescriptorName=afm-main
+
+Service=afm-system-daemon.service
+
+[Install]
+WantedBy=sockets.target
+
diff --git a/conf/system/afm-user-session@.service b/conf/system/afm-user-session@.service
new file mode 100644
index 0000000..53563f5
--- /dev/null
+++ b/conf/system/afm-user-session@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Starts the session of afm user %i
+After=systemd-user-sessions.service
+Wants=afm-user-setup@%i.service
+Before=afm-user-setup@%i.service
+Wants=afm-user-session@%i.target
+Before=afm-user-session@%i.target
+[Service]
+PAMName=agl-user-session
+User=%i
+Type=simple
+ExecStartPre=/bin/echo START afm-user-session@%i
+ExecStart=/bin/sleep 2147483648
+ExecStop=/bin/echo STOP afm-user-session@%i
+RemainAfterExit=yes
diff --git a/conf/system/afm-user-session@.target b/conf/system/afm-user-session@.target
new file mode 100644
index 0000000..1e39ce0
--- /dev/null
+++ b/conf/system/afm-user-session@.target
@@ -0,0 +1,3 @@
+[Unit]
+After=afm-user-session@%i.service
+After=afm-user-setup@%i.service
diff --git a/conf/system/afm-user-setup@.path b/conf/system/afm-user-setup@.path
new file mode 100644
index 0000000..2dd0f75
--- /dev/null
+++ b/conf/system/afm-user-setup@.path
@@ -0,0 +1,7 @@
+[Unit]
+DefaultDependencies=false
+[Path]
+PathExists=/run/user/%i/wayland-0
+PathExists=/run/user/%i/afm-user-started
+
+
diff --git a/conf/system/afm-user-setup@.service b/conf/system/afm-user-setup@.service
new file mode 100644
index 0000000..124a4ca
--- /dev/null
+++ b/conf/system/afm-user-setup@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Starts the session of afm user %i
+Requires=afm-user-setup@%i.path
+After=afm-user-setup@%i.path
+After=afm-user-session@%i.service
+Before=afm-user-session@%i.target
+After=user@%i.service
+[Service]
+User=%i
+ExecStartPre=/bin/echo USER SETUP %i
+ExecStartPre=/bin/systemctl status
+ExecStart=/bin/rm /run/user/%i/afm-user-started
+
+