From: minima Date: Mon, 14 Feb 2005 18:27:04 +0000 (+0000) Subject: add skeletons for new commands Rt, Ping and T. X-Git-Tag: R_1_52~200 X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=commitdiff_plain;h=7d72afb65bc994c04c208095b66abddee41de7e9;p=spider.git add skeletons for new commands Rt, Ping and T. fix padding on spot text. use output spot filter (not input) for output filtering. --- diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 1ae1823b..712f933e 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -37,6 +37,9 @@ use Investigate; use RouteDB; use Thingy; use Thingy::Dx; +use Thingy::Rt; +use Thingy::Ping; +use Thingy::T; use strict; @@ -504,7 +507,7 @@ sub handle_11 } # is it 'baddx' - if ($baddx->in($_[2]) || BadWords::check($_[2]) || $_[2] =~ /COCK/) { + if ($baddx->in($_[2]) || BadWords::check($_[2])) { dbg("PCPROT: Bad DX spot, ignored") if isdbg('chanerr'); return; } diff --git a/perl/Spot.pm b/perl/Spot.pm index 66652795..ef460a07 100644 --- a/perl/Spot.pm +++ b/perl/Spot.pm @@ -122,8 +122,7 @@ sub prepare $out[4] =~ s/-\d+$//o; # remove leading and trailing spaces - unpad($out[3]); - + $out[3] = unpad($out[3]); # add the 'dxcc' country on the end for both spotted and spotter, then the cluster call my @spd = Prefix::cty_data($out[1]); diff --git a/perl/Thingy/Dx.pm b/perl/Thingy/Dx.pm index 10eee308..b711a256 100644 --- a/perl/Thingy/Dx.pm +++ b/perl/Thingy/Dx.pm @@ -143,10 +143,10 @@ sub out_filter my $dxchan = shift; # global spot filtering on INPUT - if ($dxchan->{inspotsfilter}) { - my ($filter, $hops) = $dxchan->{inspotsfilter}->it($thing->{spotdata}); + if ($dxchan->{spotsfilter}) { + my ($filter, $hops) = $dxchan->{spotsfilter}->it($thing->{spotdata}); unless ($filter) { - dbg("PCPROT: Rejected by input spot filter") if isdbg('chanerr'); + dbg("PCPROT: Rejected by output spot filter") if isdbg('chanerr'); return; } $thing->{hops} = $hops if $hops; diff --git a/perl/Thingy/Ping.pm b/perl/Thingy/Ping.pm new file mode 100644 index 00000000..39fd55ba --- /dev/null +++ b/perl/Thingy/Ping.pm @@ -0,0 +1,114 @@ +# +# Ping Thingy handling +# +# $Id$ +# +# Copyright (c) 2005 Dirk Koopman G1TLH +# + +use strict; + +package Thingy::Ping; + +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)); +$main::build += $VERSION; +$main::branch += $BRANCH; + +use DXChannel; +use DXDebug; +use DXUtil; +use Thingy; +use Spot; + +use vars qw(@ISA); +@ISA = qw(Thingy); + +sub gen_Aranea +{ + my $thing = shift; + unless ($thing->{Aranea}) { + my @items; + $thing->{Aranea} = Aranea::genmsg($thing, 'Rloc', @items); + } + return $thing->{Aranea}; +} + +sub from_Aranea +{ + my $thing = shift; + return unless $thing; + return $thing; +} + +sub gen_DXProt +{ + my $thing = shift; + my $dxchan = shift; + return $thing->{DXProt}; +} + +sub gen_DXCommandmode +{ + my $thing = shift; + my $dxchan = shift; + my $buf; + + return $buf; +} + +sub from_DXProt +{ + my $thing = shift; + while (@_) { + my $k = shift; + $thing->{$k} = shift; + } + ($thing->{hops}) = $thing->{DXProt} =~ /\^H(\d+)\^?~?$/ if exists $thing->{DXProt}; + return $thing; +} + +sub handle +{ + my $thing = shift; + my $dxchan = shift; + + $thing->broadcast($dxchan); +} + +sub in_filter +{ + my $thing = shift; + my $dxchan = shift; + + # global route filtering on INPUT + if ($dxchan->{inroutefilter}) { + my ($filter, $hops) = $dxchan->{inroutefilter}->it($thing->{routedata}); + unless ($filter) { + dbg("PCPROT: Rejected by input route filter") if isdbg('chanerr'); + return; + } + } + return 1; +} + +sub out_filter +{ + my $thing = shift; + my $dxchan = shift; + + # global route filtering on INPUT + if ($dxchan->{routefilter}) { + my ($filter, $hops) = $dxchan->{routefilter}->it($thing->{routedata}); + unless ($filter) { + dbg("PCPROT: Rejected by output route filter") if isdbg('chanerr'); + return; + } + $thing->{hops} = $hops if $hops; + } elsif ($dxchan->{isolate}) { + return; + } + return 1; +} +1; diff --git a/perl/Thingy/Rt.pm b/perl/Thingy/Rt.pm new file mode 100644 index 00000000..bf178360 --- /dev/null +++ b/perl/Thingy/Rt.pm @@ -0,0 +1,114 @@ +# +# Route Thingy handling +# +# $Id$ +# +# Copyright (c) 2005 Dirk Koopman G1TLH +# + +use strict; + +package Thingy::Rt; + +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)); +$main::build += $VERSION; +$main::branch += $BRANCH; + +use DXChannel; +use DXDebug; +use DXUtil; +use Thingy; +use Spot; + +use vars qw(@ISA); +@ISA = qw(Thingy); + +sub gen_Aranea +{ + my $thing = shift; + unless ($thing->{Aranea}) { + my @items; + $thing->{Aranea} = Aranea::genmsg($thing, 'Rloc', @items); + } + return $thing->{Aranea}; +} + +sub from_Aranea +{ + my $thing = shift; + return unless $thing; + return $thing; +} + +sub gen_DXProt +{ + my $thing = shift; + my $dxchan = shift; + return $thing->{DXProt}; +} + +sub gen_DXCommandmode +{ + my $thing = shift; + my $dxchan = shift; + my $buf; + + return $buf; +} + +sub from_DXProt +{ + my $thing = shift; + while (@_) { + my $k = shift; + $thing->{$k} = shift; + } + ($thing->{hops}) = $thing->{DXProt} =~ /\^H(\d+)\^?~?$/ if exists $thing->{DXProt}; + return $thing; +} + +sub handle +{ + my $thing = shift; + my $dxchan = shift; + + $thing->broadcast($dxchan); +} + +sub in_filter +{ + my $thing = shift; + my $dxchan = shift; + + # global route filtering on INPUT + if ($dxchan->{inroutefilter}) { + my ($filter, $hops) = $dxchan->{inroutefilter}->it($thing->{routedata}); + unless ($filter) { + dbg("PCPROT: Rejected by input route filter") if isdbg('chanerr'); + return; + } + } + return 1; +} + +sub out_filter +{ + my $thing = shift; + my $dxchan = shift; + + # global route filtering on INPUT + if ($dxchan->{routefilter}) { + my ($filter, $hops) = $dxchan->{routefilter}->it($thing->{routedata}); + unless ($filter) { + dbg("PCPROT: Rejected by output route filter") if isdbg('chanerr'); + return; + } + $thing->{hops} = $hops if $hops; + } elsif ($dxchan->{isolate}) { + return; + } + return 1; +} +1; diff --git a/perl/Thingy/T.pm b/perl/Thingy/T.pm new file mode 100644 index 00000000..ee8928ac --- /dev/null +++ b/perl/Thingy/T.pm @@ -0,0 +1,114 @@ +# +# Talk/Announce/Chat Thingy handling +# +# $Id$ +# +# Copyright (c) 2005 Dirk Koopman G1TLH +# + +use strict; + +package Thingy::T; + +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)); +$main::build += $VERSION; +$main::branch += $BRANCH; + +use DXChannel; +use DXDebug; +use DXUtil; +use Thingy; +use Spot; + +use vars qw(@ISA); +@ISA = qw(Thingy); + +sub gen_Aranea +{ + my $thing = shift; + unless ($thing->{Aranea}) { + my @items; + $thing->{Aranea} = Aranea::genmsg($thing, 'Rloc', @items); + } + return $thing->{Aranea}; +} + +sub from_Aranea +{ + my $thing = shift; + return unless $thing; + return $thing; +} + +sub gen_DXProt +{ + my $thing = shift; + my $dxchan = shift; + return $thing->{DXProt}; +} + +sub gen_DXCommandmode +{ + my $thing = shift; + my $dxchan = shift; + my $buf; + + return $buf; +} + +sub from_DXProt +{ + my $thing = shift; + while (@_) { + my $k = shift; + $thing->{$k} = shift; + } + ($thing->{hops}) = $thing->{DXProt} =~ /\^H(\d+)\^?~?$/ if exists $thing->{DXProt}; + return $thing; +} + +sub handle +{ + my $thing = shift; + my $dxchan = shift; + + $thing->broadcast($dxchan); +} + +sub in_filter +{ + my $thing = shift; + my $dxchan = shift; + + # global route filtering on INPUT + if ($dxchan->{inroutefilter}) { + my ($filter, $hops) = $dxchan->{inroutefilter}->it($thing->{routedata}); + unless ($filter) { + dbg("PCPROT: Rejected by input route filter") if isdbg('chanerr'); + return; + } + } + return 1; +} + +sub out_filter +{ + my $thing = shift; + my $dxchan = shift; + + # global route filtering on INPUT + if ($dxchan->{routefilter}) { + my ($filter, $hops) = $dxchan->{routefilter}->it($thing->{routedata}); + unless ($filter) { + dbg("PCPROT: Rejected by output route filter") if isdbg('chanerr'); + return; + } + $thing->{hops} = $hops if $hops; + } elsif ($dxchan->{isolate}) { + return; + } + return 1; +} +1;