fix padding on spot text.
use output spot filter (not input) for output filtering.
use RouteDB;
use Thingy;
use Thingy::Dx;
+use Thingy::Rt;
+use Thingy::Ping;
+use Thingy::T;
use strict;
}
# 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;
}
$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]);
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;
--- /dev/null
+#
+# 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;
--- /dev/null
+#
+# 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;
--- /dev/null
+#
+# 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;