<chapter id="callback">
<title
>Configurer &kppp; pour le rappel automatique</title>

<para
>Ce chapitre est basé sur le travail fourni par Martin H&auml;fner, <email
>mh@ap-dec717c.physik.uni-karlsruhe.de</email
></para>

<sect1 id="unix-callback-server">
<title
>Les serveurs de rappel automatique sous &UNIX; ou &Linux;</title>

<para
>Cette section est une présentation du rappel automatique sous &UNIX; (&Linux;). Elle explique aussi comment &kppp; peut être configuré si l'on veut se connecter à un serveur &UNIX; de rappel automatique. Spécialement pour un <link linkend="callback-resources"
>serveur de rappel</link
> sous &Linux; se basant sur des scripts.</para>

<sect2>
<title
>Une introduction au rappel automatique</title>

<para
>Il y a plusieurs raisons d'utiliser le rappel automatique. Quelques unes d'entre elles sont :</para>

<itemizedlist>
<listitem>
<para
>Pour augmenter la sécurité de votre réseau local</para>
</listitem>
<listitem>
<para
>Pour réduire les dépenses des collaborateurs travaillant depuis l'extérieur</para>
</listitem>
<listitem>
<para
>Pour contrôler les dépenses téléphoniques lorsqu'elles sont déclarées comme étant professionnelles</para>
</listitem>
</itemizedlist>

<para
>Dites-vous que si une personne appelle le numéro de votre serveur de connexion, et qu'il parvient à pirater le mot de passe. Pourquoi vous embêtez-vous à configurer un Pare-feu pour sécuriser votre connexion à internet si son accès est aussi simple ?</para>

<para
>Les programmes de rappel automatique vous demandent généralement votre nom, puis ils raccrochent la ligne. Enfin ils vous rappellent, habituellement, à un numéro qui est stocké <emphasis
>sur le serveur</emphasis
> dans une base de données. Le client décroche ensuite la ligne et continue comme si rien ne s'était passé. Le serveur vous demande alors votre nom d'utilisateur et votre mot de passe. tout en sachant qu'il vous a déjà identifié lors du premier appel. La connexion est établie normalement et le programme <application
>pppd</application
> est lancé.</para>

<para
>Maintenant la question est, comment dire au client de décrocher le téléphone lorsque le serveur vous rappelle. Avez-vous besoin d'un programme particulier, comme <application
>mgetty</application
> ? La réponse est <emphasis
>non</emphasis
>, vous n'avez pas besoin d'une application particulière. En général, n'importe quel client peut être utilisé pour le rappel automatique, vous pourriez même utiliser un terminal ordinaire comme <application
>minicom</application
> pour la connexion.</para>

<para
>La seul chose que vous ayez à faire est de dire à votre modem de <command
>Répondre Automatiquement</command
> au téléphone lorsque une <computeroutput
>SONNERIE</computeroutput
> est détectée par le modem. Cela est réalisé grâce à la commande modem suivante :</para>

<screen
><userinput
><command
>AT&amp;SO=1</command
></userinput
>
</screen>

<para
>Cela ordonne au modem de prendre la ligne après une <computeroutput
>SONNERIE</computeroutput
>.</para>

<para
>De même que de nombreux autres programmes clients, &kppp; contrôle que  la connexion soit fermée par le serveur, et ensuite arrête la session en cours si un signal <computeroutput
>NO CARRIER</computeroutput
> est détecté. Le réel problème lorsqu'on configure le rappel survient maintenant. Le signal <computeroutput
>NO CARRIER</computeroutput
> sera bien entendu détecté lorsque le serveur coupera la ligne. Parfois, certain serveur utilisent un programme de connexion particulier. Donc comment régler le problème ? Dites à votre modem d'afficher <computeroutput
>CARRIER UP</computeroutput
> à chaque fois (ce qui ne pose pas de problème si vous dites au client de raccrocher la ligne). Vous pouvez utiliser la commande suivante pour réaliser cela :</para>

<screen
><userinput
><command
>AT&amp;C0</command
></userinput
>
</screen>

<para
>Si vous voulez tester cela, vous pouvez commencer par utiliser un terminal ordinaire comme <application
>minicom</application
>, et appeler votre serveur de rappel afin de voir ce qui se passe.</para>

</sect2>

<sect2>
<title
>Configuration de &kppp;</title>

<para
>Maintenant que vous avez vu la théorie, comment configurer &kppp; pour contrôler la connexion ? </para>

<para
>La procédure est assez simple.</para>

<procedure>
<step>
<para
>Premièrement, dites au modem d'accepter les connexions, et de ne pas arrêter les négocations lorsque le serveur de rappel déccroche pour la première fois. Vous pouvez ajouter ces options dans l'onglet <guilabel
>Modem</guilabel
> du menu de configuration de &kppp; en ajoutant les paramètres <command
>AT&amp;C0S0=1DT</command
> au champ <guilabel
>Chaîne de numérotation</guilabel
>.</para>
<para
>Il n'y a pas d'autre modification des réglages de &kppp; à faire. Si vous rencontrez des problèmes avec l'initialisation et la réinitialisation du modem, consultez la section <link linkend="callback-troubleshooting"
>Problèmes</link
>.</para>
</step>
<step>
<para
>Pensez à votre serveur quelques instant. Souvenez-vous que les systèmes d'exploitation &UNIX;, &Windows; et Macintosh ont différentes façons pour signaler la fin d'une ligne dans un fichier texte, et de la même façon dans la procédure d'authentification. Si vous êtes connecté à un serveur &Windows; utilisez <userinput
>CR/LF</userinput
>, si vous êtes connecté à un serveur &UNIX;, utilisez <userinput
>CR</userinput
> et enfin si vous êtes connecté à un serveur Macintosh, utilisez <userinput
>LF</userinput
>. </para>
</step>
<step>
<para
>Pour ces instructions, nous partons du principe que vous appellez un paquetage de rappel sous &Linux; qui utilise une procédure d'authentification ordinaire. (pas de<acronym
>PAP</acronym
> ou équivalent).</para>
<para
>Mettez le mode <guilabel
>Authentification</guilabel
> dans l'onglet <guilabel
>Numérotation</guilabel
> dans le configurateur de compte à <guilabel
>Basé sur un script</guilabel
></para>
</step>
<step>
<para
>Maintenant vous devez concevoir le script d'authentification. L'édition des scripts est l'une des options très agréables de &kppp;. Vous pouvez la trouver sur l'onglet <guilabel
>Script de connexion</guilabel
> de la boîte de dialogue <guilabel
>Modifier le compte</guilabel
>.</para>

<para
>Dans cet exemple, l'utilisateur <systemitem
>userxyz</systemitem
> a besoin du script suivant pour être appelé. Le serveur de rappel connaît déjà le numéro de téléphone utilisé pour l'appel, donc vous choisirez un nom d'emprunt pour des raisons de sécurité.</para>

<para
>Pour chaque ligne, choisissez les critères dans le menu déroulant en haut à gauche de la boîte de dialogue, ensuite saisissez l'action dans la boîte texte à sa droite. Choisissez le bouton <guibutton
>Ajouter</guibutton
> pour chaque ligne du script. Vous pouvez utilisez <guibutton
>Insérer</guibutton
> pour introduire une ligne au milieu du script, et <guibutton
>Supprimer</guibutton
> pour retirer une ligne si vous faites une erreur.</para>

<para
>Le script dans son ensemble doit ressembler à cela (sans les commentaires, qui commencent ici par un #)</para>

<screen
>Expect       ogin:           <lineannotation
># souvenez-vous que l'on fait une authentification ordinaire dans un terminal</lineannotation>
ID           ""              <lineannotation
># kppp envoie le nom d'utilisateur que vous lui avez donné dans
la boîte principale</lineannotation>
Expect       for userxyz:    <lineannotation
># une liste des numéros disponibles est
affichée ici, l'utilisateur peut en choisir une</lineannotation
> 
Send         userxyz-home    <lineannotation
># l'utilisateur désire être appelé en retour
sur son numéro personnel</lineannotation>
Expect       ogin:           <lineannotation
># La procédure de rappel commence ici
lançant une nouvelle procédure de connexion, et donc un nouveau nom d'utilisateur.</lineannotation>
ID
Expect       assword:        <lineannotation
># Maintenant envoi de votre nom d'utilisateur</lineannotation>
Expect       &gt;            <lineannotation
># Attente du prompt (il
risque de varier)</lineannotation>
Send         start_ppp       <lineannotation
># cette commande lance pppd</lineannotation
>
</screen>

<para
>Après l'attente de la réponse pour l'authentification, l'utilisateur envoie son identifiant et attend la liste des numéros de téléphone disponible pour son nom d'utilisateur. Ensuite il indique au serveur sur quel numéro listé il désire être appelé en retour. &kppp; peut ouvrir une boîte de dialogue pour ça, si votre localisation change souvent, par exemple si vous êtes un représentant et que vous vous déplacez d'hôtel en hôtel. Maintenant le serveur attend le nom d'utilisateur et le mot de passe pour l'authentification, mais dans le même temps le serveur raccroche et appelle l'utilisateur en retour. Les informations pour l'authentification sont envoyées, et &kppp; attend une demande de commande, ensuite il lance un petit script (ici appelé <filename
>start_ppp</filename
>) qui lance <application
>pppd</application
> sur le serveur.</para>
					      
<para
>Le script <filename
>start_ppp</filename
> doit correspondre à quelque chose proche de cela :</para>
					      
<programlisting
>#!/bin/sh
stty -echo
exec /usr/sbin/pppd -detach silent modem
</programlisting>
					      
<para
>Bien sûr, configurer un serveur <acronym
>PPP</acronym
> ne fait pas partie de l'objectif de ce document. Pour plus de détails, consultez la page de man de <application
>pppd</application
>. Une excellente description d'un serveur callback peut être trouvée à <ulink url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback"
> http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback</ulink
>.</para>
</step>
</procedure>

<para
>Toutes les autres configurations, comme le réglage de <application
>pppd</application
> ou de <acronym
>IP</acronym
> sont les mêmes que d'habitude, aucun programme supplémentaire n'est utile.</para>

<note>
<para
>Le rappel de &kppp; et d'autres programmes comme <application
>mgetty</application
> ou autre faxgetty peuvent être lancés sur le même port série. Il n'y a pas de problème avec les appels entrants, puisque &kppp; réalise un fichier de verrouillage qui prévient le programme getty qu'une autre application (dans ce cas &kppp; bien sûr,) utilise la ligne à ce moment.</para>
</note>

</sect2>

<sect2 id="callback-troubleshooting">
<title
>Problèmes pouvant survenir</title>

<para
>Il existe quelques problèmes connus avec &kppp; en mode rappel :</para>

<itemizedlist>
<listitem>
<para
>Du fait que vous initialisez le modem dans le mode réponse automatique, vous devrez redémarrer le modem après que la ligne ait été coupé. Sinon, votre modem prendra la ligne pour vous, ce qui n'est pas une bonne idée si la ligne en question est celle de votre téléphone.</para>
</listitem>
<listitem>
<para
>&kppp; a des petits problèmes lorsqu'il partage une ligne avec une autre application comme <application
>mgetty</application
>. Si <application
>mgetty</application
> est lancé sur la même ligne que le modem, &kppp; n'est pas capable d'initialiser le modem correctement. </para>
</listitem>
<listitem>
<para
>&kppp; n'est pas capable de demander le nom utilisateur durant la procédure de connexion. Malheureusement, lorsqu'il utilise le script décrit précédemment, &kppp; redemande le nom d'utilisateur une seconde fois durant le rappel. Vous pouvez régler ce problème en inscrivant votre nom d'utilisateur directement dans le script (pas vraiment portable ou propre, mais ça marche).</para>
</listitem>
</itemizedlist>

</sect2>

<sect2 id="callback-resources">
<title
>Informations sur Internet pour le serveur</title>

<para
>Des serveur de rappel pour &Linux; sont disponibles dans beaucoup d'endroits.</para>

<para
>L'application bien connue <application
>mgetty</application
> est un programme extrêmement puissant, il permet aussi de répondre au rappel de connexion. Une description de la manière de configurer <application
>mgetty</application
> dans ce but est maintenu par Colin McKinnon, <email
>colin@wew.co.uk</email
>.et disponible sur <ulink url="http://www.dyer.demon.co.uk/slug/tipscrip.htm"
> http://www.dyer.demon.co.uk/slug/tipscrip.htm</ulink
>.</para>

<para
>Il y a aussi un paquetage prêt à l'usage pour &Linux; à l'adresse <ulink url="http://www.icce.rug.nl/docs/programs/callback/callback.html"
> http://www.icce.rug.nl/docs/programs/callback/callback.html</ulink
>. Ce paquetage est maintenu par Frank B. Brokken, <email
>frank@icce.rug.nl</email
>. Comme la configuration, bien que naturelle, n'est pas très facile, j'ai écrit une courte introduction à ce sujet à l'adresse <ulink url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback"
>http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/</ulink
>, qui contient également une introduction plus générale au rappel automatique.</para>

</sect2>
</sect1>

<sect1 id="nt-callback">
<title
>Rappel sous &Windows; NT <acronym
>RAS</acronym
></title>

<para
>&Windows; NT utilise une approche complètement différente de celle décrite précédemment. NT demande une extension particulière au protocole <acronym
>PPP</acronym
> lui-même, appelé <acronym
>CBCP</acronym
> (Call Back Control Protocol). L'application <application
>pppd</application
> supporte ce protocole mais il doit doit être recompilé pour cela. Si vous avez des connaissances sur les serveurs de rappel sur NT, faites vous connaître.</para>

</sect1>
</chapter>
