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 [16/11/2010 19:38]
dani [Création d'un utilisateur pour l'accès au manager d'asterisk]
tuto:ipasserelle:telephonie:page_de_callback [12/07/2012 18:35] (Version actuelle)
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
-  * +
 Asterisk se chargera de vous appeler, puis d'appeler votre destinataire, et mettra les deux canaux en relation. 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 --enablerepo=rpmforge install perl-Asterisk-AMI 
-</code> 
  
 ===== 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'); +
-      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>+
  
-===== Configuration apache ===== +===== Création d'un virtualhost =====
-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.1289932680.txt.gz
  • Dernière modification: 16/11/2010 19:38
  • de dani