Files
BackOne/ci/scripts/sync-authtoken.sh
2026-06-30 13:10:35 +07:00

54 lines
1.6 KiB
Bash

#!/bin/sh
# Keep ~/.backOneOneAuthToken and /var/lib/backone/authtoken.secret in sync (same as backone-cli).
set -e
BACKONE_HOME="${BACKONE_HOME:-/var/lib/backone}"
SECRET="${BACKONE_HOME}/authtoken.secret"
trim_token() {
tr -d '\n\r \t' < "$1"
}
sync_for_user() {
user="$1"
home="$2"
[ -n "$user" ] && [ -n "$home" ] && [ -d "$home" ] || return 0
user_token="${home}/.backOneOneAuthToken"
if [ -f "$user_token" ] && [ -s "$user_token" ]; then
ut="$(trim_token "$user_token")"
[ -n "$ut" ] || return 0
st=""
if [ -f "$SECRET" ]; then
st="$(trim_token "$SECRET" 2>/dev/null || true)"
fi
if [ "$ut" != "$st" ]; then
printf '%s' "$ut" > "$SECRET"
chown backone:backone "$SECRET" 2>/dev/null || true
chmod 0600 "$SECRET" 2>/dev/null || true
echo "Synced ${SECRET} from ${user_token}"
fi
return 0
fi
if [ -f "$SECRET" ]; then
install -o "$user" -g "$(id -gn "$user" 2>/dev/null || echo "$user")" -m 0600 "$SECRET" "$user_token" 2>/dev/null \
|| cp "$SECRET" "$user_token"
chown "$user":"$(id -gn "$user" 2>/dev/null || echo "$user")" "$user_token" 2>/dev/null || true
chmod 0600 "$user_token" 2>/dev/null || true
echo "Installed ${user_token} from ${SECRET}"
fi
}
if [ -n "${SUDO_USER:-}" ] && [ "$SUDO_USER" != "root" ]; then
home="$(getent passwd "$SUDO_USER" | cut -d: -f6)"
sync_for_user "$SUDO_USER" "$home"
fi
if [ -n "${USER:-}" ] && [ "$USER" != "root" ] && [ "$USER" != "${SUDO_USER:-}" ]; then
home="$(getent passwd "$USER" | cut -d: -f6)"
sync_for_user "$USER" "$home"
fi
exit 0