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