NAME
AnyEvent::FTP::Server::Role::Auth - Authentication role for FTP server
VERSION
version 0.19
SYNOPSIS
In your context:
package AnyEvent::FTP::Server::Context::MyContext;
use Moo;
extends 'AnyEvent::FTP::Server::Context';
with 'AnyEvent::FTP::Server::Role::Auth';
has '+unauthenticated_safe_commands' => (
default => sub { [ qw( USER PASS HELP QUIT FOO ) ] },
);
# this command is deemed safe pre auth by
# unauthenticated_safe_commands
sub cmd_foo
{
my($self, $con, $req) = @_;
$con->send_response(211 => 'Here to stay');
$self->done;
}
# this command can pnly be executed after
# authentication
sub cmd_bar
{
my($self, $con, $req) = @_;
$con->send_response(211 => 'And another thing');
$self->done;
}
Then when you create your server object:
use AnyEvent:FTP::Server;
my $server = AnyEvent::FTP::Server->new;
$server->on_connect(sub {
# $con isa AnyEvent::FTP::Server::Connection
my $con = shift;
# $context isa AnyEvent::FTP::Server::Context::MyContext
my $context = $con->context;
# allow login from user 'user' with password 'secret'
$context->authenticator(sub {
my($user, $pass) = @_;
return $user eq 'user' && $pass eq 'secret';
});
# make the client wait 5 seconds if they enter a
# bad username / password
$context->bad_authentication_delay(5);
});
DESCRIPTION
This role provides an authentication interface for your AnyEvent::FTP::Server context.
ATTRIBUTES
user
The user specified by the last FTP USER
command.
authenticated
True if the user has successfully logged in.
authenticator
Sub ref used to check username password combinations. By default all authentication requests are refused.
bad_authentication_delay
Number of seconds to wait after a bad login attempt.
unauthenticated_safe_commands
List of the commands that are safe to execute before the user has authenticated. The default is USER, PASS, HELP and QUIT
METHODS
auth_command_check_hook
$context->auth_command_check_hook($connection, $command);
This hook checks that any commands executed by the client before authentication are in the authenticated_safe_commands
list.
COMMANDS
- USER
- PASS
AUTHOR
Author: Graham Ollis <plicease@cpan.org>
Contributors:
Ryo Okamoto
Shlomi Fish
José Joaquín Atria
COPYRIGHT AND LICENSE
This software is copyright (c) 2017-2021 by Graham Ollis.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.