From 0d683a160fa19ec8f19939f999657739b72afb8e Mon Sep 17 00:00:00 2001 From: Vasily Evseenko Date: Thu, 3 Oct 2024 00:21:38 +0300 Subject: [PATCH] Add systemd scripts for cluster mode --- debian/postinst | 2 ++ debian/postrm | 5 +++++ debian/prerm | 6 ++++++ scripts/wfb-cluster-manager@.service | 17 +++++++++++++++++ scripts/wfb-cluster-node.service | 16 ++++++++++++++++ scripts/wfb-cluster.service | 17 +++++++++++++++++ scripts/wifibroadcast.service | 3 ++- scripts/wifibroadcast@.service | 7 ++++--- setup.py | 5 ++++- 9 files changed, 73 insertions(+), 5 deletions(-) create mode 100755 debian/postinst create mode 100755 debian/postrm create mode 100755 debian/prerm create mode 100644 scripts/wfb-cluster-manager@.service create mode 100644 scripts/wfb-cluster-node.service create mode 100644 scripts/wfb-cluster.service diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 0000000..f7b1bb6 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,2 @@ +#!/bin/bash +systemctl daemon-reload diff --git a/debian/postrm b/debian/postrm new file mode 100755 index 0000000..66d0b4d --- /dev/null +++ b/debian/postrm @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "remove" ] +then + systemctl daemon-reload +fi diff --git a/debian/prerm b/debian/prerm new file mode 100755 index 0000000..ebae221 --- /dev/null +++ b/debian/prerm @@ -0,0 +1,6 @@ +#!/bin/bash +if [ "$1" == "remove" ] +then + systemctl stop wifibroadcast + systemctl stop wfb-cluster +fi diff --git a/scripts/wfb-cluster-manager@.service b/scripts/wfb-cluster-manager@.service new file mode 100644 index 0000000..5c5e4ba --- /dev/null +++ b/scripts/wfb-cluster-manager@.service @@ -0,0 +1,17 @@ +[Unit] +Description=WFB-ng cluster manager, profile %i +Requires=wfb-cluster.service +ReloadPropagatedFrom=wfb-cluster.service + +[Service] +Type=simple +ExecStart=/bin/bash -c "exec /usr/bin/wfb-server --profiles $(echo %i | tr : ' ') --cluster manual" +TimeoutStopSec=5s +KillMode=mixed +Restart=on-failure +RestartSec=5s +# Set logging to file in wifibroadcast.cfg +StandardError=inherit + +[Install] +WantedBy=wfb-cluster.service diff --git a/scripts/wfb-cluster-node.service b/scripts/wfb-cluster-node.service new file mode 100644 index 0000000..c6fda85 --- /dev/null +++ b/scripts/wfb-cluster-node.service @@ -0,0 +1,16 @@ +[Unit] +Description=WFB-ng cluster node +Requires=wfb-cluster.service +ReloadPropagatedFrom=wfb-cluster.service + +[Service] +Type=simple +ExecStart=/usr/sbin/wfb-ng.sh +TimeoutStopSec=5s +Restart=on-failure +KillMode=mixed +RestartSec=5s +StandardError=inherit + +[Install] +WantedBy=wfb-cluster.service diff --git a/scripts/wfb-cluster.service b/scripts/wfb-cluster.service new file mode 100644 index 0000000..3e1ba1d --- /dev/null +++ b/scripts/wfb-cluster.service @@ -0,0 +1,17 @@ +# This is a mostly empty service, but allows commands like stop, start, reload +# to propagate to all wfb-cluster services instances. + +[Unit] +Description=WFB-ng cluster +After=network.target +Conflicts=wifibroadcast.service + + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/bin/true +ExecReload=/bin/true + +[Install] +WantedBy=multi-user.target diff --git a/scripts/wifibroadcast.service b/scripts/wifibroadcast.service index 8fd9187..0e809a5 100644 --- a/scripts/wifibroadcast.service +++ b/scripts/wifibroadcast.service @@ -2,8 +2,9 @@ # to propagate to all wifibroadcast@ service instances. [Unit] -Description=Wifibroadcast server +Description=WFB-ng standalone server After=network.target +Conflicts=wfb-cluster.service #After=network.target sys-subsystem-net-devices-wlx00c0caa578a9.device #Requires=sys-subsystem-net-devices-wlx00c0caa578a9.device diff --git a/scripts/wifibroadcast@.service b/scripts/wifibroadcast@.service index 75a67fc..7318d78 100644 --- a/scripts/wifibroadcast@.service +++ b/scripts/wifibroadcast@.service @@ -1,6 +1,6 @@ [Unit] -Description=WFB profile %i -PartOf=wifibroadcast.service +Description=WFB-ng standalone server, profile %i +Requires=wifibroadcast.service ReloadPropagatedFrom=wifibroadcast.service [Service] @@ -10,10 +10,11 @@ EnvironmentFile=/etc/default/wifibroadcast # per-profile environment EnvironmentFile=-/etc/default/wifibroadcast.%i ExecStart=/bin/bash -c "exec /usr/bin/wfb-server --profiles $(echo %i | tr : ' ') --wlans ${WFB_NICS}" +KillMode=mixed TimeoutStopSec=5s Restart=on-failure RestartSec=5s -# Set logging to file in wifibroadcast.cfg +# Set logging to file in /etc/wifibroadcast.cfg StandardError=inherit [Install] diff --git a/setup.py b/setup.py index 1b38d8c..97c5c3b 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,10 @@ setup( package_data={'wfb_ng.conf': ['master.cfg', 'site.cfg']}, data_files = [('/usr/bin', ['wfb_tx', 'wfb_rx', 'wfb_keygen', 'wfb_tx_cmd', 'scripts/wfb-cli-x11']), ('/lib/systemd/system', ['scripts/wifibroadcast.service', - 'scripts/wifibroadcast@.service']), + 'scripts/wifibroadcast@.service', + 'scripts/wfb-cluster.service', + 'scripts/wfb-cluster-node.service', + 'scripts/wfb-cluster-manager@.service']), ('/etc/default', ['scripts/default/wifibroadcast']), ('/etc/sysctl.d', ['scripts/98-wifibroadcast.conf']), ('/etc/logrotate.d', ['scripts/wifibroadcast'])] if install_data_files else [],