===== Konfiguration des Verzeichnis-Monitors =====
Bei der Konfiguration des Verzeichnis-Monitors sind gegenüber der Konfiguration normaler Gateways einige Unterschiede zu beachten. Das auffälligste ist, daß der Verzeichnis-Monitor keine Angabe zum **Port** benötigt, weil er selbst auf keiner Netzwerkverbindung hört, sondern nur seinerseits Verbindungen zu anderen Konvertern oder Gateways aufbaut.
Desweiteren benötigt der Verzeichnis-Monitor auch keine **Ressourcendatei**, weil er an den von ihm transportierten Dateien keine Änderungen vornimmt, und deshalb keine Ressourcen braucht. Der Verzeichnis-Monitor macht keine Annahmen darüber, welcher Art die Dateien sind, die er aus den Verzeichnissen ausliest!
{{convert4print:tutorial:dirmonitor.png}}
Entscheidend für die Funktion sind die Angaben unter **Spool Verzeichnis**, **Skript Verzeichnis** und **Befehlszeile**. Das **Spool Verzeichnis** wird immer benötigt, weil dies entweder das Verzeichnis ist, das die zu überwachenden Unterverzeichnisse enthält, oder sogar selbst überwacht wird. Das **Skript Verzeichnis** muß nur dann angegeben werden, wenn die vorgefundenen Dateien durch einen externen Prozess bearbeitet werden sollen. Sollen die Datei dagegen einfach nur an einen Konverter oder an ein Gateway weitergegeben werden, kann dieses Feld leer bleiben.
Mit der **Befehlszeile** wird entschieden, ob ein externer Prozess zur Bearbeitung der vorgefundenen Dateien verwendet werden soll oder nicht. Ist die **Befehlszeile** ausgefüllt, wird das darin enthaltene Kommando für jede vorgefundene Datei aufgerufen. Ist sie hingegen leer, werden die vorgefundenen Dateien einfach nur an den dem Verzeichnis zugeordneten Konverter übertragen.
\\
Für die Auswahl der durch den Verzeichnis-Monitor zu überwachenden Verzeichnisse gelten die folgenden Regeln:
* Das in der Konfiguration des Gateways angegebene **Spool Verzeichnis** wird daraufhin untersucht, ob es Unterverzeichnisse enthält, deren Namen mit dem Namen eines Konverters oder Gateways übereinstimmen. Ist dies der Fall, wird dieses Unterverzeichnis überwacht. Die in diesem Unterverzeichnis auftauchenden Dateien werden dem betreffenden Konverter oder dem Gateway zugeordnet.
* Ist unter **Befehlszeile** nichts eingetragen und es wurde kein übereinstimmendes Unterverzeichnis vorgefunden, wird dies dahingehend interpretiert, dass alle Konverter und Gateways ein Verzeichnis zugeordnet bekommen sollen. Der Verzeichnis-Monitor wird einmalig für jeden Konverter und jedes Gateway ein Unterverzeichnis innerhalb des **Spool Verzeichnis**es anlegen.
* Wurde kein Unterverzeichnis gefunden, dessen Namen mit dem eines Konverters oder Gateways übereinstimmt, und ist unter **Befehlszeile** ein Kommando eingetragen, wird das unter **Spool Verzeichnis** angegebene Verzeichnis selbst überwacht. Die in diesem Verzeichnis auftauchenden Dateien werden keinem Konverter oder Gateway direkt zugeordnet. Stattdessen muß ein nachgeschalteter Prozess - ein Skript oder ein Programm - die Verteilung der Dateien vornehmen, was zum Beispiel abhängig vom Inhalt der vorgefundenen Datei geschehen kann.
* Es können auf einem Rechner nicht mehr als 256 Verzeichnisse überwacht werden.
\\
Ist unter **Befehlszeile** nichts eingetragen, werden alle in den überwachten Verzeichnissen vorgefundenen Dateien ohne weitere Modifikation an den dem Verzeichnis zugeordneten Konverter oder Gateway geschickt. Gegenüber dem Konverter oder Gateway verhält sich der Verzeichnis-Monitor wie ein druckender Host-Rechner. Nach erfolgreicher Übertragung wird die vorgefundene Datei automatisch gelöscht.
In diesem Modus realisiert der Verzeichnis-Monitor eine Datei-Schnittstelle für einen Teil oder für alle Konverter und Gateways.
\\
Ist hingegen unter **Befehlszeile** ein Kommando eingetragen, wird dieses Kommando für jede in den überwachten Verzeichnissen vorgefundene Datei einmal ausgeführt. Das Kommando startet in der Regel ein Skript oder ein Programm, welches parallel zum Verzeichnis-Monitor als eigener Prozess ausgeführt wird. Das aufgerufene Skript oder Programm muß die Datei nach vollendeter Arbeit selbst löschen.
Wegen der Parallelbearbeitung durch einen externen Prozess wird die vorgefundene Datei erst in ein Arbeitsverzeichnis verschoben, um so irrtümliche Prozessaufrufe durch weitere Verzeichniszugriffe des externen Prozesses zu vermeiden. Der Verzeichnis-Monitor legt daher in jedem überwachten Verzeichnis ein weiteres Unterverzeichnis mit dem Namen **Work** an. Der externe Prozess kann daher die Datei nicht nur lesen, sondern auch abändern und nach getaner Arbeit löschen.
In diesem Modus können zum Beispiel nicht unterstützte Dateitypen (z.B. PDF) mit Hilfe der dazugehörenden Applikationen (z.B. Adobe Reader) direkt auf den Konverter oder das Gateway gedruckt werden.
\\
Für die Fälle, in denen mit Hilfe eines Skriptes die vorgefundene Datei bearbeitet werden muß, liegt im Skript-Verzeichnis der (c4p)-Installation ein kleines Hilfsprogramm mit dem Namen **Sender.exe**, welches eine Datei via TCP/IP an einen Konverter oder ein Gateway überträgt.
Die Verwendung dieses Hilfsprogramms erspart die Programmierung einer TCP/IP-Verbindung zur Weitergabe der Druckdaten. In dem unten abgebildeten Beispiel-Perl-Skript **relais.pl** sind die Parameter des Programms zu erkennen. Auf Wunsch kann, wie gezeigt, sogar ein Journal mit einer Liste der übertragenen Dateien geführt werden.
Damit das Skript weiss, an welchen Konverter oder welches Gateway die Druckdaten übertragen werden sollen, wurde der Skript-Parameter **%8** eingeführt, der die Port-Nummer des Konverters oder Gateways enthält.
\\
#!/usr/bin/perl
# Command: perl relais.pl "%1" "%3" %8
# Call: perl relais.pl Scriptpath Filename Port
#--------------------------------------------------------------------#
my $Script = $ARGV [0];
my $Name = $ARGV [1];
my $Port = $ARGV [2];
my $Res = 0;
if ($Script eq "" || $Name eq "" || $Port eq "")
{
$Res = -1;
}
else
{
my $Cmd = "\"$Script/Sender.exe\"" .
"/Target=\"10.1.17.7\" " .
"/Port=$Port " .
"/ErrorLog=\"$Script\\Relais.txt\" " .
"/LogLevel=3 " .
"\"$Name\"";
$Res = system ($Cmd) / 256;
unlink ($Name);
}
exit $Res;
#--------------------------------------------------------------------#
\\
Der Aufruf des Skriptes ist im obigen Bildschirmfoto der Konfiguration des Verzeichnismonitors zu sehen. Im Skript ist natürlich die IP-Adresse an die eigenen Gegebenheiten anzupassen!
\\
=== Hinweise ===
* Für die Reihenfolge der Ausdrucke beim Verzeichnis-Monitor gilt folgendes: die Dateien werden in der Reihenfolge erkannt, in der sie im Verzeichnis angelegt werden. Wenn ein Programm die Dateien erzeugt, ist die Druckreihenfolge exakt die der Dateierzeugung. Wenn mehrere Programme auf das Verzeichnis schreibend zugreifen, werden die Dateien zwar in der richtigen Reihenfolge aber miteinander vermischt ausgegeben. Wird das Verzeichnis per 'Drag and Drop' gefüllt, ist die Reihenfolge die Erzeugungsreihenfolge innerhalb des Ausgangsverzeichnisses.
* Damit die Ausgabereihenfolge der Dateien nicht durcheinander kommt, wartet der Verzeichnis-Monitor darauf, daß eine vorgefundene Datei fertig geschrieben wird. Das kann bedeuten, daß Druckpausen entstehen, wenn das die Druckdatei erzeugende Programm sehr lange braucht. Auch eventuell bereits vorhandene andere Dateien werden so lange nicht bearbeitet.
* Weil für die Überwachung die Verzeichnisse die gleichen Namen wie die Konverter oder Gateways haben müssen, dürfen in den Namen der Konverter oder Gateways natürlich keine Zeichen vorkommen, die in Windows-Datei- oder -Verzeichnisnamen nicht erlaubt sind, also die Zeichen %%'/'%%, '\', '<', '>', '|', ':', '?', %%'*'%% und '"'. Zudem muß berücksichtigt werden, daß Windows nicht zwischen Groß- und Kleinschreibung unterscheidet.
* Außerdem sind beim Einsatz des Verzeichnis-Monitors die folgenden an sich in (c4p) zugelassenen Bezeichnungen nicht als Konverter- oder Gateway-Name erlaubt, weil sie vom Windows-System nicht unterstützt werden: 'CON', 'PRN', 'AUX', 'CLOCK$', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8' und 'LPT9', sowie alle Namen, die mit diesen Bezeichnungen gefolgt von einem Punkt anfangen.
* Der Verzeichnis-Monitor identifiziert sich gegenüber der Management-Konsole unter anderem mit einem Hash über den Namen des Spool-Verzeichnisses. Wird daher das Spool-Verzeichnis gewechselt, ist im Kontrollfeld der Management-Konsole die Lizenz für den Verzeichnis-Monitor erst händisch freizugeben, damit der Verzeichnis-Monitor mit der neuen Konfiguration wieder lauffähig ist. Die Identifikationsnummer des Verzeichnis-Monitors kann der Ablaufverfolgung entnommen werden. Es ist die in eckigen Klammern angezeigte 32-stellige Zahl in der zweiten Meldung.