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
yum --enablerepo=fws --enablerepo=rpmforge install perl-Asterisk-AMI
Mise en place du script
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 => '__SECRET__' ); 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
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