#!/bin/bash # Prüfe welche SIP-Clients installiert sind und rufe den SIP-Teilnehmer mit einem Client an. Wenn keiner zur Verfügung steht, soll die SIP-Adresse per 'echo' ausgegeben werden. # Check which SIP-clients are available and call the SIP-user with the client. If there is no client available, 'echo' the SIP-address to the console. if [ -x /usr/bin/twinkle ]; then sipapp='/usr/bin/twinkle --call'; elif [ -x /usr/bin/linphone-3 ]; then sipapp='/usr/bin/linphone-3 -c'; elif [ -x /usr/bin/ekiga ]; then sipapp='/usr/bin/ekiga -c'; else sipapp='echo'; fi # Teste auf Verfügbarkeit eines Web Browsers für eventuell vorhandene Geo-Einträge # Check for availability of a web browser for geo-data entries if [ -x /usr/bin/firefox ]; then geoapp='/usr/bin/firefox' elif [ -x /usr/bin/epiphany-browser ]; then geoapp='/usr/bin/epiphany-browser' else geoapp='echo' fi # Entferne eventuell vorhandene 00-Vorwahl oder + vor einer Nummer # Remove leading 00 or + if [ "${1:0:2}" == "00" ]; then number=`echo $1 | sed -e 's/00//'` elif [ "${1:0:1}" == "+" ]; then number=`echo $1 | sed -e 's/+//'` elif [ "$1" == "" ]; then exit 1 else number=`echo $1` fi number=`echo $number | rev | sed -e 's/[ |+|/| -|.|]//g' -e 's/[0-9]/&./g'` # ENUM DNS-Server abfragen # Lookup ENUM DNS-servers for enum in e164.org e164.arpa e164.bz e164.info do # Auf 1 zu setzende Variable, falls relevanter Inhalt gefunden wurde # Set this variable to 1, if this script found anything isentry=0 # Befehl zur DNS-Abfrage # Command for DNS-query dnsrec='host -t naptr '${number}${enum} # SIP-Adresse # SIP-address sipadr=`$dnsrec | egrep -o "(sip\:)+[0-9a-zA-Z\-\.]{,}+\@+[0-9a-zA-Z\-\.]{,}"` # geoographische Daten (vorbereitet f. OpenStreetMaps) # geographical data (prepared for OpenStreetMaps) geoloc=`$dnsrec | egrep -o 'geo:[0-9\.\,]*' | sed -e 's/,/\&lon=/g'` # Adresse (postalisch) # street adress stradr=`$dnsrec | grep ADDRESS | egrep -o 'base64,[a-zA-Z0-9]*'` if [ -n "$sipadr" ]; then $sipapp $sipadr &> /dev/null & isentry=1 fi if [ -n "$stradr" ]; then echo ${stradr:7} | base64 -d | sed -e 's/;/\r\n/g' | awk -F '=' '{print $2}' # | egrep -o '=(.*)' | sed -e 's/=/ /g' isentry=1 fi if [ -n "$geoloc" ]; then $geoapp 'http://www.openstreetmap.org/?lat='${geoloc:4}'&zoom=17&layers=M' &> /dev/null & isentry=1 fi if [ "$isentry" != "1" ]; then echo "Kein ENUM-Eintrag gefunden in ${enum} für $1"; # echo "No ENUM-entry found in ${enum} for $1" fi done