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]