#!/usr/bin/env bash
# Deploys the signaling daemon + coturn config to the box.
# Usage: deploy/deploy-server.sh [host] (default root@78.47.93.79)
# The shared secret is created once on the box and reused on redeploys.
set -euo pipefail
cd "$(dirname "$0")/.."
HOST="${1:-root@78.47.93.79}"
echo "== building linux/amd64 binary"
(cd server && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o ../deploy/.out/sueta-signal .)
echo "== ensuring shared secret on $HOST"
SECRET=$(ssh "$HOST" 'f=/etc/sueta-signal.secret; [ -f $f ] || (umask 077; openssl rand -hex 32 > $f); cat $f')
echo "== rendering configs"
sed "s/__STATIC_AUTH_SECRET__/$SECRET/" deploy/turnserver.conf > deploy/.out/turnserver.conf
sed "s/__STATIC_AUTH_SECRET__/$SECRET/" deploy/sueta-signal.env.example > deploy/.out/sueta-signal.env
echo "== uploading"
scp -q deploy/.out/sueta-signal "$HOST:/usr/local/bin/sueta-signal.new"
scp -q deploy/.out/turnserver.conf "$HOST:/etc/turnserver.conf"
scp -q deploy/.out/sueta-signal.env "$HOST:/etc/sueta-signal.env"
scp -q deploy/sueta-signal.service "$HOST:/etc/systemd/system/sueta-signal.service"
rm -f deploy/.out/turnserver.conf deploy/.out/sueta-signal.env
echo "== activating"
ssh "$HOST" '
set -e
chmod 600 /etc/sueta-signal.env /etc/sueta-signal.secret
mv /usr/local/bin/sueta-signal.new /usr/local/bin/sueta-signal
chmod 755 /usr/local/bin/sueta-signal
systemctl daemon-reload
systemctl enable --now sueta-signal
systemctl restart sueta-signal coturn
sleep 1
systemctl --no-pager --quiet is-active sueta-signal coturn && echo "both services active"
'
echo "== done"