Thread cgi skript umschreiben: Kann kein CGI nutzen. (10 answers)
Opened by Earl_Mobilee at 2006-02-02 12:36

Earl_Mobilee
 2006-02-02 12:36
#6834 #6834
User since
2006-02-02
10 Artikel
BenutzerIn
[default_avatar]
Hallo allerseits,

ich bin neu hier und neu im Umgang mit Perl/CGI.

Ich will mailgraph nutzen. Ein Programm zum erstellen von Grafiken
mit dem eMail-Traffic. Das Programm laeuft super. Es gibt eine
mailgraph.pl Datei und eine mailgraph.cgi Datei.
Die .pl Datei erstellt die RRA und sammelt die Daten.
Die.cgi erstellt die Grafiken. Allerdings muss es dazu in einem
cgi-bin Verzeichnis liegen. Ich kann aber kein webserver auf dem
Rechner gebrauchen. Also muss ich die Grafiken irgendwie
anders erstellen. Nur weiss ich nicht wie.

Wenn ich das cgi auf der Konsole aufrufe bekomme ich den html
code angezeigt. Es werden aber nicht die Grafiken erstellt die ich
benoetige. Die werden nur temporaer erstellt wenn ich mit Mozilla
auf die Site gehe. Sie werden auch NICHT erstellt wenn ich z.B. mit
lynx oder wget die Seite lade.

Ich probiere schon so einige Sachen in dem Skript zu aendern, allerdings ohne Erfolg. send_image

Ich schick mal etwas Code mit. Vielleicht weiss ja jemand ne Loesung.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
sub send_image($)
{
       my ($file)= @_;

       -r $file or do {
               print "Content-type: text/plain\n\nERROR: can't find $file\n";
               exit 1;
       };

       print "Content-type: image/png\n";
       print "Content-length: ".((stat($file))[7])."\n";
       print "\n";
       open(IMG, $file) or die;
       my $data;
       print $data while read(IMG, $data, 16384)>0;
}

sub main()
{
       my $uri = $ENV{REQUEST_URI} || '';
       $uri =~ s/\/[^\/]+$//;
       $uri =~ s/\//,/g;
       $uri =~ s/(\~|\%7E)/tilde,/g;
       mkdir $tmp_dir, 0777 unless -d $tmp_dir;
       mkdir "$tmp_dir/$uri", 0777 unless -d "$tmp_dir/$uri";

       my $img = $ENV{QUERY_STRING};
       if(defined $img and $img =~ /\S/) {
               if($img =~ /^(\d+)-n$/) {
                       my $file = "$tmp_dir/$uri/mailgraph_$1.png";
                       graph($graphs[$1]{seconds}, $file);
                       send_image($file);
               }
               elsif($img =~ /^(\d+)-e$/) {
                       my $file = "$tmp_dir/$uri/mailgraph_$1_err.png";
                       graph_err($graphs[$1]{seconds}, $file);
                       send_image($file);
               }
               else {
                       die "ERROR: invalid argument\n";
               }
       }
       else {
               print_html;
       }
}

MfG Torsten\n\n

<!--EDIT|renee|1138877886-->

View full thread cgi skript umschreiben: Kann kein CGI nutzen.