<chapter id="callback">
<title
>&kppp; seadistamine tagasihelistamiseks</title>

<para
>Selle peatüki allikaks on Martin H&auml;fneri <email
>mh@ap-dec717c.physik.uni-karlsruhe.de</email
> materjal</para>

<sect1 id="unix-callback-server">
<title
>&UNIX; või &Linux; tagasihelistamisserver</title>

<para
>See osa tutvustab sissejuhatavalt &UNIX; (&Linux;) tagasihelistamist ning seda, kuidas seadistada &kppp; ühenduma &UNIX; tagasihelistamisserveriga, eriti aga skriptil baseeruva &Linux; tagasihelistamisserveriga</para>

<sect2>
<title
>Sissejuhatus tagasihelistamisse</title>

<para
>Tagasihelistamise kasutamiseks on mitu põhjust. Mõned neist on järgmised:</para>

<itemizedlist>
<listitem>
<para
>Kohaliku võrgu turvalisuse suurendamine</para>
</listitem>
<listitem>
<para
>Väliste kaastöötajate kulude kahandamine</para>
</listitem>
<listitem>
<para
>Telefoniarvete kontrollimine, kui kõnesid hinnatakse ärikuludena</para>
</listitem>
</itemizedlist>

<para
>Mõtle: keegi helistab sinu numbrile serveril ja murrab sinu parooli lahti. Jah, milleks üldse oma internetiühendusel tulemüüri hoida, kui ligipääs võrgule nii lihtne on?</para>

<para
>Tagasihelistamistarkvara päris tavaliselt sinu nime ja katkestab siis ühenduse. Seejärel helistatakse sulle tagasi, tavaliselt numbril, mis on salvestatud <emphasis
>serveri</emphasis
> andmebaasi. Klient võtab kõne vastu ja jätkab rahulikult sissehelistamisteenuse kasutamist. Server pärib nüüd kasutajanime ja parooli, teades, et tegemist on sellega, kes sa ütlesid end esimese kõne ajal olevat - või vähemalt, et see keegi asub selles kohas, kus ta ütles end esimese kõne ajal asuvat. Rajatakse normaalne ühendus ja käivitatakse <application
>pppd</application
>.</para>

<para
>Tekib suur küsimus: kuidas panna klient telefoni vastu võtma, kui server tagasi helistab? Kas selleks on vaja erilist rakendust, näiteks <application
>mgetty</application
>? Vastus: <emphasis
>ei</emphasis
>, mingit erilist klientrakendust ei ole vaja. Üldiselt võib tagasihelistamisühenduseks kasutada enam-vähem iga klienti, isegi täiesti tavalist terminali, näiteks <application
>minicom</application
>.</para>

<para
>Piisab vaid sellest, et anda modemile käsk <command
>AutoAnswer</command
>, mis vastab kõnele, kui modem saab signaali <computeroutput
>RING</computeroutput
>. Seda saab teha järgmise modemikäsuga:</para>

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

<para
>See annab modemile korralduse kõne vastu võtta pärast ühekordset signaali <computeroutput
>RING</computeroutput
>.</para>

<para
>Sarnaselt paljudele klientrakendustele kontrollib &kppp;, kas server on ühenduse sulgenud, ning peatab aktiivse seansi, kui tuvastab signaali <computeroutput
>NO CARRIER</computeroutput
>. Siin peitubki tagasihelistamise ainus tõeline probleem. Signaal <computeroutput
>NO CARRIER</computeroutput
> tuvastatakse mõistagi hetkel, mil tagasihelistamisserver kõne katkestab. Seepärast kasutavad mõned serverid spetsiaalset sisselogimisrakendust. Kuidas probleem lahendada? Modemile tuleb anda korraldus tunnustada kogu aeg signaali <computeroutput
>CARRIER UP</computeroutput
> (mis ei tekita mingeid probleeme, kui annad kliendile korralduse kõne katkestada). Seda saab teha järgmise käsuga:</para>

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

<para
>Kui soovid seda testida, kasuta esmalt tavalist terminali, näiteks <application
>minicom</application
>, ja võta kõne oma tagasihelistamisserverile, et näha, mis juhtub.</para>

</sect2>

<sect2>
<title
>&kppp; seadistamine</title>

<para
>Teooria on nüüd läbi, aga kuidas panna &kppp; sellist ühendust tunnistama ja käsitlema? </para>

<para
>See on õigupoolest üsna lihtne.</para>

<procedure>
<step>
<para
>Kõigepealt anna modemile korraldus ühendusi vastu võtta ning mitte peatada läbirääkimisi, kui tagasihelistamisserver kõne esimesel korral katkestab. Mõlemat võimalust saab määrata &kppp; seadistustedialoogi kaardil <guilabel
>Modem</guilabel
>, kui lisada võimalusele <guilabel
>Numbrivalimise käsustring</guilabel
> string <command
>AT&amp;C0S0=1DT</command
></para>
<para
>Midagi muud &kppp; seadistustes muuta ei tule. Kui modemi initsialiseerimisel ja lähtestamisel esineb probleeme, uuri lähemalt osa <link linkend="callback-troubleshooting"
>Probleemid</link
>.</para>
</step>
<step>
<para
>Mõtle nüüd korraks serveri peale. Arvesta, et &UNIX;, &Windows; ja Macintoshi operatsioonisüsteemid lõpetavad erinevalt rida tekstifailis ning seetõttu ka sisselogimisprotseduuris. Kui võtab ühendust &Windows; serveriga, kasuta <userinput
>CR/LF</userinput
>, &UNIX; serveri korral <userinput
>CR</userinput
> ja Macintoshi serveri puhul <userinput
>LF</userinput
> </para>
</step>
<step>
<para
>Käesolevate juhiste juures eeldame, et kasutad helistamiseks &Linux; tagasihelistamispaketti tavalise sisselogimisega (mitte <acronym
>PAP</acronym
> või midagi sellist).</para>
<para
>Määra konto seadistustedialoogis kaardil <guilabel
>Helistamine</guilabel
> <guilabel
>autentimise</guilabel
> võimaluseks <guilabel
>Skriptil baseeruv</guilabel
></para>
</step>
<step>
<para
>Nüüd tuleb luua sisselogimisskript. Sisselogimisskriptide loomine ja redigeerimine on üks &kppp; vaimustavaid võimalusi. Selle leiab dialoogi <guilabel
>Konto redigeerimine</guilabel
> kaardil <guilabel
>Sisselogimisskript</guilabel
>.</para>

<para
>Antud näites tuleb kasutajal <systemitem
>kasutajaxyz</systemitem
> helistamisel pruukida järgnevat skripti. Tagasihelistamisserveril on juba olemas nimed ja vastavad telefoninumbrid, nii et turvalisuse huvides vali telefoninumber aliasega.</para>

<para
>Iga rea puhul vali dialoogis vasakul paiknevast hüpikkastist vajalik kriteerium ning kirjuta tegevus sellest paremal asuvasse tekstikasti. Klõpsuga nupul <guibutton
>Lisa</guibutton
> saad iga rea skripti lisada. Keskel asuva nupuga <guibutton
>Lisa</guibutton
> saab rea lisada suvalisse kohta skriptis (vaikimisi lisatakse see lõppu) ning nupuga <guibutton
>Eemalda</guibutton
> rea kustutada, kui juhtusid vea tegema.</para>

<para
>Kogu skript peaks välja nägema umbes nii (küll ilma kommentaarideta, mis siin algavad märgiga #)</para>

<screen
>Expect       ogin:           <lineannotation
># pea meeles, et me kasutame tavalist terminalis sisselogimist</lineannotation>
ID           ""              <lineannotation
># kppp saadab peadialoogis määratud
kasutajanime</lineannotation>
Expect       for kasutajaxyz:    <lineannotation
># näidatakse saadaolevate numbrite nimekirja,
kust kasutaja peaks ühe valima</lineannotation
> 
Send         kasutajaxyz-home    <lineannotation
># kasutaja soovib tagasihelistamist
oma kodusel numbril</lineannotation>
Expect       ogin:           <lineannotation
># Tagasihelistamisprotsess on käimas,
uus ühendus ja sestap ka uus sisselogimine.</lineannotation>
ID
Expect       assword:        <lineannotation
># Nüüd saada oma parool</lineannotation>
Expect       &gt;            <lineannotation
># Oota käsuviipa (selle
viiba vorm võib erineda)</lineannotation>
Send         start_ppp       <lineannotation
># see käsk käivitab pppd</lineannotation
>
</screen>

<para
>Pärast sisselogimissoovi ootamist saadab kasutaja oma kasutajanime ja ootab sellele kasutajale kättesaadavate telefoninumbrite nimekirja. Seejärel ütleb ta serverile, millisel pakutavatest numbritest tuleks tagasi helistada. &kppp; võib selleks dialoogi avada, kui sinu asukoht sageli muutub, &eg; kui oled müügiagent ja elad peamiselt hotellides. Seejärel ootab server autentimiseks kasutajanime ja parooli, kuid enne seda lõpetab kõne ja helistab tagasi. Nüüd saadetakse autentimisinfo, &kppp; ootab käsurea viipa ning käivitab siis väikese skripti (antud näites nimega <filename
>start_ppp</filename
>), mis käivitab serveril <application
>pppd</application
>.</para>
					      
<para
><filename
>start_ppp</filename
> skript näeb välja umbes selline:</para>
					      
<programlisting
>#!/bin/sh
stty -echo
exec /usr/sbin/pppd -detach silent modem
</programlisting>
					      
<para
>Mõistagi ei ole selles käsiraamatus ruumi ega võimalust kirjeldada <acronym
>PPP</acronym
> serveri seadistamist. Täpsemat infot leiab soovi korral <application
>pppd</application
> manuaalilehekülgedelt.</para>
</step>
</procedure>

<para
>Kõik muud asjad, näiteks <application
>pppd</application
> või <acronym
>IP</acronym
> seadistused, töötavad nagu tavaliselt ning kõne jaoks ei ole vaja mingit erilist tarkvara.</para>

<note>
<para
>&kppp; tagasihelistamisrakendus ja muud rakendused, näiteks <application
>mgetty</application
> või mingi muu faxgetty võivad töötada ühel ja samal jadapordil. Sissehelistamisel probleeme ei teki, sest &kppp; loob lukustusfaili, mis ütleb getty-rakendusele, et liini kasutab parajasti mingi muu rakendus (antud juhul siis mõistagi &kppp;).</para>
</note>

</sect2>

<sect2 id="callback-troubleshooting">
<title
>Probleemid</title>

<para
>&kppp; tagasihelistamisrežiimil on siiski ka mõningaid teadaolevaid probleeme:</para>

<itemizedlist>
<listitem>
<para
>Modemit automaatseks vastamiseks initsialiseerides tuleb modem lähtestada pärast ühenduse sulgemist. Vastasel juhul jätkab modem liini hõivamist, mis ei ole sugugi hea mõte, kui see liin on sinu ainus ja/või peamine telefoniliin.</para>
</listitem>
<listitem>
<para
>&kppp;-l võib olla mõningaid pisiprobleeme liini jagamisel teiste rakendustega, näiteks <application
>mgetty</application
>. Kui <application
>mgetty</application
> töötab samal modemiliinil, ei suuda &kppp; modemit korrektselt initsialiseerida. </para>
</listitem>
<listitem>
<para
>&kppp; ei suuda pakkuda viipa teatud kasutaja sisendile skriptil baseeruva sisselogimise ajal. Kui kasutad ülaltoodud näidisskripti, küsib &kppp; õnnetuseks kasutajanime ka teist korda, kui tagasihelistamisserver seda nõuab. Sellest hädast võib lahti saada oma kasutajanime otse sisselogimisskripti kirjutades (see ei ole küll eriti kena, aga vähemalt toimib...)</para>
</listitem>
</itemizedlist>

</sect2>
<!-- all links are dead
<sect2 id="callback-resources">
<title
>Internet Resources for server software</title>

<para
>&Linux; callback server software bundles are available in many
places.</para>

<para
>The well known <application
>mgetty</application
> is a very powerful
program, and is also able to handle callback connections.  A description of how
to set up <application
>mgetty</application
> for this purpose is maintained at 
<ulink url="http://www.dyer.demon.co.uk/slug/tipscrip.htm">
http://www.dyer.demon.co.uk/slug/tipscrip.htm</ulink
>, by Colin McKinnon,
<email
>colin@wew.co.uk</email
>.</para>

<para
>There is also a ready to use package for &Linux; at <ulink
url="http://www.icce.rug.nl/docs/programs/callback/callback.html">
http://www.icce.rug.nl/docs/programs/callback/callback.html</ulink
>.  This
package is maintained by Frank B. Brokken, <email
>frank@icce.rug.nl</email
>.  As
the setup, although straightforward, is not very easy, I have written a short
introduction for it at <ulink
url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback"
>http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/</ulink
>,
which also contains a more general introduction to callback.</para>

</sect2>
-->
</sect1>

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

<para
>&Windows; NT kasutab täiesti teistsugust lähenemist kui äsjakirjeldatu. NT nõuab lausa <acronym
>PPP</acronym
> protokolli laienduse kasutamist, mis kanab nime <acronym
>CBCP</acronym
> (Call Back Control Protocol). <application
>pppd</application
> toetab seda protokolli, kuid selleks tuleb <application
>pppd</application
> uuesti kompileerida. Kui kellelgi on õnnestunud edukalt võtta ühendust NT tagasihelistamisserveriga, võiks sellest ka mulle teada anda.</para>

</sect1>
</chapter>
