# fichier ou on stocke les infos pour le cgi d'autoconf
my $autoconf_old="/srv/www/ipphones/utilisateurs";
+# emplacement de l'annuaire
+my $annuaire_old="/srv/www/ipphones/annuaire.phb";
+
################################################################################
use strict;
sub table_ext($$);
sub table_voicemail($$$$);
sub table_autoconf($$);
+sub table_annuaire($$$);
sub usage();
+# numero de rang dans l'annuaire
+my $speedial=1;
+
+# somme des versions des extensions
+# pour verifier si l'annuaire a changé ou non
+my $annuaire_somme_extensions = 0;
+
my %anciennes_extensions=();
# type de table a generer
my $table=(@ARGV ? $ARGV[0] : "undef");
-my $tables_connues="(iax|sip|ext|autoconf|voicemail)";
+my $tables_connues="(iax|sip|ext|annuaire|autoconf|voicemail)";
usage() unless ($table =~ /^$tables_connues$/);
die "il manque la variable AUFPREFIXLOCAL dans $conf_asterisk" unless ($PREFIXE);
print ";\n;\n; ATTENTION. LA CREATION DE CE FICHIER EST AUTOMATIQUE. MODIFIER LE FICHIER 'utilisateurs'\n; PUIS LANCER UN 'make'\n;\n;\n"
- unless ($table eq "autoconf");
+ unless ($table eq "autoconf" or $table eq "annuaire");
while(<STDIN>)
{
case "sip" { table_sip($ext,$username,$fullname,$pass,$ip);}
case "ext" { table_ext($ext,$username);}
case "autoconf" { table_autoconf($ext,$username);}
+ case "annuaire" { table_annuaire($ext,$username,$fullname);}
case "voicemail" { table_voicemail($ext,$username,$fullname,$passmail);}
else
{
}
}
+if($table eq "annuaire")
+ {
+ # conclure par le numero de version de l'annuaire...
+ # verifier l'ancienne version...
+
+ my $version_annuaire = 0;
+ my $version_extensions = 0;
+
+ if(open FILE,"$annuaire_old")
+ {
+ while(<FILE>)
+ {
+ next unless (/^VERSION (\d+):(\d+)/);
+ $version_annuaire = $1;
+ $version_extensions = $2;
+ }
+ }
+ if($version_extensions != $annuaire_somme_extensions)
+ {
+ # alors il faut augmenter le numero de version de l'annuaire
+ $version_annuaire++;
+ }
+ print "VERSION $version_annuaire:$annuaire_somme_extensions\n";
+ }
+
# a changer pour la table "iax" : fixer l'ip quand elle est connue
sub table_iax($$$$$)
{
[$username]
type=friend
callerid="$fullname" <$PREFIXE$ext>
-mailbox=$ext\@default
+mailbox=$ext\@AUF
username=$username
secret=$pass
context=AUF
host=dynamic
disallow=all
allow=ulaw
+call-limit=10
EOT
my ($ext,$username) = @_;
print <<EOT ;
exten => $ext,1,Macro(AUFDial,$username)
+exten => $username,1,Macro(AUFDial,$username)
+exten => $ext,hint,SIP/$username&IAX2/$username
+exten => $username,hint,SIP/$username&IAX2/$username
+
EOT
}
print "$username $ext $version\n";
}
+sub table_annuaire($$$)
+{
+ my ($ext,$username,$fullname) = @_;
+ #$username =~ s/\./ /g;
+ #$username =~ s/(^|\s)([a-z])/$1\u$2/g;
+ print "memory$speedial:$fullname\n";
+ print "number$speedial:$ext\n";
+ $speedial++;
+
+ # ajouter a la somme des versions des extensions
+ my ($old_ext,$version) = ancienne_extension($username);
+ # on utlisate l'extension "globale" pour configurer les telephones
+ $ext = "$PREFIXE$ext";
+ $version ++ if($ext != $old_ext);
+ $annuaire_somme_extensions += $version;
+}
+
sub usage()
{
print STDERR "usage : $0 $tables_connues <utilisateurs\n";