#!/bin/sh
set -e
SERVER_CONF="$SNAP_APP_DATA_PATH/server.conf"
TLS_KEY="$SNAP_APP_DATA_PATH/tls.key"
TLS_CERT="$SNAP_APP_DATA_PATH/tls.crt"
TLS_DAYS=3650
TLS_BITS=2048
OPENSSL="openssl"
export RANDFILE="$SNAP_APP_DATA_PATH/.rnd"
if [ ! -e "$SERVER_CONF" ]; then
# Create configuration when none exists.
if [ ! -e "$TLS_CERT" ]; then
# Create self signed TLS certificate.
rm -f "$TLS_KEY"
$OPENSSL req -new -x509 -nodes -newkey rsa:$TLS_BITS \
-keyout "$TLS_KEY" \
-out "$TLS_CERT" -days $TLS_DAYS \
-config "$SNAP_APP_PATH/ssleay.cnf" -sha256 -extensions req_v3
fi
# Create random strings.
sessionSecret=$($OPENSSL rand -hex 32)
encryptionSecret=$($OPENSSL rand -hex 24)
serverToken=$($OPENSSL rand -hex 16)
# Change configuration.
sed "\
s|root = .*|root = $SNAP_APP_PATH/usr/share/spreed-webrtc-server/www|; \
s|sessionSecret = .*|sessionSecret = $sessionSecret|; \
s|encryptionSecret = .*|encryptionSecret = $encryptionSecret|; \
s|serverToken = .*|serverToken = $serverToken|; \
s|;listen = 127.0.0.1:8443|listen = :8443|; \
s|;certificate = .*|certificate = $TLS_CERT|; \
s|;key = .*|key = $TLS_KEY|; \
s|;minVersion = SSLv3|minVersion = TLSv1|; \
" \
"$SNAP_APP_PATH/etc/spreed/webrtc.conf" > "$SERVER_CONF.new"
# Move config into place.
mv -f "$SERVER_CONF.new" "$SERVER_CONF"
fi
exec "$SNAP_APP_PATH/usr/sbin/spreed-webrtc-server" -c "$SERVER_CONF"