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