Files
FEDEO/telephony/render-asterisk-config.sh

121 lines
3.1 KiB
Bash
Executable File

#!/bin/sh
set -eu
GENERATED_DIR="${ASTERISK_GENERATED_DIR:-/etc/asterisk/generated}"
mkdir -p "$GENERATED_DIR"
PJSIP_FILE="$GENERATED_DIR/pjsip.telekom.conf"
EXTENSIONS_FILE="$GENERATED_DIR/extensions.telekom.conf"
enabled="${TELEPHONY_TELEKOM_ENABLED:-false}"
if [ "$enabled" != "true" ] && [ "$enabled" != "1" ] && [ "$enabled" != "yes" ]; then
if grep -q "Von FEDEO generiert" "$PJSIP_FILE" 2>/dev/null \
&& ! grep -q "Telekom-Trunk ist deaktiviert" "$PJSIP_FILE" 2>/dev/null; then
echo "FEDEO Telefonie: bestehende FEDEO-Trunk-Konfiguration bleibt erhalten."
exit 0
fi
cat > "$PJSIP_FILE" <<'EOF'
; Telekom-Anbindung ist deaktiviert.
EOF
cat > "$EXTENSIONS_FILE" <<'EOF'
; Telekom-Anbindung ist deaktiviert.
EOF
exit 0
fi
registrar="${TELEPHONY_TELEKOM_REGISTRAR:-tel.t-online.de}"
sip_user="${TELEPHONY_TELEKOM_SIP_USER:-}"
auth_user="${TELEPHONY_TELEKOM_AUTH_USER:-$sip_user}"
password="${TELEPHONY_TELEKOM_PASSWORD:-}"
caller_id="${TELEPHONY_TELEKOM_CALLER_ID:-$sip_user}"
inbound_extension="${TELEPHONY_TELEKOM_INBOUND_EXTENSION:-1001}"
outbound_prefix="${TELEPHONY_TELEKOM_OUTBOUND_PREFIX:-0}"
if [ -z "$sip_user" ] || [ -z "$password" ]; then
cat > "$PJSIP_FILE" <<'EOF'
; Telekom-Anbindung ist aktiviert, aber TELEPHONY_TELEKOM_SIP_USER oder TELEPHONY_TELEKOM_PASSWORD fehlt.
EOF
cat > "$EXTENSIONS_FILE" <<'EOF'
; Telekom-Anbindung ist aktiviert, aber nicht vollständig konfiguriert.
EOF
echo "FEDEO Telefonie: Telekom-Anbindung unvollständig, Trunk wird nicht erzeugt." >&2
exit 0
fi
cat > "$PJSIP_FILE" <<EOF
; Automatisch aus Umgebungsvariablen erzeugt. Nicht in Git einchecken.
[telekom-auth]
type=auth
auth_type=userpass
username=$auth_user
password=$password
[telekom-aor]
type=aor
contact=sip:$registrar
qualify_frequency=60
[telekom]
type=endpoint
transport=transport-udp
context=from-telekom
disallow=all
allow=alaw,ulaw
aors=telekom-aor
outbound_auth=telekom-auth
from_user=$sip_user
from_domain=$registrar
callerid=Telekom <$caller_id>
direct_media=no
force_rport=yes
rewrite_contact=yes
rtp_symmetric=yes
timers=no
[telekom-registration]
type=registration
transport=transport-udp
outbound_auth=telekom-auth
server_uri=sip:$registrar
client_uri=sip:$sip_user@$registrar
contact_user=$sip_user
retry_interval=60
expiration=480
line=yes
endpoint=telekom
[telekom-identify]
type=identify
endpoint=telekom
match=$registrar
EOF
cat > "$EXTENSIONS_FILE" <<EOF
; Automatisch aus Umgebungsvariablen erzeugt. Nicht in Git einchecken.
[fedeo-local]
exten => _${outbound_prefix}X.,1,NoOp(FEDEO ausgehend über Telekom: \${EXTEN})
same => n,Set(CALLERID(num)=$caller_id)
same => n,Dial(PJSIP/\${EXTEN}@telekom,60)
same => n,Hangup()
exten => _+X.,1,NoOp(FEDEO ausgehend über Telekom: \${EXTEN})
same => n,Set(CALLERID(num)=$caller_id)
same => n,Dial(PJSIP/\${EXTEN}@telekom,60)
same => n,Hangup()
[from-telekom]
exten => s,1,NoOp(FEDEO eingehend über Telekom)
same => n,Dial(PJSIP/$inbound_extension,30)
same => n,Hangup()
exten => _X!,1,NoOp(FEDEO eingehend über Telekom: \${EXTEN})
same => n,Dial(PJSIP/$inbound_extension,30)
same => n,Hangup()
EOF
echo "FEDEO Telefonie: Telekom-Trunk für $sip_user@$registrar erzeugt."