Scaling up and performance features. #22
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# JWT Mode Setup
 | 
			
		||||
# SwITNet Ltd © - 2020, https://switnet.net/
 | 
			
		||||
# GPLv3 or later.
 | 
			
		||||
DOMAIN=$(ls /etc/prosody/conf.d/ | grep -v localhost | awk -F'.cfg' '{print $1}' | awk '!NF || !seen[$0]++')
 | 
			
		||||
MEET_CONF="/etc/jitsi/meet/$DOMAIN-config.js"
 | 
			
		||||
APP_ID="$(tr -dc "a-zA-Z0-9" < /dev/urandom | fold -w 16 | head -n1)"
 | 
			
		||||
SECRET_APP="$(tr -dc "a-zA-Z0-9" < /dev/urandom | fold -w 64 | head -n1)"
 | 
			
		||||
echo $APP_ID && echo $SECRET_APP
 | 
			
		||||
 | 
			
		||||
## Required  openssl for Focal 20.04
 | 
			
		||||
if [ "$(lsb_release -sc)" = "focal" ]; then
 | 
			
		||||
echo "deb http://ppa.launchpad.net/rael-gc/rvm/ubuntu focal main" | \
 | 
			
		||||
sudo tee /etc/apt/sources.list.d/rvm.list
 | 
			
		||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F4E3FBBE
 | 
			
		||||
apt-get update
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
apt-get -y install \
 | 
			
		||||
                    lua5.2 \
 | 
			
		||||
                    liblua5.2 \
 | 
			
		||||
                    luarocks \
 | 
			
		||||
                    libssl1.0-dev \
 | 
			
		||||
                    python3-jwt
 | 
			
		||||
 | 
			
		||||
luarocks install basexx
 | 
			
		||||
luarocks install luacrypto
 | 
			
		||||
luarocks install lua-cjson 2.1.0-1
 | 
			
		||||
 | 
			
		||||
echo "set jitsi-meet-tokens/appid string $APP_ID" | debconf-set-selections
 | 
			
		||||
echo "set jitsi-meet-tokens/appsecret password $SECRET_APP" | debconf-set-selections
 | 
			
		||||
 | 
			
		||||
apt-get install -y jitsi-meet-tokens
 | 
			
		||||
 | 
			
		||||
#Setting up
 | 
			
		||||
sed -i "s|c2s_require_encryption = true|c2s_require_encryption = false|" /etc/prosody/prosody.cfg.lua
 | 
			
		||||
sed -i "/app_secret/a \ \ \ \ \ \ \ \ asap_accepted_issuers = { \"$APP_ID\" }" /etc/prosody/conf.d/$DOMAIN.cfg.lua
 | 
			
		||||
sed -i "/app_secret/a \ \ \ \ \ \ \ \ asap_accepted_audiences = { \"$APP_ID\" }" /etc/prosody/conf.d/$DOMAIN.cfg.lua
 | 
			
		||||
 | 
			
		||||
#allow_empty_token = true
 | 
			
		||||
 | 
			
		||||
sed -i "s|// anonymousdomain: 'guest.example.com'|anonymousdomain: \'guest.$DOMAIN\'|" $MEET_CONF
 | 
			
		||||
 | 
			
		||||
echo -e "\nUse the following for your App (e.g. Rocket.Chat):\n"
 | 
			
		||||
pyjwt3 --key="$SECRET_APP" \
 | 
			
		||||
    encode \
 | 
			
		||||
    group="Rocket.Chat" \
 | 
			
		||||
    aud="$APP_ID" \
 | 
			
		||||
    iss="$APP_ID" \
 | 
			
		||||
    sub="$DOMAIN" \
 | 
			
		||||
    room="*" \
 | 
			
		||||
    algorithm="HS256"
 | 
			
		||||
| 
						 | 
				
			
			@ -510,8 +510,6 @@ do
 | 
			
		|||
        "Local")
 | 
			
		||||
            echo -e "\n  > Users are created manually using prosodyctl, only moderators can open a room or launch recording.\n"
 | 
			
		||||
            ENABLE_SC="yes"
 | 
			
		||||
            read -p "Set username for secure room moderator: "$'\n' -r SEC_ROOM_USER
 | 
			
		||||
            read -p "Secure room moderator password: "$'\n' -r SEC_ROOM_PASS
 | 
			
		||||
            break
 | 
			
		||||
            ;;
 | 
			
		||||
        "JWT")
 | 
			
		||||
| 
						 | 
				
			
			@ -977,47 +975,22 @@ or '${SEC_ROOM_USER}@${DOMAIN}' using the password you just entered.
 | 
			
		|||
If you have issues with the password refer to your sysadmin."
 | 
			
		||||
sed -i "s|#org.jitsi.jicofo.auth.URL=XMPP:|org.jitsi.jicofo.auth.URL=XMPP:|" $JICOFO_SIP
 | 
			
		||||
#Secure room initial user
 | 
			
		||||
read -p "Set username for secure room moderator: "$'\n' -r SEC_ROOM_USER
 | 
			
		||||
read -p "Secure room moderator password: "$'\n' -r SEC_ROOM_PASS
 | 
			
		||||
prosodyctl register $SEC_ROOM_USER $DOMAIN $SEC_ROOM_PASS
 | 
			
		||||
sed -i "s|SEC_ROOM=.*|SEC_ROOM=\"on\"|" jm-bm.sh
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
###JWT
 | 
			
		||||
if [ "$ENABLE_JWT" = "yes" ]; then
 | 
			
		||||
echo -e "\nJWT auth are being setup..."
 | 
			
		||||
echo -e "\nJWT auth is being setup..."
 | 
			
		||||
 | 
			
		||||
	## Focal Openssl
 | 
			
		||||
	if [ "$(lsb_release -sc)" = "focal" ]; then
 | 
			
		||||
	echo "deb http://ppa.launchpad.net/rael-gc/rvm/ubuntu focal main" | \
 | 
			
		||||
	sudo tee /etc/apt/sources.list.d/rvm.list
 | 
			
		||||
	apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F4E3FBBE
 | 
			
		||||
	apt-get update
 | 
			
		||||
	fi
 | 
			
		||||
bash $PWD/mode/jwt.sh
 | 
			
		||||
 | 
			
		||||
	else
 | 
			
		||||
    echo "No authentication method selected."
 | 
			
		||||
 | 
			
		||||
apt-get -y install \
 | 
			
		||||
                        lua5.2 \
 | 
			
		||||
                        liblua5.2 \
 | 
			
		||||
                        luarocks \
 | 
			
		||||
                        libssl1.0-dev \
 | 
			
		||||
                        python3-jwt
 | 
			
		||||
 | 
			
		||||
luarocks install basexx
 | 
			
		||||
luarocks install luacrypto
 | 
			
		||||
luarocks install lua-cjson 2.1.0-1
 | 
			
		||||
 | 
			
		||||
echo "set jitsi-meet-tokens/appid string $APP_ID" | debconf-set-selections
 | 
			
		||||
echo "set jitsi-meet-tokens/appsecret password $SECRET_APP" | debconf-set-selections
 | 
			
		||||
 | 
			
		||||
apt-get install -y jitsi-meet-tokens
 | 
			
		||||
 | 
			
		||||
#Setting up
 | 
			
		||||
sed -i "s|c2s_require_encryption = true|c2s_require_encryption = false|" /etc/prosody/prosody.cfg.lua
 | 
			
		||||
sed -i "/app_secret/a \ \ \ \ \ \ \ \ asap_accepted_issuers = { \"$APP_ID\" }" /etc/prosody/conf.d/$DOMAIN.cfg.lua
 | 
			
		||||
sed -i "/app_secret/a \ \ \ \ \ \ \ \ asap_accepted_audiences = { \"$APP_ID\" }" /etc/prosody/conf.d/$DOMAIN.cfg.lua
 | 
			
		||||
 | 
			
		||||
#allow_empty_token = true
 | 
			
		||||
 | 
			
		||||
sed -i "s|// anonymousdomain: 'guest.example.com'|anonymousdomain: \'guest.$DOMAIN\'|" $MEET_CONF
 | 
			
		||||
read -n 1 -s -r -p "Press any key to continue..."$'\n'
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#Guest allow
 | 
			
		||||
| 
						 | 
				
			
			@ -1040,22 +1013,6 @@ VirtualHost "guest.$DOMAIN"
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
P_SR
 | 
			
		||||
 | 
			
		||||
echo "Use the following for your App (e.g. Rocket.Chat):"
 | 
			
		||||
pyjwt3 --key="$SECRET_APP" \
 | 
			
		||||
    encode \
 | 
			
		||||
    group="Rocket.Chat" \
 | 
			
		||||
    aud="$APP_ID" \
 | 
			
		||||
    iss="$APP_ID" \
 | 
			
		||||
    sub="$DOMAIN" \
 | 
			
		||||
    room="*" \
 | 
			
		||||
    algorithm="HS256"
 | 
			
		||||
 | 
			
		||||
	else
 | 
			
		||||
    echo "No authentication method selected."
 | 
			
		||||
 | 
			
		||||
read -n 1 -s -r -p "Press any key to continue..."$'\n'
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
#======================
 | 
			
		||||
#Start with video muted by default
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue