#!/bin/bash # Laravel-style APP_KEY placeholders. # Bookstack (and other Laravel apps) expect APP_KEY=base64:<32-byte # base64> — refuses to boot otherwise. We swap RANDOMIZEDAPPKEY # placeholders with a freshly generated value. replaceLaravelAppKeys() { local file="$1" local existing_placeholders=$(runCfgOp grep -oE 'RANDOMIZEDAPPKEY[0-9]*' "$file" 2>/dev/null | sort -u) # \b on the substitution below: `sort -u` orders slots lexically (1, 10, 11, # 2), so without it slot 1's pattern matches inside slot 10's placeholder and # slots 10+ end up holding slot 1's secret with a digit appended. See # password_replace.sh for the full description. if [[ -n "$existing_placeholders" ]]; then while IFS= read -r placeholder; do if [[ -n "$placeholder" ]]; then local app_key app_key="base64:$(openssl rand -base64 32)" runCfgOp sed -i "s#${placeholder}\\b#${app_key}#g" "$file" checkSuccess "Updated ${placeholder} in $(basename "$file") with a new Laravel APP_KEY." fi done <<< "$existing_placeholders" fi }