diff --git a/Client/controllers/clientController.js b/Client/controllers/clientController.js index c6b2071..5a86348 100644 --- a/Client/controllers/clientController.js +++ b/Client/controllers/clientController.js @@ -185,3 +185,10 @@ exports.removePreset = async (req, res) => { }); } +/** + * Runs the updater service + */ +exports.updateClient = async (req, res) => { + await executeAsyncConsoleCommand("systemctl start RadioNodeUpdater.service"); + return res.sendStatus(200); +} diff --git a/Client/restartSdrScanner.sh b/Client/restartSdrScanner.sh new file mode 100644 index 0000000..07df626 --- /dev/null +++ b/Client/restartSdrScanner.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# This script should be another service on the machine to watch the main script for failures and restart it if there are any + +( tail -f -n0 /opt/sdr-scanner/scanner_log & ) | grep -q ": cb transfer status: 1, canceling..." +systemctl restart radioNode.service +echo "Restarted SDR Scanner service" \ No newline at end of file diff --git a/Client/routes/client.js b/Client/routes/client.js index a1f757b..8e2e8a6 100644 --- a/Client/routes/client.js +++ b/Client/routes/client.js @@ -2,7 +2,7 @@ const express = require('express'); const router = express.Router(); // Controllers -const {requestCheckIn, getPresets, updatePreset, addNewPreset, removePreset} = require("../controllers/clientController"); +const { requestCheckIn, getPresets, updatePreset, addNewPreset, removePreset, updateClient } = require("../controllers/clientController"); /** GET Request a check in from the client * Queue the client to check in with the server @@ -45,4 +45,10 @@ router.post('/addPreset', addNewPreset); router.post('/removePreset', removePreset); +/** POST Update the bot + * + * @param req The request sent from the master + */ +router.post('/updateClient', updateClient); + module.exports = router; diff --git a/Client/setup.sh b/Client/setup.sh index fede9a7..4ec0ba5 100644 --- a/Client/setup.sh +++ b/Client/setup.sh @@ -5,6 +5,16 @@ if [ "$EUID" -ne 0 ] then echo "Please run as root" exit fi +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +ls -ld $SCRIPT_DIR | awk '{print $3}' >> ./config/installerName + +# Setup user for service +useradd -M RadioNode +usermod -s -L RadioNode + +# Change the ownership of the directory to the service user +chown RadioNode -R $SCRIPT_DIR # Check for updates apt-get update @@ -26,4 +36,41 @@ pulseaudio npm i # Install the python packages needed for the bot -pip install -r \ No newline at end of file +pip install -r + +# Setup bot service +echo "[Unit] +Description=Radio Node Service +After=network.target + +[Service] +WorkingDirectory= +ExecStart=/usr/bin/node . +Restart=always +RestartDelay=10 +User=RadioNode +Environment=DEBUG='server:*' + +[Install] +WantedBy=multi-user.target" >> /etc/systemd/system/RadioNode.service + +# Setup bot update service +echo "[Unit] +Description=Radio Node Updater Service +After=network.target + +[Service] +WorkingDirectory= +ExecStart=/usr/bin/node . +Restart=on-failure +User=RadioNode +Environment=DEBUG='server:*' + +[Install] +WantedBy=multi-user.target" >> /etc/systemd/system/RadioNodeUpdater.service + +# Enable the service +systemctl enable RadioNode.service + +# Start the service +systemctl start RadioNode.service \ No newline at end of file diff --git a/Client/update.sh b/Client/update.sh index 2dc42e7..7d91a0d 100644 --- a/Client/update.sh +++ b/Client/update.sh @@ -1,15 +1,32 @@ #!/bin/bash + +# Check if the user is root +if [ "$EUID" -ne 0 ] + then echo "Please run as root" + exit +fi + +# Sleeping to give the client time to respond to the requester +sleep 5 + # Stating Message echo "" # TODO - Add an updater for Stable Diffusion API +# Stop any running service +systemctl stop RadioNode + # Update the git Repo -git fetch -a -p -git pull +installUser=$(cat ./config/installerName) +sudo su -l $installUser -c 'git fetch -a -p' +sudo su -l $installUser -c 'git pull' # Install any new libraries npm i +# Start the service +systemctl start RadioNode + # Update complete message echo "" \ No newline at end of file