[FUGSPBR] Troca de senha
Clebson Derivan Ferreira Paz
clebson em brfree.com.br
Qua Jun 27 20:03:00 BRT 2001
vc tem que fazer algumas adaptações.
[]'s
Clebson Derivan
----- Original Message -----
From: "Thiago Pinto Damas" <thiago em vetorialnet.com.br>
To: <fugspbr em fugspbr.org>
Sent: Wednesday, June 27, 2001 12:06 PM
Subject: Re: [FUGSPBR] Troca de senha
> Interessa sim, se puderes mandar agradeco desde jah!!
>
> []'s
>
>
> Thiago Pinto Damas - SysAdmin
> ----------------------------------------------------------------
> http://www.vetorialnet.com.br http://www.ecomp.furg.br
> thiago em vetorialnet.com.br thiago em ecomp.furg.br
>
> On Tue, 26 Jun 2001, Clebson Derivan wrote:
>
> > tenho um pronto em perl. vc só vai ter que alterar pq ta com logo da
> > empresa. interessa ??
> >
> > ----- Original Message -----
> > From: "Thiago Pinto Damas" <thiago em vetorialnet.com.br>
> > To: <fugspbr em fugspbr.org>
> > Sent: Tuesday, June 26, 2001 8:04 PM
> > Subject: [FUGSPBR] Troca de senha
> >
> >
> > > Alguem sabe algum lugar aonda ja tenha pronto um cgi para troca de
> > > senha no free?
> > > []'s
> > >
> > > Thiago Pinto Damas - SysAdmin
> > > ----------------------------------------------------------------
> > > http://www.vetorialnet.com.br http://www.ecomp.furg.br
> > > thiago em vetorialnet.com.br thiago em ecomp.furg.br
> > >
> > > ----
> > > Para sair da lista envie um e-mail para majordomo em fugspbr.org
> > > com as palavras "unsubscribe fugspbr" no corpo da mensagem.
> > >
> >
> > ----
> > Para sair da lista envie um e-mail para majordomo em fugspbr.org
> > com as palavras "unsubscribe fugspbr" no corpo da mensagem.
> >
>
> ----
> Para sair da lista envie um e-mail para majordomo em fugspbr.org
> com as palavras "unsubscribe fugspbr" no corpo da mensagem.
>
PGP Fingerprint: 87B9 6306 D469 5A11 6A57 3B2F CC04 0279 50A2 9308
-------------------------------
http://www.brfree.com.br - O primeiro provedor gratuito do Brasil
-------------- Próxima Parte ----------
#!/usr/bin/perl
# Troca de senha via web.
# by Clebson Derivan clebson em grupora.com,br
$ENV{PATH} = '/bin:/usr/bin';
$ENV{IFS} = '';
$| = 1;
use CGI qw/:standard :html3/;
print header,
start_html(-title=>'Grupo R.A. - Senha de e-mail',-bgColor=>'#cccccc'),
import_names('Q');
TRY: {
last TRY unless $Q::user;
my ($rv,$msg) = valida_campos();
do_error($msg),last TRY unless $rv;
($rv,$msg) = troca_senha($Q::user,$Q::old,$Q::new1);
do_error($msg),last TRY unless $rv;
print $msg;
$OK++;
}
cria_tela() unless $OK;
end_html;
sub valida_campos {
return (undef,'Preencha o campo user name.') unless $Q::user;
return (undef,'Preencha o campo senha atual.') unless $Q::old;
return (undef,'Prencha os campos para nova senha.') unless $Q::new1 && $Q::new2;
return (undef,"A nova senha e a senha confirmada não coincidem. digiti-as novamente.") unless $Q::new1 eq $Q::new2;
# return (undef,"User name suspeito $Q::user.") unless $Q::user=~/^\w{3,8}$/;
return (undef,'Senha atual suspeita.') unless length($Q::old) < 30;
return (undef,'Nova senha suspeita.') unless length($Q::new1) < 30;
my $uid = (getpwnam($Q::user))[2];
return (undef,"Usuario desconhecido $Q::user.") if $uid eq '';
return (undef,"Impossivel mudar a senha do root via web.") if $uid == 0;
return 1;
}
sub troca_senha ($$$) {
use Expect;
$Expect::Log_Stdout = 0;
# $Expect::Debug = 1;
# $Expect::Exp_Internal = 1;
my $TIMEOUT = 2;
my $DELAY = 1;
my $PASSWD = "/usr/bin/passwd";
my $SU = '/bin/su';
my($user,$old,$new) = @_;
# essa linha muda de acordo com o sitemas operacional
my $passwd = Expect->spawn("$SU $user -c \"$PASSWD $user\"") || return (undef,"Impossivel executar $SU $user -c $PASSWD");
my $rv = $passwd->expect($TIMEOUT,
"Password:",
"Sorry",
"Unknown id: $user");
$rv || return (undef,"Senha atual incorreta.");
$rv == 2 && return (undef,"Senha atual incorreta.");
$rv == 3 && return (undef,"Usuario $user desconhecido.");
sleep($DELAY);
print $passwd "$old\r";
$rv = $passwd->expect($TIMEOUT,
"Changing password for $user\r\n(current) UNIX password:","Sorry");
$rv == 2 && return (undef,"Senha atual incorreta.");
sleep($DELAY);
print $passwd "$old\r";
$rv = $passwd->expect($TIMEOUT, "Enter new UNIX password:", "Sorry.");
$rv || return (undef,"interno: 0001, contate o administrador de rede.");
$rv == 2 && return (undef,"Senha atual incorreta.");
sleep($DELAY);
print $passwd "$new\r";
$rv = $passwd->expect($TIMEOUT, "Retype new UNIX password:");
$rv || return (undef,"interno: 0002, contate o administrador de rede.");
sleep($DELAY);
print $passwd "$new\r";
$rv = $passwd->expect($TIMEOUT, "passwd: password updated successfully",
"Bad: new and old password are too similar",
"Bad: new password is too short",
"Bad: new password is too simple");
$rv || return (undef,"interno: 0003, contate o administrador de rede.");
$rv == 2 && return (undef,"A nova e a senha anterior são muito parecidas.");
$rv == 3 && return (undef,"A nova senha é muito pequena.");
$rv == 4 && return (undef,"A nova senha é muito simples.");
$passwd->hard_close();
return (1,"Senha trocada com sucesso para o usuario: $Q::user.");
}
sub cria_tela {
print
table({-height=>'100%',-width=>'100%',-cellSpacing=>0,-cellPadding=>0,-border=>0,-valign=>'center'},
TR({-align=>'center'},
td({-aling=>'middle'},
table({-border=>3,-width=>'470',-bqColor=>'white',-cellSpacing=>0,-cellPadding=>0},
TR(
td({-bgColor=>'white'},
table({-border=>0,-bqColor=>'white',-cellSpacing=>0,-cellPadding=>5},
TR(
td({-align=>'left',-bgColor=>'#11375e',-colSpan=>2},
font({-face=>'helvetica,arial',-color=>'white',-size=>'+1'},'Senha de e-mail')),
),
TR(
td(img {src=>'/ralogo.gif',width=>180}),
td({-vAlign=>'top'},
font({-face=>'helvetica,arial', -size=>'1'}, 'Caro Usuário,<br>A Senha para o e-mail deve ter 8 dígitos<br>Não utilize senhas fáceis, pois isso pode comprometer sua privacidade. Não divulgue sua senha a terceiros.'),
table({-border=>0,-bgColor=>'white'},
start_form,
TR(
TR(
TR(
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Nome Usuário')),
td({-bqColor=>'white'},textfield(-name=>'user'))
),
TR(
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Senha atual')),
td({-bqColor=>'white'},password_field(-name=>'old'))
),
TR(
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Nova Senha')),
td({-bqColor=>'white'},password_field(-name=>'new1'))
),
TR(
td({-bqColor=>'white'},font({-face=>'helvetica,arial',-size=>'1'},'Confirme nova senha')),
td({-bqColor=>'white'},password_field(-name=>'new2'))
),
hidden(-name=>'referer',-value=>referer()),
TR(td({-align=>'LEFT',-COLSPAN=>2, -ALIGN=>'RIGHT',-BGCOLOR=>'white'},font({-face=>'helvetica,arial'}, submit('Trocar')))),
end_form,
),
),
),
),
),
),
),
),
),
),
),
),
}
sub do_error ($) {
print "<CENTER><FONT COLOR='red' SIZE='+1' face='helvetica,arial'>";
print b('Error: '),shift," A senha não foi modificada.";
print "</FONT></CENTER>";
}
Mais detalhes sobre a lista de discussão freebsd