============================================================================== Polldoc V2.10b ============================================================================== ------------------------------------------------------------------------------ Allgemeines ------------------------------------------------------------------------------ * Beschreibungsfestlegung: Beschreibungsfestlegung: Zeichenfolgen werden in Anführungszeigen gesetzt. Die Anführungszeichen gehören nicht zur Zeichenfolge. Platzhalter werden in "[]" gesetzt. Beisp.: [Username] wird mit (z.B.) FRANK800 ersetzt. [Absender] entpricht der Form [username]"@"[node]" Bytes werden in spitzen Klammern <> gesetzt. <32> würde also einem Space entsprechen. entspricht chr$(13) entspricht chr$(10) entspricht chr$(27) IBM Umlaute sind wie folgt definiert: ä=<132>, ü=<129>, ö=<148>, Ä=<142>, Ü=<154>, Ö=<153>, ß=<225> * Es wird der ASCII-Zeichensatz (7-Bit) mit IBM-Umlauten (8-Bit) verwendet, alle Zeichen unter ASCII 32 (außer ,,, <1>,<2> und <3>) sind NICHT zulässig. Ausgenommen hiervon sind die Optionkennzeichen im Nachrichten-Header. * Als Übertragungsprotokoll wird Z-Modem verwendet. Andere Protokolle können zusätzlich implementiert werden. Es muß dann dem Sysop die Möglichkeit gegeben sein, das zu verwendende Übertragungsprotokoll frei zu wählen. * Als Packer wird ARC verwendet. Andere Packmethoden können zusätzlich implementiert werden. Es muß dann dem Sysop die Möglichkeit gegeben sein, das zu verwendende Packverfahren frei zu wählen. * Für den Login-Point-/Boxnamen dürfen nur folgenden Zeichen verwendet werden: Buchstaben (A-Z,a-z), Ziffern (0-9), Underscore (_), Punkt (.) sowie Minus (-). Die Buchstaben werden case-insensitiv (Groß=Klein) behandelt. Das Loginpaßwort (für Boxen/Points) darf die Zeichen 32-126 und IBM-Umlaute (einschließlich) umfassen und maximal aus 16 Zeichen bestehen. Als Pollpasswort ist "REQUEST" reserviert und daher nicht zugelassen. * Der Empfänger einer PM wird innerhalb der Box (des Points) in der Form "Username@Box" adressiert. Falls "@Box" fehlt, wird ein User in der eigenen Box angeschrieben. Neben dieser Adressierungsart können noch beliebige andere implementiert werden. ============================================================================== Loginprozedur & Transfer ============================================================================== Alle Eingaben innerhalb der Login-Prozedur sind mit einem Timeout von 20 Sekunden zu versehen. Erfolgt innerhalb dieser Zeit keine Antwort, wird eine negative Bestätigung gesendet und zum jeweiligen Einsprungpunkt verzweigt. Die Login-Prozedur baut sich folgendermaßen auf: (Hier Einsprungpunkt 1) Die angerufene Box sendet drei Größerzeichen (">>>") (OHNE ). Vor diesen Größerzeichen kann ein beliebiger Text gesendet werden. Danach beginnt die Login-Prozedur wie folgt: Die anrufende Box sendet drei Kleinerzeichen ("<<<"). Hat die angerufene Box die "<<<" erkannt, sendet sie ihre zweistellige Programm-ID plus , ihre maximal sechsstelige Versionsnummer plus und ein "ACK" (drei Buchstaben) plus zur anrufenden Box zurück. Für die Zeichenfestlegung des Programm-ID und Seriennummer siehe Definition für den Anrufer weiter unten. Falls die "<<<" nicht erkannt wurden (oder der Timeout von 20 Sekunden überschritten wurde), wird zurückgesendet und zum Einsprungpunkt 1 zurückgesprungen. Diese Wiederholung erfolgt fünf mal. Der Userlogin erfolgt mittels , , oder Punkt (.). Nach dem "ACK" der angerufenen Box wird von der anrufenden Box der Box/Point Login durchgeführt. (Hier Einsprungpunkt 2) Es werden, [Boxname] [Pollpaßwort] [zweistellige Programmkennung] [maximal sechsstellige Versionsnummer] [vierstellige Seriennummer] [optionales Feld] [Checksumme] zur angerufenen Box gesendet. Ruft ein Point an, wird vor dem Boxnamen ein Punkt (.) gesendet. Dieser Punkt ist _nicht_ Bestandteil des Point-Namens, sondern muß vom Point-Programm automatisch gesendet werden. Er dient lediglich der Identifizierung, daß ein Point anruft (bei der Checksumme ist er natürlich mitzuzählen!) Für die Programmkennung sowie für die Seriennummer sind Großbuchstaben (A-Z) und Ziffern (0-9) zulässig. Die Programmkennung wird vom Vorstand festgelegt und vergeben. Die bis zu sechstellige Versionsnummer wird vom Box-/Point-Programierer festgelegt und muß der aktuellen Version des Programmes entsprechen. Zulässige Zeichen: Buchstaben (A-Z,a-z), Ziffern (0-9), Punkt (.) sowie Doppelkreuz (#). Das optionale Feld ist zur Zeit unbesetzt und für zukünftige Erweiterungen reserviert. Jegliche Benutzung muss vom Vorstand genehmigt werden. Evtl. auftretende Zeichen sind z. Zt. zu ignorieren. Die Länge beträgt maximal 255 Zeichen. Die Checksumme wird als Summe aller eingehender Zeichen (also KEINE Wandlung Gross <-> Klein!) zwischen Boxname und Optionsfeld (einschliesslich - inklusive aller !) gebildet. Es wird 16 Bit Interger mit Modulo 65536 (also nach 65535 kommt 0) benutzt. Die Checksumme wird als Dezimal-ASCII-Digits gesendet. Stimmt die Checksumme nicht, wird ein "NAK" gesendet und zum Einsprungpunkt 2 zurückverzweigt. Es erfolgt kein Echo der gesendeten Zeichen! Empfängt die angerufene Box anstatt des Passwortes die Kennung "REQUEST", ruft ein(e) nicht direkt pollende(r) Point/Box an, der/die Files requesten will. Uploads werden dabei unterstützt! Der Programierer hat für Sicherheitsmaßnahmen zu sorgen (kein automatisches Weiterrouten beim Upload in ein Netzbrett, ggf. Zensur setzen etc.). Der Datenaustausch läuft wie bei einem normalen Transfer ab, nur daß anstelle des Daten-File zum Point ein Leer-File gesendet wird. Kommt trotzdem ein Daten-File an, so ist dieses zu ignorieren! Wenn der Login korrekt war, sendet die angerufene Box die Zeichenfolge "ACK" (drei Buchstaben) plus ansonsten (oder bei Überschreiten des Timeouts) "NAK" plus . Bei Programm-ID und Versionsnummer gelten die gleichen Beschränkungen wie beim Anrufer. Wenn ein NAK gesendet wurde, wird zum Einsprungpunkt 2 zurückgesprungen. Diese Wiederholung erfolgt fünfmal! Hat die anrufende Box das "ACK" richtig empfangen, sendet sie die Zeichenfolge "MSYN0" + . Die anrufende Box sendet das Paket mit dem Namen "0815.EXT" zur angerufenen Box. Danach stellt die angerufene Box die Daten bereit. Für dieses Bereitstellen gilt ein Timeout von maximal 5 Minuten. Danach sendet die angerufene Box die Zeichenfolge "MSYN1" plus . Danach wird ein Paket mit dem Namen "0815.EXT" zur anrufenden Box zurückgesendet. Wird der Timeout von 5 Minuten überschritten, wird der Poll abgebrochen. Die ".EXT" in den Dateinamen entsprechen den verwendeten Packern zum Erstellen der Datenfiles. Eine automatische Auswertung dieser Endung kann erfolgen. Sollte das Datenfile, aus welchem Grunde auch immer, nicht korrekt ausgepackt werden können, ist es entspechend zu sichern (z.B. seperates Directory) und eine Log-Meldung an den Sysop zu generieren. Sind Files requestet worden, stellt die angerufene Box nun diese Files zur Verfühgung. Für das Bereitstellen der requesteten Files gilt ein Timeout von 5 Minuten. Stehen die Files bereit, wird die Zeichenfolge "MSYN2" plus gesendet. Danach werden die Files mittels Z-Modem Batchprotokoll (bei anderem Protokoll vergleichbares) zur/zum anrufenden Box/Point gesendet. Wird der Timeout überschritten, ist der Poll abzubrechen. Existiert im Pollfile eine "UPDATE.DAT" so werden nun diese Files (zum uploaden) zur bereitgestellt. Für das Bereitstellen gilt ein Timeout von 5 Minuten. Stehen die Files bereit sendet das anrufende System die Zeichenfolge "MSYN3" plus . Danach werden die Files mittels Z-Modem Batchprotokoll (bei anderem Protokoll vergleichbares) zur anrufenden Box gesendet. Wird der Timeout überschritten, ist der Poll abzubrechen. Der Transfer wird damit beendet, daß die angerufene Box die Zeichenfolge "MEND" plus zum anrufenden System zurücksendet. Transferabbruchverhalten ------------------------ Wird der Transfer an irgendeiner Stelle unterbrochen, gelten die bis dahin fehlerfrei übertragenen Daten als gültig und werden beim nächsten Poll NICHT mehr übertragen. Dies heißt im einzelnen: Wird vor Beendigung des Transfers von "0815.EXT" zur angerufenen Box unterbrochen, muß der komplette Transfer wiederholt werden. Wird vor Beendigung des Transfers von "0815.EXT" zum Anrufer unterbrochen, ist die bereits gesendete Datei "0815.EXT" GÜLTIG und wird somit bei der angerufenen Box einsortiert und beim anrufenden System gelöscht! Wird der Transfer während des Requestens von Files unterbrochen, obliegt es der/des anrufende(n) Box/Points, ihre/seine Request-Liste beim nächsten Anruf entsprechend zu modifizieren. Die bereits übertragenen Dateien "0815.EXT" sind beide GÜLTIG, es muß dafür gesorgt werden, daß diese Daten nicht nochmals übertragen werden. Zur verdeutlichung hier ein paar Ablaufdiagramme als Beiepiele: Poll mit Request und Upload von Files. anrufendes System angerufenes System ----------------------------------------- "(8-N-1) Bitte RETURN druecken >>>" "<<<" "OP" "67.99" "ACK" "TESTBOX" "TESTPASSWORT" "WP" "99.67" "0001" "2283" "ACK" "MSYN0" (senden des Pollpackets) "MSYN1" (senden des Pollpacketes) (Bereitstellen der gerequesteten Files) "MSYN2" (senden der gerequesteten Files) (bereitstellen der Files) "MSYN3" (senden der Files) "MEND" ---------------------------------------------------- Poll nur mit Request von Files diemal aber als Point. anrufendes System angerufenes System ----------------------------------------- "(8-N-1) Bitte RETURN druecken >>>" "<<<" "OP" "67.99" "ACK" ".TESTPOINT" "TESTPASSWORT" "WP" "99.67" "0001" "2490" "ACK" "MSYN0" (senden des Pollpackets) "MSYN1" (senden des Pollpacketes) (Bereitstellen der gerequesteten Files) "MSYN2" (senden der gerequesteten Files) "MEND" ---------------------------------------------------- "Normaler" Poll anrufendes System angerufenes System ----------------------------------------- "(8-N-1) Bitte RETURN druecken >>>" "<<<" "OP" "67.99" "ACK" "TESTbox" "TESTPASSWORT" "WP" "99.67" "0001" "2379" "ACK" "MSYN0" (senden des Pollpackets) "MSYN1" (senden des Pollpacketes) "MEND" ---------------------------------------------------- Normaler Poll mit Problemen anrufendes System angerufenes System ----------------------------------------- "(8-N-1) Bitte RETURN druecken >>>" "<<<" "(8-N-1) Bitte RETURN druecken >>>" "<<<" "OP" "67.99" "ACK" "TESTBOX" "TESTPASSWORT" "WP" "V. 99.67" "0001" "2283" "NAK" "TESTBOX" "TESTPASSWORT" "WP" "V. 99.67" "0001" "2283" "ACK" "MSYN0" (senden des Pollpackets) "MSYN1" (senden des Pollpacketes) "MEND" ============================================================================== Points ============================================================================== Points werden in der Pollbox mit Pointnamen (gültige Zeichen wie bei Boxname) und Betreibernamen (gültige Zeichen wie bei Username) eingetragen. Der Point pollt genauso, wie es eine MagicNet-Box tun würde, wobei während des Logins vor dem Pointnamen ein Punkt (.) gesendet wird. Dieser Punkt ist nicht Bestandteil des Point-Names, sondern dient der Kennzeichnung, daß ein Point anruft. Das Transfer-File ist ebenso wie bei einer MagicNet-Box aufgebaut, wobei eine zwingende Option 130 (siehe Aufbau des Nachrichtenformats) zu erzeugen ist! Bei Nachrichten vom Point ins Netz werden beim Sortieren in der Pollbox folgende Konvertierungen vorgenommen: Absenderbox : Hier wird die Pollbox eingetragen Somit sieht die Nachricht aus, als ob sie von einem User der Pollbox geschrieben wurde, und die Points müssen nicht mehr netzweit eingetragen werden. Dabei muss die Box überprüfen ob der Absender auch für diesen Point in der Box eingetragen ist. Ist dies nicht der Fall so ist die Nachricht nicht weiterzurouten sondern mit einer Fehlermeldung an den Point zurückztusenden. Bei Nachrichten an den Point wird in der Pollbox des Points die Empfängerbox durch den Pointnamen ersetzt. Alle anderen Einträge bleiben unverändert! ============================================================================== Aufbau des Nachrichtenformats ============================================================================== Nachrichtenformat innerhalb des Pollfiles mit den Namen Thhhhhhh.TXT, wobei h für eine hexdezimale Ziffer (0-F) steht. Die Ziffern werden rechtsbündig geschrieben und links mit 0 aufgefüllt. Es wird mit 1 begonnen. Die Nummerierung muß fortlaufend sein, Lücken sind nicht zulässig. Nachrichten dürfen nicht gesplittet und über mehrere Teilpakete verteilt werden. Somit ist es möglich, einen Teil der Nachrichten schon vor dem Poll zu sortieren und zu packen. Beipiele für den Name: T0000001.TXT, T000001F.TXT, T0000FFC.TXT * ALLE Zeilen werden durch abgeschlossen. * Leere Zeilen bestehen nur aus . * ALLE Zeilenlängen (sofern nicht gesondert angegeben) dürfen die Länge von 255 Bytes nicht überschreiten. * ALLE Zeilen (außer dem Routing, wo etwas hinzugefügt wird) werden OHNE Veränderung an andere Systeme weitergeroutet (ausgenommen hiervon sind direkt pollende Points - s.o.). * Der Brettcode besteht aus Großbuchstaben (A-Z) und Ziffern (0-9) und umfaßt sechs Zeichen. Die alten 4-stelligen Brettcodes werden mit zwei führenden 00 versehen. * Aufbau des Routings: Beim Versenden einer Nachricht an ein anderes Systems wird der Name des empfangenden Systems von der absendenden Box an das Routing angehängt. Als Trennungszeichen wird Space ( ) verwendet. Der erste Eintrag im Routing stellt die Box dar, in der die Nachricht erzeugt wurde. Ein Space ( ) am Ende der Routingzeile ist nicht zulässig! * Alle Header-Zeilen müssen dem Benutzer auf dessen Aufforderung hin (z.B. im Profil gespeichert oder durch Befehl bei jeder Nachricht) angezeigt werden. * Die Optionen (Zeilen 16 und ab 17) sind in für den Benutzer verständlicher Art und Weise anzuzeigen. * Zusätzliche Optionen (Zeilen 16 und ab 17) müssen dem Vorstand vorgelegt und vor öffentlicher Benutzung von diesem genehmigt werden. * Treten nicht definierte Optionen auf, sind diese zu ignorieren. * Die Länge einer Textnachricht ist unbegrenzt. Innerhalb eines MagicNet-Systems muß dem Benutzer die Möglichkeit gegeben werden, eine Textnachricht mit mindestens 64KB zu erstellen. Das Anzeigen sowie Verarbeiten von unbegrenzten Textnachrichten ist zu gewährleisten. * Bei einem Reply auf eine Nachricht wird der Absender (Zeile 6 und 7 des Headers verbunden mit einem "@", so daß sich eine korrekte Adresse ergibt) in Zeile 11 ("Reply auf") des neuen Nachrichten-Headers kopiert. Ebenso wird die Message-ID (Zeile 10) in Reply-Message-ID (Zeile 12) kopiert Der Betreff der Originalnachricht wird die Zeichenfolge "Re: " vorrangestellt (falls der Betreff ein solches noch nicht enthält) und als neuer Betreff übernommen. * Wird eine Nachricht weitergeleitet, ist eine zwingende Option 129 (siehe Abschnitt über zwingende Optionen) zu erzeugen. Weiterhin ist der Betreff der Originalnachricht mit einem vorangestellten "We: " (falls der Betreff ein solches noch nicht enthält) als neuer Betreff zu übernehmen. * Der Boxprogrammname darf 40 Zeichen umfassen und wird vom Programierer festgelegt. In ihm muss die gleiche Versionsnummer wie bei Einloggen enthalten sein. * Innerhalb des MagicNet (also wenn die Nachricht nicht von oder an ein anderes Netzwerk geht) gelten folgende Festlegungen: - Als Username dürfen nur folgende Zeichen verwendet werden: Buchstaben (A-Z,a-z), Ziffern (0-9), Minus (-), Punkt (.), Underscore (_) sowie Space ( ). Dabei wird zwischen Groß/Kleinbuchstaben keine Unterscheidung gemacht. Also ein "klaus" ist gleich "KLAUS" oder "Klaus" etc. - Als Boxname dürfen nur folgende Zeichen verwendet werden: Buchstaben (A-Z, a-z), Ziffern (0-9), Underscore (_), Minus (-) sowie Punkt (.). In einen Boxnamen für eine MagicNET-Box darf kein Punkt vor- kommen! Geht die Nachricht in ein anderes Netzwerk, so gilt folgendes zur Auswertung des Boxnamen: Der komplette Boxnamenteil, der sich hinter dem ersten Punkt von links befindet, wird als "Domain" gewertet. Ist für ein Netz keine Domain vorhanden, so wird vom Vorstand eine sogenannte "Netzwerk- kennung" festgelegt, die dann anstatt der Domain eingesetzt wird. Bei Nachrichten in oder aus dem MagicNET darf keine "Domain" oder "Netzwerkkennung" folgen. Bei der Auswertung zum Routen der Nachricht wird wie folgt vorgegangen. Man nimmt sich den String hinter den "@" und untersucht, ob dort ein Punt (.) vorhanden ist. Ist keiner vor- handen, so wird an eine MagicNET-Box geroutet. Ist ein Punkt (.) vor- handen, so wird das "Domain" von links nach rechts durchsucht. Ist der komplette String nach dem ersten Punkt (.) von links bekannt, so wird in die im Boxprogramm angegebene Richtung geroutet. Ist er unbekannt, so vergleicht man ab dem zweiten Punkt (.) von links usw. usf. Der Boxname wird beim Einsortieren und Weiterrouten caseinsenetive behandelt. Er muß jedoch in seiner ursprünglichen Form weitergeroutet werden! - Längeneinschränkungen: Boxnamen : 20 Zeichen Username : 20 Zeichen Betreff : 65 Zeichen Absender-Realname : 65 Zeichen - Message-ID Die Message-ID wird wie folgt gebildet: "<"Datum+Option+Pointname@Boxname.magic.de">" Das Datum entspricht dem Erstellungsdatum (siehe Headerzeile 13). Die Option umfasst 6 Stellen und folgende Zeichen: Buchstaben (A-Z,a-z), Ziffern und Punkt (.). Sie kann vom Programierer festgelegt werden (z.B. bei Multiport-Boxen die Portnummer oder Millisekunden-Angaben). Stammt die Nachricht von einem Point, wird der Pointname eingefügt. Der Programierer muß dafür sorgen, daß die Msg-ID für jede Nachricht einmalig ist. Bespiel: "<010192121200freeside@senil.magic.de>" "<291091150007678957@megamail.magic.de>" Statt der Domain ".magic.de" kann auch eine andere für dieses System gültige Domain eingesetzt werden! * Bei Nachrichten aus anderen Netzwerken ist die Länge der einzelnen Felder nur durch die maximale Zeilenlänge (255 Zeichen) beschränkt! Eine Nachricht ist folgendermaßen aufgebaut: 1: <1> (CTRL-A) 2: sechsstelliger Brettcode bei AMs oder Minus (-) bei PMs (d.h. "-" plus ). Der restliche Inhalt ist zu ignorieren und darf von den Programmen nicht benutzt werden! 3: Empfängerbox, bei AM leer, evtl. netzwerkspezifisch 4: Empfänger-Username, bei AM leer, evtl. netzwerkspezifisch 5: Nur , diese Zeile ist zu ignorieren. Sie darf von den Programmen nicht benutzt werden! 6: Absenderboxname, evtl. netzwerkspezifisch 7: Absender-Username, evtl. netzwerkspezifisch 8: Absenderrealname, wenn vom Benutzer gewünscht: leer 9: Betreff 10: Message-ID, evtl. netzwerkspezifisch 11: Reply auf (Absender in der Form Username@Boxname) 12: Reply-Message-ID, evtl. netzwerkspezifisch 13: Erstellungsdatum, Format = Tag+Monat+Jahr+Stunde+Minute+Sekunde (alle Angaben 2 Stellig) 14: MagicNet Routing, maximale Länge : 32768 Bytes 15: Boxprogrammname 16: Flags, nicht durch Return getrennt, gegliedert durch aufeinander folgende ASCII-Bytes mit folgendem Aufbau: <255> Empfangsbestätigung beim Einsortieren (darf nur bei PMs erzeugt werden!) <254> Empfangsbestätigung beim Lesen der Nachrichten (darf nur bei PMs erzeugt werden!) <253> Reply-Verweigerung <252> Reply umändern in Brief <251> Bestätigung von jedem Sys (Von jedem System wird eine Empfangsbestätigung an den Absender bzw. den User, der in <126> genannt ist, geschickt!) Ab 17: optionale und zwingende Optionen, durch getrennt, wobei <129-255> = zwingende Optionen <032-126> = optionale Optionen Wenn nicht anders vermerkt, darf eine Option pro Nachricht nur einmal vorkommen. Kommt sie mehrfach vor, ist nur die erste auszuwerten. <132>Origin Maximal 79 Zeichen ohne ANSI-Sequenzen. Diese Option darf maximal 2mal vorkommen. <131>FName,Länge,O-Name Option für Binärnachrichten. Genaueres siehe Kapitel über Binärnachrichten. - FName Filename im Pollpaket, welches sich wie folgt aufbaut: Bhhhhhhh.BIN Hierbei steht h für eine Hexadezimaleziffer (0-F). Nicht besetzte Ziffern werden mit 0 belegt. Beispiel: B0000001.BIN oder B0000FFF.BIN - Länge Länge der Datei in ASCII-Digits. - O-Name Originalname der Datei. Zulässig sind Zeichen zwischen 32 und 126. Sollte der Originalname auf dem Rechner nicht verwendbar sein, ist beim Einsortieren aus den Zeichen ein äquivalenter Name zu bilden. Ein Weiterrouten des Originalnamens ist zu gewährleisten. - Beispiel: <131>B0000001.BIN,534678,Hypertext Version 1.8.LZH <130>Pointname Falls diese Nachricht in einem Point erzeugt wurde, ist in dieser zwingenden Option der Pointname eingetragen. <129>OriginalMsgID,OriginalAbsender,OriginalBrettCode,Original-Datum, OriginalBrettName Wird beim Weiterleiten einer Nachricht erzeugt, wobei der OriginalAbsender in der Form Username@Boxname und das Datum im Datumsformat des Headers zu erzeugen ist. Bei OriginalBrettCode ist der Brettcode einzusetzten. Stammt die Nachricht aus der Persönlichen Mail, wird hier "PM" eingetragen. Hat das Brett keinen Brettcode, wird diese Feld leer gelassen, d.h. es folgen zwei Kommata (,) hintereinander. Unter OriginalBrettName ist der Brettname (so wie das Brett in der Box eingetragen ist) einzusetzen. Sollte es sich um die Persönliche Mail handeln, wird "PM" eingetragen. Sollte eine bereits weitergeleitete Nachricht abermals weitergeleitet werden, wird eine weitere Option 129 erzeugt. Diese Optionen sind dann in ihrer Reihenfolge auszugeben (erste Option ist der erste Weiterleiter usw.). Eine Begrenzung im Vorkommen dieser Option existiert nicht! ---------------------------------------------------------------------------- Optionale Optionen ---------------------------------------------------------------------------- <126>USERNAME@BOXNAME Weiterleiten der Briefe an den User. <125>BRETTCODE Weiterleiten der Replies in das Brett mit dem BRETTCODE. <124>DATUM Verfallsdatum einer Nachricht. Format wie in Headerzeile 13. Es werden nur Tag, Monat und Jahr ausgewertet. Beim erstellen werden Stunde, Minute und Sekunde auf Null gesetzt. Wird dieses Datum erreicht, wird die Nachricht automatisch gelöscht. <123>Fremdnetzrouting (maximale Länge 32 kB) Wird von Gateways erzeugt und beinhaltet das Routing im Fremdnetz bis zum Gateway im Originalformat. Gateways KÖNNEN diese Option erzeugen. <122>Routing Datum Beim einbringen einer Nachricht von einem Fremdnetz ins MagicNet wird hier (im Datumsformat MagicNet) das Datum festgehalten. Gateways MÜSSEN diese Option erzeugen. <121>[ZWEISTELLIGE PROGRAMMKENNUNG] Programmoptional Die zweistellige Programmkennung des Programm und danach die Daten, die für genau das Programm bestimmt sind. So können z.B. Routingdaten zw. Nodes mit gleichen Programmen ausgetauscht werden, verschlüsselte Nachrichten u.ä. realisiert werden. Diese Option kann mehrfach vorkommen. <120>Textattribute Kennzeichnung, ob es sich um einen ASCII-, Postscript-, TeX- o.ä. Text handelt. Eine Liste der "zulässigen" Textattribute wird zu einem späteren Zeitpunkt veröffentlicht. <119>USERNAME@BOXNAME "["+Originalformat+"]" USERNAME@BOXNAME ist die Serviceadresse des Gatewaybetreibers im MagicNET, unter der er zuverlässig zu erreichen ist. Das zwischen den "[" und "]" stehende Originalformat ist in einer Liste der GateBau zusammengefasst. Gateways MÜSSEN diese Option erzeugen. ------------------------------------------------------------------------------ <2> (CTRL-B) Textnachricht, Zeilen getrennt durch Auch diese Zeilen dürfen eine maximallänge von 255 Zeichen nicht überschreiten. <3> (CTRL-C) Danach folgt die nächste Nachricht nach obigem Format. Ein Dateiendekennzeichen (EOF) ist nicht vorhanden! Unter zwingenden Optionen sind solche zu verstehen, die jeder Programierer in sein Programm einbauen muß. Bei den optionalen Optionen ist es dem Programierer freigestellt, ob er sie implementiert oder nicht. Werden solche eingebaut, sind diese vor der öffentlichen Nutzung dem Vorstand vorzulegen. Werden derartige Funktionen eingebaut, sind sie so wie hier beschrieben oder bereits dem Vorstand vorgelegt zu implementieren. ============================================================================== Binärnachrichten ============================================================================== Binärnachrichten werden als einzelne Files innerhalb des Transferpollfiles übersendet. Dabei werden nicht die Originaldateinamen verwendet, sondern es wird eine laufende Hexadezimalzahl erzeugt, Bsp.: Bhhhhhhh.BIN, wobei h für eine Hexadezimalziffer (0-F) steht. Nicht besetzte Ziffern werden mit 0 belegt. Es wird mit 1 begonnen. Die Numerierung muß fortlaufend sein, Lücken sind nicht zulässig. Beispiel: B0000001.BIN oder B0000FFF.BIN Für jede Datei wird ein Text-Header wie im vorigen Kapitel beschrieben erzeugt. Eine Dateibeschreibung kann als normaler Text (wie bei einer Textnachricht und unterliegt somit deren Begrenzungen) eingebunden werden. Es ist innerhalb des Programmes darauf zu achten, daß Binärnachrichten nur in die dafür vorgesehenen Bretter oder als PM verschickt werden können. Sollte eine Binärnachricht nicht weitergeroutet oder erstellt werden können, ist in jedem Falle eine entsprechenden Nachricht (mit Begründung) an den Absender/Ersteller zu erzeugen. Für das Weiterrouten bzw. Erstellen von Binärnachrichten gelten folgende Möglichkeiten, die implementiert werden müssen und dem Sysop zur Verfügung gestellt werden. * Jede Nachricht wird weitergeroutet/kann erstellt werden. * Nur Nachrichten bis zu einer einstellbaren Größe. * Nur so viele Nachrichten, bis das Gesamtvolumen der weiterzuroutenden Nachrichten eine einstellbare Größe erreicht. * Keine Nachricht wird weitergeroutet, bzw. keine Nachricht darf erstellt werden. ============================================================================== Request & Upload ============================================================================== Sollte ein Boxprogramm das Requesten/Uploaden von Files ermöglichen, ist folgende Methode vor allen anderen zu implementieren. Wird kein Request/Uploaden unterstützt (oder es ist zur Zeit, weil der Sysop die Funktion gesperrt hat, nicht möglich), ist eine Nachricht mit einer entsprechenden Meldung zu generieren, die dem System als PM sofort übermittelt wird. Die Übermittlungsmethode ist unter Login-Prozedur&Transfer beschrieben. Dabei werden nicht die Originaldateinamen verwendet, sondern es wird eine laufende Hexadezimalzahl erzeugt, Bsp.: Uhhhhhhh.FIL, wobei h für eine Hexadezimalziffer (0-F) steht. Nicht besetzte Ziffern werden mit 0 belegt. Beispiel: U0000001.FIL oder U0000FFF.FIL Es wird mit 1 begonnen. ------------------------------------------------------------------------------ Request ------------------------------------------------------------------------------ Im Pollpaket existiert optional ein REQUEST.DAT, das folgendermaßen aufgebaut ist: Brettname oder #Brettcode (* für alle Bretter) Paßwort (optional, wenn nicht belegt dann Leerzeile) File-Name Wird als File-Name "%FILES" eingetragen, wird eine Inhaltsliste des Brettes angefordert. Diese Inhaltsliste wird unter dem File-namen "FILES.DAT" zum Anrufer zurückgesendet. Werden File-Listen von mehreren Brettern angefordert so sind diese alle hintereinander in dieser Datei abzulegen. Die einzelnen Zeile besteht dann aus: Brett: , Absender: Filename: Länge: Betreff: Vor dem Doppelpunkt ist das Schlüsselwort abgelegt. Bei nicht definierten Schlüsselwörtern ist der Rest der Zeile zu ignorieren. Weitere Schlüsselwörter als hier angegeben sind dem Vorstand anzumelden und von diesem vor Benutzung zu genehmigen. Hinter dem Doppelpunkt folgt ein Space und dann der/die Parameter. Die einzelnen Zeilen dürfen eine Länge von 255 Zeichen nicht überschreiten (inkl. Schlüsselwort). Ein Eintrag wird mit einer Leerzeile beendet. Ist es der letzte Eintrag in der Datei, kann direkt das Dateiende ohne Leerzeile folgen. Um die Beschreibungen der Dateien anfordern zu können, gibt ein weiteres Schlüsselwort als File-Name: %TEXT . Es wird dann, statt des gesamten Files, nur die Beschreibung übermittelt. Diese Übermittlung erfolgt genauso wie die gesamte Datei, also als Uhhhhhhh.FIL. Um den Zusammenhang zwischen gesendeten Dateien und angeforderten herstellen zu können, wird eine Datei mit dem Namen "NAME.DAT" übermittelt. In dieser Datei sind auch ggf. Fehlermeldungen enthalten. Steht in der ersten Stelle ein Space, folgt dahinter der Dateiname während der Übermittlung, gefolgt von dem Realnamen der Datei. Beide Namen werden durch ein Space getrennt. Befindet sich in der ersten Stelle jedoch ein Ausrufezeichen (!), folgt danach ein zweistelliger Fehler-Code (zulässige Zeichen: Buchstaben (A-Z,a-z) sowie Ziffern. Die Buchstaben sind case-insensetiv zu behandeln), gefolgt von dem Realnamen der Datei. Fehler-Code und Realname sind durch ein Space getrennt. Fehler-Code 00 01 File ist im Brett nicht vorhanden 02 Brett nicht vorhanden 03 Falsches Paßwort 04 Request zur Zeit nicht möglich 05 Kein Zugang zum Brett 06 Kein Zugang zum File 07 Downloadfreiraum überschritten 08 Downloadzeit überschritten 09 Donwloadanzahl überschritten 99 Allgemeiner Systemfehler ------------------------------------------------------------------------------ Upload ------------------------------------------------------------------------------ Im Pollpaket existiert optional eine Datei "UPDATE.DAT", die folgendermaßen aufgebaut ist: 1: <1> (CTRL-A) 2: Brettname oder #Brettcode 3: Paßwort 4: File-Name während des Uploads 5: Real-File-Name 6: Betreff 7: <2> (CTRL-B) Beschreibung des Files n: <3> (CTRL-C) Hinter diesem Eintrag können noch weitere folgen. Sollte die Box den Real-File-Namen nicht korrekt verarbeiten können, bildet sie daraus einen entsprechenden Namen. Ziel ist es, den Real-File-Namen korrekt weiterverarbeiten zu können, ohne Einschränkungen der OS' zu unterliegen. Die Beschreibung unterliegt den Regeln für normale Nachrichtentexte (255 Zeichen maximale Zeilenlänge etc.). Der Betreff darf maximal 65 Zeichen umfassen. ============================================================================== Magic Area Fix V2.10b ============================================================================== A. Grundsätzliches =================== Beschreibungsfestlegung: Zeichenfolgen werden in Anführungszeigen gesetzt. Die Anführungszeichen gehören nicht zur Zeichenfolge. Platzhalter werden in "[]" gesetzt. Beisp.: [Username] wird mit (z.B.) FRANK800 ersetzt. Die Platzhalter entsprechen den Header Festlegungen in den Polldocs. Beisp.: [Absender] entpricht der Form [username]@[node].[netz] Bytes werden in spitzen Klammern <> gesetzt. <32> würde also einem Space entsprechen. entspricht chr$(13) entspricht chr$(10) entspricht chr$(27) IBM Umlaute sind wie folgt definiert: ä=<132>, ü=<129>, ö=<148>, Ä=<142>, Ü=<154>, Ö=<153>, ß=<225> 1) Jedes System muß einen User MAF, als Kürzel für MAGIC-AREA-FIX (in Anlehnung an FIDO) zu Verfügung stellen, der u.a. die Aufgabe hat, Bretterbestellungen zu verarbeiten und ein Zentralrouting zu ermöglichen. 2) Die Bearbeitung der an ihn gesandten Befehle, bzw. Abarbeitung der Zentral-Routing-Funktionen, müssen mindestens einmal in 24 Stunden, idealerweise unmittelbar nach Empfang der Nachricht, des Polls geschehen. 3) Die Einbindung weiterer Befehle, und somit Betreff-Zeilen, sind möglich, müssen aber dem Vorstand zwecks Koordinierung der Weiterentwicklung bekannt- und von diesem freigegeben werden. 4) Brett(ab)bestellungen und andere Befehle dürfen nur von einer direkten Pollbox vorgenommen werden. (Sonst ergibt es auch keinen Sinn.) 5) In der ersten Zeile der Nachricht muß das Pollpasswort mit vorangestellem "%" stehen. 6) Bei Fehlbedienung ist der Hilfstext an den Absender zu schicken. 7) Die Antworten des MAF werden an den Absender der Anforderungsnachricht gesendet. 8) Für jede Bearbeitung wird ein Logfile erstellt und zum Absender zurückgesant. Der Betreff hierfür lautet "LOG". Der Aufbau: [BrettCode]" "[Code]" "[Meldung] Die einzelnen Teile werden durch Space getrennt. Die Fehlermeldung wird vom Programierer festlegt und muss zu dem angegebenen Code passen. Sie darf eine Länge 80 Zeichen nicht überschreiten. Definition von Code: 01 Brett bestellt 02 Brett halbbestellt 03 Brett abbestellt 04 Brett konnte nicht bestellt werden, Brett nicht vorhanden 05 Brett konnte nicht bestellt werden, Passwort stimmt nicht 06 Brett konnte nicht bestellt werden, Kein Zugang 07 Brett konnte nicht abbestellt werden, PflichtBrett ============================================================================== Bretterverwaltung ============================================================================== Bretreffzeile: "BRETTER" Befehle: -------- +CODE PASSWORT Brett mit dem Netzcode CODE und Passwort PASSWORD bestellen. Ist das Brett nicht Passwort geschützt so entfällt die Angabe dieses. -CODE Brett abbestellen -005??? Bestellt alle Bretter mit dem Brettcode 005xxx ab. %LIST ALLE Alle Bretter auflisten %LIST BESTELLT Bestellte Bretter auflisten %LIST UNBESTELLT Unbestellte Bretter auflisten %HILFE Sendet einen Hilfstext mit allen zur Verfügung stehenden Befehlen. optional %PASSWORD [password] Falls Password, korrekt, können _ALLE_ Bretter bestellt werden. !!! Nicht zu veröffentlichen !!! #CODE [PASSWORT] Brett mit dem Netcode CODE und Passwort halbbestellen. Bei halbbestellten Brettern wird nur ein Teil der gesamten Nachricht weitergeroutet. Textnachrichten: Es wird nur der Header weitergeroutet. Der Text (zwischen CTRL-B und CTRL-C) bleibt leer. Binärnachrichten: Es wird der Header sowie der Text (zwischen CTRL-B und CTRL-C) weitergeroutet. Das Binärfile selber jedoch nicht. Wenn dieser Befehl implementiert ist MUSS auch das Bestellen von Nachrichten mittels %MSG (siehe unten) implementiert sein! *CODE Bestellt das Brett mit dem Netcode CODE. Es werden alle noch vorhandenen Nachrichten mitgeschickt, die in den letzten 7 Tagen in diesem Brett ange- kommen sind. %ABO [Infonummer] oder BRETTLISTE Sobald eine aktuelle Version des Infotextes oder der Brettliste erfolgt wird die Brettliste oder der Infotext an das System zugesannt als wäre er bestellt worden. %ZENTRALBRETTCODE Liefert den Brettcode für das Zentralrouting zurück. Antwort Betreff: ZENTRALBRETTCODE: [Brettcode] %LIST USER Listet alle User der Box auf. Antwort Betreff:"USERRLISTE" Der Aufbau: "[Username],[Realname (wenn freigegeben)]" %LIST NODES Listet alle Nodes auf. Antwort Betreff:"NODELISTE" Der Aufbau: "[Boxname],[Telefonnr.],[BPS], [Übertragungsarten]" %LIST NETZE Listet alle Netze auf. Antwort Betreff:"NETZLISTE" Der Aufbau: "[Netzname],[Infotext]" %SAVE Speichert die aktuell bestellten Bretter in einem Backup ab. %RESTORE Lädt ein Backup als aktuelle MAF Daten. %LIST INFO Listet alle Infotexte auf. Antwort Betreff:"INFOTEXTLISTE" Der Aufbau: "[Nr.],[Name],[Länge in Bytes]," [Nr.] entspricht der Nummer unter der Infotext mit dem Befehl %INFO bestellt werden kann. Ist %LIST INFO implementiert so MUSS auch %INFO (siehe unten) implementiert sein! %INFO [Nummer] Fordert das Info [Nummer] an. Antwort Betreff:"INFO TEXT: [Nummer]" Der Infotext wird als PM an den Absender geschickt. %INHALT [Brettcode] Sendet eine Inhaltsliste des Brettes [Brettcode] Antwort Betreff:"INHALTSLISTE [Brettcode]" Der Aufbau: [Msg-ID] [Absender] [Erstellungsdatum] [Betreff] [Länge] %MSG [Brettcode] [Msg-ID] Fordert die Message mit der ID [Msg-ID] aus dem Brett [Brettcode] an. Die Nachricht wird so ins Pollfile abgelgt, als wenn sie gerade neu angekommen wäre, also mit Originalbrettcode etc. Format der Brettlisten ---------------------- Mit den obigen LIST-Kommandos können Bretterliste abgerufen werden. Um diese Listen intern, auch von systemfremden Programmen, weiterverarbeiten zu können, gilt das folgende Format: [BrettCode] [ArtdesBrettes] [Status] [Brettname] Längen der Einträge: BrettCode 6 Zeichen ArtdesBrettes 8 Zeichen Status 8 Brettname Ist ein Eintrag kürzer als die vorgeschriebene Länge, so wird mit Leerzeichen aufgefüllt. Definition von "ArtdesBrettes": "P" Passwort geschütztes Brett "Z" Zugang geschtztes Brett "G" Gruppenbrett "T" Textbrett "B" Binärbrett Die einzelnen Arten werden wie Flags behandelt und können in beliebiger Reihenfolge auftreten. Definition von "Status": "best." Brett ist bestellt "unbest." Brett ist nicht bestellt "Pflicht" Pflichtbrett, abbestellung nicht möglich "n.verf." Brett ist nicht verfügbar "Hbest." Brett ist Halbbestellt. Beispiele: 005000 T best. Angebote B99999 ZPTB Hbest. Super Binärbrett B.3 Password, Zugang etc. -------------------------- a) Der Level, bis zu dem ein jeder Point Bretter bestellen kann, soll in einem Configuration-File festlegbar sein. b) Damit für die Points bspw. der SysOps alle Bretter bestellt werden können, exisitert ein sog. MasterPasswords. Normalerweise werden Bretter, die durch Passwörter, Zugang oder einen höheren Level als im Configurations-File definiert, geschützt sind, weder in den Listen angezeigt und können auch nicht bestellt werden. Durch den Befehl "%PASSWORD [password]" kann obige Sicherheits- maßnahme außer Funktion gesetzt werden. Der "%PASSWORD" Befehl sollte in den allgemeinen Dokumentatiuonen zum MAF nicht beschrieben werden (schlafenden Hunde sollte man nicht wecken). Dieses MasterPassword wird ebenfalls im Configurations-File festgelegt. ============================================================================== Zentralrouting V2.10b ============================================================================== Die Daten werden in einem Brett mit festgelegtem Brettcode verteilt. Der Brettcode wird vom Vorstand festgelegt. Die einzelnen Aktionen werden durch den Betreff festgelegt. Das Schlüsselwort im Betreff wird durch ": " beendet. Der Rest des Betreffs ist der Paramter. Bei einem unbekannten Betreff ist die Nachricht nicht auszuwerten. Die Reihenfolge der Zeilen (außer dem Fingerprint) ist nicht festgelegt und kann wechseln. Die einzelnen Zeilen beginnen mit einem Schlüsselwort gefolgt von ": ". Dahinter folgt der jeweilige Parameter. Sollten Schlüssenwörter vorkommen, die nicht definiert sind, so sind diese zu ignorieren. Sollte der Fingerprint ungültig sein, so ist die Nachricht nicht auszuwerten. ---------------------------------------------------------------------------- Boxenverwaltung ---------------------------------------------------------------------------- Betreff: "EINTRAGEN: [BOXNAME]" "AUSTRAGEN: [BOXNAME]" Dabei steht [BOXNAME] für den Namen der ein-/aus-zutragenden Box. Ist eine Box bereits eingetragen und es erfolgt noch ein "Eintragen", so werden die alten Daten mit den neuen überschrieben. Es ist ein Logfile zu führen. Für den Eintrag sind mindestens Fingerprint,Name, Routing, Telnr und Sysop erforderlich. Es müssen alle Angaben verarbeitet und abrufbar sein. Für den Austrag sind Fingerprint und Name erforderlich. Zeilenfestlegung der Nachricht ------------------------------ 1. Fingerprint, definition s.u. 2. NAME: Boxname 3. ROUTING: direkte Pollbox 4. TELNR: Telefonnummer (bestehend aus Internationaler Vorwahl, Ortsvorwahl und Anschluss. Die jeweiligen Teile werden durch Space getrennt und dürfen nur Ziffern (0-9) enthalten. Beispl. 49 221 361634) 5. BPS: höchste Bpsrate 6. UEBERTRAGUNGSARTEN: Übertragungsarten (getrennt durch Komma) HST,V.32,V.32bis,PEP,MNPx,V.42,V.42bis 7. STANDORT: Landeskennung Postleitzahl Standort 8. SYSOP: Sysopname 9. PROGRAMM: Boxprogramm 10. DIVERSES: Bemerkungen ---------------------------------------------------------------------------- Netzverwaltung ---------------------------------------------------------------------------- Betreff: "NETZ EINTRAGEN: [NETZNAME]" "NETZ AUSTRAGEN: [NETZNAME]" Dabei steht [NETZNAME] für den Namen des ein-/aus-zutragenden Netzes. Ist ein Netz bereits eingetragen und es erfolgt noch ein "Eintragen", so werden die alten Daten mit den neuen überschrieben. Es ist ein Logfile zu führen. Für den Eintrag sind mindestens Fingerprint,Name und Route erforderlich. Es müssen alle Angaben verarbeitet und abrufbar sein. Für den Austrag sind Fingerprint und Name erforderlich. Zeilenfestlegung der Nachricht ------------------------------ 1. Fingerprint 2. NAME: Netzname 3. ROUTE: Routbox 4. BETREIBER: MagicNet Username des Betreibers 5. INFOZEILE: Infozeile 6. DIVERSES: Bemerkungen ---------------------------------------------------------------------------- Infotextverwaltung ---------------------------------------------------------------------------- Betreff: "INFO: [TEXTNAME]" "INFO AUSTRAGEN: [TEXTNAME]" Dabei steht [TEXTNAME] für den Namen des ein-/aus-zutragenden Textes. Ist ein Text bereits eingetragen und es erfolgt noch ein "Eintragen", so werden die alten Daten mit den neuen überschrieben. Es ist ein Logfile zu führen. Für den Eintrag sind alle Angaben erforderlich. Für den Austrag sind Fingerprint und Name erforderlich. Zeilenfestlegung der Nachricht ------------------------------ 1. Fingerprint 2. NAME: Name unter der der Text abrufbar ist 3. INFO: Kurzinfo über den Text 4. DIVERSES: Bemerkungen 5. TEXT: Ab der nächsten Zeile folgt der Text bis zum Ende der Nachricht ---------------------------------------------------------------------------- Fingerprint ---------------------------------------------------------------------------- Auswertung des Fingerprints: nam$="LOSROLAND" ! Absender LOS:ROLAND betreff$="EINTRAGEN: BOXNAME" ! Betreffszeile datum$="031190153212" ! 03.11.1990 15:32:12 Uhr ' FOR i&=1 TO LEN(nam$) summe&=summe&+ASC(MID$(nam$,i&,1)) ! Zeichen aufaddieren NEXT i& FOR i&=1 TO LEN(betreff$) summe&=summe&+ASC(MID$(betreff$,i&,1)) ! Zeichen aufaddieren NEXT i& FOR i&=1 TO LEN(datum$) summe&=summe&+ASC(MID$(datum$,i&,1)) ! Zeichen aufaddieren NEXT i& ' summe&=summe&+42 ! 42 addieren ' PRINT summe& ! Ergebnis = Fingerprint