X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fset%2Fprivilege.pl;h=865819e7efcfb5c6232bd69ddd7eae163484990a;hb=ab811a0c902225075a9bd69749f65594079433a9;hp=87be2aa89f054b8c1dee09447b998b5a4dca55d3;hpb=57b5e464bc44ae8eee23ab94c1f499f527595dc9;p=spider.git diff --git a/cmd/set/privilege.pl b/cmd/set/privilege.pl index 87be2aa8..865819e7 100644 --- a/cmd/set/privilege.pl +++ b/cmd/set/privilege.pl @@ -5,7 +5,7 @@ # # Copyright (c) 1998 Dirk Koopman G1TLH # -# $Id$ +# # my ($self, $line) = @_; my @args = split /\s+/, $line; @@ -13,24 +13,38 @@ my $call; my $priv = shift @args; my @out; my $user; +my $ref; -$DB::single = 1; - -return (0) if $self->priv < 9; +if ($self->priv < 9 || $self->remotecmd || $self->inscript) { + Log('DXCommand', $self->call . " attempted to set privilege $priv for @args"); + return (1, $self->msg('e5')); +} if ($priv < 0 || $priv > 9) { - return (0, $self->msg('e5')); + return (1, $self->msg('e5')); } foreach $call (@args) { - $call = uc $call; - my $user = DXUser->get_current($call); - if ($user) { - $user->priv($priv); - $user->put(); - push @out, $self->msg('priv', $call); - } else { - push @out, $self->msg('e3', "Set Privilege", $call); - } + $call = uc $call; + unless ($self->remotecmd || $self->inscript) { + if ($ref = DXChannel::get($call)) { + $ref->priv($priv); + $ref->user->priv($priv); + $ref->user->put(); + } + if (!$ref && ($user = DXUser::get($call))) { + $user->priv($priv); + $user->put(); + } + if ($ref || $user) { + push @out, $self->msg('priv', $call); + Log('DXCommand', "Privilege set to $priv on $call by " . $self->call); + } else { + push @out, $self->msg('e3', "Set Privilege", $call); + } + } else { + push @out, $self->msg('sorry'); + Log('DXCommand', $self->call . " attempted to set privilege $priv for $call remotely"); + } } return (1, @out);