use Dancer::Plugin::Cerberus;
get '/' => sub {
my $time_zone = vars->{cerberus}{tz}{name};
};
This plugin adds metadata from an App::Cerberus server to the vars before your route handlers are called.
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.
The basic configuration (servers
and timeout
) are passed to "new()" in App::Cerberus::Client.
plugins:
Cerberus:
servers: http://localhost:5001/
Or
plugins:
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:
plugins:
Cerberus:
servers: http://localhost:5001/
throttle:
log_as: info
enforce: 0 | 1
If log_as
is one of core
, info
, warn
, debug
or error
, then Throttle messages will be logged at that level.
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.
The vars
available in any route handler will contain a key cerberus
with any data that App::Cerberus has returned, for instance:
get '/' => sub {
my $geo_info = vars->{cerberus}{geo};
my $time_zone = vars->{cerberus}{tz};
my $user_agent = vars->{cerberus}{ua};
my $throttle = vars->{cerberus}{throttle};
};
You can find documentation for this module with the perldoc command.
perldoc Dancer::Plugin::Cerberus
You can also look for information at: