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