Change DXUser->get* to DXUser::get*
[spider.git] / cmd / set / password.pl
index b408278df2356b12da3a7c2b4571e7e3bfe99712..9366c0bb5e6b15b0728ddaff801d44d99456867f 100644 (file)
@@ -4,27 +4,45 @@
 # Copyright (c) 1998 Iain Phillips G0RDI
 # 21-Dec-1998
 #
-# Syntax:      set/pass <password> <callsign>
+# Syntax:      set/pass <callsign> <password> 
 #
 
 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);