Add a WoL Manager service

This commit is contained in:
Josh.5
2023-09-06 00:06:18 +12:00
parent c8d613da5b
commit 90510bd8ea
11 changed files with 190 additions and 55 deletions

View File

@@ -1,26 +1,32 @@
# Configure dbus
echo "**** Configure container dbus ****";
if [[ "${HOST_DBUS}" == "true" ]]; then
echo "Container configured to use the host dbus";
# Disable supervisord script
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini
if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then
if [[ "${HOST_DBUS}" == "true" ]]; then
echo "Container configured to use the host dbus";
# Disable supervisord script
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini
else
echo "Container configured to run its own dbus";
# Enable supervisord script
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/dbus.ini
# Configure dbus to run as USER
sed -i "/ <user>/c\ <user>${USER}</user>" /usr/share/dbus-1/system.conf
# Remove old dbus session
rm -rf ${USER_HOME}/.dbus/session-bus/* 2> /dev/null
# Remove old dbus pids
mkdir -p /var/run/dbus
chown -R ${PUID}:${PGID} /var/run/dbus/
chmod -R 770 /var/run/dbus/
# Generate a dbus machine ID
dbus-uuidgen > /var/lib/dbus/machine-id
# Remove old lockfiles
find /var/run/dbus -name "pid" -exec rm -f {} \;
fi
else
echo "Container configured to run its own dbus";
# Enable supervisord script
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/dbus.ini
# Configure dbus to run as USER
sed -i "/ <user>/c\ <user>${USER}</user>" /usr/share/dbus-1/system.conf
# Remove old dbus session
rm -rf ${USER_HOME}/.dbus/session-bus/* 2> /dev/null
# Remove old dbus pids
mkdir -p /var/run/dbus
chown -R ${PUID}:${PGID} /var/run/dbus/
chmod -R 770 /var/run/dbus/
# Generate a dbus machine ID
dbus-uuidgen > /var/lib/dbus/machine-id
# Remove old lockfiles
find /var/run/dbus -name "pid" -exec rm -f {} \;
echo "Dbus service not available when container is run in 'secondary' mode."
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini
fi
echo "DONE"

View File

@@ -1,6 +1,10 @@
echo "**** Configure pulseaudio ****"
# Always enable the pulseaudio service
echo "Enable pulseaudio service."
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/pulseaudio.ini
if [ "${MODE}" == "s" ] | [ "${MODE}" == "secondary" ]; then
echo "Configure pulseaudio as simple dummy audio"
sed -i 's|^; autospawn.*$|autospawn = no|' /etc/pulse/client.conf

View File

@@ -0,0 +1,12 @@
echo "**** Configure Desktop ****"
if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then
echo "Enable Desktop service."
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/desktop.ini
else
echo "Desktop service not available when container is run in 'secondary' mode."
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/desktop.ini
fi
echo "DONE"

View File

@@ -94,6 +94,9 @@ function configure_x_server {
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini
# Enable xvfb supervisord script
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/xvfb.ini
else
echo "Configure container with no X server"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini
fi
# Enable KB/Mouse input capture with Xorg if configured

View File

@@ -25,6 +25,7 @@ if [ "${ENABLE_STEAM:-}" = "true" ]; then
echo "Enable Steam auto-start script"
mkdir -p "${USER_HOME:?}/.config/autostart"
echo "${steam_autostart_desktop:?}" > "${USER_HOME:?}/.config/autostart/Steam.desktop"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/steam.ini
fi
else
echo "Disable Steam service"

View File

@@ -29,7 +29,7 @@ echo "Configure pulseaudio encoded stream port '${PORT_AUDIO_STREAM}'"
if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then
if [ ${WEB_UI_MODE} = "vnc" ]; then
if [ "${WEB_UI_MODE:-}" = "vnc" ]; then
echo "Enable VNC server"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/vnc.ini
@@ -72,9 +72,13 @@ if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then
fi
else
echo "Disable VNC server"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc-audio.ini
fi
else
echo "VNC server not available when container is run in 'secondary' mode"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc-audio.ini
fi
echo "DONE"

View File

@@ -1,34 +0,0 @@
if [ "${MODE}" == "s" ] | [ "${MODE}" == "secondary" ]; then
echo "Configure container as secondary"
# Disable dbus
echo " - Disable dbus"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/dbus.ini
# Disable desktop
echo " - Disable desktop"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/desktop.ini
# Disable vnc
echo " - Disable vnc"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini
# Disable vnc
echo " - Disable vnc"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc.ini
# Disable vnc-audio
echo " - Disable vnc audio stream"
echo " - Disable vnc audio websock"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/vnc-audio.ini
# Disable xorg
echo " - Disable xorg"
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/xorg.ini
# Enable pulseaudio
echo " - Enable pulseaudio"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/pulseaudio.ini
# Enable steam
echo " - Enable steam"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/steam.ini
# Enable udev
echo " - Enable udev"
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/udev.ini
fi
echo "DONE"

View File

@@ -0,0 +1,34 @@
#!/usr/bin/env bash
###
# File: 10-setup_user.sh
# Project: cont-init.d
# File Created: Tuesday, 5th September 2023 6:15:12 pm
# Author: Josh.5 (jsunnex@gmail.com)
# -----
# Last Modified: Tuesday, 5th September 2023 6:39:32 pm
# Modified By: Josh.5 (jsunnex@gmail.com)
###
echo "**** Configure WoL Manager ****"
if ([ "${MODE}" != "s" ] && [ "${MODE}" != "secondary" ]); then
if [ "${ENABLE_WOL_POWER_MANAGER:-}" = "true" ]; then
if [ -f "/tmp/.wol-monitor" ]; then
echo "Container started in WoL Manager mode. Disabling all other services."
for init_config in /etc/supervisor.d/*.ini ; do
init_config_basename=$(basename "${init_config:?}")
init_name="${init_config_basename%.*}"
[ "${init_name:?}" = "wol-power-manager" ] && continue
echo " - Disable ${init_name:?}"
sed -i 's|^autostart.*=.*$|autostart=false|' "${init_config:?}"
done
fi
echo "Enable WoL Manager service."
sed -i 's|^autostart.*=.*$|autostart=true|' /etc/supervisor.d/wol-power-manager.ini
else
echo "Disable WoL Manager service."
sed -i 's|^autostart.*=.*$|autostart=false|' /etc/supervisor.d/wol-power-manager.ini
fi
else
echo "WoL Manager service not available when container is run in 'secondary' mode."
fi

View File

@@ -0,0 +1,15 @@
[program:wol-power-manager]
priority=60
autostart=false
autorestart=true
user=root
command=/usr/bin/steam-headless-wol-power-manager
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s"
stopsignal=INT
stdout_logfile=/home/%(ENV_USER)s/.cache/log/wol-power-manager.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=7
stderr_logfile=/home/%(ENV_USER)s/.cache/log/wol-power-manager.err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=7