X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=perl%2FDXChannel.pm;h=df74bfc89302fdf00f398735bd53df5b5985a546;hb=72e9dcbade3fdb51d9291a2856ca1cc998241f9b;hp=a2010cd418362eb9d380cf19cdd78cd993b8a976;hpb=f155969d600561b9ef151a7ce2494a0c89aed033;p=spider.git diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index a2010cd4..df74bfc8 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -77,6 +77,7 @@ use vars qw(%channels %valid); spotfilter => '5,Spot Filter', inannfilter => '5,Input Ann Filter', inwwvfilter => '5,Input WWV Filter', + inwcyfilter => '5,Input WCY Filter', inspotfilter => '5,Input Spot Filter', passwd => '9,Passwd List,parray', pingint => '5,Ping Interval ', @@ -132,6 +133,7 @@ sub alloc # get the filters $self->{spotfilter} = Filter::read_in('spots', $call, 0); $self->{wwvfilter} = Filter::read_in('wwv', $call, 0); + $self->{wcyfilter} = Filter::read_in('wcy', $call, 0); $self->{annfilter} = Filter::read_in('ann', $call, 0); bless $self, $pkg; @@ -374,10 +376,8 @@ sub disconnect my $user = $self->{user}; my $conn = $self->{conn}; my $call = $self->{call}; - my $nopc39 = shift || 0; - $self->finish($nopc39); - $conn->send_now("Z$call|bye") if $conn; # this will cause 'client' to disconnect + $self->finish($conn); $user->close() if defined $user; $conn->disconnect() if $conn; $self->del(); @@ -436,6 +436,26 @@ sub field_prompt return $valid{$ele}; } +# take a standard input message and decode it into its standard parts +sub decode_input +{ + my $dxchan = shift; + my $data = shift; + my ($sort, $call, $line) = $data =~ /^([A-Z])([A-Z1-9\-]{3,9})\|(.*)$/; + + my $chcall = (ref $dxchan) ? $dxchan->call : "UN.KNOWN"; + + # the above regexp must work + if (!defined $sort || !defined $call || !defined $line || + (ref $dxchan && $call ne $chcall)) { + $data =~ s/([\x00-\x1f\x7f-\xff])/uc sprintf("%%%02x",ord($1))/eg; + dbg('chan', "DUFF Line from $chcall: $data"); + return (); + } + + return ($sort, $call, $line); +} + no strict; sub AUTOLOAD {