easyVDR
Wer kann bei Perl-Script helfen - Druckversion

+- easyVDR (http://www.easy-vdr.de)
+-- Forum: Off-Topic (http://www.easy-vdr.de/forum-7.html)
+--- Forum: Allgemeines (http://www.easy-vdr.de/forum-62.html)
+---- Forum: Webmaster (http://www.easy-vdr.de/forum-63.html)
+---- Thema: Wer kann bei Perl-Script helfen (/thread-11849.html)



Wer kann bei Perl-Script helfen - sinai - 22.09.2011

Hallo zusammen

Ich betreibe einen Hylafaxserver, der völlig problemlos arbeitet.

Ab und an (bei bestimmten Kunden) möchte ich kontrollieren, ob das abgesendete Fax auch ankam - dazu nutze ich hylafax_mod für Webmin (dann kann das auch meine Frau)

Die Seite wird korrekt angezeigt, aber ich hätte gerne anstelle der Auftragsnummer das Versanddatum angezeigt.

Der Abschnitt wird wohl in send_done.pl in Zeile 59 erzeugt.

Nur woher kommt $item? Aus hylafax-lib.pl? Und wie?

Ich würde eben im Array $item den ersten Wert von der Auftragsnummer ins Versanddatum ändern. Das Versanddatum könnte man aus docq/doc in Zeile 60 holen, denn in dem Verzeichnis sind alle docxxx.ps-Dateien gespeichert.

Nur wie? Wenn weitere Dateien oder Infos benötigt werden, liefere ich die gerne.

Danke für die Hilfe, denn Perl kann ich nicht...

Andy


Re: Wer kann bei Perl-Script helfen - soulianis - 23.09.2011

Hallo sinai,

wenn ich das richtig sehe, passiert folgendes:

@lines=faxqueue($QPAR);
-> ruft faxstat -ld auf und liest die von faxstat -ld gelieferten Zeilen ins @lines Array ein
...
    foreach $line (@lines)
        {
        $line =~ /^(\d+) /;
        $faxorder{$1}=$line;
        }
-> baut aus den Zeilen ein assoziatives Array mit der Job-ID als Key
...
# sorting faxes by num
    if ($q->param('ASC.x'))
        { @sortfax = sort {$a <=> $b} (keys %faxorder); }
    else
        { @sortfax = sort {$b <=> $a} (keys %faxorder); }
       
  foreach $faxnum (@sortfax)
        {
        @items=&queueItems($faxorder{$faxnum},@sizes);
-> erzeugt einen Sortierschlüssel für das Array (Job-ID auf- oder absteigend), liest das Array dann in der Sortierfolge aus, bereitet die Felder der jeweiligen faxstat -ld Zeile als @items Array auf

Leider enthält die faxstat -ld Ausgabe das Versanddatum nicht. Dein Vorschlag, es aus dem modification date der Queue-Datei zu ermitteln, sollte funktionieren. Vielleicht so:

1) Vor der foreach $item (@items) Schleife merkst Du Dir den Wert von $items[0] (also die Job-ID). Zum Beispiel:

$id = $items[0];

2) Jetzt ersetzt Du nach der foreach $item (@items) Schleife alle Vorkommnisse von $items[0] durch $id.

3) Nach Deiner neuen $id = $items[0]; Zeile (vor der foreach $item (@items) Schleife) setzt Du $items[0] auf das modification date der Queue-Datei:

if (-e "docq/doc".$id.".ps") {
  $items[0] = strftime "%d.%m.%Y %H:%M", localtime((stat "docq/doc".$id.".ps")[9]);
}

Das ist ein normaler strftime Format-String, den Du nach Belieben anpassen kannst.
Mit if(-e ...) wird getestet, ob die Queue-Datei existiert. Sollte immer der Fall sein, aber falls nicht, wird verhindert, dass das Skript aufgrund eines stat() Fehlers abbricht, stattdesen wird wie vorher die Job-ID ausgegeben.

4) vermutlich brauchst Du jetzt noch am Anfang der Datei (nach den require Zeilen) ein

use POSIX;


Ungetestet  Tongue - sollte so oder ähnlich funktionieren  Smile

Viel Glück!


Re: Wer kann bei Perl-Script helfen - soulianis - 27.09.2011

Bin neugierig: Hat's geklappt?


Re: Wer kann bei Perl-Script helfen - sinai - 27.09.2011

Werde grade mit Arbeit zugesch...

Kam noch nicht zum testen.

Sent from my HTC Hero using Tapatalk