summaryrefslogtreecommitdiff
path: root/update_gotify.sh
blob: 53057520c4018d2ed56259510f5c45a0b23bccfa (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