54 lines
1.6 KiB
Bash
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
|