diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-11-23 15:44:24 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-11-24 17:44:58 +0100 |
commit | 7998a472352c0272a90c66ab45c4c2758cd6040a (patch) | |
tree | de3fb484fa2bca0850354f611551b049083d1420 /conf/system | |
parent | 633ebe33015554a14b773053188e2faba0faff04 (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.txt | 42 | ||||
-rw-r--r-- | conf/system/afm-system-daemon.conf | 27 | ||||
-rw-r--r-- | conf/system/afm-system-daemon.service.in | 15 | ||||
-rw-r--r-- | conf/system/afm-system-daemon.socket.in | 11 | ||||
-rw-r--r-- | conf/system/afm-user-session@.service | 15 | ||||
-rw-r--r-- | conf/system/afm-user-session@.target | 3 | ||||
-rw-r--r-- | conf/system/afm-user-setup@.path | 7 | ||||
-rw-r--r-- | conf/system/afm-user-setup@.service | 14 |
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 + + |