Files
appstore/apps/sub2api/latest/scripts/init.sh
T

46 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
mkdir -p "${APP_DATA_DIR_1:-./data}"
touch .env
chmod 600 .env
generate_secret() {
if command -v openssl >/dev/null 2>&1; then
openssl rand -hex 32
else
od -An -N32 -tx1 /dev/urandom | tr -d ' \n'
fi
}
read_env_value() {
key="$1"
[ -f .env ] || return 0
sed -n "s/^${key}=//p" .env | tail -n 1 | sed -e 's/^"//' -e 's/"$//' -e "s/^'//" -e "s/'$//"
}
write_env_value() {
key="$1"
value="$2"
touch .env
tmp_file="$(mktemp .env.XXXXXX)"
awk -v key="$key" -v value="$value" '
BEGIN { updated = 0 }
$0 ~ "^" key "=" { print key "=" value; updated = 1; next }
{ print }
END { if (!updated) print key "=" value }
' .env >"$tmp_file"
chmod 600 "$tmp_file"
mv "$tmp_file" .env
}
jwt_secret="${JWT_SECRET:-$(read_env_value JWT_SECRET)}"
if [ "${#jwt_secret}" -lt 32 ]; then
write_env_value JWT_SECRET "$(generate_secret)"
fi
totp_key="${TOTP_ENCRYPTION_KEY:-$(read_env_value TOTP_ENCRYPTION_KEY)}"
if [ -z "$totp_key" ]; then
write_env_value TOTP_ENCRYPTION_KEY "$(generate_secret)"
fi