]> www.dxcluster.org Git - spider.git/blob - cmd/show/configuration.pl
added shellregex
[spider.git] / cmd / show / configuration.pl
1 #
2 # show the cluster routing tables to the user
3 #
4 # Copyright (c) 1998 Dirk Koopman G1TLH
5 #
6 # $Id$
7 #
8
9 my ($self, $line) = @_;
10 my @list = map { uc } split /\s+/, $line;           # list of callsigns of nodes
11 my @out;
12 my @nodes = sort {$a->call cmp $b->call} (DXNode::get_all());
13 my $node;
14 my @l;
15 my @val;
16
17 push @out, "Node         Callsigns";
18 if ($list[0] && $list[0] =~ /^NOD/) {
19         my @ch = sort {$a->call cmp $b->call} DXProt::get_all_ak1a();
20         my $dxchan;
21         
22         foreach $dxchan (@ch) {
23                 @val = sort {$a->call cmp $b->call} grep { $_->dxchan == $dxchan } @nodes;
24                 my $call = $dxchan->call;
25                 $call = "($call)" if $dxchan->here == 0;
26                 @l = ();
27                 push @l, $call;
28                 
29                 my $i = 0;
30                 foreach $call (@val) {
31                         if ($i >= 5) {
32                                 push @out, sprintf "%-12s %-12s %-12s %-12s %-12s %-12s", @l;
33                                 @l = ();
34                                 push @l, "";
35                                 $i = 0;
36                         }
37                         my $s = $call->{call};
38                         $s = sprintf "(%s)", $s if $call->{here} == 0;
39                         push @l, $s;
40                         $i++;
41                 }
42                 push @out, sprintf "%-12s %-12s %-12s %-12s %-12s %-12s", @l;
43         }
44 } else {
45         # build up the screen from the Node table
46         foreach $node (@nodes) {
47                 next if scalar @list && !grep $node->call eq $_, @list;
48                 my $call = $node->call;
49                 $call = "($call)" if $node->here == 0;
50                 @l = ();
51                 push @l, $call;
52                 my $nlist = $node->list;
53                 @val = sort {$a->call cmp $b->call} values %{$nlist};
54
55                 my $i = 0;
56                 if (@val == 0 && $node->users) {
57                         push @l, sprintf "(%d users)", $node->users;
58                 }
59                 foreach $call (@val) {
60                         if ($i >= 5) {
61                                 push @out, sprintf "%-12s %-12s %-12s %-12s %-12s %-12s", @l;
62                                 @l = ();
63                                 push @l, "";
64                                 $i = 0;
65                         }
66                         my $s = $call->{call};
67                         $s = sprintf "(%s)", $s if $call->{here} == 0;
68                         push @l, $s;
69                         $i++;
70                 }
71                 push @out, sprintf "%-12s %-12s %-12s %-12s %-12s %-12s", @l;
72         }
73 }
74
75
76
77 return (1, @out);