version 1:1.8.1 -- branche pour le support Asterisk 1.8 sur Wheezy
[asterisk-config-auf-connexions.git] / creer-fichiers
1 #!/bin/bash
2
3 IAX=iax.global
4 EXTEN=extensions.global
5 EXTENCANON=extensions-canon.global
6
7 AVERTISSEMENT="\
8 ; ATTENTION : NE PAS TOUCHER A CE FICHIER. IL FAIT PARTIE DU
9 ; PAQUET asterisk-config-auf-connexions ET SERA MIS A JOUR
10 ; LORS DE L'AJOUT DE NOUVEAUX SITES VOIP AUF
11 ;"
12
13 cat << EOF > $IAX
14 ; /etc/asterisk/auf/$IAX
15 ; Liaisons IAX inter implantations à inclure à la fin de iax.conf
16 ; avec : #include "$IAX"
17 ; (Note: le fichier iax.conf fourni par le paquet asterisk-config-auf
18 ; effectue déjà cette inclusion)
19 ;
20 $AVERTISSEMENT
21 ; Authentification RSA : il faut disposer de la clé publique de chaque user :
22 ; /usr/share/asterisk/keys/inkeys.pub (voir sur http://tech.auf/wiki/AsteriskRSA)
23 ; Note : pour l'AUF les clés sont fournies par le paquet
24 ; asterisk-config-auf-connexions
25 ;
26
27 EOF
28
29
30 for f in $EXTEN $EXTENCANON ; do
31   cat << EOF > $f
32 ; /etc/asterisk/auf/$f
33 ; Fichier à inclure dans le contexte [AUF] de extensions.conf
34 ; avec : "#include $f"
35 ; (Note: le fichier extensions.conf fourni par le paquet asterisk-config-auf
36 ; effectue déjà cette inclusion)
37 ;
38 $AVERTISSEMENT
39
40 EOF
41 done
42
43 cat << EOF > liste-serveurs
44 # Format
45 # username:prefix:serveur[:longueur_prefixe]
46 EOF
47 sed -e '/^[^#]/s/[[:space:]]*#.*$//' liste-serveurs-canon | tail -n +3 | \
48 awk -F: '
49 /^[0-9\[\]]+:/ {
50   prefixlen = length(gensub(/\[[^]]*\]/,"?","g",$1))
51   if (prefixlen != length($1)) {
52     $0 = sprintf("%s:%s:%s:%s",$4,$1,$3,prefixlen)
53   } else {
54     $0 = sprintf("%s:%s:%s",$4,$1,$3)
55   }
56 }
57 {
58   print
59 }' >> liste-serveurs
60
61 echo " || '''Nom''' || '''Préfixe''' || '''Masque''' ||" > pourwiki.txt
62
63 sed -e 's/#.*$//' -e 's/[[:space:]]*$//' -e '/^$/d' liste-serveurs-canon | \
64 while IFS=":" read prefix extenpat server username
65 do
66         prefixlen=`echo -n "$prefix" | sed 's/\[[^]]*\]/?/g' | wc -c`
67         serverip=`LANG= host -t a $server | sed '/[[:space:]]\(has address\|A\)[[:space:]]/s/^.*[[:space:]]//p;d'`
68
69         echo "$username"
70         echo "  prefix=$prefix ($prefixlen chiffres)"
71         echo "  server=$server ($serverip)"
72         echo "  pubkey=keys/$username.pub"
73         echo ""
74
75         pourwiki=`echo $username | sed 's/^auf-//'`
76         echo " || $pourwiki || $prefix || $extenpat ||" >> pourwiki.txt
77         #echo ""  >> pourwiki.txt
78         #echo " $pourwiki::" >> pourwiki.txt
79         #echo "  . serveur : $server" >> pourwiki.txt
80         #echo "  . username : $username" >> pourwiki.txt
81         #echo "  . extension : $prefix" >> pourwiki.txt
82         #echo "  {{{" >> pourwiki.txt
83         #cat keys/$username.pub >> pourwiki.txt
84         #echo "}}}" >> pourwiki.txt
85         
86         if [ ! -f keys/$username.pub ]; then
87                 echo "ERREUR : il manque la clé keys/$username.pub"
88                 echo ""
89                 exit 1
90         fi
91
92         cat << EOF >> $IAX
93 [$username]
94 type=user
95 auth=rsa
96 inkeys=$username
97 host=dynamic
98 context=AUF
99 requirecalltoken=auto
100
101 EOF
102
103         cat << EOF >> $EXTEN
104 ; Liaison vers $username
105 ; prefix=$prefix serveur=$server
106 exten => _\${AUFPREFIX}$prefix.,1,Dial(IAX2/\${AUFAUTH}@$server/\${EXTEN:\$[\${AUFPREFIXLEN} + $prefixlen]}@AUF,90,rtThH)
107
108 EOF
109         cat << EOF >> $EXTENCANON
110 ; Liaison vers $username
111 ; prefix=$prefix exten_pattern=$extenpat server=$server
112 exten => _\${AUFPREFIX}${prefix}${extenpat},1,Dial(IAX2/\${AUFAUTH}@${server}/\${EXTEN:\$[\${AUFPREFIXLEN} + ${prefixlen}]}@AUF,90,rtThH)
113 exten => _\${AUFPREFIX}${prefix}*.,1,Dial(IAX2/\${AUFAUTH}@${server}/\${EXTEN:\$[\${AUFPREFIXLEN} + ${prefixlen}]}@AUF,90,rtThH)
114
115 EOF
116
117 done