Stas et al,

OK. Gave this a try:



  file:MyApache/BlockByIP.pm
  --------------------------
  package MyApache::BlockByIP;
  
  use strict;
  use warnings;
  
  use Apache::RequestRec ();
  use Apache::Connection ();
  
  use Apache::Const -compile => qw(FORBIDDEN OK);
  
  my %bad_ips = map {$_ => 1} qw(127.0.0.1 10.0.0.4);
  
  sub handler {
      my $r = shift;
  
      return exists $bad_ips{$r->connection->remote_ip}
          ? Apache::FORBIDDEN
          : Apache::OK;
  }
  
  1;


I'm pretty OK with this, but let me ask two questions:

Question 1: When I commented:

#  use Apache::Connection ();

I got an error:

[Sat Jul 03 17:21:31 2004] [error] [client 127.0.0.1] Can't locate object
method "remote_ip" via package "Apache::Connection" at
/home/darnold/modperl/MyApache/BlockByIP.pm line 17.\n

But when I commented:

#  use Apache::RequestRec ();

No error! How come?

Question 2: I am shaky with this line:

  use Apache::Const -compile => qw(FORBIDDEN OK);

What's that "compile" thingy and can someone break down the use of the =>
notation in this situation for me?




At 04:33 PM 7/3/04 -0700, Stas Bekman wrote:
>[David, don't forget to hit reply-all]
>
>> Thanks. Line continuation!
>> 
>> I now have this in my httpd.conf:
>> 
>> <Location /public>
>>         PerlAccessHandler 'sub {\
>>                                 return Apache::Const::FORBIDDEN\
>>                                 unless
>> shift->connection->remote_ip=~m/^\Q10.3.4./;\
>>                                 }'
>> </Location>
>> 
>> Hmmm.... I'm reading this and it seems to me that this should deny access
>> to anyone trying to access a file in the /public folder unless they are
>> coming from a remote address that starts with 10.3.4. But it seems to let
>> me in coming from 127.0.0.1.
>> 
>> Am I missing something here?
>
>Your code is broken, there is no Apache::Const::FORBIDDEN, but 
>Apache::FORBIDDEN. You also need to compile it before you can use it. Take a 
>look at:
>http://perl.apache.org/docs/2.0/user/handlers/http.html#PerlAccessHandler
>
>did you look at the error_log file, was there anything in it?
>
>add 'use warnings/use strict' or PerlOptions -w (and -T) if you don't have 
>already.
>
>-- 
>__________________________________________________________________
>Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
>http://stason.org/     mod_perl Guide ---> http://perl.apache.org
>mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
>http://modperlbook.org http://apache.org   http://ticketmaster.com
>
>-- 
>Report problems: http://perl.apache.org/bugs/
>Mail list info: http://perl.apache.org/maillist/modperl.html
>List etiquette: http://perl.apache.org/maillist/email-etiquette.html
>
>
>

-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html

Reply via email to