stas        2002/08/28 06:37:51

  Modified:    src/docs/2.0/user/handlers handlers.pod
  Log:
  - fix the markup
  - several wording changes
  
  Revision  Changes    Path
  1.15      +62 -9     modperl-docs/src/docs/2.0/user/handlers/handlers.pod
  
  Index: handlers.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/handlers/handlers.pod,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- handlers.pod      28 Aug 2002 12:30:24 -0000      1.14
  +++ handlers.pod      28 Aug 2002 13:37:51 -0000      1.15
  @@ -1124,7 +1124,7 @@
         return Apache::DECLINED unless $r->method eq METHOD;
   
   Next it tells Apache that this new method is a valid one and that the
  -C<perl-script" handler will do the processing. Finally it pushes the
  +C<perl-script> handler will do the processing. Finally it pushes the
   function C<send_email_handler()> to the C<PerlResponseHandler> list of
   handlers:
   
  @@ -1168,12 +1168,16 @@
   client that uses C<LWP::UserAgent> to issue an C<EMAIL> method request
   over HTTP protocol:
   
  +  file:send_http_email.pl
  +  -----------------------
  +  #!/usr/bin/perl
  +  
     use strict;
     use warnings;
     
     require LWP::UserAgent;
     
  -  my $url = "http://localhost:8002/email/";;
  +  my $url = "http://localhost:8000/email/";;
     
     my %headers = (
         From    => '[EMAIL PROTECTED]',
  @@ -1191,10 +1195,16 @@
     my $res = LWP::UserAgent->new->request($req);
     print $res->is_success ? $res->content : "failed";
   
  -most of the code is just a custom data. The actual code is made of
  -four lines. Create C<HTTP::Headers> and C<HTTP::Request> object.
  -Issue a request. At the end we print the response's content if it was
  -successful or I<failed> if not.
  +most of the code is just a custom data. The code that does something
  +consists of four lines at the very end. Create C<HTTP::Headers> and
  +C<HTTP::Request> object. Issue the request and get the
  +response. Finally print the response's content if it was successful or
  +just I<"failed"> if not.
  +
  +Now save the client code in the file I<send_http_email.pl>, adjust the
  +I<To> field, make the file executable and execute it, after you have
  +restarted the server. You should receive an email shortly to the
  +address set in the I<To> field.
   
   
   
  @@ -1245,8 +1255,8 @@
   =head2 PerlAccessHandler
   
   The I<access_checker> phase is the first of three handlers that are
  -involved in authentication and authorization, and used for access
  -control.
  +involved in what's known as AAA: Authentication and Authorization, and
  +Access control.
   
   This phase can be used to restrict access from a certain IP address,
   time of the day or any other rule not connected to the user's
  @@ -1257,7 +1267,50 @@
   The handler's configuration scope is
   C<L<DIR|docs::2.0::user::config::config/item_DIR>>.
   
  -Example:
  +The concept behind access checker handler is very simple, return
  +C<Apache::FORBIDDEN> if the access is not allowed, otherwise return
  +C<Apache::OK>.
  +
  +The following example handler blocks requests made from IPs on the
  +blacklist.
  +
  +  file:MyApache/BlockByIP.pm
  +  --------------------------
  +  package MyApache::BlockByIP;
  +  
  +  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;
  +
  +The handler retrieves the connection's IP address, looks it up in the
  +hash of blacklisted IPs and forbids the access if found. If the IP is
  +not blacklisted, the handler returns control to the next access
  +checker handler, which may still block the access based on a different
  +rule.
  +
  +To enable the handler simply add it to the container that needs to be
  +protected. For example to protect an access to the registry scripts:
  +
  +  <Location /perl/>
  +      SetHandler perl-script
  +      PerlResponseHandler ModPerl::Registry
  +      PerlAccessHandler MyApache::BlockByIP
  +      Options +ExecCGI
  +  </Location>
  +
   
   
   =head2 PerlAuthenHandler
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to