X-Git-Url: http://git.auf.org/?p=asterisk-config-auf-connexions.git;a=blobdiff_plain;f=creer-fichiers;h=5f28963fb62ce55455507077857b75842ae73ff2;hp=b3e4a9ec48a29e828bb8aa22db52db6b067bdd08;hb=e3100202fed3ff1df27823756187929d25f81bd8;hpb=0afa8158296641c5c16ebd0200873b65ff48ea35;ds=sidebyside diff --git a/creer-fichiers b/creer-fichiers index b3e4a9e..5f28963 100755 --- a/creer-fichiers +++ b/creer-fichiers @@ -1,7 +1,15 @@ -#!/bin/sh +#!/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 @@ -10,54 +18,73 @@ cat << EOF > $IAX ; (Note: le fichier iax.conf fourni par le paquet asterisk-config-auf ; effectue déjà cette inclusion) ; -; 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 -; +$AVERTISSEMENT ; Authentification RSA : il faut disposer de la clé publique de chaque user : -; /var/lib/asterisk/keys/inkeys.pub (voir sur http://tech.auf/wiki/AsteriskRSA) +; /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 > $EXTEN -; /etc/asterisk/auf/$EXTEN +cat << EOF > $IAXCALLTOKEN +; /etc/asterisk/auf/$IAXCALLTOKEN +; Fichier à inclure dans le contexte [general] de iax.conf +; (avant les autre #include) 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 $EXTEN" +; avec : "#include $f" ; (Note: le fichier extensions.conf fourni par le paquet asterisk-config-auf ; effectue déjà cette inclusion) ; -; 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 -; +$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 +echo " || '''Nom''' || '''Préfixe''' || '''Masque''' ||" > pourwiki.txt -grep -ve "^ *#" liste-serveurs | grep ":" | while read L +sed -e 's/#.*$//' -e 's/[[:space:]]*$//' -e '/^$/d' liste-serveurs-canon | \ +while IFS=":" read prefix extenpat server username do - L=`echo $L | tr -dc []a-zA-Z0-9:_.-` - username=`echo $L | cut -f1 -d:` - prefix=`echo $L | cut -f2 -d:` - server=`echo $L | cut -f3 -d:` - - prefixlen=`echo $L | cut -f4 -d:` - if [ x${prefixlen} = x ]; then - prefixlen=`echo -n $prefix | wc -c` - fi + 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 " server=$server ($serverip)" echo " pubkey=keys/$username.pub" echo "" pourwiki=`echo $username | sed 's/^auf-//'` - echo " || $pourwiki || $prefix ||" >> pourwiki.txt + echo " || $pourwiki || $prefix || $extenpat ||" >> pourwiki.txt #echo "" >> pourwiki.txt #echo " $pourwiki::" >> pourwiki.txt #echo " . serveur : $server" >> pourwiki.txt @@ -80,8 +107,23 @@ 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 @@ -89,5 +131,12 @@ EOF 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