diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 00000000..f7b1bb6b --- /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 00000000..66d0b4d9 --- /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 00000000..ebae2213 --- /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 00000000..5c5e4ba6 --- /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 00000000..c6fda853 --- /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 00000000..3e1ba1d9 --- /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 8fd91876..0e809a58 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 75a67fce..7318d780 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 1b38d8c1..97c5c3b5 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,10 @@ def _long_description(): 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 [],