Files
2026-06-09 10:41:13 +00:00

59 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Maak SysOps Gitea-gebruiker aan (login: sysops) en geef write op backup-repo.
set -euo pipefail
GITEA_URL="${GITEA_URL:-http://127.0.0.1:3001}"
ADMIN_USER="${GITEA_ADMIN_USER:-aissa}"
ADMIN_PASS="${GITEA_ADMIN_PASS:-Foodlinkk#2026}"
SYSOPS_USER="${GITEA_SYSOPS_USER:-sysops}"
SYSOPS_PASS="${GITEA_SYSOPS_PASS:-Foodlinkk#SysOps2026}"
SYSOPS_EMAIL="${GITEA_SYSOPS_EMAIL:-sysops@foodlinkk.local}"
REPO_OWNER="${GITEA_REPO_OWNER:-aissa}"
REPO_NAME="${GITEA_REPO_NAME:-foodlinkk-command-center}"
CONTAINER="${GITEA_CONTAINER:-foodlinkk_gitea}"
echo "=== Gitea SysOps setup ($SYSOPS_USER) ==="
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER}$"; then
if ! docker exec "$CONTAINER" gitea admin user list 2>/dev/null | grep -q "^${SYSOPS_USER} "; then
echo "Creating user $SYSOPS_USER..."
docker exec "$CONTAINER" gitea admin user create \
--username "$SYSOPS_USER" \
--password "$SYSOPS_PASS" \
--email "$SYSOPS_EMAIL" \
--must-change-password=false 2>/dev/null || true
else
echo "User $SYSOPS_USER exists — updating password..."
docker exec "$CONTAINER" gitea admin user change-password \
--username "$SYSOPS_USER" \
--password "$SYSOPS_PASS" 2>/dev/null || true
fi
else
echo "Gitea container not running — skip user create (will retry on deploy)"
fi
enc_pass() {
python3 -c "import urllib.parse; print(urllib.parse.quote('''$1''', safe=''))"
}
SYSOPS_PASS_ENC=$(enc_pass "$SYSOPS_PASS")
AUTH=$(printf '%s:%s' "$ADMIN_USER" "$ADMIN_PASS" | base64 -w0 2>/dev/null || printf '%s:%s' "$ADMIN_USER" "$ADMIN_PASS" | base64)
HTTP_CODE=$(curl -sf -o /dev/null -w "%{http_code}" \
-X PUT "${GITEA_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/collaborators/${SYSOPS_USER}" \
-H "Authorization: Basic ${AUTH}" \
-H "Content-Type: application/json" \
-d '{"permission":"write"}' 2>/dev/null || echo "000")
if [ "$HTTP_CODE" = "204" ] || [ "$HTTP_CODE" = "201" ]; then
echo "Collaborator $SYSOPS_USER → write on ${REPO_OWNER}/${REPO_NAME}"
elif [ "$HTTP_CODE" = "422" ]; then
echo "Collaborator already configured"
else
echo "Note: collaborator API returned HTTP $HTTP_CODE (repo may not exist yet)"
fi
REMOTE="http://${SYSOPS_USER}:${SYSOPS_PASS_ENC}@gitea:3001/${REPO_OWNER}/${REPO_NAME}.git"
echo "GITEA_BACKUP_REMOTE=$REMOTE"
echo "=== SysOps kan pushen als $SYSOPS_USER ==="