PPPWahl

Version, Copyright, Zweck, Historie -> siehe !Help

Lizenz:
-------

Thanksware, d.h. jeder, der es nutzt, ist aufgefordert, mir eine
Dankesemail an mailto:BinDabei@HQ.gag.de zu senden. Fragen/Anregungen
usw. bitte an mailto:HzN@HQ.gag.de.

Das PPPWahl-Paket darf nur unverndert und vollstndig weitergegeben
werden.


Voraussetzungen:
----------------

Acorn TCP/IP-Stack samt PPP-Modul und Acorns Resolver-Modul (u.a. auf
der Acorn User 200-CD zu finden).  Blocktreiber (Applikation
!SerialDev) und Modul Serial Buffer von David Pilling.

Front- und Backend:
-------------------

Dieses Paket besteht aus zwei Teilen: Dem Backend PPPWahl, welches die
Arbeit tut und dem Frontend !PPPWahl, welches auf The Menu basiert. Mit
letzterem kann man verschiedene Sternchenkommandos absetzen und somit
auch PPPWahl aufrufen.


Aufruf des Backends:
--------------------

PPPWahl selbst wird mit zwei Parametern aufgerufen: Den Optionen und
der Parameterdatei.

Optionen:
L Mitloggen der Aktivitten auf dem Bildschirm. Da dies durch einfache
  Ausgabe erfolgt, landen die Informationen je nach Aufruf im Task-
  fenster bzw. Commandfenster.
D Hiermit wird die Verbindung getrennt. Wird keine Parameterdatei mit
  angegeben, so wird die Parameterdatei verwendet, mit der PPPWahl
  zuletzt aufgerufen wurde (sofern nicht zwischenzeitlich gebootet wurde
  und die Systemvariable, in der dieser Dateiname gesichert wird,
  gelscht ist).
Q Dient zum Abfragen des Status der PPP-Verbindung; es wird die Ausgabe
  des Sternchenkommandos *PPPLog ausgewertet.

Parameterdatei: In dieser Datei stehen zeilenweise die fr den
Verbindungsaufbau erforderlichen Informationen
(Zeilen, die mit einem Semikolon beginnen, sind Kommentare):

Blocktreibername              (z.B. InternalPC fr die interne
                               Schnittstelle bei Verwendung eines
                               Standard-PC-Kabels)
Port des Blocktreibers        (beim internen ist dies immer die Null: 0)
Baudrate                      (z.B. 152000)
Modemresetkommando            (AT-Kommando zum Resetten des Modems,
                               z.B. ATZ)
Modemintialisierungskommando  (AT-Kommando zum Initialisieren des
                               Modems, z.B. AT\N10%P1)
Modemaufhngekommando         (Befehl zum Aufhngen, i.a. +++ATH0)
Modemwhlkommando             (Befehl zum Whlen samt Telefonummer)
Nameserver                    (Liste der IP-Addressen der Nameserver;
                               mehrere durch Leerzeichen getrennt)
Parameter fr *PPPConnect     (nheres s.u.)
CLI-Kommando, das bei Verbindungsaufbau zu rufen ist
CLI-Kommando, das bei Verbindungsabbau zu rufen ist
CLI-Kommando fr den Fehlerfall (z.B. *Error)

Beispiel-Parameterdatei:
InternalPC
0
152000
AT&F
AT\N10%P1
ATD0191011
+++ATH0
194.25.2.129
+ua <PPPWahl$Dir>.Userid noipdefault defaultroute crtscts modem mru 1524
<PPPWahl$Dir>.Start
<PPPWahl$Dir>.Stop
*Error


Ablauf:
-------

Soll eine Verbindung aufgebaut werden, so geht PPPWahl wie folgt vor:
0. Merken der angegebenen Parameterdatei in der Systemvariablen
PPPWahl$File.
1. Initialisieren der Blocktreiber anhand der drei ersten Parameter aus
   der Parameterdatei (Blocktreiber, Port, Baudrate)
2. Resetten des Modems mit dem entsprechenden String aus der
   Parameterdatei. Hier wartet PPPWahl nur recht kurz auf eine Antwort
   vom Modem, so da man hier nicht allzuviele Befehle unterbringen
   darf.
3. Initialisieren des Modems mit dem entsprechenden String aus der
   Parameterdatei.
4. Einwahlen...
5. Aufruf des Sternchenkommandos *PPPConnect mit zum einen den
   Schnittstellen-Parametern (Blocktreiber, Port, Baudrate) und den
   Parametern fr den *PPPConnect lt. Parameterdatei.
6. Prfen, ob der Verbindungsaufbau geklappt hat durch Beobachten der
   Ausgabe von *PPPLog (diese Prfung soll auch mit dem SWI PPP_Status
   mglich sein, aber dessen Dokumentation ist nicht erhltlich).
7. Starten des Kommandos fr den Verbindungsaufbau lt. Parameterdatei.

Hat es an irgendeiner dieser Stellen einen Fehler gegeben, so wird ggf.
die Verbindung getrennt und das Kommando fr den Fehlerfall mit einer
Fehlermeldung aufgerufen.

Soll die Verbindung getrennt werden, so geht PPPWahl wie folgt vor:
0. Falls keine Parameterdatei angegeben wurde, auslesen der
   Systemvariablen PPPWahl$File.
1. Prfen, ob eine PPP-Verbindung steht (durch Auswertung der Ausgabe
   von *PPPLog).
2. Steht die PPP-Verbindung, so wird diese per Sterchenkommando
   *PPPDisconnect getrennt.
3. Steht keine PPP-Verbindung, dann Initialisieren der Blocktreiber
   anhand der drei ersten Parameter aus der Parameterdatei
   (Blocktreiber, Port, Baudrate) und Trennen der Verbdindung mit dem
   entsprechenden String aus der Parameterdatei.
4. Starten des Kommandos fr den Verbindungsabbau lt. Parameterdatei.

Soll die Verbindung abgefragt werden, so geht PPPWahl wie folgt vor:
0. Falls keine Parameterdatei angegeben wurde, auslesen der
   Systemvariablen PPPWahl$File.
1. Prfen, ob eine PPP-Verbindung steht (durch Auswertung der Ausgabe
   von *PPPLog).
3. Ausgeben der Information.


Das Frontend:
-------------

Da das Frontend !PPPWahl auf The Menu (ist brigens auch von mir)
basiert, bitte ich die beigefgte Beschreibung von The Menu bei Bedarf
zu Rate zu ziehen. Hier werde ich nur auf die fr den Einsatz von
PPPWahl relevanten Punkte eingehen:

In !PPPWahl ist eine Datei namens TheMenu. In dieser stehen die
Steuerdaten fr The Menu:

In der ersten Zeile steht lediglich der Titel fr das Men, welches
beim Aufruf von !PPPWahl angezeigt wird. Dieser Titel ist
naheliegenderweise PPPWahl.

In der zweiten Zeile steht der Text fr den ersten Meneintrag, ein
Tabulator, ein T, ein weiterer Tabulator und dann das
Sternchenkommando, welches bei Auswahl dieses Meneintrags aufzurufen
ist. In den weiteren Zeilen folgen die weiteren Meneintrge mit
demselben Aufbau.


Beispiel fr freenet.de
-----------------------

Das folgende Beispiel ist brigens kein Dummy, sondern in Deutschland
funktionstchtig - lediglich die Parameter fr den Blocktreiber und das
Modem sind ggf. anzupassen. Bei freenet.de kann man sich nmlich auch
ohne einen eingerichteten Account einwhlen, sollte sich dann aber dort
registrieren, damit man auch in den Genu von Email und ermigten
Gebhren gelangt.

Die Parameterdatei fr freenet.de steht mit dem Namen PFreenet
innerhalb von !PPPWahl (sie kann natrlich auch anderswo stehen) und
hat folgenden Inhalt:

InternalPC
0
152000
AT&F
AT\N10%P1
+++ATH0
+ua <PPPWahl$Dir>.UFreenet modem defaultroute
<PPPWahl$Dir>.Start
<PPPWahl$Dir>.Stop
*Error

Logischerweise bentigen wir nun noch drei weitere Dateien in !PPPWahl,
da auf die durch die o.g. Parameterdatei bezug genommen wird:

In der Datei UFreenet stehen die Userid und das Kennwort untereinander
in je einer Zeile - diese Syntax erwartet *PPPConnect, wenn die PAP-
Authorisation per Parameter +ua angefordert wurde.

Die Datei Start, die in !PPPWahl stehen mu, kann z.B. !POPStar,
!NewsHound, einen Browser usw. starten (oder auch nicht). Sie wird
jedenfalls aufgerufen, sobald die PPP-Verbindung zustandegekommen ist.
Auch kann man hier z.B. den Backdrop ndern, damit man immer deutlich
sieht, da man online ist (was ja Telefongebhren o.. frit).

Die Datei Stop wird entsprechend nach Abbau der Verbdinung ausgefhrt.
ndert man per Start-Datei den Backdrop, sollte man ihn hier wieder
zurcksetzen.

Nun knnen wir auch den Inhalt der Datei TheMenu aufbauen; den
Tabulator habe ich hier durch einen Unterstrich gekennzeichnet:

PPPWahl
Freenet_T_<PPPWahl$Dir>.PPPWahl L <PPPWahl$Dir>.PFreenet
Logoff_T_<PPPWahl$Dir>.PPPWahl DL
*PPPLog_T_*PPPLog

Wie man sieht, ist beim Logoff-Eintrag die Parameterdatei (und damit
der Provider) nicht genannt, damit die zuletzt per PPPWahl aufgebaute
Verbindung getrennt wird. PPPWahl hat nmlich keine Probleme, auch
mehrere Provider zu bedienen (was einer der Grnde fr dieses Programm
ist) - es mssen lediglich entsprechend viele Parameterdateien
bereitgestellt werden.


Tips:
-----

Man kann sich (ich lege jetzt einfach mal das obige Beispiel zugrunde)
leicht eine Konfiguration aufbauen, bei der man Email und News pollen
und dann auch sofort die Verbindung trennen kann - zumidest geht das
leicht unter Verwendung von !POPStar und !NewsHound:

1. In der o.g. Datei !PPPWahl.Start trgt man als Inhalt '<POPStar$Dir>.
   !Run' ein, damit beim Starten der PPP-Verbindung !POPStar gestartet
   wird. Alternativ kann man natrlich auch '<POPStar$Dir>.!Run' an
   Stelle von <PPPWahl$Dir>.Start direkt in die Parameterdatei
   !PPPWahl.PFreenet eintragen, aber praktischer ist es ja, wenn man
   auch gleich noch !Newsbase, !Messenger usw. in !PPPWahl.Start
   startet.

2. !POPStar kann man so konfigurieren, da es nach Beendigung seiner
   Arbeit etwas startet. Hier trgt man '<NewsHound$Dir>.!Run' ein,
   damit nach Beendigung von !POPStar automatisch !NewsHound loslegt.

3. Auch !NewsHound kann man so konfigurieren, da es nach Beendigung
   seiner Arbeit etwas startet. Hier trgt man '<PPPWahl$Dir>.PPPWahl D'
   ein, damit nach Beendigung von !NewsHound automatisch die PPP- und
   damit auch die Modemverbindung getrennt wird.

Wem es nicht so recht ist, da !POPStar und !Newshound nacheinander
ablaufen, kann auch beide gleichzeitig starten und sich in einer
Systemvariablen (z.B. PPPWahl$Count) merkt, da zwei Anwendungen
gestartet wurden: *Set PPPWahl$Count 2. !POPStar und !NewsHound startet
beim Ende beide eine Obey-Datei, die folgende Zeilen enthlt:
*if "<PPPWahl$Count>" = "1" then <PPPWahl$Dir>.PPPWahl D
*if "<PPPWahl$Count>" = "2" then Set PPPWahl$Count 1
Der Ordnung halber sollte !PPPWahl.Stop dann ein '*Unset PPPWahl$Count'
enthalten.


