Jigasi release #1
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -0,0 +1,191 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# Quick Jigasi Installer - *buntu 16.04 (LTS) based systems.
 | 
			
		||||
# SwITNet Ltd © - 2019, https://switnet.net/
 | 
			
		||||
# GPLv3 or later.
 | 
			
		||||
 | 
			
		||||
##################### Whistlist #######################
 | 
			
		||||
# Saves final transcript in translated languages #130 - 
 | 
			
		||||
# https://github.com/jitsi/jigasi/pull/130
 | 
			
		||||
#######################################################
 | 
			
		||||
 | 
			
		||||
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=$(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
 | 
			
		||||
JIG_SIP_PROP=/etc/jitsi/jigasi/sip-communicator.properties
 | 
			
		||||
 | 
			
		||||
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
 | 
			
		||||
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 https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
 | 
			
		||||
apt -y update
 | 
			
		||||
apt -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 files 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 proect 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 ]
 | 
			
		||||
	echo "Please check your project name,
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
    For that go to: https://console.developers.google.com/project/$PROJECT_GC_ID/settings"
 | 
			
		||||
        read -p "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
 | 
			
		||||
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
 | 
			
		||||
#
 | 
			
		||||
# These comment lines will be deleted afterwards.
 | 
			
		||||
#
 | 
			
		||||
KEY_JSON
 | 
			
		||||
chmod 644 $GC_API_JSON
 | 
			
		||||
nano $GC_API_JSON
 | 
			
		||||
sed -i "1,6d" $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 now your JSON key syntax is fine."
 | 
			
		||||
 | 
			
		||||
export GOOGLE_APPLICATION_CREDENTIALS=$GC_API_JSON
 | 
			
		||||
 | 
			
		||||
echo "Installing Jigasi, your SIP credentials will be asked. (skip)"
 | 
			
		||||
apt -y install 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
 | 
			
		||||
 | 
			
		||||
#siptest2siptest@domain.con
 | 
			
		||||
#changed from conference to internal.auth from jibri
 | 
			
		||||
sed -i "s|siptest|siptest@internal.auth.$DOMAIN|" $JIG_SIP_PROP
 | 
			
		||||
 | 
			
		||||
#Enable transcript / disable sip
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
#Remember to study how to use LE or what's needed #ToDo
 | 
			
		||||
sed -i "/ALWAYS_TRUST_MODE_ENABLED/ s|# ||" $JIG_SIP_PROP
 | 
			
		||||
 | 
			
		||||
#Jigasi credentials
 | 
			
		||||
sed -i "/xmpp.acc.USER_ID/ s|# ||" $JIG_SIP_PROP
 | 
			
		||||
sed -i "/xmpp.acc.USER_ID/ s|SOME_USER\@SOME_DOMAIN|transcript\@auth.$DOMAIN|" $JIG_SIP_PROP
 | 
			
		||||
sed -i "/xmpp.acc.PASS/ s|# ||" $JIG_SIP_PROP
 | 
			
		||||
sed -i "/xmpp.acc.PASS/ s|SOME_PASS|jigasi|" $JIG_SIP_PROP
 | 
			
		||||
sed -i "/xmpp.acc.ANONYMOUS_AUTH/ s|# ||" $JIG_SIP_PROP
 | 
			
		||||
 | 
			
		||||
prosodyctl register transcript auth.$DOMAIN jigasi
 | 
			
		||||
 | 
			
		||||
systemctl restart prosody ji*
 | 
			
		||||
 | 
			
		||||
echo "To test, you need to enable subtitles beforehand then invite \
 | 
			
		||||
\"jitsi_meet_transcribe\" to the meeting (no quotes)."
 | 
			
		||||
 | 
			
		||||
echo "Full transcript files are available at:
 | 
			
		||||
--> /var/lib/jigasi/transcripts/"
 | 
			
		||||
 | 
			
		||||
echo "Happy transcripting..."
 | 
			
		||||
 | 
			
		||||
#APP.conference._room.dial("jitsi_meet_transcribe");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -202,6 +202,16 @@ elif [ $ENABLE_SSL = yes ]; then
 | 
			
		|||
	echo "SSL will be enabled."
 | 
			
		||||
fi
 | 
			
		||||
done
 | 
			
		||||
#Jigasi
 | 
			
		||||
while [[ $ENABLE_TRANSCRIPT != yes && $ENABLE_TRANSCRIPT != no ]]
 | 
			
		||||
do
 | 
			
		||||
read -p "Do you want to setup Jigasi Transcription: (yes or no)"$'\n' -r ENABLE_TRANSCRIPT
 | 
			
		||||
if [ $ENABLE_TRANSCRIPT = no ]; then
 | 
			
		||||
	echo "Jigasi Transcription won't be enabled."
 | 
			
		||||
elif [ $ENABLE_TRANSCRIPT = yes ]; then
 | 
			
		||||
	echo "Jigasi Transcription will be enabled."
 | 
			
		||||
fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "$JB_AUTH_PASS" > $JB_AUTH_PASS_FILE
 | 
			
		||||
chmod 600 $JB_AUTH_PASS_FILE
 | 
			
		||||
| 
						 | 
				
			
			@ -521,6 +531,11 @@ else
 | 
			
		|||
	echo "No webserver found please report."
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
elif [ $ENABLE_TRANSCRIPT = yes ]; then
 | 
			
		||||
	echo "Jigasi Transcription will be enabled."
 | 
			
		||||
	bash <(curl -s https://raw.githubusercontent.com/switnet-ltd/quick-jibri-installer/jigasi/jigasi.sh)
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "
 | 
			
		||||
########################################################################
 | 
			
		||||
                    Installation complete!!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue