Ceci est une ancienne révision du document !
Page de CallBack Simple
Ce tuto vous permet de créer une petite page de callback simple. Une fois cette page en place, vous pouvez vous connecter sur https:<serveur>/callback, et vous trouverez une page comportant 2 champs * Le premier est le numéro sur lequel votre serveur asterisk doit vous appeler * le second est le numéro de téléphone de la personne que vous souhaitez appeler * Asterisk se chargera de vous appeler, puis d'appeler votre destinataire, et mettra les deux canaux en relation. ===== Installation des paquets nécessaires ===== <code bash> yum –enablerepo=fws install perl-Asterisk-AMI </code> ===== Mise en place du script ===== <code bash> mkdir -p /opt/callback/ cat «'EOF' > /opt/callback/index.cgi #!/usr/bin/perl -w use Asterisk::AMI; use CGI qw/:standard/; my $q = new CGI; print $q→header, $q→start_html(), $q→h1('page de callback'), $q→start_form, “Entrez ici votre numero ”,textfield('nback'),p, “Entrez ici le numero de votre destinataire ”, textfield('ndest'),p, $q→submit, $q→end_form, $q→hr; if ($q→param()) { my $nback = $q→param('nback'); my $ndest = $q→param('ndest'); $nback =~ s/[\s\(\)\.<>]g;
$ndest =~ s/[\s\(\)\.<>]//g;
unless (($nback =~ m/^\d+$/) && ($ndest =~ m/^\d+$/)){ print $q->h1('un des numeros ne semble pas valide, ils ne doivent contenir que des chiffres'); die ('bad number'); }
my $astman = Asterisk::AMI->new(PeerAddr => '127.0.0.1', PeerPort => '5038', Username => 'callback', Secret => '__PASSWD__' );
die "Unable to connect to asterisk" unless ($astman);
my $response = $astman->action({Action => 'Originate', Channel => "Local/$nback\@from-internal", Context => 'from-internal', CallerID => $ndest, Exten => $ndest, Priority => 1});
} EOF chown root:www /opt/callback/index.cgi chmod 750 /opt/callback/index.cgi </code>
Création d'un utilisateur pour l'accès au manager d'asterisk
cat <<HERE >> /etc/asterisk/manager_custom.conf [callback] secret = __SECRET__ deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.255 read = system,call,log,verbose,command,agent,user write = system,call,log,verbose,command,agent,user EOF
Génération d'un mot de passe aléatoire
On va maintenant créer un mot de passe parfaitement aléatoire pour cet utilisateur callback (et remplacer les SECRET)
openssl rand -base64 60 | tr -c -d '[:alnum:]' > ~/callback.secret chmod 600 ~/callback.secret export SECRET=$(cat ~/callback.secret) sed -i -e "s/__SECRET/$SECRET/g" /etc/asterisk/manager_custom.conf sed -i -e "s/__SECRET/$SECRET/g" /opt/callback/index.cgi unset SECRET rm -f ~/callback.secret
Configuration apache
Il ne reste plus qu'on configurer apache pour rendre ce script accessible
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf cat <<EOF > /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/90callback ScriptAlias /callback /opt/callback/index.cgi <Directory /opt/callback> order deny,allow deny from all allow from all Options ExecCGI AllowOverride None AuthName "Callback" AuthType Basic AuthExternal pwauth require user admin user1 user2 Satisfy all </Directory> EOF
En remplaçant admin user1 user2 par la liste des utilisateurs qui doivent y avoir accès (require valid-user pour que n'importe quel utilisateur authentifié ait accès à la page)
Reste plus qu'à étendre les templates et tester
expand-template /etc/httpd/conf/httpd.conf sv t /service/httpd-e-smith