tuto:ipasserelle:telephonie:page_de_callback

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tuto:ipasserelle:telephonie:page_de_callback [18/11/2011 13:03]
dani [Installation des paquets nécessaires]
tuto:ipasserelle:telephonie:page_de_callback [12/07/2012 18:35]
dani Page moved from page_de_callback to tuto:ipasserelle:telephonie:page_de_callback
Ligne 2: Ligne 2:
  
 Ce tuto vous permet de créer une petite page de callback simple. Une fois cette page en place, vous pouvez vous connecter sur <nowiki>https://<serveur>/callback</nowiki>, et vous trouverez une page comportant 2 champs Ce tuto vous permet de créer une petite page de callback simple. Une fois cette page en place, vous pouvez vous connecter sur <nowiki>https://<serveur>/callback</nowiki>, et vous trouverez une page comportant 2 champs
-  * Le premier est le numéro sur lequel votre serveur asterisk doit vous appeler+  * Le premier est le numéro sur lequel votre serveur doit vous appeler
   * le second est le numéro de téléphone de la personne que vous souhaitez appeler   * le second est le numéro de téléphone de la personne que vous souhaitez appeler
  
Ligne 10: Ligne 10:
 ===== Mise en place du script ===== ===== Mise en place du script =====
 <code bash> <code bash>
-mkdir -p /opt/callback+yum install smeserver-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') || $ENV{'HTTP_USER_EXTENSION'}; +
-      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+
 </code> </code>
  
-===== Création d'un utilisateur pour l'accès au manager d'asterisk ===== +Puis
 <code bash> <code bash>
-cat <<EOF >> /etc/asterisk/manager_custom.conf +signal-event webapps-update
-[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+
 </code> </code>
  
-===== Génération d'un mot de passe aléatoire ===== +===== Paramètrage ===== 
-On va maintenant créer un mot de passe parfaitement aléatoire pour cet utilisateur callback (et remplacer les __SECRET__)+Le script peut se configurer via la DB SME. Les propriété suivantes sont disponibles:
  
-<code bash> +  * Host: le nom ou l'adresse IP du serveur Asterisk (localhost par défaut) 
-openssl rand -base64 60 | tr -c -d '[:alnum:]> ~/callback.secret +  * Portle port du manager (5038 par défaut) 
-chmod 600 ~/callback.secret +  * Userle num de l'utilisateur pour se connecter au manager (callback par défaut) 
-export SECRET=$(cat ~/callback.secret+  * Secret: le mot de passe pour se connecter au manager (généré aléatoirement par défaut
-sed -i -e "s/__SECRET__/$SECRET/g" /etc/asterisk/manager_custom.conf +  * access: peut être private (par défaut) ou publicCe paramètre contrôle depuis où cette page sera accessible 
-sed -i -e "s/__SECRET__/$SECRET/g" /opt/callback/index.cgi +  * AliasOnPrimary: enabled (par défaut) ou disabledSi disabled, alors l'alias /callback ne sera pas créé sur le domaine principal, et la page ne sera accessible que si vous créez un virtual host qui pointe dessus 
-unset SECRET +  * RequireSSL yes (par défaut) ou noContrôle l'obligation d'utiliser le protocole https 
-rm -f ~/callback.secret +  * status: enabled (par défaut) ou disabled. Permet de désactiver la page
-</code>+
  
-===== Rechargement de la configuration d'asterisk ===== +===== Création d'un virtualhost =====
-<code bash> +
-asterisk -rx 'reload' +
-</code> +
-===== Configuration apache ===== +
-Il ne reste plus qu'on configurer apache pour rendre ce script accessible +
-<code bash> +
-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 +Voilà comment créer un virtualhostprotégé par LemonLDAP::NG, qui donnera accès à cette page:
-<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+<code bash> 
 +db domains set callback.$(db configuration get DomainName) domain Content Primary Description "page de callback" DocumentRoot /usr/share/callback LemonLDAP enabled TemplatePath WebAppVirtualHost 
 +signal-event domain-create callback.$(db configuration get DomainName)
 </code> </code>
-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 
  
 +Il ne reste qu'à désactiver l'accès depuis le domaine principal (pour éviter de court-circuiter l'authentification LemonLDAP::NG
 <code bash> <code bash>
-expand-template /etc/httpd/conf/httpd.conf +db configuration setprop callback AliasOnPrimary disabled 
-sv t /service/httpd-e-smith+signal-event webapps-update
 </code> </code>
  • tuto/ipasserelle/telephonie/page_de_callback.txt
  • Dernière modification: 12/07/2012 18:35
  • de dani