X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fset%2Fpassword.pl;h=9366c0bb5e6b15b0728ddaff801d44d99456867f;hb=ab811a0c902225075a9bd69749f65594079433a9;hp=b408278df2356b12da3a7c2b4571e7e3bfe99712;hpb=4f4cd7ea04f04162f2e755981b4c716deb792cef;p=spider.git diff --git a/cmd/set/password.pl b/cmd/set/password.pl index b408278d..9366c0bb 100644 --- a/cmd/set/password.pl +++ b/cmd/set/password.pl @@ -4,27 +4,45 @@ # Copyright (c) 1998 Iain Phillips G0RDI # 21-Dec-1998 # -# Syntax: set/pass +# Syntax: set/pass # my ($self, $line) = @_; -my @args = split /\s+/, $line; -my $call; -my $pass = shift @args; +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 || $self->inscript) { + $call ||= $self->call; + Log('DXCommand', $self->call . " attempted to change password for $call remotely"); + return (1, $self->msg('e5')); +} -foreach $call (@args) { - $call = uc $call; - if ($ref = DXUser->get_current($call)) { - $ref->passwd($pass); +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 { + 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);