Skript Phase 1

Das Skript wird vom Gateway Phase 1 genutzt. Seine Aufgabe besteht lediglich darin, eine Kopie des zu unterzeichnenden Dokuments im Arbeitsverzeichnis des Monitor-Gateways abzulegen.

Das Skript erhält als ersten Parameter den Pfad, in dem sich das Skript selbst befindet. Als zweiter Parameter wird der Pfad zum Spool-Verzeichnis des Gateways sowie der interne Name des zu bearbeitenden Dokuments übergeben

Da der interne Name des Dokuments ein vom Gateway automatisch erzeugter Name aus der Objektbezeichnung des Gateways selbst und einer laufenden Nummer ist, ist dieser Name natürlich für die spätere Zusammenführung von Dokument und Unterschriften unbrauchbar.

Das Skript muss daher auch die eindeutige Dokumentkennzeichnung aus der Indexdatei auslesen. Dies ist das Kennzeichen, das letztlich auch in den Barcodes neben den Unterschriftfeldern kodiert ist. Hier ein Auszug aus dieser Datei für das Testbeispiel:

[p2f]134676745
[Client]3.5.1.5797;A$O4ER.XML
[Param]3.0;10.1.17.59
 
[Time]30.01.18 14:38:43
[Process]N0I4E38.XML
[0100F902B6]Kabel GmbH
...
[01037C06A0]Servicevertrag:
[01037C08AE]0018/5
[0103DE06A0]Nachweisnummer:
[0103DE08AE]0004.3805
[01043F06A0]Auftrag:
[01043F08AE]1705
[01050106A0]Kundennummer:
[01050108AE]347-57897
[01056206A0]Sachbearbeiter:
...
[Page]
[End]


Im Beispieldokument ist diese Kennzeichnung an der Indexposition 0103DE08AE zu finden. Mit Hilfe eines regulären Ausdrucks werden die zwei Zifferngruppen aufgenommen und zu einem Kennzeichen verkettet. Das ist nahezu identisch zum Suchfeld aus dem Formular sign2forms.

Wurde ein korrektes Dokumentkennzeichen gefunden, erhält das Dokument dieses Kennzeichen als neuen Namen. Die Indexdatei wird im weiteren Verlauf des Prozesses nicht mehr benötigt und kann gelöscht werden.

sign_1.php
<?php
// Gateway command line: php "%1\sign_1.php" "%1" "%2" %4
 
// (c) 2018 by SPE Systemhaus GmbH
 
$Script   = $argv [1];                                      /* path to script */
$Spool    = $argv [2];                            /* path to spooled document */
$Document = $argv [3];                                    /* name of document */
 
if ($Script == "" || $Spool == "" || $Document == "") { exit (-1); }
 
chdir ($Spool);                /* make it current directory to shorten pathes */
 
$Identifier = ""; 
 
$Index = fopen ($Document . ".ctl", "r"); 
 
if ($Index) {
    while (($Line = fgets ($Index, 4096)) !== false) {
        if (preg_match ("/\[0103DE08AE\]([0-9]+)\.([0-9]+)/", $Line, $Matches)) {
            $Identifier = $Matches [1] . $Matches [2]; 
            break; 
        }
    }
    fclose ($Index); 
}
 
if ($Identifier == "") { exit (-1); }                  /* wrong document type */
 
rename ($Document . ".pcl", $Identifier . ".pcl"); 
unlink ($Document . ".ctl");                              /* no longer needed */
 
exit (0); 
?>


Hinweise