You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.6 KiB
46 lines
1.6 KiB
#!/bin/sh |
|
set -e |
|
|
|
randomhex() { |
|
local size="$1" |
|
if [ -z "${size}" ]; then |
|
size=32 |
|
fi |
|
local val=$(hexdump -e '4/4 "%08x"' -n${size} /dev/random) |
|
echo ${val} |
|
} |
|
|
|
if [ "$NEWCERT" = "1" -o ! -s /srv/cert.pem ]; then |
|
echo "Creating new self signed TLS certificate ..." |
|
rm -f /srv/privkey.pem |
|
rm -f /srv/cert.pem |
|
openssl ecparam -genkey -name secp384r1 -out /srv/privkey.pem |
|
openssl req -new -x509 -key /srv/privkey.pem \ |
|
-out /srv/cert.pem -days 3650 \ |
|
-subj /CN=spreed-webrtc \ |
|
-config /etc/ssl/openssl.cnf \ |
|
-sha256 -extensions v3_req |
|
|
|
fi |
|
echo "TLS certificate:" |
|
openssl x509 -in /srv/cert.pem -text |
|
|
|
if [ "$NEWSECRETS" = "1" -o ! -s /srv/secrets.conf ]; then |
|
echo "Creating new server secrets ..." |
|
rm -f /srv/secrets.conf.tmp |
|
echo "SESSION_SECRET=$(randomhex 32)" >>/srv/secrets.conf.tmp |
|
echo "ENCRYPTION_SECRET=$(randomhex 32)" >>/srv/secrets.conf.tmp |
|
echo "SERVER_TOKEN=$(randomhex 32)" >>/srv/secrets.conf.tmp |
|
echo "SHARED_SECRET=$(randomhex 32)" >>/srv/secrets.conf.tmp |
|
. /srv/secrets.conf.tmp |
|
sed -i -e "s/sessionSecret =.*/sessionSecret = $SESSION_SECRET/" /srv/spreed-webrtc/default.conf |
|
sed -i -e "s/encryptionSecret =.*/encryptionSecret = $ENCRYPTION_SECRET/" /srv/spreed-webrtc/default.conf |
|
sed -i -e "s/serverToken =.*/serverToken = $SERVER_TOKEN/" /srv/spreed-webrtc/default.conf |
|
sed -i -e "s/;sharedsecret_secret =.*/sharedsecret_secret = $SHARED_SECRET/" /srv/spreed-webrtc/default.conf |
|
mv /srv/secrets.conf.tmp /srv/secrets.conf |
|
fi |
|
echo "Server secrets:" |
|
cat /srv/secrets.conf |
|
|
|
echo "Staring Spreed WebRTC server ..." |
|
exec /srv/spreed-webrtc/spreed-webrtc-server "$@"
|
|
|