From e61ab5eeea22241ea8d8f1f6d072f5249901d788 Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Mon, 7 Feb 2022 13:57:08 +0000 Subject: [PATCH] readd set/seeme and show/seeme commands --- Changes | 3 ++ cmd/set/seemee.pl | 20 +++++++++++ cmd/show/seeme.pl | 83 +++++++++++++++++++++++++++++++++++++++++++ perl/DXCommandmode.pm | 2 +- 4 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 cmd/set/seemee.pl create mode 100644 cmd/show/seeme.pl diff --git a/Changes b/Changes index e2f1c254..aaaaedea 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,6 @@ +07Feb22======================================================================= +1. (re)add set/seeme and show/seeme commands which don't appear to have + "taken". 03Feb22======================================================================= 1. Improve/add the help text for grepdbg and watchdbg. 31Jan22======================================================================= diff --git a/cmd/set/seemee.pl b/cmd/set/seemee.pl new file mode 100644 index 00000000..1bfbfe47 --- /dev/null +++ b/cmd/set/seemee.pl @@ -0,0 +1,20 @@ +# +# set the RBN seeme flag +# +# Copyright (c) 2000 - Dirk Koopman +# +# +# + +my ($self, $line) = @_; +my @out; + +return (0, $self->msg('e5')) unless $self->isa('DXCommandmode'); +$self->rbnseeme(1); +$self->user->rbnseeme(1); +$self->user->put; +RBN::add_seeme($self->call); + + +push @out, $self->msg('ok'); +return (1, @out); diff --git a/cmd/show/seeme.pl b/cmd/show/seeme.pl new file mode 100644 index 00000000..2fef50d4 --- /dev/null +++ b/cmd/show/seeme.pl @@ -0,0 +1,83 @@ +# +# show/registered +# +# show all registered users +# +# Copyright (c) 2001 Dirk Koopman G1TLH +# +# +# + +sub handle +{ + my ($self, $line) = @_; + return (1, $self->msg('e5')) unless $self->priv >= 9; + + my @out; + + use DB_File; + + if ($line) { + $line =~ s/[^\w\-\/]+//g; + $line = "\U\Q$line"; + } + + if ($self->{_nospawn}) { + @out = generate($self, $line); + } else { + @out = $self->spawn_cmd("show/seeme $line", sub { return (generate($self, $line)); }); + } + + return (1, @out); +} + +sub generate +{ + my $self = shift; + my $line = shift; + my @out; + my @val; + +# dbg("set/register line: $line"); + + my %call = (); + $call{$_} = 1 for split /\s+/, $line; + delete $call{'ALL'}; + + my ($action, $count, $key, $data) = (0,0,0,0); + unless (keys %call) { + for ($action = DXUser::R_FIRST, $count = 0; !$DXUser::dbm->seq($key, $data, $action); $action = DXUser::R_NEXT) { + if ($data =~ m{rbnseeme}) { + $call{$key} = 1; # possible candidate + } + } + } + + foreach $key (sort keys %call) { + my $u = DXUser::get_current($key); + if ($u && defined (my $r = $u->rbnseeme)) { + my $o = DXChannel::get($key); + push @val, "${key}($r)" . ($o ? '+' : ''); + ++$count; + } + } + + my @l; + push @out, "RBN See Me Users"; + foreach my $call (@val) { + if (@l >= 5) { + push @out, sprintf "%-14s %-14s %-14s %-14s %-14s", @l; + @l = (); + } + push @l, $call; + } + if (@l) { + push @l, "" while @l < 5; + push @out, sprintf "%-14s %-14s %-14s %-14s %-14s", @l; + } + + push @out, $self->msg('rec', $count); + return @out; + +} + diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 8ed74de4..d17f6f91 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -167,7 +167,7 @@ sub start $self->send_motd; # sort out privilege reduction - $self->{priv} = 0 unless $self->{hostname} eq '127.0.0.1' || $self->{hostname} eq '::1' || $self->conn->{usedpasswd}; + $self->{priv} = 0 unless $self->{hostname} eq '127.0.0.1' || $self->conn->peerhost eq '127.0.0.1' || $self->{hostname} eq '::1' || $self->conn->{usedpasswd}; # get the filters my $nossid = $call; -- 2.43.0