aboutsummaryrefslogtreecommitdiffstats
path: root/modules/scripts/warp-start.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/scripts/warp-start.sh')
-rw-r--r--modules/scripts/warp-start.sh34
1 files changed, 29 insertions, 5 deletions
diff --git a/modules/scripts/warp-start.sh b/modules/scripts/warp-start.sh
index 28b9457..49f807d 100644
--- a/modules/scripts/warp-start.sh
+++ b/modules/scripts/warp-start.sh
@@ -1,18 +1,31 @@
set -euo pipefail
-# Optional: where to log the daemon
LOGFILE="/var/log/warp-svc.log"
+DAEMON_TIMEOUT=30 # seconds
start_daemon() {
if ! pgrep -x warp-svc >/dev/null 2>&1; then
echo "Starting warp-svc daemon..."
sudo nohup warp-svc >>"$LOGFILE" 2>&1 &
- sleep 2
else
echo "warp-svc already running."
fi
}
+wait_for_daemon() {
+ echo "Waiting for warp-svc to become ready..."
+ for ((i=1; i<=DAEMON_TIMEOUT; i++)); do
+ if warp-cli status >/dev/null 2>&1; then
+ echo "warp-svc is ready."
+ return 0
+ fi
+ sleep 1
+ done
+
+ echo "ERROR: warp-svc did not become ready within ${DAEMON_TIMEOUT}s" >&2
+ exit 1
+}
+
is_registered() {
if warp-cli status 2>&1 | grep -qi "Registration missing"; then
return 1
@@ -22,16 +35,26 @@ is_registered() {
register_client() {
echo "Registering client..."
- warp-cli registration new
+ sudo warp-cli registration new
}
connect_client() {
echo "Connecting to WARP..."
- warp-cli connect
+ sudo warp-cli connect
}
main() {
+ [[ "${EUID:-$(id -u)}" -eq 0 ]] || {
+ if [[ -t 2 ]]; then
+ echo -e "\e[31mERROR:\e[0m Must be run as root" >&2
+ else
+ echo "ERROR: Must be run as root" >&2
+ fi
+ exit 1
+ }
+
start_daemon
+ wait_for_daemon
if ! is_registered; then
register_client
@@ -45,4 +68,5 @@ main() {
warp-cli status
}
-main "$@"
+main
+