mirror of
https://github.com/opencloud-eu/opencloud-compose.git
synced 2026-08-07 20:38:42 +08:00
58 lines
2.2 KiB
Bash
58 lines
2.2 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
CONFIG_FILE="/etc/onlyoffice/documentserver/local.json"
|
|
CONFIG_DIR="$(dirname "$CONFIG_FILE")"
|
|
DATA_DIR="/var/www/onlyoffice/Data"
|
|
WOPI_PRIVATE_KEY="${DATA_DIR}/wopi_private.key"
|
|
WOPI_PUBLIC_KEY="${DATA_DIR}/wopi_public.key"
|
|
|
|
if [ "${WOPI_ENABLED:-false}" = "true" ]; then
|
|
mkdir -p "$CONFIG_DIR" "$DATA_DIR"
|
|
[ -f "$CONFIG_FILE" ] || echo '{}' > "$CONFIG_FILE"
|
|
|
|
if [ ! -f "$WOPI_PRIVATE_KEY" ]; then
|
|
echo "Generating WOPI private key..."
|
|
openssl genpkey -algorithm RSA -outform PEM -out "$WOPI_PRIVATE_KEY" >/dev/null 2>&1
|
|
fi
|
|
|
|
if [ ! -f "$WOPI_PUBLIC_KEY" ]; then
|
|
echo "Generating WOPI public key..."
|
|
openssl rsa -RSAPublicKey_out -in "$WOPI_PRIVATE_KEY" \
|
|
-outform "MS PUBLICKEYBLOB" -out "$WOPI_PUBLIC_KEY" >/dev/null 2>&1
|
|
fi
|
|
|
|
WOPI_PRIVATE_KEY_CONTENT=$(cat "$WOPI_PRIVATE_KEY")
|
|
WOPI_PUBLIC_KEY_CONTENT=$(openssl base64 -in "$WOPI_PUBLIC_KEY" -A)
|
|
WOPI_MODULUS=$(openssl rsa -pubin -inform "MS PUBLICKEYBLOB" -modulus -noout \
|
|
-in "$WOPI_PUBLIC_KEY" | sed 's/Modulus=//' | \
|
|
python3 -c "import sys,binascii,base64; print(base64.b64encode(binascii.unhexlify(sys.stdin.read().strip())).decode())")
|
|
|
|
WOPI_EXPONENT=$(openssl rsa -pubin -inform "MS PUBLICKEYBLOB" -text -noout \
|
|
-in "$WOPI_PUBLIC_KEY" | grep -oP '(?<=Exponent: )\d+')
|
|
|
|
# Merge WOPI config into local.json
|
|
jq \
|
|
--argjson wopiEnabled "true" \
|
|
--arg wopiPrivateKey "$WOPI_PRIVATE_KEY_CONTENT" \
|
|
--arg wopiPublicKey "$WOPI_PUBLIC_KEY_CONTENT" \
|
|
--arg wopiModulus "$WOPI_MODULUS" \
|
|
--arg wopiExponent "$WOPI_EXPONENT" \
|
|
'.wopi.enable = $wopiEnabled |
|
|
.wopi.privateKey = $wopiPrivateKey |
|
|
.wopi.privateKeyOld = $wopiPrivateKey |
|
|
.wopi.publicKey = $wopiPublicKey |
|
|
.wopi.publicKeyOld = $wopiPublicKey |
|
|
.wopi.modulus = $wopiModulus |
|
|
.wopi.modulusOld = $wopiModulus |
|
|
.wopi.exponent = ($wopiExponent | tonumber) |
|
|
.wopi.exponentOld = ($wopiExponent | tonumber)' \
|
|
"$CONFIG_FILE" > "${CONFIG_FILE}.tmp"
|
|
|
|
mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE"
|
|
echo "WOPI configuration injected successfully."
|
|
fi
|
|
|
|
# Hand over to the official DocumentServer entrypoint
|
|
exec /entrypoint.sh "$@"
|