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