Préparation au nomadisme et à asterisk 1.8 !
[asterisk-config-auf-connexions.git] / creer-fichiers
index b3e4a9e..77d816f 100755 (executable)
@@ -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,45 +18,64 @@ 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
+; 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
 
-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 '/ has address /s/^.* //p;d'`
 
        echo "$username"
        echo "  prefix=$prefix ($prefixlen chiffres)"
@@ -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