/*
   $VER: Anon.zprx 1.4 (15.12.95) Copyright 1995 (c) Nils Görs.


   Funktionsbeschreibung:

    Dieses  Skript wurde erstellt, um  ganz bequem eine Nachricht über
    den Anon-Server zu versenden.


  Benutzung:

    Schreiben  bzw.  kommentieren sie eine Nachricht  wie  bisher. Nun
    können Sie die Nachricht "Versenden" oder "Speichern".
    Wenn Sie "Versenden" gewählt haben sollten, dann  müssen  Sie sich
    in das Spool-Brett begeben und von dort "Anon.zprx" aufrufen.

    Falls  Sie "Speicher" gewählt haben sollten,  dann  können Sie  im
    Brett bleiben und rufen dort "Anon.zprx" auf. Die  alte  Nachricht
    wird hierbei kommentarlos aus dem SPOOL-Brett gelöscht.
    "Anon.zprx", speichert die neue Nachricht auch im aktuellen Brett.


   Installation:

    Kopieren sie dieses Skript in  das  Rexx-Verzeichnis  von  ZP  und
    fügen  sie  danach  der  Datei  'fkeys.zp'  auf Wunsch den Eintrag
    "F1:SYS:Rexxc/RX ZPOINT:Rexx/Anon.zprx %s" hinzu.

    Alternativ hierzu können Sie auch folgende  Zeilen  in  die  Datei
    usermenus.zp einfügen:

    *Versand via Anon
    SYS:Rexxc/RX Zodiac:Rexx/Anon.zprx %s


   Copyright:

    Sie dürfen dieses Skript  beliebig kopieren, solange  es  zusammen
    mit  Zodiac's Point  eingesetzt wird, aber  verändern Sie es bitte
    nicht ohne Erlaubnis des Autors.


   Autor dieses Skripts:

       Nils Görs              Tel. : +49 (0)202 784258
       Kaiserstr. 97a         EMail: N.Goers@Art-Line.Art-Line.de
       42329 Wuppertal          oder über das ZP-Support-Brett.

   Verwenden Sie bitte nach Möglichkeit elektronische Post!
*/

/*  Wie lautet die Adresse von Anon? */
AnonAdresse    = "anon@anon.penet.fi"
AnonServer     = "@anon.penet.fi"

/* und wie lautet Ihr Passwort? */
AnonPasswort   = "<geheim>"

/* soll die Originalnachricht entfernt werden?
   0 = mit Sicherheitsabfrage
   1 = ohne Sicherheitsabfrage                                    */
DelImmer       = 0

/* Name Ihrer privaten Adresse (OHNE Domain) ? */
MeinName = "N.Goers@"
/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 *      Bitte geben Sie hier ihre Präferenzen ein !                *
 *******************************************************************/

/*******************************************************************
 *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
 *******************************************************************/

wopts          = ''
Datei.tmp      = "t:anon.tmp"
NL             = '0a'x
None           = "-NONE-"
Bezug          = "BEZ"
Crypto         = "CRYPT"
Diskussion     = "Diskussion-in"
Empfangsbest   = "EB"
PGPSignatur    = "PGP-SIG"

OPTIONS RESULTS
/* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
PARSE ARG zpPort
IF zpPort == "" THEN
   zpPort = "ZPoint"
ADDRESS VALUE zpPort

'GUILOCK text="Bitte etwas Geduld..."'
/* --- Dieses Skript darf nur im Brett ausgeführt werden --- */
WHICHLEVEL
 IF Result ~= "BOARD" then DO
  REQUESTNOTIFY "Bitte begeben Sie sich in ein Brett!"
  EXIT
 END

SERVER
ServerName=RESULT

COUNT LISTED
marked = RESULT
IF marked ~= 0 THEN DO
 Bigloop = 1
 MESSAGEINFO Position
 mailpos = RESULT
 JUMPTOMESSAGE 1
 MESSAGEINFO LISTED			/* ist diese erste Nachricht markiert? */
  IF Result == 1 THEN DO
    CALL _main
    marked  = marked-1
  END
  DO i = 1 to marked
    DOWN
     MESSAGEINFO LISTED
      IF RESULT == 0 THEN JUMPTOMESSAGE LISTED
    wopts = ''
    DROP Spool oldID SubjectName Brettname Receivername
    CALL _main
  END
 JUMPTOMESSAGE mailpos
 EXIT
END
/* Es soll nur die Nachricht verschickt werden, wo der Cursor steht */
bigloop = 0
CALL _main
EXIT

_main:
MESSAGEINFO ID /* Die MessageID der Originalnachricht ermitteln */
oldID = RESULT

Spool = 0
BOARDINFO LABEL; Brettname=Result
 IF INDEX(Brettname,'(Spool-') ~= 0 THEN DO
   MESSAGEINFO RECEIVER
    IF (RESULT = AnonAdresse) THEN DO
     REQUESTNOTIFY "Diese Nachricht wird schon via" AnonAdresse "versendet!"
     RETURN
    END
   Spool = 1
 END

IF bigloop & Spool ~= 1 THEN DO
  REQUESTNOTIFY "Um mehrere Nachrichten auf einmal versenden zu können,",
              NL"müssen sich diese Nachrichten im Spool-Brett befinden!"
  JUMPTOMESSAGE mailpos
  EXIT
END
 origName = UPPER(MeinName||servername)
 MESSAGEINFO RECEIVER
 Receivername=RESULT
  Receivername2 = UPPER(Receivername)
 IF ABBREV(Receivername2,origName) THEN
  DO
   MESSAGEINFO AUTHOR
   ReceiverName=RESULT
    Receivername2 = UPPER(Receivername)
    IF ABBREV(Receivername2,origName) THEN
     DO
      requestnotify "Wieso wollen Sie eine anonyme",
                  NL"Nachricht an Ihre eigene Adresse senden ??"
      RETURN
     END
  END
    IF (ReceiverName = AnonAdresse) THEN DO
     REQUESTNOTIFY "Diese Nachricht wird schon via" AnonAdresse "versendet!"
     RETURN
    END

AnonServer = UPPER(AnonServer)
 IF LASTPOS(AnonServer,Receivername2) ~= 0 THEN AnonServer = 1

/* jetzt scheint alles klar zu sein und die Originalnachricht
   wird aus dem SPOOL-Brett entfernt ! */
 IF Spool = 0 THEN CALL _DeleteMessInSpool
    JUMPTOMESSAGE 'ID' oldID
     IF (RC) == 0 THEN DO
      REQUESTNOTIFY "Wo ist denn die Originalnachricht geblieben?"
      RETURN
     END

/* Welche Parameter enthält die Originalnachricht ?? */
MESSAGEINFO FULLSUBJECT
SubjectName=RESULT

 FINDHEADER Crypto
  IF RESULT ~= None THEN
   DO
    requestnotify "MITTEILUNG: Hallo lieber Anwender,",
                  NL"bisher habe ich noch keine PGP/QCP",
                  NL"Unterstützung eingebaut. Falls Sie",
                  NL"aber eine solche Unterstützung be-",
                  NL"nötigen, dann setzen Sie sich doch",
                  NL"bitte mit mir in Verbindung.      "

/*
  Ich persönlich sehe keinen Sinn darin Nachrichten PGP zu kodieren,
  die man anonym versendet. Sehen Sie es anders ??
*/

   RETURN
END

 FINDHEADER Empfangsbest
  IF RESULT ~= None THEN  wopts = wopts 'CONFIRM'
 FINDHEADER Diskussion
  IF RESULT ~= None THEN  wopts = wopts 'FOLLOWUP' '"'RESULT'"'
 FINDHEADER ALL Bezug
  IF RESULT ~= None THEN  wopts = wopts 'REFERENCES' '"'RESULT'"'
 MESSAGEINFO TYPE
  IF RESULT == "BINARY" THEN wopts = wopts 'BINARY'

IF ~OPEN(Dat,Datei.tmp||zpPort,"Write") THEN
 DO
  REQUESTNOTIFY "Ich konnte die Datei" Datei.tmp||zpPort "nicht zum schreiben öffnen!"
  RETURN
 END

  IF AnonServer ~= 1 THEN CALL WRITELN(Dat,"X-Anon-To:" Receivername)
                          CALL WRITELN(Dat,"X-Anon-Password:" AnonPasswort)
CALL CLOSE(Dat)

SAVEMESSAGEBODY Datei.tmp||zpPort
IF Spool = 0 THEN wopts = wopts 'SAVE'

IF AnonServer = 1 THEN
WRITEMESSAGE Datei.tmp||zpPort,
                        'RECEIVER' ReceiverName,
                        'SUBJECT'  '"'SubjectName'"',
                         wopts
ELSE
WRITEMESSAGE Datei.tmp||zpPort,
                        'RECEIVER' AnonAdresse,
                        'SUBJECT'  '"'SubjectName'"',
                         wopts

IF RESULT = '' THEN DO			/* Hups! Fehler! */
    REQUESTNOTIFY "Konnte Nachricht nicht verschicken!"
    CALL _DeleteTemps
END

IF DelImmer == 0 THEN			/* Soll nachgefragt werden? */
   DO					/* Soll die Nachricht gelöscht werden ? */
    REQUESTRESPONSE "Soll die Ursprungsnachricht gelöscht werden?"
    IF RC == 1 THEN DELETE ONE
   END
ELSE DELETE ONE	/* Wenn 1, dann Nachricht löschen! */

/************************************
 * im Speicher alles wieder löschen *
 * und das Skript beenden!          *
 ************************************/
_DeleteTemps:
     ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
     GUILOCK off			/* Die GUI wieder freigeben! */
    RETURN

/***************************************************
 * diese Routine ist dafür zuständig, daß die alte *
 * Nachricht aus dem Spool-Brett entfernt wird!    *
 ***************************************************/
_DeleteMessInSpool:
BOARDMENU
JUMPTOBOARD 1
 ENTERBOARD
  JUMPTOMESSAGE 'ID' oldID
  IF (RC) == 1 THEN DELETE ONE
  BOARDMENU
 JUMPTOBOARD 'NAME' BrettName
ENTERBOARD
RETURN
/*EOS*/
