From e4a88178aebe8ceb6e8721654fbcd19800b80ee3 Mon Sep 17 00:00:00 2001 From: Martin Winkler Date: Wed, 24 Mar 2021 14:45:09 +0100 Subject: [PATCH] Sequence to install coturn and step for updating public ip TODO configuration notes --- seqs/coturn.sh | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100755 seqs/coturn.sh diff --git a/seqs/coturn.sh b/seqs/coturn.sh new file mode 100755 index 0000000..cd4ca54 --- /dev/null +++ b/seqs/coturn.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +toolName=coturn +toolConf="/etc/turnserver.conf" + +# Get script working directory +# (when called from a different directory) +WDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >>/dev/null 2>&1 && pwd)" +APTOPT= +CONFIG=0 +SCRIPT_FILE=$(basename -- $0) +SCRIPT_NAME=${SCRIPT_FILE%%.*} +CONFIG_FILE_NAME="${SCRIPT_NAME}.cfg" +CONFIG_FILE_TEMPLATE="$WDIR/${CONFIG_FILE_NAME}.example" + +step_config() { + #echo "Called once before executing steps." + ## e.g. to source a config file manually: + #. "$CONFIG_FILE" + ## or to use sequencer api with global config file: + #initSeqConfig "$CONFIG_FILE_NAME" "$CONFIG_FILE_TEMPLATE" + ## or to use sequencer api with profile config file support: + #initSeqConfig -p "$SCRIPT_NAME" "$CONFIG_FILE_TEMPLATE" + #if [ $? -eq 0 ] ; then + # CONFIG=1 + #else + # # End if no configuration file exists + # [ $DRY -eq 0 ] && return -1 + #fi + [ $QUIET -ne 0 ] && APTOPT="-y" + return 0 +} + +step_1_info() { echo "Install coturn"; } +step_1_alias() { ALIAS="install"; } +step_1() { + exe apt update + exe apt install coturn $APTOPT +} + +step_10_info() { echo "Update coturn 'external-ip' using dig [CUSTOM DNS]"; } +step_10_alias() { ALIAS="updateip"; } +step_10() { + shift + local dnsUrl="46.182.19.48" #digitalcourage.de/support/zensurfreier-dns-server + [ ! -z "$1" ] && dnsUrl="$1" + local pubIp=$(dig @$dnsUrl +short cloud.imoff.de) + local confIp=`cat "$toolConf" | grep "^external-ip" | cut -d'=' -f2` + + echoseq "Current public ip: $pubIp" + echoseq "Configured public ip: $confIp" + + if [ "$pubIp" != "$confIp" ]; then + echoseq " [I] Update required" + exe sed -i "s/^external-ip[[:space:]]*=.*/external-ip=${pubIp}/" "$toolConf" + exe service coturn restart + else + echoseq " [I] No update required" + fi +} + +step_12_info() { echo "Setup public ip update cron job every 5 minutes"; } +step_12_alias() { ALIAS="cronip"; } +step_12() { + echoseq " [I] Setup $ipCronLoc" + addConf -s "$ipCron" "$ipCronLoc" +} +ipCronLoc="/etc/cron.d/update_public_ip" +ipCron="*/5 * * * * root $WDIR/$SCRIPT_FILE -qq updateip" + +VERSION_SEQREV=12 +. /usr/local/bin/sequencer.sh