[SP-pm] Autenticador Squid em Perl
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quinta Junho 5 12:24:57 PDT 2008
Alexei Znamensky wrote:
> Gabriel,
>
> #2 perfeitamente correta, sim, ficou faltando o ERR em caso de senha
> existente porém errada.
Ops. Falha minha. Volto a postar num minuto.
> para a pergunta #1, sem entrarmos na questão de quão efetivo é ter um
> mecanismo de authenticação se não há senha, o que você precisa fazer é
> usar a regexp:
>
> m{^(\S+)\s(.+)?$}
>
> com a interrogação, denotando que a senha é um parâmetro opcional. Nesse
> caso você poderá deixar o código com somente:
>
> my ( $user, $password ) = m{^(\S+)\s(.+)$};
> print is_valid( $user, $password )?"OK\n":"ERR\n";
>
> Não há necesisdade de fazer o primeiro teste:
>
> a) da forma como o Fields colocou antes era para testar senha vazia, que
> no seu caso é algo que você quer (why??? oh god, why??)
Eu pensei melhor e acho que não é responsabilidade deste programa testar
ou compreender nada sobre a senha: ele simplesmente repassa o que quer
que ele encontrar para a função de autenticação, que determina a
validade das credenciais e retorna o valor final.
> b) da forma como você colocou ele vai testar se houve match ou não, o
> que irá retornar sempre true, ou seja, o print "ERR\n" nunca será executado.
>
> De qualquer maneira, pode ser removido.
A implementação mais nova é assim:
#!/usr/bin/perl
use strict;
use warnings;
use IO::Handle;
STDOUT->autoflush(1);
STDERR->autoflush(1);
# implement your password validation here
sub is_valid;
while (<>) {
my ( $user, $password ) = m{^(\S+)(?:\s+(.+))?$};
print is_valid( $user, $password ) ? qq{OK\n} : qq{ERR\n};
}
__END__
Espero que isso ajude.
Putamplexos.
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm