#!/bin/bash IAX=iax.global IAXCALLTOKEN=iax-calltoken.global EXTEN=extensions.global EXTENCANON=extensions-canon.global AVERTISSEMENT="\ ; ATTENTION : NE PAS TOUCHER A CE FICHIER. IL FAIT PARTIE DU ; PAQUET asterisk-config-auf-connexions ET SERA MIS A JOUR ; LORS DE L'AJOUT DE NOUVEAUX SITES VOIP AUF ;" cat << EOF > $IAX ; /etc/asterisk/auf/$IAX ; Liaisons IAX inter implantations à inclure à la fin de iax.conf ; avec : #include "$IAX" ; (Note: le fichier iax.conf fourni par le paquet asterisk-config-auf ; effectue déjà cette inclusion) ; $AVERTISSEMENT ; Authentification RSA : il faut disposer de la clé publique de chaque user : ; /usr/share/asterisk/keys/inkeys.pub (voir sur http://tech.auf/wiki/AsteriskRSA) ; Note : pour l'AUF les clés sont fournies par le paquet ; asterisk-config-auf-connexions ; EOF cat << EOF > $IAXCALLTOKEN ; /etc/asterisk/auf/$IAXCALLTOKEN ; Fichier à inclure dans le contexte [general] de iax.conf ; avec : "#include $IAXCALLTOKEN" ; (Note: le fichier iax.conf fourni par le paquet asterisk-config-auf ; n'effectue PAS cette inclusion ; il faut la faire soi-même) ; $AVERTISSEMENT EOF for f in $EXTEN $EXTENCANON ; do cat << EOF > $f ; /etc/asterisk/auf/$f ; Fichier à inclure dans le contexte [AUF] de extensions.conf ; avec : "#include $f" ; (Note: le fichier extensions.conf fourni par le paquet asterisk-config-auf ; effectue déjà cette inclusion) ; $AVERTISSEMENT EOF done cat << EOF > liste-serveurs # Format # username:prefix:serveur[:longueur_prefixe] EOF sed -e '/^[^#]/s/[[:space:]]*#.*$//' liste-serveurs-canon | tail -n +3 | \ awk -F: ' /^[0-9\[\]]+:/ { prefixlen = length(gensub(/\[[^]]*\]/,"?","g",$1)) if (prefixlen != length($1)) { $0 = sprintf("%s:%s:%s:%s",$4,$1,$3,prefixlen) } else { $0 = sprintf("%s:%s:%s",$4,$1,$3) } } { print }' >> liste-serveurs echo " || '''Nom''' || '''préfixe''' ||" > pourwiki.txt sed -e 's/#.*$//' -e 's/[[:space:]]*$//' -e '/^$/d' liste-serveurs-canon | \ while IFS=":" read prefix extenpat server username do prefixlen=`echo -n "$prefix" | sed 's/\[[^]]*\]/?/g' | wc -c` serverip=`LANG= host -t a $server | sed '/[[:space:]]\(has address\|A\)[[:space:]]/s/^.*[[:space:]]//p;d'` echo "$username" echo " prefix=$prefix ($prefixlen chiffres)" echo " server=$server" echo " pubkey=keys/$username.pub" echo "" pourwiki=`echo $username | sed 's/^auf-//'` echo " || $pourwiki || $prefix ||" >> pourwiki.txt #echo "" >> pourwiki.txt #echo " $pourwiki::" >> pourwiki.txt #echo " . serveur : $server" >> pourwiki.txt #echo " . username : $username" >> pourwiki.txt #echo " . extension : $prefix" >> pourwiki.txt #echo " {{{" >> pourwiki.txt #cat keys/$username.pub >> pourwiki.txt #echo "}}}" >> pourwiki.txt if [ ! -f keys/$username.pub ]; then echo "ERREUR : il manque la clé keys/$username.pub" echo "" exit 1 fi cat << EOF >> $IAX [$username] type=user auth=rsa inkeys=$username host=dynamic context=AUF ;requirecalltoken=auto EOF if [ -n "$serverip" ] ; then cat << EOF >> $IAXCALLTOKEN ; $server calltokenoptional=$serverip EOF else cat << EOF >> $IAXCALLTOKEN ; $server ;calltokenoptional= EOF fi cat << EOF >> $EXTEN ; Liaison vers $username ; prefix=$prefix serveur=$server exten => _\${AUFPREFIX}$prefix.,1,Dial(IAX2/\${AUFAUTH}@$server/\${EXTEN:\$[\${AUFPREFIXLEN} + $prefixlen]}@AUF,90,rtThH) EOF cat << EOF >> $EXTENCANON ; Liaison vers $username ; prefix=$prefix exten_pattern=$extenpat server=$server exten => _\${AUFPREFIX}${prefix}${extenpat},1,Dial(IAX2/\${AUFAUTH}@${server}/\${EXTEN:\$[\${AUFPREFIXLEN} + ${prefixlen}]}@AUF,90,rtThH) exten => _\${AUFPREFIX}${prefix}*.,1,Dial(IAX2/\${AUFAUTH}@${server}/\${EXTEN:\$[\${AUFPREFIXLEN} + ${prefixlen}]}@AUF,90,rtThH) EOF done