#!/usr/bin/perl use CGI; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use File::Spec; # strict und warnings vereinfachen die Fehlersuche: use strict; use warnings; my $load_win_symlink; sub BEGIN { # unter Windows symlink laden. # unixodie System können das direkt... if($^O =~/win/i) { $load_win_symlink=0; # versuchen zu laden eval("use Win32::Symlink"); # $load_win_symlink=1 wenn es geklappt hat $load_win_symlink=1 unless($@); } # Win23::Symlink überschreibt den Befehl "symlink" # das Modul sollte installiert sein. } # der basispfad in dem nach der PDF-Datei geschaut wird # hier in Windows sowas wie "C:","ARCHIV" eintragen. #my @pfad=('C:','ARCHIV'); my @pfad=('','ARCHIV'); # der Dateiname, der Gesucht wird my $filename='asd.pdf'; # Dateiname der auf der Seite Präsentiert wird my $webfilename='.%s.pdf'; my $cgi=CGI->new(); print $cgi->header(); warningsToBrowser(1); # funktioniert "symlink"? unless(eval{ symlink("","");1}) { my $msg=$cgi->h1("Symlink funktioniert nicht!"); # wurde versucht das Modul zu laden, hat aber nicht geklappt? if(defined($load_win_symlink) && $load_win_symlink==0) { # zusätzlich mitteilen, ob "WIN32::Symlink" geladen ist. $msg.=$cgi->p('Das Modul "WIN32::Symlink" konnte nicht geladen werden.'); } # Fehlermeldung ausgeben print_html($msg); exit(); } my $gms_oid=$cgi->param("o"); if ($gms_oid) { # name in Hexwerte wandeln und alle 2 stellen splitten. push(@pfad, split(/(?=(?:\d\d)+$)/,sprintf("%010X",$gms_oid))); # Sysmenunabhängige Pfadangabe in die Systemabhängige wandeln my $file=File::Spec->catfile( @pfad, $filename ); # Existiert die Datei an dem Ort? if(-e $file) { # Webnahme erzeugen. my $webfile=sprintf($webfilename,$gms_oid); # symlink erzugen wenn er nicht schon existiert # funktioniert unter windows nur auf "ntfs" symlink($file, $webfile) unless (-e $webfile); # als inline-PDF ausgeben: print_html(""); } else { # fehlermeldung wenn die PDF-Datei nicht gefunden wurde. print_html($cgi->h1("\"$gms_oid\" existiert nicht")); } } else { # fehlermeldung wenn kein Parameter "o" angeben wurde. print_html($cgi->h1("Parameter \"o\" nicht angeben")); } ######################################################################## # HTML-Ausgabe sub print_html { my $inline=shift; print $cgi->start_html(-title=>"BLUB", -bgcolor=>"#AAAAAA", -style=>{"src"=>'licis.css'}, -script=>{-language=>'JavaScript', -src=>'gms.js'}); print $inline; print $cgi->end_html(); }