Thread HTML::Mason als CGI: mason_handler.pl (3 answers)
Opened by GwenDragon at 2005-02-07 19:47

GwenDragon
 2005-02-07 19:47
#4278 #4278
User since
2005-01-17
14590 Artikel
Admin1
[Homepage]
user image
Möglicherweise gehört folgendes eher unter Apache, aber mal sehen. Ansonsten bitte verschieben.

Da ein aktuelles Webprojekt kein mod_perl installiert hat, benutze ich HTML::Mason mit einem Perl-Skript als CGI-Wrapper (=Mason-CGI).
Ich verwende HTML::Mason 1.26
Klappt auch alles wunderbar.

Meine .htaccess im Docroot ist
Code: (dl )
1
2
3
4
Action mason-cgi /cgi-bin/mason-handler.pl
<FilesMatch "\.m(html|txt|pl)$">
   SetHandler mason-cgi
</FilesMatch>


Rufe ich zum Beispiel die existente URL /test/t.mhtml auf, klappt Mason vorzüglich.

Das Mason-Handler residiert im /cgi-bin Verzeichnis und Rechtemäßig ist auf rwxr-x-rx gesetzt.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;

use HTML::Mason::CGIHandler;

use lib qw ( /wwwroot/A233122/html/cgi-bin/lib );

my $h = HTML::Mason::CGIHandler->new (
   data_dir  => '/wwwroot/A233122/tmp/mason',
   comp_root => $ENV{DOCUMENT_ROOT},
    
   error_mode => 'fatal', # Output to serverlog
);

$h->handle_request;

1;


Ich möchte jedoch verhindern, dass der Mason-Handler direkt aufgerufen werden kann, da er seltsamerweise seinen eigenen Inhalt ausgibt!
Ist mit mod_rewrite sowas möglich - ich habe es jedenfalls nicht hinbekommen?

Wenn ich als RewwriteRule folgendes benutze, dann wird der Aufruf des Mason-Wrappers nicht erlaubt.
Code: (dl )
1
2
RewriteCond %{REQUEST_URI} mason_handler.pl$
RewriteRule ".*" - [F]
Gut.

Wie verhindere ich folgende "direkten" Aufrufe?
/cgi-bin/mason_handler.pl/test/t.mhtml
Aufrufe wie /test/t.mhtml sollen nämlich erlaubt sein.

Intern macht der Apache doch durch das Action aus /test/t.mhtml den Request /cgi-bin/mason_handler.pl/test/t.mhtml\n\n

<!--EDIT|GwenDragon|1107802198-->
die Drachin Gwen

View full thread HTML::Mason als CGI: mason_handler.pl