X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?p=spider.git;a=blobdiff_plain;f=cmd%2Fset%2Fpassword.pl;h=c007299ac6dfa59bd20f438814648fcab97633cd;hp=1c248d023576fc8bac0cc9cee1fb288b3bc361b2;hb=579810d363939640538f88a9caa86e01fe9c7709;hpb=5b803645eaf1a462937d7cde0e9459f1a6d3f10e diff --git a/cmd/set/password.pl b/cmd/set/password.pl index 1c248d02..c007299a 100644 --- a/cmd/set/password.pl +++ b/cmd/set/password.pl @@ -8,23 +8,41 @@ # my ($self, $line) = @_; -my @args = split /\s+/, $line; +my @args = split /\s+/, $line, 2; my $call = shift @args; my @out; my $user; my $ref; -return (1, $self->msg('e5')) if $self->priv < 9; +if ($self->remotecmd) { + $call ||= $self->call; + Log('DXCommand', $self->call . " attempted to change password for $call remotely"); + return (1, $self->msg('e5')); +} -if ($ref = DXUser->get_current($call)) { - $line =~ s/^\s*$call\s+//; - $line =~ s/\s+//og; # remove any blanks - $line =~ s/[{}]//g; # no braces allowed - $ref->passwd($line); - $ref->put(); - push @out, $self->msg("password", $call); +if ($call) { + if ($self->priv < 9) { + Log('DXCommand', $self->call . " attempted to change password for $call"); + return (1, $self->msg('e5')); + } + return (1, $self->msg('e29')) unless @args; + if ($ref = DXUser->get_current($call)) { + $ref->passwd($args[0]); + $ref->put(); + push @out, $self->msg("password", $call); + Log('DXCommand', $self->call . " changed password for $call"); + } else { + push @out, $self->msg('e3', 'User record for', $call); + } } else { - push @out, $self->msg('e3', 'User record for', $call); + if ($self->conn->{csort} eq 'telnet' && $self->user->passwd) { + $self->conn->{decho} = $self->conn->{echo}; + $self->conn->{echo} = 0; + push @out, $self->msg('pw0'); + $self->state('passwd'); + } else { + push @out, $self->msg('e5'); + } } return (1, @out);