[SP-pm] Autenticador Squid em Perl

Lucas Mateus lucasmateus.oliveira em gmail.com
Quinta Junho 5 10:04:00 PDT 2008


> Luis Motta
> Simples, é mesmo. E agora está organizado. :P

> #!/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 ) = split qr{\s+};
>    print "ERR\n" unless $password;    # do not accept empty
>    print "OK\n" if is_valid( $user, $password );
> }
> __END__



É uma implementação muito simples, acho que pra medidas de entendimento
convém utilizar codigos simples e legível, assim mesmos os newbies vão se
interessar pela facilidade de implementação, depois de entendido cada um
passa batom da forma que quiser.

Digo isso pq foi justamente por ver um codigo exemplo em Perl para
ACL_EXTERNAL para Squid que me interessei pela linguagem, se fosse o Champs
ou o Fernando que tivessem escrito o codigo eu não estaria aki hj
heuaheuhauehauehuaheuahuea :-)



2008/6/5 Alexei Znamensky <russoz em gmail.com>:

> 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"
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080605/5f83e8d6/attachment.html 


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