aboutsummaryrefslogtreecommitdiff
path: root/update_gotify.sh
blob: 069550704f80d180c223377c5bd35a013dbd60d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash
set -euo pipefail

ENV_FILE="$1"

if [ ! -f "$ENV_FILE" ]; then
	echo "Error: Environment file not found: $ENV_FILE"
	exit 1
fi

echo "Current Gotify configuration:"
grep -E "^GOTIFY_(URL|TOKEN)=" "$ENV_FILE" || echo "No Gotify configuration found"
echo

read -rp "Enter new Gotify URL (no trailing slash, e.g. https://gotify.example.com): " GOTIFY_URL
if [ -n "$GOTIFY_URL" ]; then
	# Validate URL format
	if [[ ! "$GOTIFY_URL" =~ ^https?:// ]]; then
		echo "Error: Invalid URL format (must start with http:// or https://)"
		exit 1
	fi

	# Test URL reachability
	echo "Testing Gotify server connectivity..."
	if ! curl -s --connect-timeout 10 "$GOTIFY_URL/health" >/dev/null 2>&1; then
		echo "Warning: Cannot reach Gotify server at $GOTIFY_URL"
		echo "This might be due to network issues or incorrect URL."
		read -rp "Continue anyway? [y/N]: " continue_anyway
		if [[ ! "$continue_anyway" =~ ^[Yy]$ ]]; then
			echo "Aborted."
			exit 1
		fi
	else
		echo "✓ Gotify server is reachable"
	fi

	read -rp "Enter new Gotify token: " GOTIFY_TOKEN

	# Test token if both URL and token are provided
	if [ -n "$GOTIFY_TOKEN" ]; then
		echo "Testing Gotify token..."
		if curl -sS "$GOTIFY_URL/message?token=$GOTIFY_TOKEN" \
			-F "title=DRestic Config Test ($(whoami)@$(hostname))" \
			-F "message=Testing Gotify configuration from $(whoami)@$(hostname) - you can ignore this message" \
			-F "priority=1" >/dev/null 2>&1; then
			echo "✓ Test notification sent successfully!"
		else
			echo "Warning: Failed to send test notification. Please verify your token."
			read -rp "Continue anyway? [y/N]: " continue_anyway
			if [[ ! "$continue_anyway" =~ ^[Yy]$ ]]; then
				echo "Aborted."
				exit 1
			fi
		fi
	fi
else
	GOTIFY_TOKEN=""
fi

# Update or add Gotify settings
sed -i '/^GOTIFY_URL=/d' "$ENV_FILE"
sed -i '/^GOTIFY_TOKEN=/d' "$ENV_FILE"
echo "GOTIFY_URL=\"$GOTIFY_URL\"" >>"$ENV_FILE"
echo "GOTIFY_TOKEN=\"$GOTIFY_TOKEN\"" >>"$ENV_FILE"

echo "✓ Gotify configuration updated!"
if [ -n "$GOTIFY_URL" ]; then
	echo "Test with: make test-remote-gotify"
else
	echo "Gotify notifications disabled"
fi