Repository files, collaboration, releases and project activity.
ARCHFORGE HISTORY
Blame · migrate-archforge-remote.sh
Branch main · the Commit author is not necessarily a verified ArchForge account.
2109dd33b8archadmin2026-10-12
1 #!/usr/bin/env bash2109dd33b8archadmin2026-10-12
2 set -Eeuo pipefail2109dd33b8archadmin2026-10-12
3 ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)2109dd33b8archadmin2026-10-12
4 cd "$ROOT"2109dd33b8archadmin2026-10-12
5 ENV_FILE=/etc/archforge-status/status.env2109dd33b8archadmin2026-10-12
6 if [[ "${1:-}" == '--env-only' ]]; then2109dd33b8archadmin2026-10-12
7 [[ "$EUID" == 0 ]] || { echo '[ERROR] Run env update with sudo.' >&2; exit 1; }2109dd33b8archadmin2026-10-12
8 [[ -f "$ENV_FILE" ]] || { echo '[INFO] No existing status.env file found.'; exit 0; }2109dd33b8archadmin2026-10-12
9 if ! grep -Eq '^TARGET_GIT_HTTP_URL=https://archforge\.nl/[A-Za-z0-9_-]+/[A-Za-z0-9_-]+\.git/info/refs$' "$ENV_FILE"; then2109dd33b8archadmin2026-10-12
10 echo '[INFO] ArchForge HTTPS monitor already updated or not configured.'; exit 02109dd33b8archadmin2026-10-12
11 fi2109dd33b8archadmin2026-10-12
12 bak="$ENV_FILE.before-archforge-$(date -u +%Y%m%d%H%M%S)"2109dd33b8archadmin2026-10-12
13 cp -p -- "$ENV_FILE" "$bak"2109dd33b8archadmin2026-10-12
14 python3 - "$ENV_FILE" <<'PYIN'2109dd33b8archadmin2026-10-12
15 import pathlib,re,sys,os2109dd33b8archadmin2026-10-12
16 p=pathlib.Path(sys.argv[1])2109dd33b8archadmin2026-10-12
17 s=p.read_text()2109dd33b8archadmin2026-10-12
18 s,n=re.subn(r'(?m)^(TARGET_GIT_HTTP_URL=https://archforge\.nl/[A-Za-z0-9_-]+/[A-Za-z0-9_-]+)\.git(/info/refs)$',r'\1.archforge\2',s)2109dd33b8archadmin2026-10-12
19 if n != 1: raise SystemExit('Unexpected ArchForge HTTPS target format; not changing file')2109dd33b8archadmin2026-10-12
20 p.write_text(s)2109dd33b8archadmin2026-10-12
21 PYIN2109dd33b8archadmin2026-10-12
22 chmod 600 "$ENV_FILE"2109dd33b8archadmin2026-10-12
23 systemctl restart archforge-status2109dd33b8archadmin2026-10-12
24 echo '[OK] ArchForge HTTPS monitoring endpoint changed to .archforge.'2109dd33b8archadmin2026-10-12
25 exit 02109dd33b8archadmin2026-10-12
26 fi2109dd33b8archadmin2026-10-12
27 [[ -d .git ]] || { echo '[ERROR] Run from a ArchForge checkout, not a copied installation.' >&2; exit 1; }2109dd33b8archadmin2026-10-12
28 CURRENT=$(git remote get-url origin)2109dd33b8archadmin2026-10-12
29 if [[ "$CURRENT" =~ ^https://archforge\.nl/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.git$ || "$CURRENT" =~ ^git@archforge\.nl:[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.git$ ]]; then2109dd33b8archadmin2026-10-12
30 NEXT="${CURRENT%.git}.archforge"2109dd33b8archadmin2026-10-12
31 echo "Old remote: $CURRENT"2109dd33b8archadmin2026-10-12
32 echo "New remote: $NEXT"2109dd33b8archadmin2026-10-12
33 echo 'Checking the NEW ArchForge endpoint first (requires ArchForge Website 11.3.7)...'2109dd33b8archadmin2026-10-12
34 if ! git ls-remote "$NEXT" HEAD >/dev/null; then2109dd33b8archadmin2026-10-12
35 echo '[ERROR] New .archforge ArchForge endpoint is not accessible. Remote unchanged.' >&2; exit 12109dd33b8archadmin2026-10-12
36 fi2109dd33b8archadmin2026-10-12
37 git remote set-url origin "$NEXT"2109dd33b8archadmin2026-10-12
38 echo '[OK] Local origin updated without touching commits or working files.'2109dd33b8archadmin2026-10-12
39 elif [[ "$CURRENT" =~ ^https://archforge\.nl/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.archforge$ || "$CURRENT" =~ ^git@archforge\.nl:[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.archforge$ ]]; then2109dd33b8archadmin2026-10-12
40 echo '[OK] Origin already uses .archforge.'2109dd33b8archadmin2026-10-12
41 else2109dd33b8archadmin2026-10-12
42 echo '[ERROR] Remote is not a recognized safe ArchForge URL. No modifications made.' >&2; exit 12109dd33b8archadmin2026-10-12
43 fi2109dd33b8archadmin2026-10-12
44 if [[ $EUID == 0 ]]; then2109dd33b8archadmin2026-10-12
45 bash "$0" --env-only2109dd33b8archadmin2026-10-12
46 else2109dd33b8archadmin2026-10-12
47 echo 'To change an existing ArchForge HTTPS probe target (if configured), run:'2109dd33b8archadmin2026-10-12
48 echo " sudo bash $ROOT/migrate-archforge-remote.sh --env-only"2109dd33b8archadmin2026-10-12
49 fi