X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=f9981349cb0e1b4d1766f4f72a489782776f3a02;hb=ca18864d1264fadfe9869b630f05c950876c2169;hp=2094cbfaea51d6e9abdf4cec110ac1b29093f3f3;hpb=324bd80ed4aef7e2636f5a03288788ce11ab2663;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 2094cbfa..f9981349 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -22,6 +22,7 @@ use DXLogPrint; use DXBearing; use CmdAlias; use FileHandle; +use Filter; use Carp; use strict; @@ -87,6 +88,9 @@ sub start $self->send($self->msg('qll')) if !$user->qra || (!$user->lat && !$user->long); $self->send($self->msg('hnodee1')) if !$user->qth; $self->send($self->msg('msgnew')) if DXMsg::for_me($call); + + # get the filters + $self->{spotfilter} = Filter::read_in('spots', $call); $self->send($self->msg('pr', $call)); } @@ -129,6 +133,22 @@ sub normal } else { $self->state('prompt'); } + } elsif ($self->{state} eq 'sysop') { + my $passwd = $self->{user}->passwd; + my @pw = split / */, $passwd; + if ($passwd) { + my @l = @{$self->{passwd}}; + my $str = "$pw[$l[0]].*$pw[$l[1]].*$pw[$l[2]].*$pw[$l[3]].*$pw[$l[4]]"; + if ($cmdline =~ /$str/) { + $self->{priv} = $self->{user}->priv; + } else { + $self->send($self->msg('sorry')); + } + } else { + $self->send($self->msg('sorry')); + } + delete $self->{passwd}; + $self->state('prompt'); } else { @ans = run_cmd($self, $cmdline); # if length $cmdline;