2 # links : which are active
3 # a complete list of currently connected linked nodes
5 # Created by Iain Philipps G0RDI, based entirely on
6 # who.pl, which is Copyright (c) 1999 Dirk Koopman G1TLH
7 # and subsequently plagerized by K1XX.
18 push @out, " Ave Obs Ping Next Filters";
19 push @out, " Callsign Type Started Uptime RTT Count Int. Ping Iso? In Out PC92? Address";
21 foreach $dxchan ( sort {$a->call cmp $b->call} DXChannel::get_all ) {
22 next if $dxchan == $main::me;
23 next unless $dxchan->is_node || $dxchan->is_rbn;
24 my $call = $dxchan->call();
25 my $t = cldatetime($dxchan->startt);
27 my $name = $dxchan->user->name || " ";
28 my $obscount = $dxchan->nopings;
29 my $pingint = $dxchan->pingint;
30 my $lastt = $dxchan->lastping ? ($dxchan->pingint - ($nowt - $dxchan->lastping)) : $pingint;
31 my $ping = sprintf("%7.2f", $dxchan->pingave || 0);
32 my $iso = $dxchan->isolate ? 'Y' : ' ';
33 my $uptime = difft($dxchan->startt, 1);
34 my ($fin, $fout, $pc92) = (' ', ' ', ' ');
35 if ($dxchan->do_pc9x) {
39 if ($f = $dxchan->inroutefilter) {
40 $fin = $dxchan->inroutefilter =~ /node_default/ ? 'D' : 'Y';
42 if ($f = $dxchan->routefilter) {
43 $fout = $dxchan->routefilter =~ /node_default/ ? 'D' : 'Y';
46 unless ($pingint && $ping) {
52 $sort = "DXSP" if $dxchan->is_spider;
53 $sort = "CLX " if $dxchan->is_clx;
54 $sort = "DXNT" if $dxchan->is_dxnet;
55 $sort = "AR-C" if $dxchan->is_arcluster;
56 $sort = "AK1A" if $dxchan->is_ak1a;
57 $sort = "RBN " if $dxchan->is_rbn;
60 my $addr = $dxchan->hostname;
62 $ipaddr = $addr if is_ipaddr($addr);
63 $ipaddr = 'local' if $addr =~ /^127\./ || $addr =~ /^::[0-9a-f]+$/;
65 $ipaddr = 'ax25' if $dxchan->conn->ax25;
67 push @out, sprintf "%10s $sort $t%13s$ping $obscount %5d %5d $iso $fin $fout $pc92 $ipaddr", $call, $uptime ,$pingint, $lastt;