]> gb7djk.dxcluster.net Git - spider.git/commitdiff
Merge commit '64461bf14f8ce1a'
authorDirk Koopman <djk@tobit.co.uk>
Wed, 3 Mar 2010 14:50:44 +0000 (14:50 +0000)
committerDirk Koopman <djk@tobit.co.uk>
Wed, 3 Mar 2010 14:50:44 +0000 (14:50 +0000)
merge in 500khz changes

Conflicts:

Changes
perl/Version.pm

Changes
cmd/clear/cmd_cache.pl [new symlink]
perl/DXCommandmode.pm
perl/DXProt.pm
perl/DXProtHandle.pm
perl/DXProtout.pm
perl/Msg.pm
perl/Route/Node.pm
perl/Route/User.pm
perl/Version.pm
perl/cluster.pl

diff --git a/Changes b/Changes
index 252d316dfb67feddc097517cb0eb2ae326b52cd2..3ae1e0658f9f2be7457602aaa50017bece3c2db2 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,10 @@
+03Mar10=======================================================================
+1. add IP addresses to connecting PC92 A addresses and log them
 27Nov09=======================================================================
 1. Add 500khz band as suggested by Béla, HA5DI.
 2. Add CTY-1923 prefixes
+26Nov09=======================================================================
+1. add ip address to PC92 A records
 25Nov09=======================================================================
 1. Change sh/qrz to use the xml interface. You will have to subscribe to
 the xml interface - see http://www.qrz.com/XML/index.html for more info.
diff --git a/cmd/clear/cmd_cache.pl b/cmd/clear/cmd_cache.pl
new file mode 120000 (symlink)
index 0000000..d070a0f
--- /dev/null
@@ -0,0 +1 @@
+../load/cmd_cache.pl
\ No newline at end of file
index 6fde1742b6067b8b3b1d717bfdbe073b51c5c29f..87182fc69f08b44218f9f8fb2e9b29251469280d 100644 (file)
@@ -65,7 +65,7 @@ sub new
        my $pkg = shift;
        my $call = shift;
 #      my @rout = $main::routeroot->add_user($call, Route::here(1));
-       DXProt::_add_thingy($main::routeroot, [$call, 0, 0, 1]);
+       DXProt::_add_thingy($main::routeroot, [$call, 0, 0, 1, undef, undef, $self->{conn}->peerhost], );
 
        # ALWAYS output the user
        my $ref = Route::User::get($call);
@@ -89,7 +89,7 @@ sub start
        my $name = $user->{name};
        
        # log it
-       my $host = $self->{conn}->{peerhost};
+       my $host = $self->{conn}->peerhost;
        $host ||= "AGW Port #$self->{conn}->{agwport}" if exists $self->{conn}->{agwport};
        $host ||= "unknown";
        LogDbg('DXCommand', "$call connected from $host");
index bc27395b209944be8341a8749fa4438a939ccd90..dae0b3c75255df063bf1b9b018731c39f0b0e18a 100644 (file)
@@ -269,7 +269,7 @@ sub new
                my @rout = $ref->delete;
                $self->route_pc21($main::mycall, undef, @rout) if @rout;
        }
-       $main::routeroot->add($call, '5000', Route::here(1)) if $call ne $main::mycall;
+       $main::routeroot->add($call, '5000', Route::here(1), $self->{conn}->peerhost) if $call ne $main::mycall;
 
        return $self;
 }
@@ -284,7 +284,7 @@ sub start
        my $user = $self->{user};
 
        # log it
-       my $host = $self->{conn}->{peerhost};
+       my $host = $self->{conn}->peerhost;
        $host ||= "AGW Port #$self->{conn}->{agwport}" if exists $self->{conn}->{agwport};
        $host ||= "unknown";
 
index 8d766732777e31a90dc5c74f735ea3ca5136ae75..c5d4bf4e756a77516b12080000f0bd14e7b37a63 100644 (file)
@@ -1353,7 +1353,10 @@ sub _decode_pc92_call
        my $is_node = $flag & 4;
        my $is_extnode = $flag & 2;
        my $here = $flag & 1;
-       return ($call, $is_node, $is_extnode, $here, $part[1], $part[2]);
+       my $ip  = $part[3];
+       $ip ||= $part[1] if $part[1] && ($part[1] =~ /^(?:\d+\.)+/ || $part[1] =~ /^(?:(?:[abcdef\d]+)?,)+/);
+       $ip =~ s/,/:/g if $ip;
+       return ($call, $is_node, $is_extnode, $here, $part[1], $part[2], $ip);
 }
 
 # decode a pc92 call: flag call : version : build
@@ -1364,7 +1367,7 @@ sub _encode_pc92_call
        # plain call or value
        return $ref unless ref $ref;
 
-       my $ext = shift;
+       my $ext = shift || 0;
        my $flag = 0;
        my $call = $ref->call;
        my $extra = '';
@@ -1373,14 +1376,17 @@ sub _encode_pc92_call
                $flag |= 4;
                my $dxchan = DXChannel::get($call);
                $flag |= 2 if $call ne $main::mycall && $dxchan && !$dxchan->{do_pc9x};
-               if ($ext) {
-                       if ($ref->version) {
-                               my $version = $ref->version || 1.0;
-                               $version =  $version * 100 + 5300 if $version < 50;
-                               $extra .= ":" . $version;
-                       }
+               if (($ext & 1) && $ref->version) {
+                       my $version = $ref->version || 1.0;
+                       $version =  $version * 100 + 5300 if $version < 50;
+                       $extra .= ":" . $version;
                }
        }
+       if (($ext & 2) && $ref->ip) {
+               my $ip = $ref->ip;
+               $ip =~ s/:/,/g;
+               $extra .= ':' . $ip;
+       }
        return "$flag$call$extra";
 }
 
@@ -1394,19 +1400,29 @@ sub _add_thingy
        my $dxchan = shift;
        my $hops = shift;
 
-       my ($call, $is_node, $is_extnode, $here, $version, $build) = @$s;
+       my ($call, $is_node, $is_extnode, $here, $version, $build, $ip) = @$s;
        my @rout;
 
        if ($call) {
+               my $ncall = $parent->call;
                if ($is_node) {
-                       dbg("ROUTE: added node $call to " . $parent->call) if isdbg('routelow');
-                       @rout = $parent->add($call, $version, Route::here($here));
+                       dbg("ROUTE: added node $call to $ncall") if isdbg('routelow');
+                       @rout = $parent->add($call, $version, Route::here($here), $ip);
                        my $r = Route::Node::get($call);
                        $r->PC92C_dxchan($dxchan->call, $hops) if $r;
+                       if ($ip) {
+                               $r->ip($ip);
+                               Log('DXProt', "PC92A $call -> $ip on $ncall");
+                       }
                } else {
-                       dbg("ROUTE: added user $call to " . $parent->call) if isdbg('routelow');
-                       @rout = $parent->add_user($call, Route::here($here));
-                       $dxchan->tell_buddies('loginb', $call, $parent->call) if $dxchan;
+                       dbg("ROUTE: added user $call to $ncall") if isdbg('routelow');
+                       @rout = $parent->add_user($call, Route::here($here), $ip);
+                       $dxchan->tell_buddies('loginb', $call, $ncall) if $dxchan;
+                       my $r = Route::User::get($call);
+                       if ($ip) {
+                               $r->ip($ip);
+                               Log('DXProt', "PC92A $call -> $ip on $ncall");
+                       }
                }
                if ($pc92_slug_changes && $parent == $main::routeroot) {
                        $things_add{$call} = Route::get($call);
index 6ee0c4984a40799ccf9833e19ebe794d36ea930a..f01a1481cc0a06681bc3ceccc065809f0c63f20e 100644 (file)
@@ -385,7 +385,7 @@ sub _gen_pc92
        }
        for (@_) {
                $s .= '^' . _encode_pc92_call($_, $ext);
-               $ext = 0;                               # only the first slot has an ext.
+               $ext = 0 unless $sort eq 'A';                           # only the first slot has an ext.
        }
        return $s . '^H99^';
 }
@@ -410,7 +410,7 @@ sub gen_pc92_with_time
 # add a local one
 sub pc92a
 {
-       return _gen_pc92('A', 0, @_);
+       return _gen_pc92('A', 2, @_);
 }
 
 # delete a local one
index b60ece8a46fd50d0ab9576a206a98e06d71eb4de..531bff7336fb969f19cf581f9d7b5f41f24c4a7d 100644 (file)
@@ -193,6 +193,16 @@ sub pid_gone
        }
 }
 
+sub peerhost
+{
+       my $self = shift;
+       my $ip;
+       unless ($self->{peerhost}) {
+               $self->{peerhost} = $self->{sock}->peerhost;
+       }
+       return $self->{peerhost};
+}
+
 #-----------------------------------------------------------------
 # Send side routines
 sub connect {
@@ -225,7 +235,8 @@ sub connect {
        return undef unless $r || _err_will_block($!);
        
        $conn->{sock} = $sock;
-    
+       $conn->{peerhost} = $sock->peerhost;    # for consistency
+
     if ($conn->{rproc}) {
         my $callback = sub {$conn->_rcv};
         set_event_handler ($sock, read => $callback);
index 123f21f9f2e952d4c74a06a69ddf8c8544afa212..617a0aed43a0718c47cebaf5ea28413d95165a39 100644 (file)
@@ -33,6 +33,7 @@ use vars qw(%list %valid @ISA $max $filterdef $obscount);
                  obscount => '0,Obscount',
                  last_PC92C => '9,Last PC92C',
                  PC92C_dxchan => '9,Channel of PC92C,phash',
+                 ip => '0,IP Address',
 );
 
 $filterdef = $Route::filterdef;
@@ -166,6 +167,8 @@ sub add_user
 {
        my $self = shift;
        my $ucall = shift;
+       my $here = shift;
+       my $ip = shift;
 
        confess "Trying to add NULL User call to routing tables" unless $ucall;
 
@@ -174,7 +177,7 @@ sub add_user
        if ($uref) {
                @out = $uref->addparent($self);
        } else {
-               $uref = Route::User->new($ucall, $self->{call}, @_);
+               $uref = Route::User->new($ucall, $self->{call}, $here, $ip);
                @out = $uref;
        }
        $self->_adduser($uref);
@@ -281,6 +284,8 @@ sub new
        $self->{users} = [];
        $self->{nodes} = [];
        $self->{PC92C_dxchan} = {};
+       my $ip = shift;
+       $self->{ip} = $ip if defined $ip;
        $self->reset_obs;                       # by definition
 
        $list{$call} = $self;
index e25c199cfdd40e6e7a8dc5ce53b23e916ab070b6..de24f906ef7155059c112743d8b5024e75a0b98b 100644 (file)
@@ -19,6 +19,7 @@ use vars qw(%list %valid @ISA $max $filterdef);
 
 %valid = (
                  parent => '0,Parent Calls,parray',
+                 ip => '0,IP Address',
 );
 
 $filterdef = $Route::filterdef;
@@ -44,11 +45,14 @@ sub new
        my $call = uc shift;
        my $ncall = uc shift;
        my $flags = shift;
+       my $ip = shift;
+
        confess "already have $call in $pkg" if $list{$call};
        
        my $self = $pkg->SUPER::new($call);
        $self->{parent} = [ $ncall ];
        $self->{flags} = $flags || Route::here(1);
+       $self->{ip} = $ip if defined $ip;
        $list{$call} = $self;
 
        return $self;
index 55bcb9505639ee95b321aab095d08b3871966d44..55e382339a46633933886a1c63024fbbc6a69f28 100644 (file)
@@ -9,8 +9,8 @@ package main;
 
 use vars qw($version $subversion $build);
 
-$version = '1.55';
+$version = '';
 $subversion = '0';
-$build = '55';
+$build = '1';
 
 1;
index bec097821a7fd6dcf3046e29594f6e451c9d1284..059a24a929997f5ca5c8cb150490803d823b605d 100755 (executable)
@@ -175,7 +175,7 @@ sub new_channel
                        return;
                }
                if ($bumpexisting) {
-                       my $ip = $conn->{peerhost} || 'unknown';
+                       my $ip = $conn->peerhost || 'unknown';
                        $dxchan->send_now('D', DXM::msg($lang, 'conbump', $call, $ip));
                        LogDbg('DXCommand', "$call bumped off by $ip, disconnected");
                        $dxchan->disconnect;
@@ -208,7 +208,7 @@ sub new_channel
        my $lock = $user->lockout if $user;
        if ($baseuser && $baseuser->lockout || $lock) {
                if (!$user || !defined $lock || $lock) {
-                       my $host = $conn->{peerhost} || "unknown";
+                       my $host = $conn->peerhost || "unknown";
                        LogDbg('DXCommand', "$call on $host is locked out, disconnected");
                        $conn->disconnect;
                        return;