1. #!c:/perl/bin/perl -w
2. $|++;
3. use strict;
4. use CGI::Simple;
5. use HTML::Template;
####
7. my $q = CGI::Simple->new;
8. my $t = HTML::Template->new( filehandle => *DATA );
####
10. my @ext = qw( pl css htm html shtm shtml );
11. my $file = $q->param('file');
12. my $fh;
####
14. if (
15. ($file =~ /[^a-zA-Z0-9_\-\.]/) or
16. ($file =~ /\.\./) or ($file eq '.') or
17. !(grep { $file =~ /\.$_\z/i } @ext)
18. !(-e $file) or
19. !(open $fh, '<', $file) or
20. ) {
####
21. $t->param(
22. title => 'My File Viewer',
23. file => 'Script Error',
24. code => 'An error occured while preparing the file for display.'
25. );
26. }
27.
28. else {
29. $t->param(
30. title => 'My File Viewer',
31. file => $file,
32. code => do { local $/; <$fh> }
33. );
34. }
####
36. print $q->header, $t->output;
37. exit;