Take me over?
NAME
Plack::Middleware::Cerberus - Include geo, time zone, user-agent and throttling from App::Cerberus
VERSION
version 0.04
SYNOPSIS
use Plack::Builder;
my $app = sub {
my $env = shift;
my $time_zone = $env->{'plack.cerberus'}{tz}{name};
...
};
builder {
enable 'Cerberus', servers => 'http://localhost:5001/';
$app;
};
DESCRIPTION
Plack::Middleware::Cerberus adds metadata from an App::Cerberus server to the $env
as $env->{'plack.cerberus'}
.
For instance:
Geo-location
Time zone
User-agent info
Are they a spider?
Are they making too many requests? Should we throttle them?
It can also be configured to throttle or ban IP address ranges with App::Cerberus::Plugin::Throttle.
CONFIG
The basic configuration (servers
and timeout
) are passed to "new()" in App::Cerberus::Client.
enable 'Cerberus',
servers => 'http://localhost:5001/',
timeout => 0.1;
Or
enable 'Cerberus',
servers => [ 'http://host1:5001/', 'http://host2:5001/']
timeout => 0.1;
If you are using the App::Cerberus::Plugin::Throttle plugin, then you can also configure:
enable 'Cerberus',
servers => 'http://localhost:5001/',
enforce => 1,
log_as => 'warn';
If log_as
is one of debug
, info
, warn
, error
or fatal
, then Throttle messages will be logged at that level. It defaults to warn
. If no logger is configured, then log_as
is ignored and it always warns.
If enforce
is true, then banned IP addresses will receive a 403 Forbidden
response and throttled users a 503 Service Unavailable
response, with a Retry-After: $seconds
header.
ACCESSING CERBERUS INFO
The $env
variable will contain a key 'plack.cerberus'
with any data that App::Cerberus has returned, for instance:
my $app = sub {
my $env = shift;
my $geo_info = $env->{'plack.cerberus'}{geo};
my $time_zone = $env->{'plack.cerberus'}{tz};
my $user_agent = $env->{'plack.cerberus'}{ua};
my $throttle = $env->{'plack.cerberus'}{throttle};
};
SEE ALSO
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Plack::Middleware::Cerberus
You can also look for information at:
GitHub
CPAN Ratings
Search MetaCPAN
AUTHOR
Clinton Gormley <drtech@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Clinton Gormley.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.