29 lines
1.4 KiB
Bash
Executable File
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"
|