[SP-pm] Autenticador Squid em Perl

Alexei Znamensky russoz em gmail.com
Quinta Junho 5 09:54:32 PDT 2008


Gabriel,

#2 perfeitamente correta, sim, ficou faltando o ERR em caso de senha
existente porém errada.

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??)
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.

[]s,
Russo



2008/6/5 Gabriel Vieira <gabriel.vieira em gmail.com>:

> 1) Se o usuário colocar apenas "login " haverá falha na REGEX, então
> por que não usá-la como validador direto? A senha pode ser em branco?
> 2) Caso a senha e o login não batam, precisaria retornar caso tivesse
> erro, certo?
>
>
> print "ERR\n" unless my ( $user, $password ) = m{^(\S+)\s(.+)$};
> print is_valid( $user, $password )?"OK\n":"ERR\n";
>
>
>
> 2008/6/5 Luis Motta Campos <luismottacampos em yahoo.co.uk>:
> > Fernando Oliveira wrote:
> >> # Não seria melhor assim, p/ possibilitar senhas com espaço?
> >>    my @userPass = split / /;
> >>    my $user = $userPass[0];
> >>    my $password = join " ", @userPass[1 .. $#userPass];
> >
> > Hum. Senhas podem ter espaços. Certo, mudança de estratégia. Nada de
> > usar split().
> >
> > #!/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 (<>) {
> >
> >     # captura um username (sem espaços, seguido de um
> >     # espaço, seguido de qualquer coisa ( a senha).
> >     my ( $user, $password ) = m{^(\S+)\s(.+)$};
> >     print "ERR\n" unless $password;    # do not accept empty
> >     print "OK\n" if is_valid( $user, $password );
> > }
> > __END__
> >
> > Putamplexos!
> > --
> > Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> > Perl fanatic evangelist, and amateur {cook, photographer}
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
>
>
>
> --
> Gabriel Vieira
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Alexei Znamensky [russoz_gmail_com] [russoz.wordpress.com] [
www.flickr.com/photos/alexeiz]
"Though we live in trying times, we're the ones who have to try"
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080605/91d86513/attachment.html 


Mais detalhes sobre a lista de discussão SaoPaulo-pm