Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]164[/thread]

Problem bei STDOUT: Ausgabe von xml datein



<< >> 8 Einträge, 1 Seite
janek
 2004-02-03 01:05
#1161 #1161
User since
2004-02-02
17 Artikel
BenutzerIn
[default_avatar]
moinsen,

mit folgendem pl prog lasse ich dateien im browser anzeigen, die im htacces gesicherten folder abgelegt sind.

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
47
48
49
50
51
#!/usr/bin/perl                                                    
# ==============================================
# Program : view_doc.pl - Opens documents from server and returns back to browser
#
# Created : 23.01.2004
# ==============================================



# == MODULES ==============================================
#use strict;                                                      
use warnings;                                                      
use CGI::Carp qw(fatalsToBrowser);                                
use CGI qw/:standard/;                                            
# =//============================================



# == GLOBAL VARS DECLARATION =====================
my $query = new CGI;
my $id = $query->param(id);
my $datei = $query->param(source);
my $speed = 5*1024; # 5kb pro Sek.
my $mimetype =();
# =//============================================



# == PROGRAM CODE ==============================================
if ($id == "1"){
$mimetype = "Content-Type: application/pdf\n\n";
}
if ($id == "2"){
$mimetype = "Content-Type: text/xml\n\n";
}

print $mimetype;
open(FILE,"<".$datei) || die $!;


binmode(FILE);
binmode(STDOUT);


my $buffer;
while (read(FILE,$buffer,$speed)) {
      print STDOUT $buffer;        
      sleep(1);
}
close (FILE);
# =//============================================


Lasse ich nun das prog ein PDF file (id=1) ausgeben läuft alles wunderbar. Reader startet - dokument wird angezeigt.
Gebe ich nun an es soll eine XML file gezeigt werden. Kommt eine Fehlermeldung, das die XML nicht angezeigt werden kann. Schaue ich auf den Quelltext dieser Meldung ist der XML-inhalt richtig angezeigt.
Die XML greift auf ein XSL-Stylesheet zu.
Hier die ersten zwei Zeilen der XML:


Code: (dl )
1
2
<?xml version="1.0"?>
<?xml-stylesheet  type="text/xsl" href="../../template.xsl"?>


Meine Gedanken:
- Kann es sein, dass er die xsl datei nicht nutzen kann, da diese sich auch im gesicherten Verzeichnis befindet?
Wenn ja, könnte ich anstatt die xsl zu benutzen, mein Perlprogramm die Arbeit des Stylesheets machen lassen? Wie?

-Oder liegt der Fehler bei der Wahl des MIME-type?

Ich komm der Sache einfach nicht dahinter. Vielleicht könnt Ihr mir helfen.

pace
janek.
Crian
 2004-02-03 11:29
#1162 #1162
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Versuch mal testweise, die Datei template.xsl ins gleiche Verzeichnis zu legen und "../../" wegzulassen.

Mir schwirrt irgendein Halbwissen im Hinterkopf herum, dass es damit Probleme geben könnte, kann aber leider nichts genaues sagen.

Wenn es dann geht weißt Du wenigstens, in welche Richtung Du herumprobieren musst. Ev. musst Du einen absoluten Pfad angeben, was man natürlich ungern macht.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2004-02-03 11:46
#1163 #1163
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die XSL ins cgi-bin?? Davon würde ich abraten, da die Dateien im cgi-bin als ausführbare Dateien interpretiert werden. Gibt dann einen Fehler...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2004-02-03 11:51
#1164 #1164
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich dachte mehr in das Verzeichnis, in dem die XML-Datei erzeugt wird.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2004-02-03 11:59
#1165 #1165
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ok, dann habe ich Dich Mistverstanden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2004-02-03 12:28
#1166 #1166
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
BTW: In dieser Form ist das Programm eine fette Sicherheitsluecke, da du deine Parameter nicht ueberpruefst. Was passiert wohl, wenn ich das Skript mit ".../scriptname.cgi?source=..%2f..%2f..%2fetc%2fpasswd&id=2" oder aehnlichem aufrufe?
janek
 2004-02-12 19:44
#1167 #1167
User since
2004-02-02
17 Artikel
BenutzerIn
[default_avatar]
Ok danke ich habe die Lösung bzw. den Grund dafür gedfunden. Dir url ging über einen https protokoll. Irgendwie zeigt der Server die xml's nicht an. die pdf's aber schon. lasse ich ihn die dokumente über das http laufen ist alles ok. daher problem vorerst gelöst.

@ dubu

ich weiss leider nicht was passieren soll, wenn du das script so aufrufst, dazu kenne ich mich in Perl zu wenig aus.
esskar
 2004-02-12 21:59
#1168 #1168
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
%2f steht für /
dann übersetzen wir mal...

source=../../../etc/passwd


besser?
<< >> 8 Einträge, 1 Seite



View all threads created 2004-02-03 01:05.