Files
weval-l99/pat-monitor.sh
2026-04-13 12:43:21 +02:00

29 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# PAT MONITOR — check GitHub PAT validity + alert
TS=$(date -Iseconds)
PAT="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"
REPORT=/var/www/html/api/pat-status.json
# Check PAT via API
RESP=$(curl -sk -o /dev/null -w '%{http_code}' -H "Authorization: token $PAT" 'https://api.github.com/user' 2>/dev/null)
USER=$(curl -sk -H "Authorization: token $PAT" 'https://api.github.com/user' 2>/dev/null|python3 -c "import sys,json;print(json.load(sys.stdin).get('login','?'))" 2>/dev/null)
SCOPES=$(curl -sI -H "Authorization: token $PAT" 'https://api.github.com/user' 2>/dev/null|grep -i 'x-oauth-scopes'|cut -d: -f2|xargs)
# Days until expiry (estimated April 15)
EXPIRY="2026-04-15"
DAYS=$(( ($(date -d "$EXPIRY" +%s) - $(date +%s)) / 86400 ))
# Test push capability
PUSH_OK="false"
cd /var/www/html && git push --dry-run origin main 2>/dev/null && PUSH_OK="true"
# Gitea backup status
GITEA_OK="false"
cd /var/www/html && git push --dry-run gitea main 2>/dev/null && GITEA_OK="true"
cat > $REPORT << ENDJSON
{"ts":"$TS","pat_valid":$([ "$RESP" = "200" ] && echo true || echo false),"user":"$USER","scopes":"$SCOPES","http_code":"$RESP","days_until_expiry":$DAYS,"expiry_date":"$EXPIRY","push_ok":$PUSH_OK,"gitea_backup":$GITEA_OK,"alert":$([ $DAYS -le 3 ] && echo '"P0: PAT expires in '$DAYS' days"' || echo 'null')}
ENDJSON
echo "$TS PAT: HTTP $RESP | User: $USER | Days: $DAYS | Push: $PUSH_OK | Gitea: $GITEA_OK"