X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FQXProt%2FQXR.pm;fp=perl%2FQXProt%2FQXR.pm;h=ad23e2b85543b47506fabce99b9998fc51fa4d13;hb=937a62586f4f8a29a62e3b5ce82576bc182854ef;hp=0000000000000000000000000000000000000000;hpb=a98580704baeea87e9fcfe84838bd9bc2a28e57d;p=spider.git diff --git a/perl/QXProt/QXR.pm b/perl/QXProt/QXR.pm new file mode 100644 index 00000000..ad23e2b8 --- /dev/null +++ b/perl/QXProt/QXR.pm @@ -0,0 +1,78 @@ + +# +# This module is part of the new protocal mode for a dx cluster +# +# This module handles the Routing message between nodes +# +# Copyright (c) 2003 Dirk Koopman G1TLH +# +# $Id$ +# + +package QXR; + +use strict; + +use vars qw(@ISA $VERSION $BRANCH); +@ISA = qw(QXProt); + +$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; + +sub handle +{ + my ($self, $to, $from, $msgid, $line) = @_; + + my @f = split /\^/, $line; + +} + +sub gen +{ + my $self = shift; + my @out = ('R', $self->call, "DXSpider", ($main::version + 53) * 100, $main::build); + if (my $pass = $self->user->passphrase) { + my $inp = Verify->new; + push @out, $inp->challenge, $inp->response($pass, $self->call, $main::mycall); + } + return $self->frame(@out); +} + +1; + +sub gen2 +{ + my $self = shift; + + my $node = shift; + my $sort = shift; + my @out; + my $dxchan; + + while (@_) { + my $str = ''; + for (; @_ && length $str <= 230;) { + my $ref = shift; + my $call = $ref->call; + my $flag = 0; + + $flag += 1 if $ref->here; + $flag += 2 if $ref->conf; + if ($ref->is_node) { + my $ping = int($ref->pingave * 10); + $str .= "^N$flag$call,$ping"; + my $v = $ref->build || $ref->version; + $str .= ",$v" if defined $v; + } else { + $str .= "^U$flag$call"; + } + } + push @out, $str if $str; + } + my $n = @out; + my $h = get_hops(90); + @out = map { sprintf "PC90^%s^%X^%s%d%s^%s^", $node->call, $main::systime, $sort, --$n, $_, $h } @out; + return @out; +}