X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=91736470c87bd2f77df944a4bcfe54b6aeb0d780;hb=7312707b4a2412cb690a351dfc07dc144f0937e4;hp=494b4348d9e13077b3ecf1d93766c331e24b4cef;hpb=67e8ed5e4e28a5af4cec3bc1b43ce97ef51c90be;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 494b4348..91736470 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -246,7 +246,7 @@ sub init $main::me->{pingave} = 0; $main::me->{registered} = 1; $main::me->{version} = $main::version; - $main::me->{build} = "$main::subversion.$main::build"; + $main::me->{build} = $main::build; $main::me->{do_pc9x} = 1; $main::me->update_pc92_next($pc92_short_update_period); $main::me->update_pc92_keepalive; @@ -1111,9 +1111,19 @@ sub process_rcmd my ($self, $tonode, $fromnode, $user, $cmd) = @_; if ($tonode eq $main::mycall) { my $ref = DXUser::get_current($fromnode); + unless ($ref && UNIVERSAL::isa($ref, 'DXUser')) { + dbg("DXProt process_rcmd: user $fromnode isn't a reference (check user_asc and tell G1TLH)"); + $self->send_rcmd_reply($main::mycall, $fromnode, $user, "sorry...!"); + return; + } my $cref = Route::Node::get($fromnode); + unless ($cref && UNIVERSAL::isa($cref, 'Route')) { + dbg("DXProt process_rcmd: Route $fromnode isn't a reference (tell G1TLH)"); + $self->send_rcmd_reply($main::mycall, $fromnode, $user, "sorry...!"); + return; + } Log('rcmd', 'in', ($ref->{priv}||0), $fromnode, $cmd); - if ($cmd !~ /^\s*rcmd/i && $cref && $ref && $ref->homenode && $cref->call eq $ref->homenode) { # not allowed to relay RCMDS! + if ($cmd !~ /^\s*rcmd/i && $ref->homenode && $cref->call eq $ref->homenode) { # not allowed to relay RCMDS! if ($ref->{priv}) { # you have to have SOME privilege, the commands have further filtering $self->{remotecmd} = 1; # for the benefit of any command that needs to know my $oldpriv = $self->{priv};