Unusual requirement using perl?

Kingsley Foreman kingsley at internode.com.au
Tue Oct 30 20:18:05 MSK 2007


I can make sense of that,

awesome thanks for the help, I never stop being impressed with nginx.

It is currently doing 75MB/s on one of my boxes atm :)

Kingsley

----- Original Message ----- 
From: "Igor Sysoev" <is at rambler-co.ru>
To: <nginx at sysoev.ru>
Sent: Wednesday, October 31, 2007 3:37 AM
Subject: Re: Unusual requirement using perl?


> 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