Unusual requirement using perl?
Igor Sysoev
is at rambler-co.ru
Tue Oct 30 20:07:26 MSK 2007
On Wed, Oct 31, 2007 at 01:04:52AM +1030, Kingsley Foreman wrote:
> I have an unusual requirement for a poject im working on.
>
> What I need to do is somehow make it so that an ip address is able to hit a
> folder but anyone not on that address will get a 404 or 403 message.
>
> Im not much of a perl programmer however what i need it to do is this
> _______________________________________________________________________________________
> $ip = $r->remote_addr ;
> $request = "/htdocs/111222333444-123456789/blah/"; # this would be the
> $r->uri i think
> $ip =~ s/\.//g;
>
> $request =~ /\/htdocs\/([0-9]+)-([0-9]+)\/blah\//; # matches the
> 111222333444 and 123456789 in the request
> if ($ip == $1){
> print "allow"; # allow it to open the file/folder
> } else {
> print "404"; # send a 404 or 403 message to the client
> }
> _______________________________________________________________________________________
> I hope this example sort of shows what I need to happen, however I have no
> idea how to use the perl-embed module to make it work.
The usual way is veriable handler:
http {
perl_set $forbidden forbidden::handler;
server {
location / {
if ($forbidden) {
return 403;
}
root ...
...
}
forbidden.pm:
package forbidden;
use nginx;
sub handler {
my $ip = r->remote_addr;
my $uri = r->uri;
...
if ($ip == $1) {
return "1";
}
return "";
}
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list