7.0.4 #85
			
				
			
		
		
		
	
							
								
								
									
										307
									
								
								old/jigasi.sh
								
								
								
								
							
							
						
						
									
										307
									
								
								old/jigasi.sh
								
								
								
								
							| 
						 | 
				
			
			@ -1,307 +0,0 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# Quick Jigasi Installer - *buntu (LTS) based systems.
 | 
			
		||||
# SwITNet Ltd © - 2020, https://switnet.net/
 | 
			
		||||
# GPLv3 or later.
 | 
			
		||||
 | 
			
		||||
##################### Whistlist #######################
 | 
			
		||||
# Saves final transcript in translated languages #130 - 
 | 
			
		||||
# https://github.com/jitsi/jigasi/pull/130
 | 
			
		||||
#######################################################
 | 
			
		||||
 | 
			
		||||
#Check if user is root
 | 
			
		||||
if ! [ "$(id -u)" = 0 ]; then
 | 
			
		||||
   echo "You need to be root or have sudo privileges!"
 | 
			
		||||
   exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
clear
 | 
			
		||||
echo '
 | 
			
		||||
########################################################################
 | 
			
		||||
                       Jigasi Transcript addon
 | 
			
		||||
########################################################################
 | 
			
		||||
                    by Software, IT & Networks Ltd
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
JIGASI_CONFIG="/etc/jitsi/jigasi/config"
 | 
			
		||||
GC_API_JSON="/opt/gc-sdk/GCTranscriptAPI.json"
 | 
			
		||||
DOMAIN="$(find /etc/prosody/conf.d/ -name \*.lua|awk -F'.cfg' '!/localhost/{print $1}'|xargs basename)"
 | 
			
		||||
MEET_CONF="/etc/jitsi/meet/${DOMAIN}-config.js"
 | 
			
		||||
JIG_SIP_CONF="/etc/jitsi/jigasi/config"
 | 
			
		||||
JIG_SIP_PROP="/etc/jitsi/jigasi/sip-communicator.properties"
 | 
			
		||||
JIC_SIP_PROP="/etc/jitsi/jicofo/sip-communicator.properties"
 | 
			
		||||
JIG_TRANSC_PASWD="$(tr -dc "a-zA-Z0-9#*=" < /dev/urandom | fold -w 8 | head -n1)"
 | 
			
		||||
JIG_TRANSC_PASWD_B64="$(echo -n "$JIG_TRANSC_PASWD" | base64)"
 | 
			
		||||
DIST="$(lsb_release -sc)"
 | 
			
		||||
CHECK_GC_REPO="$(apt-cache policy | grep http | grep cloud-sdk | head -n1 | awk '{print $3}' | awk -F '/' '{print $1}')"
 | 
			
		||||
 | 
			
		||||
install_gc_repo() {
 | 
			
		||||
if [ "$CHECK_GC_REPO" = "cloud-sdk-$DIST" ]; then
 | 
			
		||||
    echo "
 | 
			
		||||
Google Cloud SDK repository already on the system!
 | 
			
		||||
"
 | 
			
		||||
else
 | 
			
		||||
    echo "
 | 
			
		||||
Adding Google Cloud SDK repository for latest updates
 | 
			
		||||
"
 | 
			
		||||
    export CLOUD_SDK_REPO="cloud-sdk-$DIST"
 | 
			
		||||
    echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
 | 
			
		||||
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
}
 | 
			
		||||
install_gc_repo
 | 
			
		||||
apt-get -q2 update
 | 
			
		||||
apt-get -y install google-cloud-sdk google-cloud-sdk-app-engine-java
 | 
			
		||||
 | 
			
		||||
echo "Please select one of the current options:
 | 
			
		||||
[1] I want to configure a new project, service account, billing and JSON credentials.
 | 
			
		||||
[2] I already have one project configured and already have a JSON key file from Google"
 | 
			
		||||
while [[ "$SETUP_TYPE" != "1" && "$SETUP_TYPE" != "2" ]]
 | 
			
		||||
do
 | 
			
		||||
    read -p "What option suits your setup?: (1 or 2)"$'\n' -r SETUP_TYPE
 | 
			
		||||
    if [ "$SETUP_TYPE" = "1" ]; then
 | 
			
		||||
      echo "We'll setup a GC Projects from scratch"
 | 
			
		||||
    elif [ "$SETUP_TYPE" = "2" ]; then
 | 
			
		||||
      echo "We'll setup only the project and JSON key."
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if [ "$SETUP_TYPE" = 1 ]; then
 | 
			
		||||
### Start of new project configuration - Google SDK
 | 
			
		||||
#Setup option 1 - Google Cloud SDK
 | 
			
		||||
echo "Once logged on Google Cloud SDK, please create a new project (last option)."
 | 
			
		||||
gcloud init
 | 
			
		||||
read -p "Enter the project name you just created for Jigasi Speech-to-Text"$'\n' -r GC_PROJECT_NAME
 | 
			
		||||
#Second login - Google Auth Library
 | 
			
		||||
echo "Login to Google Auth Library"
 | 
			
		||||
gcloud auth application-default login
 | 
			
		||||
 | 
			
		||||
# Start Google Cloud Configuration - Application Service
 | 
			
		||||
GC_MEMBER=transcript
 | 
			
		||||
echo "Checking if project exist..."
 | 
			
		||||
PROJECT_GC_ID="$(gcloud projects list | grep "$GC_PROJECT_NAME" | awk '{print$3}')"
 | 
			
		||||
while [ -z "$PROJECT_GC_ID" ]
 | 
			
		||||
do
 | 
			
		||||
read -p "Enter the project name you just created for Jigasi Speech-to-Text"$'\n' -r GC_PROJECT_NAME
 | 
			
		||||
if [ -z "$PROJECT_GC_ID" ]; then
 | 
			
		||||
    echo "Please check your project name,"
 | 
			
		||||
    echo "There is no project listed with the provided name: $GC_PROJECT_NAME"
 | 
			
		||||
        PROJECT_GC_ID="$(gcloud projects list | grep "$GC_PROJECT_NAME" | awk '{print$3}')"
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
echo "Your $GC_PROJECT_NAME ID's project is: $PROJECT_GC_ID"
 | 
			
		||||
 | 
			
		||||
# Enable Speech2Text
 | 
			
		||||
echo "Important: Please enable billing on your project using the following URL:
 | 
			
		||||
https://console.developers.google.com/project/$PROJECT_GC_ID/settings"
 | 
			
		||||
 | 
			
		||||
echo "Checking billing..."
 | 
			
		||||
CHECK_BILLING="$(gcloud services enable speech.googleapis.com 2>/dev/null)"
 | 
			
		||||
while [[ $? -eq 1 ]]
 | 
			
		||||
do
 | 
			
		||||
CHECK_BILLING="$(gcloud services enable speech.googleapis.com 2>/dev/null)"
 | 
			
		||||
if [[ $? -eq 1 ]]; then
 | 
			
		||||
        echo "Seems you haven't enabled billing for this project: $GC_PROJECT_NAME"
 | 
			
		||||
        echo "  For that go to: https://console.developers.google.com/project/$PROJECT_GC_ID/settings
 | 
			
		||||
    "
 | 
			
		||||
        read -rp "Press Enter to continue"
 | 
			
		||||
        CHECK_BILLING="$(gcloud services enable speech.googleapis.com 2>/dev/null)"
 | 
			
		||||
fi
 | 
			
		||||
done
 | 
			
		||||
echo "Billing account seems setup, continuing..."
 | 
			
		||||
 | 
			
		||||
gcloud iam service-accounts create "$GC_MEMBER"
 | 
			
		||||
 | 
			
		||||
gcloud projects add-iam-policy-binding  "$GC_PROJECT_NAME" \
 | 
			
		||||
    --member serviceAccount:"$GC_MEMBER"@"$GC_PROJECT_NAME".iam.gserviceaccount.com \
 | 
			
		||||
    --role  roles/editor
 | 
			
		||||
 | 
			
		||||
echo "Setup credentials:"
 | 
			
		||||
echo "Please go and download your valid json key at:
 | 
			
		||||
https://console.developers.google.com/apis/credentials?folder=&organizationId=&project=$GC_PROJECT_NAME"
 | 
			
		||||
### End of new project configuration - Google SDK
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "$SETUP_TYPE" = "2" ]; then
 | 
			
		||||
#Setup option 1 - Google Cloud SDK
 | 
			
		||||
echo "Once logged on Google Cloud SDK, please select the project that owns to the JSON key."
 | 
			
		||||
gcloud init
 | 
			
		||||
echo "Login to Google Auth Library"
 | 
			
		||||
gcloud auth application-default login
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "Setting up JSON key file..."
 | 
			
		||||
sleep 2
 | 
			
		||||
mkdir /opt/gc-sdk/
 | 
			
		||||
cat << KEY_JSON > "$GC_API_JSON"
 | 
			
		||||
#
 | 
			
		||||
# Paste below this comment your GC JSON key for the service account:
 | 
			
		||||
# $GC_MEMBER@$GC_PROJECT_NAME.iam.gserviceaccount.com
 | 
			
		||||
#
 | 
			
		||||
# Visit the following URL and create a *Service Account Key*:
 | 
			
		||||
# https://console.developers.google.com/apis/credentials?folder=&organizationId=&project=$GC_PROJECT_NAME
 | 
			
		||||
# These comment lines will be deleted afterwards.
 | 
			
		||||
#
 | 
			
		||||
KEY_JSON
 | 
			
		||||
chmod 644 "$GC_API_JSON"
 | 
			
		||||
nano "$GC_API_JSON"
 | 
			
		||||
sed -i '/^#/d' "$GC_API_JSON"
 | 
			
		||||
 | 
			
		||||
CHECK_JSON_KEY="$(cat "$GC_API_JSON" | python -m json.tool 2>/dev/null)"
 | 
			
		||||
while [[ $? -eq 1 ]]
 | 
			
		||||
do
 | 
			
		||||
CHECK_JSON_KEY="$(cat $GC_API_JSON | python -m json.tool 2>/dev/null)"
 | 
			
		||||
if [[ $? -eq 1 ]]; then
 | 
			
		||||
        echo "Check again your JSON file, syntax doesn't seem right"
 | 
			
		||||
        sleep 2
 | 
			
		||||
        nano $GC_API_JSON
 | 
			
		||||
        CHECK_JSON_KEY="$(cat $GC_API_JSON | python -m json.tool 2>/dev/null)"
 | 
			
		||||
fi
 | 
			
		||||
done
 | 
			
		||||
echo "
 | 
			
		||||
Great, seems your JSON key syntax is fine.
 | 
			
		||||
"
 | 
			
		||||
sleep 2
 | 
			
		||||
 | 
			
		||||
export GOOGLE_APPLICATION_CREDENTIALS=$GC_API_JSON
 | 
			
		||||
 | 
			
		||||
echo "Installing Jigasi, your SIP credentials will be asked. (mandatory)"
 | 
			
		||||
apt-get -y install jigasi
 | 
			
		||||
#apt-mark hold jigasi
 | 
			
		||||
 | 
			
		||||
cat  << JIGASI_CONF >> "$JIGASI_CONFIG"
 | 
			
		||||
 | 
			
		||||
GOOGLE_APPLICATION_CREDENTIALS=$GC_API_JSON
 | 
			
		||||
 | 
			
		||||
JIGASI_CONF
 | 
			
		||||
 | 
			
		||||
echo "Your Google Cloud credentials are at $GC_API_JSON"
 | 
			
		||||
 | 
			
		||||
echo "Setting up Jigasi transcript with current platform..."
 | 
			
		||||
#Connect callcontrol
 | 
			
		||||
sed -i "s|// call_control:|call_control:|" "$MEET_CONF"
 | 
			
		||||
sed -i "s|// transcribingEnabled|transcribingEnabled|" "$MEET_CONF"
 | 
			
		||||
sed -i "/transcribingEnabled/ s|false|true|" "$MEET_CONF"
 | 
			
		||||
 | 
			
		||||
#siptest2siptest@domain.con
 | 
			
		||||
#changed from conference to internal.auth from jibri
 | 
			
		||||
sed -i "s|siptest|siptest@internal.auth.$DOMAIN|" "$JIG_SIP_PROP"
 | 
			
		||||
 | 
			
		||||
#Disable component in favor of MUC
 | 
			
		||||
if [ "$(grep -c nocomponent "$JIG_SIP_CONF")" != 0 ]; then
 | 
			
		||||
    echo "Jigasi component is already disabled."
 | 
			
		||||
else
 | 
			
		||||
    echo "Disabling jigasi component in favor of MUC"
 | 
			
		||||
    sed -i "s|JIGASI_OPTS=.*|JIGASI_OPTS=\"--nocomponent=true\"|" "$JIG_SIP_CONF"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#Setup XMPP
 | 
			
		||||
cat << ACC1_XMPP >> "$JIG_SIP_PROP"
 | 
			
		||||
 | 
			
		||||
# XMPP account used for control
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1=acc1
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.ACCOUNT_UID=Jabber:jigasi@auth.$DOMAIN@$DOMAIN
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.USER_ID=jigasi@auth.$DOMAIN
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_SERVER_OVERRIDDEN=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.SERVER_ADDRESS=$DOMAIN
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.SERVER_PORT=5222
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.PASSWORD=$JIG_TRANSC_PASWD_B64
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.AUTO_GENERATE_RESOURCE=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.RESOURCE_PRIORITY=30
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_CARBON_DISABLED=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.DEFAULT_ENCRYPTION=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_USE_ICE=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_ACCOUNT_DISABLED=false
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_PREFERRED_PROTOCOL=false
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.AUTO_DISCOVER_JINGLE_NODES=false
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.PROTOCOL=Jabber
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_USE_UPNP=false
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.USE_DEFAULT_STUN_SERVER=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.ENCRYPTION_PROTOCOL.DTLS-SRTP=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.VIDEO_CALLING_DISABLED=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.OVERRIDE_ENCODINGS=true
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.G722/8000=705
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.GSM/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.H263-1998/90000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.H264/90000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.PCMA/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.PCMU/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/12000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/16000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/24000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.VP8/90000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.iLBC/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.opus/48000=750
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.speex/16000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.speex/32000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.speex/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.telephone-event/8000=0
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.BREWERY=JigasiBreweryRoom@internal.auth.$DOMAIN
 | 
			
		||||
net.java.sip.communicator.impl.protocol.jabber.acc1.DOMAIN_BASE=$DOMAIN
 | 
			
		||||
 | 
			
		||||
org.jitsi.jigasi.MUC_SERVICE_ADDRESS=conference.$DOMAIN
 | 
			
		||||
org.jitsi.jigasi.BREWERY_ENABLED=true
 | 
			
		||||
 | 
			
		||||
org.jitsi.jigasi.HEALTH_CHECK_SIP_URI=""
 | 
			
		||||
org.jitsi.jigasi.HEALTH_CHECK_INTERVAL=300000
 | 
			
		||||
org.jitsi.jigasi.HEALTH_CHECK_TIMEOUT=600000
 | 
			
		||||
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.IS_SERVER_OVERRIDDEN=true
 | 
			
		||||
#org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=$DOMAIN
 | 
			
		||||
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.VIDEO_CALLING_DISABLED=true
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.JINGLE_NODES_ENABLED=false
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.AUTO_DISCOVER_STUN=false
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.IM_DISABLED=true
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.SERVER_STORED_INFO_DISABLED=true
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.IS_FILE_TRANSFER_DISABLED=true
 | 
			
		||||
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.USER_ID=jigasi@auth.$DOMAIN
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.PASS=$JIG_TRANSC_PASWD
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
 | 
			
		||||
org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true
 | 
			
		||||
ACC1_XMPP
 | 
			
		||||
 | 
			
		||||
#Enable transcription config
 | 
			
		||||
sed -i "/ENABLE_TRANSCRIPTION/ s|#||" "$JIG_SIP_PROP"
 | 
			
		||||
sed -i "/ENABLE_TRANSCRIPTION/ s|false|true|" "$JIG_SIP_PROP"
 | 
			
		||||
sed -i "/ENABLE_SIP/ s|#||" "$JIG_SIP_PROP"
 | 
			
		||||
sed -i "/ENABLE_SIP/ s|true|false|" "$JIG_SIP_PROP"
 | 
			
		||||
 | 
			
		||||
#Transcript format
 | 
			
		||||
sed -i "/SAVE_JSON/ s|# ||" "$JIG_SIP_PROP"
 | 
			
		||||
sed -i "/SEND_JSON/ s|# ||" "$JIG_SIP_PROP"
 | 
			
		||||
sed -i "/SAVE_TXT/ s|# ||" "$JIG_SIP_PROP"
 | 
			
		||||
sed -i "/SEND_TXT/ s|# ||" "$JIG_SIP_PROP"
 | 
			
		||||
#sed -i "/SEND_TXT/ s|false|true|" $JIG_SIP_PROP
 | 
			
		||||
 | 
			
		||||
#Allow to connect other than same server only.
 | 
			
		||||
sed -i \
 | 
			
		||||
"/xmpp.acc.SERVER_ADDRESS/ s|org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=.*|org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=$DOMAIN|" \
 | 
			
		||||
"$JIG_SIP_PROP"
 | 
			
		||||
 | 
			
		||||
#Remember to study how to use LE or what's needed #ToDo
 | 
			
		||||
sed -i "/ALWAYS_TRUST_MODE_ENABLED/ s|# ||" "$JIG_SIP_PROP"
 | 
			
		||||
 | 
			
		||||
prosodyctl register jigasi auth."$DOMAIN" "$JIG_TRANSC_PASWD"
 | 
			
		||||
 | 
			
		||||
#Set Brewery
 | 
			
		||||
cat << JIG_JIC >> "$JIC_SIP_PROP"
 | 
			
		||||
org.jitsi.jicofo.jigasi.BREWERY=JigasiBreweryRoom@internal.auth.$DOMAIN
 | 
			
		||||
JIG_JIC
 | 
			
		||||
 | 
			
		||||
systemctl restart prosody \
 | 
			
		||||
                  jicofo \
 | 
			
		||||
                  jibri* \
 | 
			
		||||
                  jitsi-videobridge2
 | 
			
		||||
 | 
			
		||||
echo "
 | 
			
		||||
Full transcript files are available at:
 | 
			
		||||
--> /var/lib/jigasi/transcripts/
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
echo "
 | 
			
		||||
Happy transcripting!
 | 
			
		||||
"
 | 
			
		||||
		Loading…
	
		Reference in New Issue