more mods
[spider.git] / sgml / adminmanual.sgml
1 <!doctype linuxdoc system>
2
3 <article>
4
5 <!-- Title information -->
6
7 <title>The DXSpider Installation and Administration Manual</title> 
8 <author>Ian Maude, G0VGS, (ianmaude@btinternet.com)</author>
9 <date>$Date$ $Revision$</date>
10 <abstract>
11 A reference for SysOps of the DXSpider DXCluster program.
12 </abstract>
13
14 <!-- Table of contents -->
15 <toc>
16
17 <!-- Begin the document -->
18
19 <sect>Installation (Original version by Iain Philipps, G0RDI)
20
21 <sect1>Introduction
22
23 <P>
24 This section describes the installation of DX Spider v1.46 on a 
25 <htmlurl url="http://www.redhat.com" name="RedHat"> Linux Distribution.
26 Wherever possible I will try to include differences for other distributions.  
27 I do not intend to try and cover the installation of Linux or the setup 
28 of the AX25 utilities.  If you need help on this then read Iains original 
29 installation guide that comes with the Spider distribution.
30
31 <P>
32 I am assuming a general knowledge of Linux and its commands.  You should 
33 know how to use <em>tar</em> and how to edit files using your favourite editor.
34
35 <P>
36 The crucial ingredient for all of this is 
37 <htmlurl url="http://www.perl.org" name="Perl">.  Earlier versions of
38 Spider required perl 5.004, however it is now <it>STRONGLY</it> recommended
39 that you use at least version 5.005_03 as this is the version being used
40 in the development of Spider.
41
42 <P>In addition to the standard Red Hat distribution you will require the 
43 following modules from <htmlurl url="http://www.cpan.org/CPAN.html" name="http://www.cpan.org/CPAN.html"> ...
44
45 <P>
46 <itemize>
47
48 <item>          Data-Dumper-2.101.tar.gz
49 <item>          TimeDate-1.10.tar.gz
50 <item>          IO-1.20.tar.gz (for perl 5.00403 and lower)
51 <item>          Net-Telnet-3.02.tar.gz
52 <item>          Curses-1.05.tar.gz
53 <item>          Time-HiRes-01.20.tar.gz
54
55 </itemize>
56
57 <P>
58
59 <em>Do</em> get the latest versions of these packages and install them 
60 but use the above list as the earliest versions usable.
61
62 <sect1>Preparation
63
64 <P>
65 I will assume that you have already downloaded the latest tarball of 
66 the DXSpider software and are ready to install it. I am assuming version 
67 1.46 for this section but of course you would use the latest version.
68
69 <P>
70 Login as root and create a user to run the cluster under.  <bf><it>UNDER 
71 NO CIRCUMSTANCES USE ROOT AS THIS USER!</it></bf>.  I am going to use 
72 the name <em>sysop</em>.  You can call it anything you wish.  Depending 
73 on your security requirements you may wish to use an existing user, 
74 however this is your own choice.
75
76 <P>
77 <tscreen><verb>
78 # adduser -m sysop
79 </verb></tscreen>
80
81 <P>
82 Now set a password for the user ...
83
84 <tscreen><verb>
85 # passwd sysop
86 # New UNIX password:
87 # Retype new UNIX password:
88 passwd: all authentication tokens updated successfully
89 </verb></tscreen>
90
91 <sect1>Installing the software
92
93 <P>
94 Now to unpack the DX Spider distribution, set symbolic links and group 
95 permissions.  Copy the tarball to /home/sysop and do the following.
96
97 <tscreen><verb>
98 # cd ~sysop
99 # tar xvfz spider-1.46.tar.gz
100 # ln -s ~sysop/spider /spider
101 # groupadd -g 251 spider       (or another number)
102 </verb></tscreen>
103
104 If you do not have the command <em>groupadd</em> available to you simply 
105 add a line in /etc/group by hand.
106
107 <tscreen><verb>
108 # vi /etc/group                (or your favorite editor)
109 </verb></tscreen>
110
111 You also need to add some others to the group, including your own callsign 
112 (this will be used as an alias) and root.  The finished line in /etc/group 
113 should look something like this
114
115 <tt>
116 spider:x:251:sysop,g0vgs,root
117 </tt>
118
119 <P>
120 The next step is to set the permissions on the Spider directory tree and files ....
121
122 <tscreen><verb>
123 # chown -R sysop.spider spider
124 # find . -type d -exec chmod 2775 {} \;
125 # find . -type f -exec chmod 775 {} \;
126 </verb></tscreen>
127
128 <P>
129 This last step allows various users of the group <em>spider</em> to have 
130 write access to all the directories.  This is not really needed just yet 
131 but will be useful when web interfaces start to appear.
132
133 <P>
134 Finally, you need to fix the permissions on the ax25_call and netrom_call 
135 programs.  Check where they are with the <em>locate</em> command and alter 
136 the permissions with the <em>chmod</em> command like this ..
137
138 <tscreen><verb>
139 # chown root ax25_call netrom_call
140 # chmod 4775 ax25_call netrom_call
141 </verb></tscreen>
142
143 <sect1>Setting callsigns etc
144
145 <P>
146 Now login to your machine as the user you created earlier.  In my case that 
147 user is called <em>sysop</em>.  Once logged in, issue the following commands ....
148
149 <tscreen><verb>
150 $ cd /spider
151 $ mkdir local
152 $ mkdir local_cmd
153 $ cp perl/DXVars.pm.issue local/DXVars.pm
154 $ cd local
155 $ vi DXVars.pm (or your favourite editor)
156 </verb></tscreen>
157
158 <P>
159 Using the distributed DXVars.pm as a a template, set your cluster callsign, 
160 sysop callsign and other user info to suit your own environment. Note that 
161 this a perl file which will be parsed and executed as part of the cluster. If 
162 you get it wrong then perl will complain when you start the cluster process.  
163 It is important only to alter the text of any section.  Some of the lines look 
164 a little odd.  Take this line for example ....
165
166 <tt>
167 $myemail = "ianmaude\@btinternet.com";
168 </tt>
169
170 <P>
171 There appears to be an extra slash in there.  However this has to be there 
172 for the file to work so leave it in.
173                 
174 <P><bf>PLEASE USE CAPITAL LETTERS FOR CALLSIGNS</bf>
175                 
176 <P>
177 DON'T alter any file in /spider/perl, they are overwritten with every
178 release. Any files or commands you place in /spider/local or /spider/local_cmd 
179 will automagically be used in preference to the ones in /spider/perl EVEN 
180 while the cluster is running!
181
182 <P>
183 Save the new file and change directory to ../perl ....
184
185 <tscreen><verb>
186 $ cd ../perl
187 </verb></tscreen>
188
189 <P>
190 Now type the following command which creates the basic user file with you as 
191 the sysop.
192
193 <tscreen><verb>
194 $ ./create_sysop.pl
195 </verb></tscreen>
196
197 <sect1>Starting up for the first time
198
199 <P>
200 We can now bring spider up for the first time and see if all is well or not!  
201 It should look something like this ...
202
203 <tscreen><verb>
204 $ ./cluster.pl
205 DXSpider DX Cluster Version 1.46
206 Copyright (c) 1998 Dirk Koopman G1TLH
207 loading prefixes ...
208 loading band data ...
209 loading user file system ...
210 starting listener ...
211 reading existing message headers
212 reading cron jobs
213 orft we jolly well go ...
214 </verb></tscreen>
215
216 <P>
217 If all is well then login on another term or console as <em>sysop</em> and 
218 cd to /spider/src.  Now issue the following command ...
219
220 <tscreen><verb>
221 $ ./client
222 </verb></tscreen>
223
224 <P>
225 This should log you into the cluster as the sysop under the alias callsign we 
226 set earlier.  In this case the callsign is G0VGS.  The cluster callsign is set 
227 in the DXVars.pm file in /spider/local.  In this case we will assume that this 
228 was set as GB7MBC.  You should therefore see this when you login ....
229
230 <tscreen><verb>
231 G0VGS de GB7MBC 19-Nov-1999 2150Z >
232 </verb></tscreen>
233
234 If you do, congratulations!  If not, look over the instructions again, you 
235 have probably missed something out.  You can shut spider down again with the 
236 command ....
237
238 <tscreen><verb>
239 shutdown
240 </verb></tscreen>
241
242 <P>
243 and both the cluster and the client should return to Linux prompts.
244
245 <sect1>The Client program
246
247 <P>
248 In earlier versions of Spider, all the processes were Perl scripts.  This 
249 was fine but with a lot of users your computer memory would soon be used up.  
250 To combat this a new client was written in "C".  This client only works for
251 <em>incoming</em> connects at the moment.  Before you can use it though it 
252 has to be "made".  CD to /spider/src and type <em>make</em>.  You 
253 should see the output on your screen and hopefully now have a small C program 
254 called <em>client</em>.  Leave it in this directory.
255
256
257 <sect>Quick installation guide
258
259 <P>
260 This section is designed for experienced Spider sysops who want to install
261 Spider from scratch.  It is simply a check list of things that need to be
262 done without any explanations.  The name in brackets at the end of each line
263 is the user that should be doing that process.
264
265 <itemize>
266 <item>Login as root
267 <item>Get the additional CPAN modules and install them (root)
268 <item>Create the "sysop" user and set a password (root)
269 <item>Put the Spider tarball in ~sysop and untar it (root)
270 <item>ln -s ~sysop/spider /spider (root)
271 <item>groupadd -g 251 spider (root)
272 <item>Add any more users you need to the group entry in /etc/group (root)
273 <item>Set the permissions on the spider tree (root)
274 <item>Fix permissions on ax25_call and netrom_call (root)
275 <item>Login as the sysop user
276 <item>cd to /spider (sysop)
277 <item>mkdir local (sysop)
278 <item>mkdir local_cmd (sysop)
279 <item>cp perl/DXVars.pm.issue local/DXVars.pm (sysop)
280 <item>cd to /spider/local and edit DXVars to set your details (sysop)
281 <item>cd ../perl (sysop)
282 <item>./create_sysop.pl (sysop)
283 <item>./cluster.pl (sysop)
284 </itemize>
285
286 Spider should now be running and you should be able to login using the
287 client program.
288
289 <itemize>
290 <item>Login as root
291 <item>Enter the correct line in ax25d.conf (root)
292 <item>Enter the correct line in /etc/services (root)
293 <item>Enter the correct line in /etc/inetd.conf (root)
294 <item>killall -HUP inetd (root)
295 </itemize>
296
297 Spider should now be able to accept logins via telnet, netrom and ax25.
298
299 <itemize>
300 <item>Login as sysop
301 <item>Start the cluster (sysop)
302 <item>set/node and type for links (sysop)
303 <item>Write any connect scripts (sysop)
304 <item>Edit /spider/crontab as required (sysop)
305 <item>Edit any other files as necessary (sysop)
306 <item>Set filters, hops and forwarding files (sysop)
307 <item>Login as root
308 <item>Enter the correct line in /etc/inittab (root)
309 </itemize>
310
311 <sect>Configuration
312
313 <sect1>Allowing ax25 connects from users
314
315 <P>
316 As stated previously, the aim of this document is not to tell you how to 
317 configure Linux or the ax25 utilities.  However, you do need to add a line 
318 in your ax25d.conf to allow connections to DXSpider for your users.  For
319 each interface that you wish to allow connections on, use the following format ...
320
321 <tscreen><verb>
322 default  * * * * * *  - sysop /spider/src/client client %u ax25
323 </verb></tscreen>
324
325 or, if you wish your users to be able to use SSID's on their callsigns ..
326
327 <tscreen><verb>
328 default  * * * * * *  - sysop /spider/src/client client %s ax25
329 </verb></tscreen>
330
331 For most purposes this is not desirable. The only time you probably will need this is
332 when you need to allow other cluster nodes that are using SSID's in. In this case it
333 owuld probably be better to use the first example and then add a specific line for that
334 node like this:
335
336 <tscreen><verb>
337 GB7DJK-2  * * * * * *  - sysop /spider/src/client client gb7djk-2 ax25
338 default  * * * * * *  - sysop /spider/src/client client %u ax25
339 </verb></tscreen>
340  
341 <sect1>Allowing telnet connects from users 
342
343 <P> 
344 From version 1.47 there is a new (more efficient) way of doing this (see next section) but, 
345 if you prefer, the method of doing it described here will continue to work just fine.
346  
347 <P>
348 Allowing telnet connections is quite simple.  Firstly you need to add a line 
349 in /etc/services to allow connections to a port number, like this ....
350
351 <tscreen><verb>
352 spdlogin   7300/tcp     # spider anonymous login port
353 </verb></tscreen>
354
355 Then add a line in /etc/inetd.conf like this ....
356
357 <tscreen><verb>
358 spdlogin stream tcp nowait root /usr/sbin/tcpd /spider/src/client login telnet
359 </verb></tscreen>
360
361 <P>
362 Once this is done, you need to restart inetd like this ....
363
364 <tscreen><verb>
365 killall -HUP inetd
366 </verb></tscreen>
367
368
369 <P>Now login as <em>sysop</em> and cd spider/src. You can test that spider 
370 is accepting telnet logins by issuing the following command ....
371
372 <tscreen><verb>
373 ./client login telnet
374 </verb></tscreen>
375
376 You should get a login prompt and on issuing a callsign, you will be given 
377 access to the cluster.  Note, you will not get a password login.  There seems 
378 no good reason for a password prompt to be given so it is not asked for.
379
380 <P>
381 Assuming all is well, then try a telnet from your linux console ....
382
383 <tscreen><verb>
384 telnet localhost 7300
385 </verb></tscreen>
386
387 <P>
388 You should now get the login prompt and be able to login as before.
389
390 <sect1>Setting up telnet connects (from 1.47 onwards)
391
392 <P>
393 From version 1.47 you can chose to allow the perl cluster.pl program to 
394 allow connections direct (i.e. not via the <tt>/spider/src/client</tt>
395 interface program). If you are using Windows then this is the only method
396 available of allowing incoming telnet connections.
397
398 <P>
399 To do this you need first to remove any line that you may previously have set
400 up in /etc/inetd.conf. Remember to:-
401
402 <tscreen><verb>
403 killall -HUP inetd
404 </verb></tscreen>
405
406 <p>
407 to make the change happen...
408
409 <p>
410 Having done that then you need to copy the file 
411 <tt>/spider/perl/Listeners.pm</tt> to <tt>/spider/local</tt> and 
412 then edit it. You will need to uncomment the line containing &dquot;0.0.0.0&dquot; 
413 and select the correct port to listen on. So that it looks like this:-
414
415 <tscreen><verb>
416 @listen = (
417     ["0.0.0.0", 7300],
418 );
419 </verb></tscreen>
420
421 <p>As standard, the listener will listen on all interfaces simultaniously. If you require more
422 control than this, you can specify each interface individually:-
423
424 <tscreen><verb>
425 @listen = (
426     ["gb7baa.dxcluster.net", 7300],
427     ["44.131.16.2", 6300],
428 );
429 </verb></tscreen>
430
431 <p>This will only be successful if the IP addresses on each interface are static. 
432 If you are using some kind of dynamic IP addressing then the 'default' method is the
433 only one which will work.
434
435 <P>
436 Restart the cluster.pl program to enable the listener.
437
438 <P>
439 One important difference with the internal listener is that no echoing is done by the
440 cluster program. Users will need to set 'local-echo' on in their telnet clients if 
441 it isn't set automatically (as per the standards). Needless to say this will probably
442 only apply to Windows users. 
443
444 <sect1>Setting up for AGW Engine (1.47 onwards)
445
446 <p>AGW Engine is a Windows based ax25 stack. You can connect to an AGW engine from Linux
447 as well as Windows based machines.
448
449 <p>In order to enable access to an AGW Engine you need to copy <tt>/spider/perl/AGWConnect.pm</tt>
450 to <tt>/spider/local</tt> and edit it. Specifically you must:-
451
452 <itemize>
453 <item> set <tt>$enable</tt> to 1.
454 <item> set <tt>$login</tt> and <tt>$passwd</tt> to the values set up in your AGW installation. 
455 If you haven't set any there, then you should not touch these values.
456 <item> You can connect to a remote AGW engine (ie on some other machine) by changing <tt>$addr</tt>
457 and <tt>$port</tt> appropriately.
458 <item> Restart the cluster.pl program
459 </itemize>   
460
461
462 <sect1>Setting up node connects
463
464 <P>
465 In order to allow cluster node connections, spider needs to know that the 
466 connecting callsign is a cluster node.  This is the case whether the connect 
467 is incoming or outgoing.  In spider this is a simple task and can be done in 
468 runtime.
469
470 <P>
471 Later versions of Spider can distinguish different software and treat them
472 differently.  For example, the WCY beacon cannot be handles by AK1A type
473 nodes as AK1A does not know what to do with PC73.  There are 4 different
474 types of node at present and although they may not have any major
475 differences at the moment, it allows for compatibility.  The 4 types are ...
476
477 <tscreen><verb>
478 set/node        (AK1A type)
479 set/spider
480 set/dxnet
481 set/clx
482 </verb></tscreen>
483
484 <P>
485 For now, we will assume that the cluster we are going to connect to is an
486 AK1A type node.
487
488 <P>
489 Start up the cluster as you did before and login as the sysop with client.
490 The cluster node I am wanting to make a connection to is GB7BAA but you would
491 obviously use whatever callsign you required.  At the prompt type ...
492
493 <tscreen><verb>
494 set/node gb7baa
495 </verb></tscreen>
496
497 <P>
498 The case does not matter as long as you have a version of DXSpider later than 
499 1.33.  Earlier versions required the callsign to be in upper case.
500
501 <P>
502 That is now set, it is as simple as that.  To prove it, login on yet another 
503 console as sysop, cd to spider/src and issue the command ...
504
505 <tscreen><verb>
506 ./client gb7baa (using the callsign you set as a node)
507 </verb></tscreen>
508
509 <P>
510 You should get an initialisation string from DXSpider like this ...
511
512 <tscreen><verb>
513 ./client gb7baa
514 PC38^GB7MBC^~
515 </verb></tscreen>
516
517 If the callsign you just set up as a cluster node is for an incoming connect, 
518 this is all that needs to be done.  If the connection is to be outgoing then 
519 a connection script needs to be written.
520
521 <P>
522 Sometimes you make a mistake... Honest, it does happen.  If you want to make a node
523 back to being a normal user, regardless
524 of what type it is, do:
525
526 <tscreen><verb>
527 unset/node gb7baa
528 </verb></tscreen>
529
530 <sect1>Connection scripts
531
532 <P>
533 Because DXSpider operates under Linux, connections can be made using just about 
534 any protocol;  AX25, NETRom, tcp/ip, ROSE etc are all possible examples.  
535 Connect scripts live in the /spider/connect directory and are simple ascii files.  
536 Writing a script for connections is therefore relatively simple.  
537
538 <P>
539 The connect scripts consist of lines which start with the following keywords 
540 or symbols:-
541
542 <descrip>
543         
544 <tag/#/All lines starting with a <tt>#</tt> are ignored, as are completely 
545                 blank lines.
546
547 <tag/timeout/<tt>timeout</tt> followed by a number is the number of seconds to wait for a 
548                 command to complete. If there is no timeout specified in the script 
549                 then the default is 60 seconds.
550
551 <tag/abort/     <tt>abort</tt> is a regular expression containing one or more strings to look 
552                 for to abort a connection. This is a perl regular expression and is 
553                 executed ignoring case.
554
555 <tag/connect/<tt>connect</tt> followed by ax25, agw (for Windows users) or telnet and some type dependent 
556                 information. In the case of a telnet connection, there can be up to 
557                 two parameters.
558                 The first is the ip address or hostname of the computer you wish to 
559                 connect to and the second is the port number you want to use (this 
560                 can be left out if it is a normal telnet session).
561                 In the case of an ax25 session then this would normally be a call to
562                 ax25_call or netrom_call as in the example above. It is your
563                 responsibility to get your node and other ax25 parameters to work 
564                 before going down this route!
565
566 <tag/'/<tt>'</tt> is the delimiting character for a word or phrase of an expect/send 
567                 line in a chat type script. The words/phrases normally come in pairs,
568                 either can be empty. Each line reads input from the connection until 
569                 it sees the string (or perl regular expression) contained in the
570                 left hand string. If the left hand string is empty then it doesn't 
571                 read or wait for anything. The comparison is done ignoring case.
572                 When the left hand string has found what it is looking for (if it is)
573                 then the right hand string is sent to the connection.
574                 This process is repeated for every line of chat script. 
575
576 <tag/client/<tt>client</tt> starts the connection, put the arguments you would want here 
577                 if you were starting the client program manually. You only need this 
578                 if the script has a different name to the callsign you are trying to 
579                 connect to (i.e. you have a script called other which actually 
580                 connects to GB7DJK-1 [instead of a script called gb7djk-1]).
581 </descrip>
582
583
584 There are many possible ways to configure the script but here are three examples, 
585 one for a NETRom/AX25 connect, one for AGW engines and one for tcp/ip.  
586
587 <tscreen><verb>
588 timeout 60
589 abort (Busy|Sorry|Fail)
590 # don't forget to chmod 4775 netrom_call!
591 connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
592 'Connect' '' 
593 'Connect' 'c np7'
594 'Connect' 'c gb7dxm'
595 # you can leave this out if you call the script 'gb7dxm'
596 client gb7dxm ax25
597 </verb></tscreen>
598
599 <P>
600
601 <tscreen><verb>
602 timeout 60
603 abort (Busy|Sorry|Fail)
604 # this does exactly the same as the previous example
605 # the '1' is the AGW port number to connect thru for g1tlh
606 connect agw 1 g1tlh
607 'Connect' '' 
608 'Connect' 'c np7'
609 'Connect' 'c gb7dxm'
610 # you can leave this out if you call the script 'gb7dxm'
611 client gb7dxm ax25
612 </verb></tscreen>
613
614 <P>
615
616 <tscreen><verb>
617 timeout 15
618 connect telnet dirkl.tobit.co.uk
619 'login' 'gb7djk'
620 'word' 'gb7djk'
621 # tell GB7DJK-1 that it is connected to GB7DJK
622 # you can leave this out if you call this script 'gb7djk'
623 client gb7djk telnet
624 </verb></tscreen>
625
626 <P>
627 Both these examples assume that everything is set up properly at the other end.  
628 You will find other examples in the /spider/examples directory.
629
630 <sect1>Starting the connection
631
632 <P>
633 You start the connection, from within a sysop enabled cluster login, by typing 
634 in the word <em>connect</em> followed by a script name like this ....
635
636 <tscreen><verb>
637 G0VGS de GB7MBC 13-Dec-1998 2041Z >connect gb7djk-1
638 connection to GB7DJK-1 started
639 G0VGS de GB7MBC 13-Dec-1998 2043Z >
640 </verb></tscreen>
641
642 This will start a connection using the script called <em>gb7djk-1</em>.  You can
643 follow the connection by watching the term or console from where you started
644 <em>cluster.pl</em>.  From version 1.47 onwards, you will need to <tt>set/debug connect</tt> first.
645 You should see something like this ...
646
647 <tscreen><verb>
648 <- D G1TLH connect gb7djk-1
649 -> D G1TLH connection to GB7DJK-1 started
650 -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
651 timeout set to 15
652 CONNECT sort: telnet command: dirkl.tobit.co.uk
653 CHAT "login" -> "gb7djk"
654 received "
655 Red Hat Linux release 5.1 (Manhattan)
656 Kernel 2.0.35 on an i586
657 "
658 received "login: "
659 sent "gb7djk"
660 CHAT "word" -> "gb7djk"
661 received "gb7djk"
662 received "Password: "
663 sent "gb7djk"
664 Connected to GB7DJK-1, starting normal protocol
665 <- O GB7DJK-1 telnet
666 -> B GB7DJK-1 0
667 GB7DJK-1 channel func  state 0 -> init
668 <- D GB7DJK-1 
669 <- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
670 <- D GB7DJK-1 PC38^GB7DJK-1^~
671 <- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 
672 0 00:00^5447^~
673     etc
674
675 </verb></tscreen>
676
677 <P>
678 With later versions of Spider there is a set/login command for users.  This 
679 tells them when a user or node logs in or out.  If you do not add a line to 
680 your scripts after the final line (or before the client line which should always 
681 be last if needed) then the login/logout information will be sent to users
682 <it>before</it> the login actually completes.  This means if a node is 
683 unreachable, it will continue sending logins and logouts to users even though it 
684 is not actually connecting.  To avoid this use the following line ...
685
686 <tscreen><verb>
687 'connect' ''
688 </verb></tscreen>
689
690 <P>
691 In a script, this might look like ...
692
693 <tscreen><verb>
694 timeout 35 
695 abort (Busy|Sorry|Fail)
696 connect telnet mary 3000
697 'ogin:' 'gb7mbc'
698 '>' 'telnet 44.131.93.96 7305'
699 'connect' ''
700 </verb></tscreen>
701
702 <sect1>Telnet echo
703
704 <P>
705 Cluster links in particular suffer greatly from the presence of telnet echo.  
706 This is caused by the telnet negotiation itself and can create at worst severe 
707 loops.  At best it creates unnecessary bandwidth and large logfiles!  There are
708 things that can be done to limit this problem but will not always work dependent 
709 on the route taken to connect.
710
711 <P>
712 Telnet echo itself should only be a problem if the connection is being made to 
713 the telnet port (23).  This port uses special rules that include echo negotiation.
714 If the connection is to a different port, such as 7300, this negotiation does 
715 not happen and therefore no echo should be present.
716
717 <P>
718 Sometimes it is not possible to make a direct connection to another node and this 
719 can cause problems.  There is a way of trying to suppress the telnet echo but 
720 this will not always work, unfortunately it is difficult to be more specific.  
721 Here is an example of what I mean ...
722
723 <tscreen><verb>
724 timeout 35
725 abort (Busy|Sorry|Fail)
726 connect telnet mary.lancs.ac.uk
727 'ogin:' 'gb7mbc'
728 'word:' 'mypasswd'
729 '\$' 'stty -echo raw'
730 '\$' 'telnet 44.131.93.96'
731 'connect' ''
732 </verb></tscreen>
733
734 So, the first connection is made by Spider.  This is fine as Spider uses the
735 Net_Telnet script from within perl.  This actually uses TCP rather than TELNET 
736 so no negotiation will be done on the first connection.  Once connected to
737 mary.lancs.ac.uk, the command is sent to suppress echo.  Now a telnet is made 
738 to a cluster node that is accepting connections on port 23.  The problem with 
739 this link is that the negotiation is made by the remote machine, therefore you 
740 have no control over it.  The chances are that this link will create echo and 
741 there will be no way you can stop it.
742
743
744 <sect>Automating things
745
746 <P>
747 Ok, you should now have DXSpider running nicely and allowing connects by cluster
748 nodes or users.  However, it has to be shutdown and restarted manually and if
749 connection scripts fail they have to be started again manually too, not much use 
750 if you are not at the console!  So, in this section we will automate both.  
751 Firstly starting the cluster.
752
753 <sect1>Autostarting the cluster
754
755 <P>
756 This is not only a way to start the cluster automatically, it also works as a
757 watchdog, checking the sanity of DXSpider and respawning it should it crash for 
758 any reason.  Before doing the following, shutdown the cluster as you did earlier.
759
760 <P>
761 Login as root and bring up the /etc/inittab file in your favourite editor.  Add 
762 the following lines to the file near the end ...
763
764 <tscreen><verb>
765 ##Start DXSpider on bootup and respawn it should it crash
766 DX:3:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
767 </verb></tscreen>
768
769 <P>
770 This line works fine for RedHat distributions. It is also fine for SuSE up to
771 7.0.  From Suse 7.1 you need to add runlevels 2 and 5 like this ...
772
773 <tscreen><verb>
774 DX:235:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
775 </verb></tscreen>
776
777
778 The line required for Slackware distributions is slightly different.  My thanks to 
779 Aurelio, PA3EZL for this information.
780
781 <tscreen><verb>
782 DX:23:respawn:/bin/su - sysop -c "/usr/bin/perl -w /spider/perl/cluster.pl" >/dev/tty7
783 </verb></tscreen>
784
785 <P>
786 This will automatically start DXSpider on tty7 (ALT-F7) on bootup and restart 
787 it should it crash for any reason.
788
789 <P>
790 As root type the command <em>telinit q</em>.  DXSpider should start up 
791 immediately.  You will see the output on tty7 and if you login as <em>sysop</em> 
792 you should find everything running nicely.
793
794 <P>
795 So far so good, now to automate script connections...
796
797 <sect1>The crontab file
798
799 <P>
800 Login as <em>sysop</em> and create a file in /spider/local_cmd called crontab.  
801 Edit it with your favourite editor and add a line like this (I have included 
802 a comment)
803
804 <tscreen><verb>
805 # check every 10 minutes to see if gb7xxx is connected and if not
806 # start a connect job going
807
808 0,10,20,30,40,50 * * * * start_connect('gb7xxx') if unless connected('gb7xxx')
809 </verb></tscreen>
810
811 <P>
812 The callsign involved will be the callsign of the cluster node you are 
813 going to connect to.  This will now check every 10 minutes to see if 
814 gb7xxx is connected, if it is then nothing will be done.  If it is not, 
815 then a connect attempt will be started.
816
817 <P>
818 There are probably lots of other things you could use this crontab file for.  
819 If you want to know more about it, look at the
820 <htmlurl url="http://www.dxcluster.org/cron.html" name="DXSpider"> website 
821 at the cron page where it is explained more fully.
822
823 <sect>Hop control
824
825 <P>
826 Starting with version 1.13 there is simple hop control available on a per
827 node basis. Also it is possible to isolate a network completely so that you 
828 get all the benefits of being on that network, but can't pass on information
829 from it to any other networks you may be connected to (or vice versa).
830
831 <sect1>Basic hop control
832
833 <P>
834 In /spider/data you will find a file called hop_table.pl.  This is the file 
835 that controls your hop count settings.  It has a set of default hops on the 
836 various PC frames and also a set for each node you want to alter the hops for.  
837 You may be happy with the default settings of course, but this powerful tool 
838 can help to protect and improve the network.  The file will look something 
839 like this ...
840
841 <tscreen><verb>
842
843 # hop table construction
844
845
846 package DXProt;
847
848 # default hopcount to use
849 $def_hopcount = 5;
850
851 # some variable hop counts based on message type
852 %hopcount = 
853 (
854  11 => 10,
855  16 => 10,
856  17 => 10,
857  19 => 10,
858  21 => 10,
859 );
860
861
862 # the per node hop control thingy
863
864
865 %nodehops = 
866
867  GB7ADX => {            11 => 8,
868                         12 => 8,
869                         16 => 8,
870                         17 => 8,
871                         19 => 8,
872                         21 => 8,
873                    },
874
875  GB7UDX => {            11 => 8,
876                         12 => 8,
877                         16 => 8,
878                         17 => 8,
879                         19 => 8,
880                         21 => 8,
881                    },
882  GB7BAA => {
883                         11 => 5,
884                         12 => 8,
885                         16 => 8,
886                         17 => 8,
887                         19 => 8,
888                         21 => 8,
889                    },
890 };
891 </verb></tscreen>
892
893 <P>
894 Each set of hops is contained within a pair of curly braces and contains a 
895 series of PC frame types.  PC11 for example is a DX spot. The figures here 
896 are not exhaustive but should give you a good idea of how the file works.
897
898 <P>
899 You can alter this file at any time, including whilst the cluster is running.  
900 If you alter the file during runtime, the command <em>load/hops</em> will 
901 bring your changes into effect.
902
903 <sect1>Isolating networks
904
905 <P>
906 It is possible to isolate networks from each other on a "gateway" node using the
907  <em>set/isolate &lt;node_call&gt;</em> command.
908         
909 <P>
910 The effect of this is to partition an isolated network completely from another 
911 nodes connected to your node. Your node will appear on and otherwise behave 
912 normally on every network to which you are connected, but data from an isolated 
913 network will not cross onto any other network or vice versa. However all the 
914 spot, announce and WWV traffic and personal messages will still be handled 
915 locally (because you are a real node on all connected networks), that is locally
916 connected users will appear on all networks and will be able to access and 
917 receive information from all networks transparently.  All routed messages will 
918 be sent as normal, so if a user on one network knows that you are a gateway for 
919 another network, he can still still send a talk/announce etc message via your 
920 node and it will be routed across.
921
922 <P>
923 The only limitation currently is that non-private messages cannot be passed down 
924 isolated links regardless of whether they are generated locally. This will change 
925 when the bulletin routing facility is added.
926
927 <P>
928 If you use isolate on a node connection you will continue to receive all 
929 information from the isolated partner, however you will not pass any information 
930 back to the isolated node.  There are times when you would like to forward only 
931 spots across a link (maybe during a contest for example).  To do this, isolate 
932 the node in the normal way and put in a filter in the /spider/filter/spots 
933 directory to override the isolate.  This filter can be very simple and consists 
934 of just one line ....
935
936 <tscreen><verb>
937 $in = [
938         [ 1, 0, 'd', 0, 3]      # The last figure (3) is the hop count
939 ];
940 </verb></tscreen>
941
942 <P>
943 There is a lot more on filtering in the next section.
944
945 <sect>Filtering (Old Style upto v1.44)
946
947 <P>
948 Filters can be set for spots, announcements and WWV.  You will find the 
949 directories for these under /spider/filter.  You will find some examples in 
950 the directories with the suffix <em>.issue</em>.  There are two types of 
951 filter, one for incoming information and one for outgoing information. 
952 Outgoing filters are in the form <em>CALLSIGN.pl</em> and incoming filters 
953 are in the form <em>in_CALLSIGN.pl</em>.  Filters can be set for both nodes 
954 and users.
955
956 <P>
957 All filters work in basically the same way.  There are several elements 
958 delimited by commas.  There can be many lines in the filter and they are 
959 read from the top by the program.  When writing a filter you need to think 
960 carefully about just what you want to achieve.  You are either going to write 
961 a filter to <em>accept</em> or to <em>reject</em>.  Think of a filter as 
962 having 2 main elements.  For a reject filter, you would have a line or multiple 
963 lines rejecting the things you do not wish to receive and then a default line
964 accepting everything else that is not included in the filter.  Likewise, for an
965 accept filter, you would have a line or multiple lines accepting the things you 
966 wish to receive and a default line rejecting everthing else.
967
968 <P>
969 In the example below, a user requires a filter that would only return SSB spots
970 posted in Europe on the HF bands.  This is achieved by first rejecting the CW 
971 section of each HF band and rejecting all of VHF, UHF etc based on frequency.
972 Secondly, a filter rule is set based on CQ zones to only accept spots posted in
973 Europe.  Lastly, a default filter rule is set to reject anything outside the filter.
974
975 <tscreen><verb>
976 $in = [
977         [ 0, 0, 'r', # reject all CW spots
978                 [
979                 1800.0, 1850.0,
980                 3500.0, 3600.0,
981                 7000.0, 7040.0,
982                 14000.0, 14100.0,
983                 18068.0, 18110.0,
984                 21000.0, 21150.0,
985                 24890.0, 24930.0,
986                 28000.0, 28180.0,
987                 30000.0, 49000000000.0,
988                 ] ,1 ],
989         [ 1, 11, 'n', [ 14, 15, 16, 20, 33, ], 15 ], #accept EU
990         [ 0, 0, 'd', 0, 1 ], # 1 = want, 'd' = everything else
991 ];
992 </verb></tscreen>
993
994 <P>
995 The actual elements of each filter are described more fully in the following
996 sections.
997
998 <sect1>Spots
999
1000 <P>
1001 The elements of the Spot filter are ....
1002
1003 <tscreen><verb>
1004 [action, field_no, sort, possible_values, hops]
1005 </verb></tscreen>
1006
1007 <P>
1008 There are 3 elements here to look at.  Firstly, the action element.  This is 
1009 very simple and only 2 possible states exist, accept (1) or drop (0).
1010
1011 <P>
1012 The second element is the field_no.  There are 13 possiblities to choose from 
1013 here ....
1014
1015 <tscreen><verb>
1016       0 = frequency
1017       1 = call
1018       2 = date in unix format
1019       3 = comment
1020       4 = spotter
1021       5 = spotted dxcc country
1022       6 = spotter's dxcc country
1023       7 = origin
1024       8 = spotted itu
1025       9 = spotted cq
1026       10 = spotter's itu
1027       11 = spotter's cq
1028       12 = callsign of the channel on which the spot has appeared
1029 </verb></tscreen>
1030
1031 <P>
1032 The third element tells us what to expect in the fourth element.  There are 
1033 4 possibilities ....
1034
1035 <tscreen><verb>
1036      n - numeric list of numbers e.g. [ 1,2,3 ]
1037      r - ranges of pairs of numbers e.g. between 2 and 4 or 10 to 17 - [ 2,4, 10,17 ]
1038      a - an alphanumeric regex
1039      d - the default rule
1040 </verb></tscreen>
1041
1042 <P>
1043 The fifth element is simply the hops to set in this filter.  This would only 
1044 be used if the filter was for a node of course and overrides the hop count in
1045 hop_table.pl.
1046
1047 <P>
1048 So, let's look at an example spot filter.  It does not matter in the example 
1049 who the filter is to be used for.  So, what do we need in the filter?  We need 
1050 to filter the spots the user/node requires and also set a default rule for 
1051 anything else outside the filter.  Below is a simple filter that stops spots 
1052 arriving from outside Europe.
1053
1054 <tscreen><verb>$in = [
1055   [ 0, 4, 'a', '^(K|N|A|W|VE|VA|J)'],  # 0 = drop, 'a' = alphanumeric
1056   [ 1, 0, 'd', 0, 1 ],                 # 1 = want, 'd' = everything else
1057                      ];
1058 </verb></tscreen>
1059
1060 <P>
1061 So the filter is wrapped in between a pair of square brackets.  This tells 
1062 Spider to look in between these limits.  Then each line is contained within 
1063 its own square brackets and ends with a comma. Lets look carefully at the first 
1064 line.  The first element is 0 (drop).  Therefore anything we put on this line 
1065 will not be accepted.  The next element is 4.  This means we are filtering by 
1066 the spotter.  The third element is the letter "a" which tells the program to 
1067 expect an alphanumeric expression in the fourth element.  The fourth element 
1068 is a list of letters separated by the pipe symbol.
1069
1070 <P>
1071 What this line does is tell the program to drop any spots posted by anyone in 
1072 the USA, Canada or Japan.
1073
1074 <P>
1075 The second line is the default rule for anything else.  The "d" tells us this 
1076 and the line simply reads... accept anything else.
1077
1078 <P>
1079 You can add as many lines as you need to complete the filter but if there are 
1080 several lines of the same type it is neater to enclose them all as one line.  
1081 An example of this is where specific bands are set.  We could write this like 
1082 this ....
1083
1084 <tscreen><verb>
1085 [ 0,0,'r',[1800.0, 2000.0], 1],
1086 [ 0,0,'r',[10100.0, 10150.0], 1],
1087 [ 0,0,'r',[14000.0, 14350.0], 1],
1088 [ 0,0,'r',[18000.0, 18200.0], 1],
1089 </verb></tscreen>
1090
1091 <P>
1092 But the line below achieves the same thing and is more efficient ....
1093
1094 <tscreen><verb>
1095   [ 0, 0, 'r',
1096     [  
1097       1800.0, 2000.0,         # top band 
1098       10100.0, 10150.0,       # WARC  
1099       14000.0, 14350.0,       # 20m
1100       18000.0, 18200.0,       # WARC
1101     [ ,1 ],
1102 </verb></tscreen>
1103
1104
1105 <sect1>Announcements
1106
1107 <P>
1108 <tscreen><verb>
1109
1110 # This is an example announce or filter allowing only West EU announces
1111
1112 # The element list is:-
1113 # 0 - callsign of announcer
1114 # 1 - destination * = all, <callsign> = routed to the node
1115 # 2 - text
1116 # 3 - * - sysop, <some text> - special list eg 6MUK, ' ', normal announce
1117 # 4 - origin
1118 # 5 - 0 - announce, 1 - wx
1119 # 6 - channel callsign (the interface from which this spot came)
1120
1121 $in = [
1122         [ 1, 0, 'a', '^(P[ABCDE]|DK0WCY|G|M|2|EI|F|ON)' ],
1123         [ 0, 0, 'd', 0 ]
1124 ];
1125 </verb></tscreen>
1126
1127 In this example, only the prefixes listed will be allowed.  It is possible to 
1128 be quite specific.  The Dutch prefix "P" is followed by several secondary 
1129 identifiers which are allowed.  So, in the example, "PA" or "PE" would be ok 
1130 but not "PG".  It is even possible to allow information from a single callsign.  
1131 In the example this is DK0WCY, to allow the posting of his Aurora Beacon.
1132
1133 <sect1>WWV
1134
1135 <P>
1136 <tscreen><verb>
1137
1138 # This is an example WWV filter
1139
1140 # The element list is:-
1141 # 0 - nominal unix date of spot (ie the day + hour:13)
1142 # 1 - the hour
1143 # 2 - SFI
1144 # 3 - K
1145 # 4 - I
1146 # 5 - text
1147 # 6 - spotter
1148 # 7 - origin
1149 # 8 - incoming interface callsign
1150
1151 # this one doesn't filter, it just sets the hop count to 6 and is
1152 # used mainly just to override any isolation from WWV coming from
1153 # the internet.
1154
1155 $in = [
1156         [ 1, 0, 'd', 0, 6 ]
1157 ];
1158
1159 </verb></tscreen>
1160
1161 <P>
1162 It should be noted that the filter will start to be used only once a user/node 
1163 has logged out and back in again.
1164 <P>
1165 I am not going to spend any more time on these filters now as they will become 
1166 more "comprehensive" in the near future.
1167
1168 <sect>Filtering (New Style v1.45 and later)
1169
1170 <sect1>General filter rules
1171
1172 <P>
1173 Upto v1.44 it was not possible for the user to set their own filters.  From 
1174 v1.45 though that has all changed.  It is now possible to set filters for just 
1175 about anything you wish.  If you have just updated from an older version of 
1176 DXSpider you will need to update your new filters.  You do not need to do 
1177 anything with your old filters, they will be renamed as you update.
1178
1179 <P>
1180 There are 3 basic commands involved in setting and manipulating filters.  These 
1181 are <em>accept</em>, <em>reject</em> and <em>clear</em>.  First we will look
1182 generally at filtering. There are a number of things you can filter in the 
1183 DXSpider system. They all use the same general mechanism.
1184
1185 <P>
1186 In general terms you can create a 'reject' or an 'accept' filter which can have 
1187 up to 10 lines in it. You do this using, for example ... 
1188
1189 <tscreen><verb> 
1190 accept/spots .....
1191 reject/spots .....
1192 </verb></tscreen>
1193
1194 where ..... are the specific commands for that type of filter. There are filters 
1195 for spots, wwv, announce, wcy and (for sysops) connects. See each different 
1196 accept or reject command reference for more details.
1197
1198 There is also a command to clear out one or more lines in a filter. They are ...
1199
1200 <tscreen><verb>
1201 clear/spots 1
1202 clear/spots all
1203 </verb></tscreen>
1204
1205 There is clear/xxxx command for each type of filter.
1206
1207 <P>
1208 and you can check that your filters have worked by the command ... 
1209
1210 <tscreen><verb>  
1211 show/filter
1212 </verb></tscreen>
1213
1214 <P>
1215 For now we are going to use spots for the examples, but you can apply the same
1216 principles to all types of filter.
1217
1218 <sect1>Types of filter
1219
1220 <P>
1221 There are two main types of filter, <em>accept</em> or <em>reject</em>.  You 
1222 can use either to achieve the result you want dependent on your own preference 
1223 and which is more simple to do.  It is pointless writing 8 lines of reject 
1224 filters when 1 accept filter would do the same thing!  Each filter has 10 
1225 lines (of any length) which are tried in order.  If a line matches then the 
1226 action you have specified is taken (ie reject means ignore it and accept 
1227 means take it)
1228
1229 <P>
1230 If you specify reject filters, then any lines that arrive that match the filter 
1231 will be dumped but all else will be accepted.  If you use an accept filter, 
1232 then ONLY the lines in the filter will be accepted and all else will be dumped.
1233 For example if you have a single line <em>accept</em> filter ...
1234
1235 <tscreen><verb>
1236 accept/spots on vhf and (by_zone 14,15,16 or call_zone 14,15,16)
1237 </verb></tscreen>
1238
1239 then you will <em>ONLY</em> get VHF spots <em>from</em> or <em>to</em> CQ zones 
1240 14, 15 and 16.
1241
1242 <P>
1243 If you set a reject filter like this ...
1244
1245 <tscreen><verb>
1246 reject/spots on hf/cw
1247 </verb></tscreen>
1248
1249 Then you will get everything <em>EXCEPT</em> HF CW spots.  You could make this 
1250 single filter even more flexible.  For example, if you are interested in IOTA 
1251 and will work it even on CW even though normally you are not interested in 
1252 CW, then you could say ...
1253
1254 <tscreen><verb>
1255 reject/spots on hf/cw and not info iota
1256 </verb></tscreen>
1257
1258 But in that case you might only be interested in iota and say:-
1259
1260 <tscreen><verb>
1261 accept/spots not on hf/cw or info iota
1262 </verb></tscreen>
1263
1264 which achieves exactly the same thing. You should choose one or the other 
1265 until you are comfortable with the way it works. You can mix them if you 
1266 wish (actually you can have an accept AND a reject on the same line) but 
1267 don't attempt this until you are sure you know what you are doing!
1268
1269 <P>
1270 You can arrange your filter lines into logical units, either for your own
1271 understanding or simply convenience. Here is an example ...
1272
1273 <tscreen><verb>
1274 reject/spots 1 on hf/cw
1275 reject/spots 2 on 50000/1400000 not (by_zone 14,15,16 or call_zone 14,15,16)  
1276 </verb></tscreen>
1277
1278 What this does is to ignore all HF CW spots and also rejects any spots on VHF 
1279 which don't either originate or spot someone in Europe. 
1280
1281 <P>
1282 This is an example where you would use a line number (1 and 2 in this case), if 
1283 you leave the digit out, the system assumes '1'. Digits '0'-'9' are available.  
1284 This make it easier to see just what filters you have set.  It also makes it 
1285 more simple to remove individual filters, during a contest for example.
1286
1287 <P>
1288 You will notice in the above example that the second line has brackets.  Look 
1289 at the line logically.  You can see there are 2 separate sections to it.  We 
1290 are saying reject spots that are VHF or above <em>APART</em> from those in 
1291 zones 14, 15 and 16 (either spotted there or originated there).  If you did 
1292 not have the brackets to separate the 2 sections, then Spider would read it 
1293 logically from the front and see a different expression entirely ...
1294
1295 <tscreen><verb>
1296 (on 50000/1400000 and by_zone 14,15,16) or call_zone 14,15,16 
1297 </verb></tscreen>
1298
1299 The simple way to remember this is, if you use OR - use brackets. Whilst we are 
1300 here CASE is not important. 'And BY_Zone' is just the same as 'and by_zone'.
1301
1302 As mentioned earlier, setting several filters can be more flexible than 
1303 simply setting one complex one.  Doing it in this way means that if you want 
1304 to alter your filter you can just redefine or remove one or more lines of it or 
1305 one line. For example ...
1306
1307 <tscreen><verb>
1308 reject/spots 1 on hf/ssb
1309 </verb></tscreen>
1310
1311 would redefine our earlier example, or 
1312
1313 <tscreen><verb>
1314 clear/spots 1
1315 </verb></tscreen>
1316
1317 To remove all the filter lines in the spot filter ...
1318
1319 <tscreen><verb>
1320 clear/spots all
1321 </verb></tscreen>
1322
1323 <sect1>Filter options
1324
1325 <P>
1326 You can filter in several different ways.  The options are listed in the
1327 various helpfiles for accept, reject and filter.
1328
1329 <sect1>Default filters
1330
1331 <P>
1332 Sometimes all that is needed is a general rule for node connects.  This can
1333 be done with a node_default filter.  This rule will always be followed, even
1334 if the link is isolated, unless another filter is set specifically.  Default
1335 rules can be set for nodes and users.  They can be set for spots, announces,
1336 WWV and WCY.  They can also be used for hops.  An example might look like 
1337 this ...
1338
1339 <tscreen><verb>
1340 accept/spot node_default by_zone 14,15,16,20,33
1341 set/hops node_default spot 50
1342 </verb></tscreen>
1343
1344 This filter is for spots only, you could set others for announce, WWV and WCY.
1345 This filter would work for ALL nodes unless a specific filter is written to 
1346 override it for a particular node.  You can also set a user_default should
1347 you require.  It is important to note that default filters should be
1348 considered to be "connected".  By this I mean that should you override the
1349 default filter for spots, you need to add a rule for the hops for spots also.
1350
1351 <sect1>Advanced filtering
1352
1353 <P>
1354 Once you are happy with the results you get, you may like to experiment. 
1355
1356 <P>
1357 The previous example that filters hf/cw spots and accepts vhf/uhf spots from EU 
1358 can be written with a mixed filter, for example ... 
1359
1360 <tscreen><verb>
1361 rej/spot on hf/cw
1362 acc/spot on 0/30000
1363 acc/spot 2 on 50000/1400000 and (by_zone 14,15,16 or call_zone 14,15,16)
1364 </verb></tscreen>
1365
1366 Note that the first filter has not been specified with a number.  This will 
1367 automatically be assumed to be number 1.  In this case, we have said <em>reject all
1368 HF spots in the CW section of the bands but accept all others at HF.  Also
1369 accept anything in VHF and above spotted in or by operators in the zones
1370 14, 15 and 16</em>.  Each filter slot actually has a 'reject' slot and 
1371 an 'accept' slot. The reject slot is executed BEFORE the accept slot.
1372
1373 <P>
1374 It was mentioned earlier that after a reject test that doesn't match, the default 
1375 for following tests is 'accept', the reverse is true for 'accept'. In the example 
1376 what happens is that the reject is executed first, any non hf/cw spot is passed 
1377 to the accept line, which lets through everything else on HF.  The next filter line 
1378 lets through just VHF/UHF spots from EU.
1379
1380
1381 <sect>Other filters
1382
1383 <sect1>Filtering Mail
1384
1385 <P>
1386 In the /spider/msg directory you will find a file called badmsg.pl.issue.  Rename
1387 this to badmsg.pl and edit the file.  The original looks something like this ....
1388
1389 <tscreen><verb>
1390
1391 # the list of regexes for messages that we won't store having
1392 # received them (bear in mind that we must receive them fully before
1393 # we can bin them)
1394
1395
1396 # The format of each line is as follows
1397
1398 #     type      source             pattern 
1399 #     P/B/F     T/F/O/S            regex  
1400
1401 # type: P - private, B - bulletin (msg), F - file (ak1a bull)
1402 # source: T - to field, F - from field,  O - origin, S - subject 
1403 # pattern: a perl regex on the field requested
1404
1405 # Currently only type B and P msgs are affected by this code.
1406
1407 # The list is read from the top down, the first pattern that matches
1408 # causes the action to be taken.
1409
1410 # The pattern can be undef or 0 in which case it will always be selected
1411 # for the action specified
1412
1413
1414
1415 package DXMsg;
1416
1417 @badmsg = (
1418 'B',    'T',    'SALE', 
1419 'B',    'T',    'WANTED',
1420 'B',    'S',    'WANTED',
1421 'B',    'S',    'SALE', 
1422 'B',    'S',    'WTB',
1423 'B',    'S',    'WTS',
1424 'B',    'T',    'FS',
1425 );
1426 </verb></tscreen>
1427
1428 <P>
1429 I think this is fairly self explanatory.  It is simply a list of subject 
1430 headers that we do not want to pass on to either the users of the cluster or 
1431 the other cluster nodes that we are linked to.  This is usually because of 
1432 rules and regulations pertaining to items for sale etc in a particular country.
1433
1434 <sect1>Filtering DX callouts (Depricated)
1435
1436 <P>
1437 <bf><it>From version 1.47, this method is replaced by the command set/baddx</it></bf>
1438
1439 <P>
1440 In the same way as mail, there are some types of spot we do not wish to pass on 
1441 to users or linked cluster nodes.  In the /spider/data directory you will find 
1442 a file called baddx.pl.issue.  Rename this to baddx.pl and edit the file.  The
1443 original looks like this ....
1444
1445 <tscreen><verb>
1446
1447 # the list of dx spot addresses that we don't store and don't pass on
1448
1449
1450 package DXProt;
1451
1452 @baddx = qw 
1453
1454  FROG 
1455  SALE
1456  FORSALE
1457  WANTED
1458  P1RATE
1459  PIRATE
1460  TEST
1461  DXTEST
1462  NIL
1463  NOCALL 
1464 );
1465 </verb></tscreen>
1466
1467 <P>
1468 Again, this is simply a list of names we do not want to see in the spotted 
1469 field of a DX callout.
1470
1471
1472 <sect1>Filtering words from text fields in Announce, Talk and DX spots
1473
1474 <P>
1475 Create a file in /spider/data called <em>badwords</em>.  The format is quite
1476 simple.  Lines beginning with # are ignored so comments can be added.  An
1477 example file is below ...
1478
1479 <tscreen><verb>
1480 # Below is a list of words we do not wish to see on the cluster
1481 grunge grunged grunging
1482 splodge splodger splodging
1483 grince
1484 fluffle
1485 </verb></tscreen>
1486
1487 Multiple words can be used on the same line as shown.  Obviously these
1488 are just examples :-)
1489
1490 <P>
1491 You can reload the file from the cluster prompt as sysop with load/badwords.
1492
1493 <sect>Mail
1494
1495 <P>
1496 DXSpider deals seamlessly with standard AK1A type mail.  It supports both
1497 personal and bulletin mail and the sysop has additional commands to ensure
1498 that mail gets to where it is meant.  DXSpider will send mail almost
1499 immediately, assuming that the target is on line.  However, only one
1500 mail message is dealt with at any one time.  If a mail message is already
1501 being sent or recieved, then the new message will be queued until it has
1502 finished.
1503
1504 The cluster mail is automatically deleted after 30 days unless the sysop
1505 sets the "keep" flag using the <em>msg</em> command.
1506
1507 <sect1>Personal mail
1508
1509 <P>
1510 Personal mail is sent using the <em>sp</em> command.  This is actually the
1511 default method of sending mail and so a simple <em>s</em> for send will do.
1512 A full list of the send commands and options is in the <em>command set</em>
1513 section, so I will not duplicate them here.
1514
1515 <sect1>Bulletin mail
1516
1517 <P>
1518 Bulletin mail is sent by using the <em>sb</em> command.  This is one of the
1519 most common mistakes users make when sending mail.  They send a bulletin
1520 mail with <em>s</em> or <em>sp</em> instead of <em>sb</em> and of course
1521 the message never leaves the cluster.  This can be rectified by the sysop
1522 by using the <em>msg</em> command.
1523
1524 <P>Bulletin addresses can be set using the Forward.pl file.
1525
1526 <sect1>Forward.pl
1527
1528 <P>
1529 DXSpider receives all and any mail sent to it without any alterations needed
1530 in files.  Because personal and bulletin mail are treated differently, there
1531 is no need for a list of accepted bulletin addresses.  It is necessary, however,
1532 to tell the program which links accept which bulletins.  For example, it is
1533 pointless sending bulletins addresses to "UK" to any links other than UK
1534 ones.  The file that does this is called forward.pl and lives in /spider/msg.
1535 At default, like other spider files it is named forward.pl.issue.  Rename it
1536 to forward.pl and edit the file to match your requirements.
1537 The format is below ...
1538
1539 <tscreen><verb>
1540 #
1541 # this is an example message forwarding file for the system
1542 #
1543 # The format of each line is as follows
1544 #
1545 #     type    to/from/at pattern action  destinations
1546 #     P/B/F     T/F/A     regex   I/F    [ call [, call ...] ]
1547 #
1548 # type: P - private, B - bulletin (msg), F - file (ak1a bull)
1549 # to/from/at: T - to field, F - from field, A - home bbs, O - origin 
1550 # pattern: a perl regex on the field requested
1551 # action: I - ignore, F - forward
1552 # destinations: a reference to an array containing node callsigns
1553 #
1554 # if it is non-private and isn't in here then it won't get forwarded 
1555 #
1556 # Currently only type B msgs are affected by this code.
1557
1558 # The list is read from the top down, the first pattern that matches
1559 # causes the action to be taken.
1560 #
1561 # The pattern can be undef or 0 in which case it will always be selected
1562 # for the action specified
1563 #
1564 # If the BBS list is undef or 0 and the action is 'F' (and it matches the
1565 # pattern) then it will always be forwarded to every node that doesn't have 
1566 # it (I strongly recommend you don't use this unless you REALLY mean it, if
1567 # you allow a new link with this on EVERY bull will be forwarded immediately
1568 # on first connection)
1569 #
1570
1571 package DXMsg;
1572
1573 @forward = (
1574 'B',    'T',    'LOCAL',        'F',    [ qw(GB7MBC) ],
1575 'B',    'T',    'ALL',          'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1576 'B',    'T',    'UK',           'F',    [ qw(GB7BAA GB7ADX) ],
1577 'B',    'T',    'QSL',          'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1578 'B',    'T',    'QSLINF',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1579 'B',    'T',    'DX',           'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1580 'B',    'T',    'DXINFO',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1581 'B',    'T',    'DXNEWS',       'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1582 'B',    'T',    'DXQSL',        'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1583 'B',    'T',    'SYSOP',        'F',    [ qw(GB7BAA GB7ADX) ],
1584 'B',    'T',    '50MHZ',        'F',    [ qw(GB7BAA GB7ADX PA4AB-14) ],
1585 );
1586 </verb></tscreen>
1587
1588 Simply insert a bulletin address and state in the brackets where you wish
1589 that mail to go.  For example, you can see here that mail sent to "UK" will
1590 only be sent to the UK links and not to PA4AB-14.
1591
1592 <P>
1593 To force the cluster to reread the file use load/forward
1594
1595
1596 <sect1>The msg command
1597
1598 <P>
1599 The <em>msg</em> command is a very powerful and flexible tool for the
1600 sysop.  It allows the sysop to alter to and from fields and make other
1601 changes to manage the cluster mail.
1602
1603 Here is a full list of the various options ...
1604
1605 <tscreen><verb>
1606   MSG TO <msgno> <call>     - change TO callsign to <call>
1607   MSG FRom <msgno> <call>   - change FROM callsign to <call>
1608   MSG PRrivate <msgno>      - set private flag
1609   MSG NOPRrivate <msgno>    - unset private flag
1610   MSG RR <msgno>            - set RR flag
1611   MSG NORR <msgno>          - unset RR flag
1612   MSG KEep <msgno>          - set the keep flag (message won't be deleted ever)
1613   MSG NOKEep <msgno>        - unset the keep flag
1614   MSG SUbject <msgno> <new> - change the subject to <new>
1615   MSG WAittime <msgno>      - remove any waiting time for this message
1616   MSG NOREad <msgno>        - mark message as unread
1617   MSG REad <msgno>          - mark message as read
1618   MSG QUeue                 - queue any outstanding bulletins
1619   MSG QUeue 1               - queue any outstanding private messages
1620 </verb></tscreen>
1621
1622 These commands are simply typed from within the cluster as the sysop user.
1623
1624 <sect1>Message status
1625
1626 <P>
1627 You can check on a message from within the cluster by using the command
1628 <em>stat/msg</em>.  This will give you additional information on the
1629 message number including which nodes have received it, which node it
1630 was received from and when etc.  Here is an example of the output of
1631 the command ...
1632
1633 <tscreen><verb>
1634 G0VGS de GB7MBC 28-Jan-2001 1308Z >
1635 stat/msg 6869
1636         From: GB7DJK
1637     Msg Time: 26-Jan-2001 1302Z
1638        Msgno: 6869
1639       Origin: GB7DJK
1640         Size: 8012
1641      Subject: AMSAT 2line KEPS 01025.AMSAT
1642           To: UK
1643 Got it Nodes: GB7BAA, GB7ADX
1644      Private: 0
1645 Read Confirm: 0
1646   Times read: 0
1647 G0VGS de GB7MBC 28-Jan-2001 1308Z >
1648 </verb></tscreen>
1649
1650 <sect1>Filtering mail
1651
1652 <P>
1653 This is described in the section on <em>Other filters</em> so I will not
1654 duplicate it here.
1655
1656 <sect1>Distribution lists
1657
1658 <P>
1659 Distribution lists are simply a list of users to send certain types of
1660 mail to.  An example of this is mail you only wish to send to other
1661 sysops.  In /spider/msg there is a directory called <em>distro</em>.  You
1662 put any distibution lists in here.  For example, here is a file called
1663 SYSOP.pl that caters for the UK sysops.
1664
1665 <tscreen><verb>
1666 qw(GB7TLH GB7DJK GB7DXM GB7CDX GB7BPQ GB7DXN GB7MBC GB7MBC-6 GB7MDX
1667    GB7NDX GB7SDX GB7TDX GB7UDX GB7YDX GB7ADX GB7BAA GB7DXA GB7DXH 
1668    GB7DXK GB7DXI GB7DXS)
1669 </verb></tscreen>
1670
1671 Any mail sent to "sysop" would only be sent to the callsigns in this list.
1672
1673 <sect1>BBS interface
1674
1675 <P>
1676 Spider provides a simple BBS interface.  No input is required from the sysop
1677 of the cluster at all.  The BBS simply sets the cluster as a BBS and pushes
1678 any required mail to the cluster.  No mail can flow from Spider to the BBS,
1679 the interface is one-way.
1680
1681 <P>
1682 Please be careful not to flood the cluster network with unnecessary mail.
1683 Make sure you only send mail to the clusters that want it by using the
1684 Forward.pl file very carefully.
1685
1686 <sect>Databases
1687
1688 <P>
1689 Spider allows the creation of local or remote databases.  It supports
1690 chained databases, allowing several different databases to be scanned
1691 with one simple command.  Importing of databases is limited at present
1692 to the standard AK1A databases such as OBLAST and the DB0SDX QSL 
1693 database but will expand with time.
1694
1695 <sect1>Creating databases
1696
1697 <P>
1698 Creating a database could not be more simple.  All the commands are
1699 sent from the cluster prompt as the <em>sysop</em> user.
1700
1701 To create a database you use the command <em>dbcreate</em>.  It can
1702 be used in 3 different ways like so ..
1703
1704 <tscreen><verb>
1705 dbcreate <name>
1706 </verb></tscreen>
1707
1708 To simply create a database locally, you just tell the command the
1709 name of the database.  This does not create the actual database, it
1710 simply defines it to say that it exists.
1711
1712 <tscreen><verb>
1713 dbcreate <name> chain <name> [<name>...]
1714 </verb></tscreen>
1715
1716 This creates a chained database entry.  The first database will be
1717 scanned, then the second, the third etc...
1718
1719 <tscreen><verb>
1720 dbcreate <name> remote <name>
1721 </verb></tscreen>
1722
1723 This creates a remote entry.  the first name field is the database
1724 name at the remote node, then the remote switch, then the actual
1725 node_call of the remote node, for example...
1726
1727 <tscreen><verb>
1728 dbcreate buckmaster remote gb7dxc
1729 </verb></tscreen>
1730
1731 Remote databases cannot be chained, however, the last database in a
1732 chain can be a remote database.
1733
1734 <sect1>Importing databases
1735
1736 <P>
1737 The only databases that Spider can currently import are the standard
1738 AK1A databases such as OBLAST or the DB0SDX qsl and address database.
1739 This will be added to with time.
1740
1741 To import such a database, first put the file somewhere useful like /tmp
1742 and then issue the following command ...
1743
1744 <tscreen><verb>
1745 dbimport oblast /tmp/OBLAST.FUL
1746 </verb></tscreen>
1747
1748 This will update the existing local oblast database or create it if
1749 it does not exist.
1750
1751 <sect1>Checking available databases
1752
1753 <P>
1754 Once a database is created, you will want to check that it has been
1755 added.  To do this use the <em>dbavail</em> command.  This will
1756 output the available databases.  For example ...
1757
1758 <tscreen><verb>
1759 dbavail
1760 DB Name          Location   Chain
1761 qsl              Local
1762 buck             GB7ADX
1763 hftest           GB7DXM
1764 G0VGS de GB7MBC  3-Feb-2001 1925Z >
1765 </verb></tscreen>
1766
1767 <sect1>Looking up databases
1768
1769 <P>
1770 To look for information in a defined database, simply use the <em>dbshow</em>
1771 command, for example ...
1772
1773 <tscreen><verb>
1774 dbshow buckmaster G0YLM
1775 </verb></tscreen>
1776
1777 will show the information for the callsign G0YLM from the buckmaster
1778 database if it exists.  To make things more standard for the users
1779 you can add an entry in the Aliases file so that it looks like a standard 
1780 <em>show</em> command like this ...
1781
1782 <tscreen><verb>
1783 '^sh\w*/buc', 'dbshow buckmaster', 'dbshow',
1784 </verb></tscreen>
1785
1786 Now you can simply use show/buckmaster or an abreviation.
1787
1788 <sect1>Removing databases
1789
1790 <P>
1791 To delete an existing database you use the <em>dbremove</em> command.
1792 For example ...
1793
1794 <tscreen><verb>
1795 dbremove oblast
1796 </verb></tscreen>
1797
1798 would remove the oblast database and its associated datafile from the
1799 system.  There are no warnings or recovery possible from this command.
1800 If you remove a database it ceases to exist and would have to be created
1801 from scratch if you still required it.
1802
1803 <sect>Information, files and useful programs
1804
1805 <sect1>MOTD
1806
1807 <P>
1808 One of the more important things a cluster sysop needs to do is to get 
1809 information to his users.  The simplest way to do this is to have a banner 
1810 that is sent to the user on login.  This is know as a "message of the day" 
1811 or "motd".  To set this up, simply create a file in /spider/data called motd 
1812 and edit it to say whatever you want.  It is purely a text file and will be 
1813 sent automatically to anyone logging in to the cluster.
1814
1815 <sect1>Downtime message
1816
1817 <P>
1818 If for any reason the cluster is down, maybe for upgrade or maintenance but 
1819 the machine is still running, a message can be sent to the user advising them 
1820 of the fact.  This message lives in the /spider/data directory and is called
1821 "offline".  Simply create the file and edit it to say whatever you wish.  
1822 This file will be sent to a user attempting to log into the cluster when
1823 DXSpider is not actually running.
1824
1825 <sect1>Other text messages
1826
1827 <P>
1828 You can set other text messages to be read by the user if they input the file 
1829 name.  This could be for news items or maybe information for new users.  
1830 To set this up, make a directory under /spider called <em>packclus</em>.  
1831 Under this directory you can create files called <em>news</em> or <em>newuser</em>
1832 for example.  In fact you can create files with any names you like.  These can 
1833 be listed by the user with the command ....
1834
1835 <tscreen><verb>
1836 show/files
1837 </verb></tscreen>
1838
1839 They can be read by the user by typing the command ....
1840
1841 <tscreen><verb>
1842 type news
1843 </verb></tscreen>
1844
1845 If the file they want to read is called <em>news</em>.  You could also set 
1846 an alias for this in the Alias file to allow them just to type <em>news</em>
1847
1848 <P>
1849 You can also store other information in this directory, either directly or 
1850 nested under directories.  One use for this would be to store DX bulletins 
1851 such as the OPDX bulletins.  These can be listed and read by the user.  
1852 To keep things tidy, make a directory under /spider/packclus called
1853 <em>bulletin</em>.  Now copy any OPDX or similar bulletins into it.  These 
1854 can be listed by the user in the same way as above using the <em>show/files</em>
1855 command with an extension for the bulletin directory you have just created, 
1856 like this ....
1857
1858 <tscreen><verb>
1859 show/files bulletin
1860 </verb></tscreen>
1861
1862 <P>
1863 An example would look like this ....
1864
1865 <tscreen><verb>
1866 sh/files
1867 bulletin      DIR 20-Dec-1999 1715Z news          1602 14-Dec-1999 1330Z
1868 </verb></tscreen>
1869
1870 You can see that in the files area (basically the packclus directory) there is a 
1871 file called <em>news</em> and a directory called <em>bulletin</em>.  You can 
1872 also see that dates they were created.  In the case of the file <em>news</em>, 
1873 you can also see the time it was last modified, a good clue as to whether the 
1874 file has been updated since you last read it.  To read the file called 
1875 <em>news</em> you would simply issue the command ....
1876
1877 <tscreen><verb>
1878 type news
1879 </verb></tscreen>
1880
1881 To look what is in the bulletin directory you issue the command ....
1882
1883 <tscreen><verb>
1884 show/files bulletin
1885 opdx390      21381 29-Nov-1999 1621Z opdx390.1     1670 29-Nov-1999 1621Z
1886 opdx390.2     2193 29-Nov-1999 1621Z opdx391      25045 29-Nov-1999 1621Z  
1887 opdx392      35969 29-Nov-1999 1621Z opdx393      15023 29-Nov-1999 1621Z  
1888 opdx394      33429 29-Nov-1999 1621Z opdx394.1     3116 29-Nov-1999 1621Z  
1889 opdx395      24319 29-Nov-1999 1621Z opdx396      32647 29-Nov-1999 1621Z
1890 opdx396.1     5537 29-Nov-1999 1621Z opdx396.2     6242 29-Nov-1999 1621Z
1891 opdx397      18433 29-Nov-1999 1621Z opdx398      19961 29-Nov-1999 1621Z  
1892 opdx399      17719 29-Nov-1999 1621Z opdx400      19600 29-Nov-1999 1621Z
1893 opdx401      27738 29-Nov-1999 1621Z opdx402      18698 29-Nov-1999 1621Z
1894 opdx403      24994 29-Nov-1999 1621Z opdx404      15685 29-Nov-1999 1621Z
1895 opdx405      13984 29-Nov-1999 1621Z opdx405.1     4166 29-Nov-1999 1621Z
1896 opdx406      28934 29-Nov-1999 1621Z opdx407      24153 29-Nov-1999 1621Z
1897 opdx408      15081 29-Nov-1999 1621Z opdx409      23234 29-Nov-1999 1621Z
1898 Press Enter to continue, A to abort (16 lines) >
1899 </verb></tscreen>
1900
1901 You can now read any file in this directory using the type command, like this ....
1902
1903 <tscreen><verb>
1904 type bulletin/opdx391
1905 Ohio/Penn DX Bulletin No. 391
1906 The Ohio/Penn Dx PacketCluster
1907 DX Bulletin No. 391
1908 BID: $OPDX.391
1909 January 11, 1999
1910 Editor Tedd Mirgliotta, KB8NW
1911 Provided by BARF-80 BBS Cleveland, Ohio
1912 Online at 440-237-8208 28.8k-1200 Baud 8/N/1 (New Area Code!)
1913 Thanks to the Northern Ohio Amateur Radio Society, Northern Ohio DX
1914 Association, Ohio/Penn PacketCluster Network, K1XN & Golist, WB2RAJ/WB2YQH
1915 & The 59(9) DXReport, W3UR & The Daily DX, K3TEJ, KN4UG, W4DC, NC6J, N6HR,
1916 Press Enter to continue, A to abort (508 lines) >
1917 </verb></tscreen>
1918
1919 The page length will of course depend on what you have it set to!
1920
1921 <sect1>The Aliases file
1922
1923 <P>
1924 You will find a file in /spider/cmd/ called Aliases.  First, copy this file to
1925 /spider/local_cmd/Aliases and edit this file.  You will see something like this ...
1926
1927 <tscreen><verb>
1928
1929 #!/usr/bin/perl
1930
1931 # provide some standard aliases for commands for terminally
1932 # helpless ak1a user (helpless in the sense that they never
1933 # read nor understand help files)
1934
1935 # This file is automagically reloaded if its modification time is 
1936 # later than the one stored in CmdAlias.pm
1937
1938 # PLEASE make this file consistant with reality! (the patterns MUST
1939 # match the filenames!)
1940
1941 # Don't alter this file, copy it into the local_cmd tree and modify it.
1942 # This file will be replaced everytime I issue a new release.
1943
1944 # You only need to put aliases in here for commands that don't work as
1945 # you desire naturally, e.g sh/dx on its own just works as you expect
1946 # so you need not add it as an alias.
1947
1948
1949
1950 package CmdAlias;
1951
1952 %alias = (
1953     '?' => [
1954           '^\?', 'apropos', 'apropos',
1955         ],
1956     'a' => [
1957           '^ann.*/full', 'announce full', 'announce', 
1958           '^ann.*/sysop', 'announce sysop', 'announce',
1959           '^ann.*/(.*)$', 'announce $1', 'announce',
1960         ],
1961         'b' => [
1962         ],
1963         'c' => [
1964         ],
1965         'd' => [
1966           '^del', 'kill', 'kill',
1967           '^del\w*/fu', 'kill full', 'kill',
1968           '^di\w*/a\w*', 'directory all', 'directory',
1969           '^di\w*/b\w*', 'directory bulletins', 'directory',
1970           '^di\w*/n\w*', 'directory new', 'directory',
1971           '^di\w*/o\w*', 'directory own', 'directory',
1972           '^di\w*/s\w*', 'directory subject', 'directory',
1973           '^di\w*/t\w*', 'directory to', 'directory',
1974           '^di\w*/f\w*', 'directory from', 'directory',
1975           '^di\w*/(\d+)', 'directory $1', 'directory',
1976         ],
1977         'e' => [
1978         ],
1979         'f' => [
1980         ],
1981         'g' => [
1982         ],
1983         'h' => [
1984         ],
1985         'i' => [
1986         ],
1987         'j' => [
1988         ],
1989         'k' => [
1990         ],
1991         'l' => [
1992           '^l$', 'directory', 'directory',
1993           '^ll$', 'directory', 'directory',
1994           '^ll/(\d+)', 'directory $1', 'directory',
1995         ],
1996         'm' => [
1997         ],
1998         'n' => [
1999           '^news', 'type news', 'type',
2000         ],
2001         'o' => [
2002         ],
2003         'p' => [
2004         ],
2005         'q' => [
2006           '^q', 'bye', 'bye',
2007         ],
2008         'r' => [        
2009           '^r$', 'read', 'read',
2010           '^rcmd/(\S+)', 'rcmd $1', 'rcmd',
2011         ],
2012         's' => [
2013           '^s/p$', 'send', 'send',
2014           '^sb$', 'send noprivate', 'send',
2015           '^set/home$', 'set/homenode', 'set/homenode',
2016           '^set/nobe', 'unset/beep', 'unset/beep',
2017           '^set/nohe', 'unset/here', 'unset/here',
2018           '^set/noan', 'unset/announce', 'unset/announce',
2019           '^set/nodx', 'unset/dx', 'unset/dx',
2020           '^set/nota', 'unset/talk', 'unset/talk',
2021           '^set/noww', 'unset/wwv', 'unset/wwv',
2022           '^set/nowx', 'unset/wx', 'unset/wx',
2023           '^sh$', 'show', 'show',
2024           '^sh\w*/buck', 'dbshow buck', 'dbshow',
2025           '^sh\w*/bu', 'show/files bulletins', 'show/files',
2026           '^sh\w*/c/n', 'show/configuration nodes', 'show/configuration',
2027           '^sh\w*/c$', 'show/configuration', 'show/configuration',
2028           '^sh\w*/com', 'dbavail', 'dbavail',
2029           '^sh\w*/dx/(\d+)-(\d+)', 'show/dx $1-$2', 'show/dx',
2030           '^sh\w*/dx/(\d+)', 'show/dx $1', 'show/dx',
2031           '^sh\w*/dx/d(\d+)', 'show/dx from $1', 'show/dx',
2032           '^sh\w*/email', 'dbshow email', 'dbshow',
2033           '^sh\w*/hftest', 'dbshow hftest', 'dbshow',
2034           '^sh\w*/vhftest', 'dbshow vhftest', 'dbshow',
2035           '^sh\w*/qsl', 'dbshow qsl', 'dbshow',
2036           '^sh\w*/tnc', 'who', 'who',
2037           '^sh\w*/up', 'show/cluster', 'show/cluster',
2038           '^sh\w*/w\w*/(\d+)-(\d+)', 'show/wwv $1-$2', 'show/wwv',
2039           '^sh\w*/w\w*/(\d+)', 'show/wwv $1', 'show/wwv',
2040           '^sp$', 'send', 'send',
2041         
2042     ],
2043         't' => [
2044           '^ta$', 'talk', 'talk',
2045           '^t$', 'talk', 'talk',
2046         ],
2047         'u' => [
2048         ],
2049         'v' => [
2050         ],
2051         'w' => [
2052           '^wx/full', 'wx full', 'wx',
2053           '^wx/sysop', 'wx sysop', 'wx',
2054         ],
2055         'x' => [
2056         ],
2057         'y' => [
2058         ],
2059         'z' => [
2060         ],
2061 )
2062 </verb></tscreen>
2063
2064 You can create aliases for commands at will.  Beware though, these may not 
2065 always turn out as you think.  Care is needed and you need to test the 
2066 results once you have set an alias.
2067
2068 <sect1>Console.pl
2069
2070 <P>
2071 In later versions of Spider a simple console program is provided for the sysop.  
2072 This has a type ahead buffer with line editing facilities and colour for spots,
2073 announces etc.  To use this program, simply use console.pl instead of client.
2074
2075 <P>
2076 To edit the colours, copy /spider/perl/Console.pl to /spider/local and edit the 
2077 file with your favourite editor.
2078
2079 <sect1>Updating kepler data
2080
2081 <P>
2082 Spider has a powerful and flexible show/satellite command.  In order for
2083 this to be accurate, the kepler data has to be updated regularly.  In
2084 general, this data is available as an email or via cluster mail.
2085 Updating it is simple.  First you need to export the mail message as a
2086 file.  You do this with the <em>export</em> command from the cluster prompt
2087 as the sysop.  For example ...
2088
2089 <tscreen><verb>
2090 export 5467 /spider/perl/keps.in
2091 </verb></tscreen>
2092
2093 would export message number 5467 as a file called keps.in in the
2094 /spider/perl directory.
2095
2096 Now login to a VT as sysop and cd /spider/perl.  There is a command in
2097 the perl directory called <em>convkeps.pl</em>.  All we need to do now is
2098 convert the file like so ...
2099
2100 <tscreen><verb>
2101 ./convkeps.pl keps.in
2102 </verb></tscreen>
2103
2104 Now go back to the cluster and issue the command ...
2105
2106 <tscreen><verb>
2107 load/keps
2108 </verb></tscreen>
2109
2110 That is it!  the kepler data has been updated.
2111
2112 <sect1>The QRZ callbook
2113
2114 <P>
2115 The command <em>sh/qrz</em> will only work once you have followed a few
2116 simple steps.  First you need to get a user ID and password from qrz.com.
2117 Simply go to the site and create one.  Secondly you need to copy the file
2118 /spider/perl/Internet.pm to /spider/local and alter it to match your user
2119 ID and password.  You also at this point need to set $allow=1 to complete
2120 the setup.  Many thanks to Fred Lloyd, the proprieter of
2121 <htmlurl url="http://www.qrz.com" name="qrz.com"> for allowing this access.
2122
2123 <sect>CVS
2124
2125 <P>
2126 CVS stands for "Concurrent Versions System" and the CVS for DXSpider is held
2127 at <htmlurl url="http://www.sourceforge.net" name="Sourceforge">.  This means
2128 that it is possible to update your DXSpider installation to the latest
2129 sources by using a few simple commands.
2130
2131 <P>
2132 THIS IS NOT FOR THE FAINT HEARTED!!!  ONLY DO THIS IF YOU HAVE A TEST
2133 INSTALLATION OR ARE WILLING TO HAVE YOUR CLUSTER CRASH ON YOU!!!
2134 THIS MUST BE CONSIDERED AT LEAST BETA TESTING AND MAYBE EVEN ALPHA!!
2135 YOU HAVE BEEN WARNED!!!
2136
2137 <P>
2138 DID I MENTION..... ONLY DO THIS IF YOU ARE WILLING TO ACCEPT THE
2139 CONSEQUENCES!!!
2140
2141 <P>
2142 I am of course assuming that you have a machine with both DXSpider and
2143 Internet access running.
2144
2145 <P>
2146 BEFORE YOU EVEN CONSIDER STARTING WITH THIS MAKE A BACKUP OF YOUR
2147 ENTIRE SPIDER TREE!!
2148
2149 <P>
2150 Assuming you are connected to the Internet, you need to login to the
2151 CVS repository and then update your Spider source.  There are several
2152 steps which are listed below ...
2153
2154 <P>
2155 First login as the user <em>sysop</em>.  Next you need to connect to the CVS
2156 repository.  You do this with the command below ...
2157
2158 <verb>
2159 cvs -d:pserver:anonymous@cvs.DXSpider.sourceforge.net:/cvsroot/dxspider login 
2160 </verb>
2161
2162 You will get a password prompt.  Simply hit return here and your machine should
2163 return to a normal linux prompt.
2164
2165 <P>
2166 What happens next depends on whether you have an existing installation that 
2167 you want to update with the latest and greatest or whether you just want
2168 to see what is there and/or run it on a new machine for testing.
2169
2170 If you are installing Spider from CVS then change directory to /home/sysop
2171
2172 If you are wanting to update Spider then cd to /tmp
2173
2174 <P>
2175 The next step will create a brand new 'spider' directory in your current
2176 directory.
2177
2178 <verb>
2179 cvs -z3 -d:pserver:anonymous@cvs.DXSpider.sourceforge.net:/cvsroot/dxspider co spider
2180 </verb>
2181
2182 This command is all on one line.
2183
2184 <P>
2185 Hopefully your screen should show you downloading files.  The -z3 simply compresses
2186 the download to improve speed.
2187 When this has finished, you will have exactly the same as if you had untarred a full 
2188 tarball PLUS some extra directories and files that CVS needs to do the magic that 
2189 it does.
2190
2191 <P>
2192 Now if you are doing a new installation, that's it.  Carry on as if you have
2193 just downloaded and untarred the lastest tarball.
2194
2195 <P>
2196 If you want to upgrade your current installation then do this ...
2197
2198 <tscreen><verb>
2199 tar cvfz /tmp/s.tgz spider
2200 cd /
2201 tar xvfzp /tmp/s.tgz
2202 </verb></tscreen>
2203
2204 This is assuming you downloaded to the /tmp directory of course.
2205
2206 <P>
2207 NOTE:  the 'p' on the end of the 'xvfz' is IMPORTANT!   It keeps the permissions
2208 correct.  YOU WERE LOGGED IN AS THE USER SYSOP WEREN'T YOU?????
2209
2210 Remember to recompile the C client (cd /spider/src; make)
2211
2212 <P>
2213 At this point the files have been upgraded.  You can (usually) restart the cluster
2214 in your own time.  However, if you attempt to use any new commands or features
2215 expect it to be fatal!  At least your cluster will have been restarted then so it
2216 will be too late to worry about it!
2217
2218 <P>
2219 Now the magic part!  From now on when you want to update, simply connect to the 
2220 Internet and then, as the user <em>sysop</em> ...
2221
2222 <tscreen><verb>
2223 cd /spider
2224 cvs -z3 update -d
2225 </verb></tscreen>
2226
2227 and your files will be updated.  As above, remember to recompile the "C" client 
2228 if it has been updated (CVS will tell you) and restart if any of the perl scripts
2229 have been altered or added, again, CVS will tell you.
2230
2231 <P>
2232 You will find any changes documented in the /spider/Changes file.
2233
2234 <sect>The DXSpider command set
2235
2236 <P>
2237 Below is a complete list of commands available from the cluster prompt.
2238 Most maintenance tasks are automatic but there are some commands that are useful 
2239 for a sysop.  These are listed below in alphabetical order.  The number in 
2240 brackets following the command name is the permissions level needed to use 
2241 the command.
2242
2243 <sect1>accept/announce (0)
2244
2245 <P>
2246 <tt>
2247 <bf>accept/announce &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set an accept filter
2248  line for announce
2249 </tt>
2250
2251 <P>
2252 Create an 'accept this announce' line for a filter. 
2253
2254 An accept filter line means that if the announce matches this filter it is
2255 passed onto the user. See HELP FILTERS for more info. Please read this
2256 to understand how filters work - it will save a lot of grief later on.
2257
2258 You can use any of the following things in this line:-
2259
2260 <tscreen><verb>
2261   info <string>            eg: iota or qsl
2262   by <prefixes>            eg: G,M,2         
2263   origin <prefixes>
2264   origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
2265   origin_itu <numbers>
2266   origin_zone <numbers>
2267   by_dxcc <numbers>
2268   by_itu <numbers>
2269   by_zone <numbers>
2270   channel <prefixes>
2271   wx 1                     filter WX announces
2272   dest <prefixes>          eg: 6MUK,WDX      (distros)
2273 </verb></tscreen>
2274
2275 some examples:-
2276
2277 <tscreen><verb>
2278   acc/ann dest 6MUK
2279   acc/ann 2 by_zone 14,15,16
2280   (this could be all on one line: acc/ann dest 6MUK or by_zone 14,15,16)
2281 </verb></tscreen>
2282
2283 or
2284
2285 <tscreen><verb>
2286   acc/ann by G,M,2 
2287 </verb></tscreen>
2288
2289 This filter would only allow announces that were posted buy UK stations.  
2290 You can use the tag 'all' to accept everything eg:
2291
2292 <tscreen><verb>
2293   acc/ann all
2294 </verb></tscreen>
2295
2296 but this probably for advanced users...
2297
2298 <sect1>accept/announce (extended for sysops) (8)
2299
2300 <P>
2301 <tt>
2302 <bf>accept/announce &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb;&lt;pattern&gt;</bf> Announce filter sysop version
2303 </tt>
2304
2305 <P>
2306 This version allows a sysop to set a filter for a callsign as well as the
2307 default for nodes and users eg:-
2308
2309 <tscreen><verb>
2310   accept/ann by G,M,2
2311   accept/ann input node_default by G,M,2
2312   accept/ann user_default by G,M,2
2313 </verb></tscreen>
2314
2315 <sect1>accept/spots (0)
2316
2317 <P>
2318 <tt>
2319 <bf>accept/announce &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set an accept filter 
2320 line for spots
2321 </tt>
2322
2323 <P>
2324 Create an 'accept this spot' line for a filter.
2325
2326 <P>
2327 An accept filter line means that if the spot matches this filter it is
2328 passed onto the user. See HELP FILTERS for more info. Please read this
2329 to understand how filters work - it will save a lot of grief later on.
2330
2331 You can use any of the following things in this line:-
2332
2333 <tscreen><verb>
2334   freq <range>           eg: 0/30000 or hf or hf/cw or 6m,4m,2m
2335   on <range>             same as 'freq'
2336   call <prefixes>        eg: G,PA,HB9
2337   info <string>          eg: iota or qsl
2338   by <prefixes>            
2339   call_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
2340   call_itu <numbers>
2341   call_zone <numbers>
2342   by_dxcc <numbers>
2343   by_itu <numbers>
2344   by_zone <numbers>
2345   origin <prefixes>
2346   channel <prefixes>
2347 </verb></tscreen>
2348
2349 <P>
2350 For frequencies, you can use any of the band names defined in
2351 SHOW/BANDS and you can use a subband name like: cw, rtty, data, ssb -
2352 thus: hf/ssb. You can also just have a simple range like: 0/30000 -
2353 this is more efficient than saying simply: freq HF (but don't get
2354 too hung up about that)
2355
2356 some examples:-
2357
2358 <tscreen><verb>
2359   acc/spot 1 on hf/cw
2360   acc/spot 2 on vhf and (by_zone 14,15,16 or call_zone 14,15,16)
2361 </verb></tscreen>
2362
2363 You can use the tag 'all' to accept everything, eg:
2364
2365 <tscreen><verb>
2366   acc/spot 3 all
2367 </verb></tscreen>
2368
2369 but this probably for advanced users...
2370
2371 <sect1>accept/spots (extended for sysops) (8)
2372
2373 <P>
2374 <tt>
2375 <bf>accept/spots &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Spot filter sysop version
2376 </tt>
2377
2378 <P>
2379 This version allows a sysop to set a filter for a callsign as well as the
2380 default for nodes and users eg:-
2381
2382 <tscreen><verb>
2383   accept/spot db0sue-7 1 by_zone 14,15,16
2384   accept/spot node_default all
2385   set/hops node_default 10
2386
2387   accept/spot user_default by G,M,2
2388 </verb></tscreen>
2389
2390 <sect1>accept/wcy (0)
2391
2392 <P>
2393 <tt>
2394 <bf>accept/wcy &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> set an accept WCY filter
2395 </tt>
2396
2397 <P>
2398 It is unlikely that you will want to do this, but if you do then you can
2399 filter on the following fields:-
2400
2401 <tscreen><verb>
2402   by <prefixes>            eg: G,M,2         
2403   origin <prefixes>
2404   origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
2405   origin_itu <numbers>
2406   origin_zone <numbers>
2407   by_dxcc <numbers>
2408   by_itu <numbers>
2409   by_zone <numbers>
2410   channel <prefixes>
2411 </verb></tscreen>
2412
2413 <P>
2414 There are no examples because WCY Broadcasts only come from one place and
2415 you either want them or not (see UNSET/WCY if you don't want them).
2416
2417 This command is really provided for future use.
2418
2419 See HELP FILTER for information.
2420
2421 <sect1>accept/wcy (extended for sysops) (8)
2422
2423 <P>
2424 <tt>
2425 <bf>accept/wcy &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf>
2426 WCY filter sysop version
2427 </tt>
2428
2429 <P>
2430 This version allows a sysop to set a filter for a callsign as well as the
2431 default for nodes and users eg:-
2432
2433 <tscreen><verb>
2434   accept/wcy node_default all
2435   set/hops node_default 10
2436 </verb></tscreen>
2437
2438 <sect1>accept/wwv (0)
2439
2440 <P>
2441 <tt>
2442 <bf>accept/wwv &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set an accept WWV filter
2443 </tt>
2444
2445 <P>
2446 It is unlikely that you will want to do this, but if you do then you can
2447 filter on the following fields:-
2448
2449 <tscreen><verb>
2450   by <prefixes>            eg: G,M,2         
2451   origin <prefixes>
2452   origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
2453   origin_itu <numbers>
2454   origin_zone <numbers>
2455   by_dxcc <numbers>
2456   by_itu <numbers>
2457   by_zone <numbers>
2458   channel <prefixes>
2459 </verb></tscreen>
2460
2461 for example 
2462
2463 <tscreen><verb>
2464   accept/wwv by_zone 4
2465 </verb></tscreen>
2466
2467 is probably the only useful thing to do (which will only show WWV broadcasts
2468 by stations in the US).
2469
2470 See HELP FILTER for information.
2471
2472 <sect1>accept/wwv (extended for sysops) (8)
2473
2474 <P>
2475 <tt>
2476 <bf>accept/wwv &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf>
2477 WWV filter sysop version
2478 </tt>
2479
2480 <P>
2481 This version allows a sysop to set a filter for a callsign as well as the
2482 default for nodes and users eg:-
2483
2484 <tscreen><verb>
2485   accept/wwv db0sue-7 1 by_zone 4
2486   accept/wwv node_default all
2487   set/hops node_default 10
2488
2489   accept/wwv user_default by W,K
2490 </verb></tscreen>
2491
2492 <sect1>announce (0)
2493
2494 <P>
2495 <tt>
2496 <bf>announce &lt;text&gt;</bf> Send an announcement to local users
2497 </tt>
2498
2499 <P>
2500 Send an announcement to LOCAL users only, where &lt;text&gt; is the text 
2501 of the announcement you wish to broadcast
2502
2503 <sect1>announce full (0)
2504
2505 <P>
2506 <tt>
2507 <bf>announce full &lt;text&gt;</bf> Send an announcement cluster wide
2508 </tt>
2509
2510 <P>
2511 This command will send your announcement across the whole cluster
2512 network.
2513
2514
2515 <sect1>announce sysop (5)
2516
2517 <P>
2518 <tt>
2519 <bf>announce sysop &lt;text&gt;</bf>
2520 </tt>
2521
2522 <P>
2523 Send an announcement to Sysops only
2524
2525 <sect1>apropos (0)
2526
2527 <P>
2528 <tt>
2529 <bf>apropos &lt;string&gt;</bf> Search the help database
2530 </tt>
2531
2532 <P>
2533 Search the help database for &lt;string&gt; (it isn't case sensitive), 
2534 and print the names of all the commands that may be relevant.
2535
2536 <sect1>bye (0)
2537
2538 <P>
2539 <tt>
2540 <bf>bye</bf> Exit from the cluster
2541 </tt>
2542
2543 <P>
2544 This will disconnect you from the cluster
2545
2546 <sect1>catchup (5)
2547
2548 <P>
2549 <tt>
2550 <bf>catchup &lt;node_call&gt; All&verbar;&lsqb;&lt;msgno&gt; ...&rsqb;</bf> 
2551 Mark a message as sent
2552 </tt>
2553
2554 <P>
2555 When you send messages the fact that you have forwarded it to another node 
2556 is remembered so that it isn't sent again. When you have a new partner
2557 node and you add their callsign to your /spider/msg/forward.pl file, all
2558 outstanding non-private messages will be forwarded to them. This may well
2559 be ALL the non-private messages. You can prevent this by using these 
2560 commmands:-
2561
2562 <tscreen><verb>
2563   catchup GB7DJK all
2564   catchup GB7DJK 300 301 302 303 500-510
2565 </verb></tscreen>
2566         
2567 and to undo what you have just done:-
2568   
2569 <tscreen><verb>
2570   uncatchup GB7DJK all
2571   uncatchup GB7DJK 300 301 302 303 500-510
2572 </verb></tscreen>
2573
2574 which will arrange for them to be forward candidates again.
2575
2576 Order is not important.
2577
2578 <sect1>clear/spots (0)
2579
2580 <P>
2581 <tt>
2582 <bf>clear/spots &lsqb;1&verbar;all&rsqb;</bf> Clear a spot filter line
2583 </tt>
2584
2585 <P>
2586 This command allows you to clear (remove) a line in a spot filter or to 
2587 remove the whole filter.
2588
2589 If you have a filter:-
2590
2591 <tscreen><verb>
2592   acc/spot 1 on hf/cw
2593   acc/spot 2 on vhf and (by_zone 14,15,16 or call_zone 14,15,16)
2594 </verb></tscreen>
2595
2596 and you say:-
2597
2598 <tscreen><verb>
2599   clear/spot 1
2600 </verb></tscreen>
2601
2602 you will be left with:-
2603
2604 <tscreen><verb>
2605   acc/spot 2 on vhf and (by_zone 14,15,16 or call_zone 14,15,16)
2606 </verb></tscreen>
2607
2608 If you do:
2609
2610 <tscreen><verb>
2611   clear/spot all
2612 </verb></tscreen>
2613
2614 the filter will be completely removed.
2615
2616
2617 <sect1>connect (5) 
2618
2619 <P>
2620 <tt>
2621 <bf>connect &lt;callsign&gt;</bf> Start a connection to another DX Cluster
2622 </tt>
2623
2624 <P>
2625 Start a connection process that will culminate in a new connection to the
2626 DX cluster &lt;callsign&gt;. This process creates a new 'client' process which will
2627 use the script in /spider/connect/&lt;callsign&gt; to effect the 'chat' exchange
2628 necessary to traverse the network(s) to logon to the cluster &lt;callsign&gt;.
2629
2630 <sect1>dbavail (0)
2631
2632 <P>
2633 <tt>
2634 <bf>dbavail</bf> Show a list of all the databases in the system
2635 </tt>
2636
2637 <P>
2638 The title says it all really, this command lists all the databases defined
2639 in the system. It is also aliased to SHOW/COMMAND.
2640
2641 <sect1>dbcreate (9)
2642
2643 <P>
2644 <tt>
2645 <bf>dbcreate &lt;name&gt;</bf> Create a database entry<newline>
2646 <bf>dbcreate &lt;name&gt; chain &lt;name&gt; [&lt;name&gt;..]</bf> Create a 
2647 chained database entry<newline>
2648 <bf>dbcreate &lt;name&gt; remote &lt;node&gt;</bf> Create a remote database
2649 entry<newline>
2650 </tt>
2651
2652 <P>
2653 DBCREATE allows you to define a database in the system. It doesn't actually
2654 create anything, just defines it.
2655
2656 The databases that are created are simple DB_File hash databases, they are 
2657 therefore already 'indexed'.
2658
2659 You can define a local database with the first form of the command eg:
2660
2661   DBCREATE oblast
2662
2663 You can also chain databases with the addition of the 'chain' keyword. 
2664 This will search each database one after the other. A typical example 
2665 is:
2666
2667   DBCREATE sdx_qsl chain sql_ad
2668
2669 No checking is done to see if the any of the chained databases exist, in
2670 fact it is usually better to do the above statement first then do each of
2671 the chained databases.
2672
2673 Databases can exist offsite. To define a database that lives on another 
2674 node do:
2675
2676   DBCREATE buckmaster remote gb7dxc
2677
2678 Remote databases cannot be chained; however, the last database in a 
2679 a chain can be a remote database eg:
2680
2681   DBCREATE qsl chain gb7dxc
2682
2683 To see what databases have been defined do:
2684
2685   DBAVAIL (or it will have been aliased to SHOW/COMMAND)
2686
2687 It would be normal for you to add an entry into your local Aliases file
2688 to allow people to use the 'SHOW/&lt;dbname&gt;' style syntax. So you would
2689 need to add a line like:-
2690
2691 <tscreen><verb>
2692   's' => [
2693     ..
2694     ..
2695     '^sh\w*/buc', 'dbshow buckmaster', 'dbshow',
2696     ..
2697     ..
2698    ],
2699 </verb></tscreen>
2700
2701 to allow 
2702
2703   SH/BUCK g1tlh
2704
2705 to work as they may be used to.
2706
2707 See DBIMPORT for the importing of existing AK1A format data to databases.
2708 See DBSHOW for generic database enquiry
2709
2710 <sect1>dbimport (9)
2711
2712 <P>
2713 <tt>
2714 <bf>dbimport &lt;dbname&gt;</bf> Import AK1A data into a database
2715 </tt>
2716
2717 <P>
2718 If you want to import or update data in bulk to a database you can use
2719 this command. It will either create or update entries into an existing
2720 database. For example:-
2721
2722   DBIMPORT oblast /tmp/OBLAST.FUL
2723
2724 will import the standard OBLAST database that comes with AK1A into the
2725 oblast database held locally.
2726
2727 <sect1>dbremove (9)
2728
2729 <P>
2730 <tt>
2731 <bf>dbremove &lt;dbname&gt;</bf> Delete a database
2732 </tt>
2733
2734 <P>
2735 DBREMOVE will completely remove a database entry and also delete any data
2736 file that is associated with it. 
2737
2738 There is no warning, no comeback, no safety net. 
2739
2740 For example:
2741
2742   DBREMOVE oblast 
2743
2744 will remove the oblast database from the system and it will also remove
2745 the associated datafile.
2746
2747 I repeat:
2748
2749 There is no warning, no comeback, no safety net.
2750
2751 You have been warned.
2752
2753 <sect1>dbshow (0)
2754
2755 <P>
2756 <tt>
2757 <bf>dbshow &lt;dbname&gt; &lt;key&gt;</bf> Display an entry, if it exists, 
2758 in a database
2759 </tt>
2760
2761 <P>
2762 This is the generic user interface to the database to the database system.
2763 It is expected that the sysop will add an entry to the local Aliases file
2764 so that users can use the more familiar AK1A style of enquiry such as:
2765
2766 <tscreen><verb>
2767   SH/BUCK G1TLH
2768 </verb></tscreen>
2769
2770 but if he hasn't and the database really does exist (use DBAVAIL or
2771 SHOW/COMMAND to find out) you can do the same thing with:
2772
2773 <tscreen><verb>
2774   DBSHOW buck G1TLH
2775 </verb></tscreen>
2776
2777
2778 <sect1>debug (9)
2779
2780 <P>
2781 <tt>
2782 <bf>debug</bf> Set the cluster program into debug mode
2783 </tt>
2784
2785 <P>
2786 Executing this command will only have an effect if you are running the cluster
2787 in debug mode i.e.
2788
2789 <tscreen><verb>
2790         perl -d cluster.pl
2791 </verb></tscreen>
2792
2793 It will interrupt the cluster just after the debug command has finished.
2794
2795 <sect1>directory (0)
2796
2797 <P>
2798 <tt>
2799 <bf>directory</bf> List messages<newline> 
2800 <bf>directory all</bf> List all messages<newline>
2801 <bf>directory own</bf> List your own messages<newline>
2802 <bf>directory new</bf> List all new messages<newline>
2803 <bf>directory to &lt;call&gt;</bf> List all messages to &lt;call&gt;<newline>
2804 <bf>directory from &lt;call&gt;</bf> List all messages from &lt;call&gt;<newline>
2805 <bf>directory subject &lt;string&gt;</bf> List all messages with &lt;string&gt; 
2806 in subject<newline>
2807 <bf>directory &lt;nn&gt;</bf> List last &lt;nn&gt; messages<newline>
2808 <bf>directory &lt;from&gt;-&lt;to&gt;</bf> List messages &lt;from&gt; message &lt;to&gt; message <newline>
2809 </tt>
2810
2811 <P>
2812 List the messages in the messages directory.
2813
2814 If there is a 'p' one space after the message number then it is a 
2815 personal message. If there is a '-' between the message number and the
2816 'p' then this indicates that the message has been read.
2817
2818 You can use shell escape characters such as '*' and '?' in the &lt;call&gt;
2819 fields.
2820
2821 You can combine some of the various directory commands together eg:-
2822
2823 <tscreen><verb>
2824    DIR TO G1TLH 5
2825 or 
2826    DIR SUBJECT IOTA 200-250
2827 </verb></tscreen>
2828
2829 You can abbreviate all the commands to one letter and use ak1a syntax:-
2830
2831 <tscreen><verb>
2832    DIR/T G1* 10
2833    DIR/S QSL 10-100 5
2834 </verb></tscreen>
2835
2836
2837 <sect1>directory (extended for sysops) (5)
2838
2839 <P>
2840 Works just like the user command except that sysops can see ALL messages.
2841
2842 <sect1>disconnect (8)
2843
2844 <P>
2845 <tt>
2846 <bf>disconnect &lt;call&gt; [&lt;call&gt; ...]</bf> Disconnect a user or node
2847 </tt>
2848
2849 <P>
2850 Disconnect any &lt;call&gt; connected locally
2851
2852 <sect1>dx (0)
2853
2854 <P>
2855 <tt>
2856 <bf>dx &lsqb;by &lt;call&gt;&rsqb; &lt;freq&gt; &lt;call&gt; &lt;remarks&gt;</bf> Send a DX spot
2857 </tt>
2858
2859 <P>
2860 This is how you send a DX Spot to other users. You can, in fact, now
2861 enter the &lt;freq&gt; and the &lt;call&gt; either way round. 
2862
2863 <tscreen><verb>
2864    DX FR0G 144.600
2865    DX 144.600 FR0G
2866    DX 144600 FR0G 
2867 </verb></tscreen>
2868
2869 will all give the same result. You can add some remarks to the end
2870 of the command and they will be added to the spot.
2871
2872 <tscreen><verb>
2873    DX FR0G 144600 this is a test
2874 </verb></tscreen>
2875
2876 You can credit someone else by saying:-
2877
2878 <tscreen><verb>
2879    DX by G1TLH FR0G 144.600 he isn't on the cluster
2880 </verb></tscreen>
2881
2882 The &lt;freq&gt; is compared against the available bands set up in the 
2883 cluster.  See SHOW/BANDS for more information.
2884
2885 <sect1>export (9)
2886
2887 <P>
2888 <tt>
2889 <bf>export &lt;msgno&gt; &lt;filename&gt;</bf> Export a message to a file
2890 </tt>
2891
2892 <P>
2893 Export a message to a file. This command can only be executed on a local
2894 console with a fully privileged user. The file produced will be in a form
2895 ready to be imported back into the cluster by placing it in the import 
2896 directory (/spider/msg/import).
2897
2898 This command cannot overwrite an existing file. This is to provide some 
2899 measure of security. Any files written will owned by the same user as the 
2900 main cluster, otherwise you can put the new files anywhere the cluster can
2901 access. For example:-
2902
2903   EXPORT 2345 /tmp/a
2904
2905 <sect1>export_users (9)
2906
2907 <P>
2908 <tt>
2909 <bf>export_users &lsqb;&lt;filename&gt;&rsqb;</bf> Export the users database to ascii
2910 </tt>
2911
2912 <P>
2913 Export the users database to a file in ascii format. If no filename
2914 is given then it will export the file to /spider/data/user_asc.
2915
2916 If the file already exists it will be renamed to &lt;filename&gt;.o. In fact
2917 up to 5 generations of the file can be kept each one with an extra 'o' on the
2918 suffix. 
2919
2920 BE WARNED: this will write to any file you have write access to. No check is
2921 made on the filename (if any) that you specify.
2922
2923 <sect1>forward/latlong (8)
2924
2925 <P>
2926 <tt>
2927 <bf>forward/latlong &lt;node_call&gt;</bf> Send latitude and longitude 
2928 information to another cluster
2929 </tt>
2930
2931 <P>
2932 This command sends all the latitude and longitude information that your
2933 cluster is holding against callsigns.  One advantage of recieving this
2934 information is that more locator information is held by you.  This
2935 means that more locators are given on the DX line assuming you have
2936 <em>set/dxgrid</em> enabled.  This could be a LOT of information though, so
2937 it is not recommended on slow links.
2938
2939 <sect1>forward/opername (1)
2940
2941 <P>
2942 <tt>
2943 <bf>forward/opername &lt;call&gt;</bf> Send out information on this &lt;call&gt; 
2944 to all clusters
2945 </tt>
2946
2947 <P>
2948 This command sends out any information held in the user file which can 
2949 be broadcast in PC41 protocol packets. This information is Name, QTH, Location
2950 and Homenode. PC41s are only sent for the information that is available.
2951
2952 <sect1>help (0)
2953
2954 <P>
2955 <tt>
2956 <bf>help &lt;cmd&gt;</bf> Get help on a command
2957 </tt>
2958
2959 <P>
2960 All commands can be abbreviated, so SHOW/DX can be abbreviated
2961 to SH/DX, ANNOUNCE can be shortened to AN and so on.
2962
2963 Look at the APROPOS &lt;string&gt; command which will search the help database
2964 for the &lt;string&gt; you specify and give you a list of likely commands
2965 to look at with HELP.
2966
2967 <sect1>init (5)
2968
2969 <P>
2970 <tt>
2971 <bf>init &lt;node call&gt;</bf> Re-initialise a link to an AK1A compatible node
2972 </tt>
2973
2974 <P>
2975 This command attempts to re-initialise a link to a (usually) AK1A node
2976 that has got confused, usually by a protocol loop of some kind. It may
2977 work - but you usually will be better off simply disconnecting it (or
2978 better, if it is a real AK1A node, doing an RCMD &lt;node&gt; DISC/F &lt;your
2979 node&gt;).
2980
2981 Best of luck - you will need it.
2982
2983 <sect1>kill (0)
2984
2985 <P>
2986 <tt>
2987 <bf>kill &lt;msgno&gt; &lsqb;&lt;msgno&gt; ..&rsqb;</bf> Delete a message 
2988 from the local system
2989 </tt>
2990
2991 <P>
2992 Delete a message from the local system. You will only be able to
2993 delete messages that you have originated or been sent (unless you are
2994 the sysop).
2995
2996 <sect1>kill (5)
2997
2998 <P>
2999 <tt>
3000 <bf>kill &lt;msgno&gt [&lt;msgno&gt; ...]</bf> Remove or erase a message from 
3001 the system<newline>
3002 <bf>kill from &lt;call&gt;</bf> Remove all messages from a callsign<newline>
3003 <bf>kill to &lt;call&gt;</bf> Remove all messages to a callsign<newline>
3004 </tt>
3005
3006 <P>
3007 You can get rid of any message to or originating from your callsign using 
3008 this command. You can remove more than one message at a time.
3009
3010 As a sysop you can kill any message on the system.
3011
3012 <sect1>kill full (5)
3013
3014 <P>
3015 <tt>
3016 <bf>kill full &lt;msgno&gt; &lsqb;&lt;msgno&gt;&rsqb;</bf> Delete a message from the 
3017 whole cluster
3018 </tt>
3019
3020 <P>
3021 Delete a message (usually a 'bulletin') from the whole cluster system. 
3022
3023 This uses the subject field, so any messages that have exactly the same subject
3024 will be deleted. Beware!
3025
3026 <sect1>links (0)
3027
3028 <P>
3029 <tt>
3030 <bf>links</bf> Show which nodes are physically connected
3031 </tt>
3032
3033 <P>
3034 This is a quick listing that shows which links are connected and
3035 some information about them. See WHO for a list of all connections.
3036
3037
3038 <sect1>load/aliases (9)
3039
3040 <P>
3041 <tt>
3042 <bf>load/aliases</bf> Reload the command alias table
3043 </tt>
3044
3045 <P>
3046 Reload the /spider/cmd/Aliases file after you have editted it. You will need to
3047 do this if you change this file whilst the cluster is running in order for the
3048 changes to take effect.
3049
3050
3051 <sect1>load/baddx (9)
3052
3053 <P>
3054 <tt>
3055 <bf>load/baddx</bf> Reload the bad DX table
3056 </tt>
3057
3058 <P>
3059 Reload the /spider/data/baddx.pl file if you have changed it manually whilst
3060 the cluster is running. This table contains the DX Calls that, if spotted, 
3061 will not be passed on. FR0G and TEST are classic examples.
3062
3063 <sect1>load/badmsg (9)
3064
3065 <P>
3066 <tt>
3067 <bf>load/badmsg</bf> Reload the bad message table
3068 </tt>
3069
3070 <P>
3071 Reload the /spider/msg/badmsg.pl file if you have changed it manually whilst
3072 the cluster is running. This table contains a number of perl regular 
3073 expressions which are searched for in the fields targetted of each message. 
3074 If any of them match then that message is immediately deleted on receipt. 
3075
3076 <sect1>load/badwords (9)
3077
3078 <P>
3079 <tt>
3080 <bf>load/badwords</bf> Reload the badwords file
3081 </tt>
3082
3083 <P>
3084 Reload the /spider/data/badwords file if you have changed it manually whilst
3085 the cluster is running. This file contains a list of words which, if found
3086 on certain text portions of PC protocol, will cause those protocol frames
3087 to be rejected. It will all put out a message if any of these words are
3088 used on the announce, dx and talk commands. The words can be one or 
3089 more on a line, lines starting with '#' are ignored.
3090
3091 <sect1>load/bands (9)
3092
3093 <P>
3094 <tt>
3095 <bf>load/bands</bf> Reload the band limits table
3096 </tt>
3097
3098 <P>
3099 Reload the /spider/data/bands.pl file if you have changed it manually whilst
3100 the cluster is running. 
3101
3102 <sect1>load/cmd_cache (9)
3103
3104 <P>
3105 <tt>
3106 <bf>load/cmd_cache</bf> Reload the automatic command cache
3107 </tt>
3108
3109 <P>
3110 Normally, if you change a command file in the cmd or local_cmd tree it will
3111 automatially be picked up by the cluster program. Sometimes it can get confused
3112 if you are doing a lot of moving commands about or delete a command in the 
3113 local_cmd tree and want to use the normal one again. Execute this command to
3114 reset everything back to the state it was just after a cluster restart.
3115
3116 <sect1>load/forward (9)
3117
3118 <P>
3119 <tt>
3120 <bf>load/forward</bf> Reload the msg forwarding routing table
3121 </tt>
3122
3123 Reload the /spider/msg/forward.pl file if you have changed it
3124 manually whilst the cluster is running.
3125
3126 <sect1>load/messages (9)
3127
3128 <P>
3129 <tt>
3130 <bf>load/messages</bf> Reload the system messages file
3131 </tt>
3132
3133 <P>
3134 If you change the /spider/perl/Messages file (usually whilst fiddling/writing ne
3135 commands) you can have them take effect during a cluster session by executing this
3136 command. You need to do this if get something like :-
3137
3138 unknown message 'xxxx' in lang 'en'
3139
3140 <sect1>load/prefixes (9)
3141
3142 <P>
3143 <tt>
3144 <bf>load/prefixes</bf> Reload the prefix table
3145 </tt>
3146
3147 <P>
3148 Reload the /spider/data/prefix_data.pl file if you have changed it manually 
3149 whilst the cluster is running. 
3150
3151 <sect1>merge (5)
3152
3153 <P>
3154 <tt>
3155 <bf>merge &lt;node&gt; [&lt;no spots&gt;/&lt;no wwv&gt;]</bf> Ask for the 
3156 latest spots and WWV
3157 </tt>
3158
3159 <P>
3160 MERGE allows you to bring your spot and wwv database up to date. By default
3161 it will request the last 10 spots and 5 WWVs from the node you select. The 
3162 node must be connected locally.
3163
3164 You can request any number of spots or wwv and although they will be appended
3165 to your databases they will not duplicate any that have recently been added 
3166 (the last 2 days for spots and last month for WWV data).
3167
3168 <sect1>msg (9)
3169
3170 <P>
3171 <tt>
3172 <bf>msg &lt;cmd&gt; &lt;msgno&gt; [data ...]</bf> Alter various message 
3173 parameters
3174 </tt>
3175
3176 <P>
3177 Alter message parameters like To, From, Subject, whether private or bulletin
3178 or return receipt (RR) is required or whether to keep this message from timing
3179 out.
3180
3181 <tscreen><verb>
3182   MSG TO <msgno> <call>     - change TO callsign to <call>
3183   MSG FRom <msgno> <call>   - change FROM callsign to <call>
3184   MSG PRrivate <msgno>      - set private flag
3185   MSG NOPRrivate <msgno>    - unset private flag
3186   MSG RR <msgno>            - set RR flag
3187   MSG NORR <msgno>          - unset RR flag
3188   MSG KEep <msgno>          - set the keep flag (message won't be deleted ever)
3189   MSG NOKEep <msgno>        - unset the keep flag
3190   MSG SUbject <msgno> <new> - change the subject to <new>
3191   MSG WAittime <msgno>      - remove any waitting time for this message
3192   MSG NOREad <msgno>        - mark message as unread
3193   MSG REad <msgno>          - mark message as read
3194   MSG QUeue                 - queue any outstanding bulletins
3195   MSG QUeue 1               - queue any outstanding private messages
3196 </verb></tscreen>
3197
3198 You can look at the status of a message by using:-
3199
3200   STAT/MSG &lt;msgno&gt;      
3201
3202 This will display more information on the message than DIR does.
3203
3204 <sect1>pc (8)
3205
3206 <P>
3207 <tt>
3208 <bf>pc &lt;call&gt; &lt;text&gt;</bf> Send text (eg PC Protocol) to &lt;call&gt;
3209 </tt>
3210
3211 <P>
3212 Send some arbitrary text to a locally connected callsign. No processing is done on
3213 the text. This command allows you to send PC Protocol to unstick things if problems
3214 arise (messages get stuck etc). eg:-
3215
3216    pc gb7djk PC33^GB7TLH^GB7DJK^400^
3217
3218 You can also use in the same way as a talk command to a connected user but
3219 without any processing, added of "from &lt;blah&gt; to &lt;blah&gt;" or whatever.
3220
3221    pc G1TLH Try doing that properly!!!
3222
3223 <sect1>ping (1)
3224
3225 <P>
3226 <tt>
3227 <bf>ping &lt;node&gt;</bf> Check the link quality between nodes
3228 </tt>
3229
3230 <P>
3231 his command allows you to send a frame to another cluster node on
3232 the network and get a return frame.  The time it takes to do this
3233 is a good indication of the quality of the link.  The actual time
3234 it takes is output to the console in seconds.
3235 Any visible cluster node can be PINGed.
3236
3237
3238 <sect1>rcmd (1)
3239
3240 <P>
3241 <tt>
3242 <bf>rcmd &lt;node call&gt; &lt;cmd&gt;</bf> Send a command to another DX cluster
3243 </tt>
3244
3245 <P>
3246 This command allows you to send nearly any command to another DX Cluster
3247 node that is connected to the system. 
3248
3249 Whether you get any output is dependant on a) whether the other system knows
3250 that the node callsign of this cluster is in fact a node b) whether the
3251 other system is allowing RCMDs from this node and c) whether you have
3252 permission to send this command at all.
3253
3254 <sect1>read (0)
3255
3256 <P>
3257 <tt>
3258 <bf>read</bf> Read the next unread personal message addressed to you<newline>
3259 <bf>read &lt;msgno&gt;</bf> Read the specified message<newline>
3260 </tt>
3261
3262 <P>
3263 You can read any messages that are sent as 'non-personal' and also any
3264 message either sent by or sent to your callsign.
3265
3266
3267 <sect1>read (extended for sysops) (5) 
3268
3269 <P>
3270 <tt>
3271 <bf>read &lt;msgno&gt;</bf> Read a message on the system
3272 </tt>
3273
3274 <P>
3275 As a sysop you may read any message on the system
3276
3277 <sect1>reject/announce
3278
3279 <P>
3280 <tt>
3281 <bf>reject/announce &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set a reject filter
3282 for announce
3283 </tt>
3284
3285 <P>
3286 Create an 'reject this announce' line for a filter. 
3287
3288 An reject filter line means that if the announce matches this filter it is
3289 passed onto the user. See HELP FILTERS for more info. Please read this
3290 to understand how filters work - it will save a lot of grief later on.
3291
3292 You can use any of the following things in this line:-
3293
3294 <tscreen><verb>
3295   info <string>            eg: iota or qsl
3296   by <prefixes>            eg: G,M,2         
3297   origin <prefixes>
3298   origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
3299   origin_itu <numbers>
3300   origin_zone <numbers>
3301   by_dxcc <numbers>
3302   by_itu <numbers>
3303   by_zone <numbers>
3304   channel <prefixes>
3305   wx 1                     filter WX announces
3306   dest <prefixes>          eg: 6MUK,WDX      (distros)
3307 </verb></tscreen>
3308
3309 some examples:-
3310
3311 <tscreen><verb>
3312   rej/ann by_zone 14,15,16 and not by G,M,2
3313 </verb></tscreen>
3314  
3315 You can use the tag 'all' to reject everything eg:
3316
3317 <tscreen><verb>
3318   rej/ann all
3319 </verb></tscreen>
3320
3321 but this probably for advanced users...
3322
3323 <sect1>reject/announce (extended for sysops) (8)
3324
3325 <P>
3326 <tt>
3327 <bf>reject/announce &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Announce filter sysop version
3328 </tt>
3329
3330 <P>
3331 This version allows a sysop to set a filter for a callsign as well as the
3332 default for nodes and users eg:-
3333
3334 <tscreen><verb>
3335   reject/ann by G,M,2
3336   reject/ann input node_default by G,M,2
3337   reject/ann user_default by G,M,2
3338 </verb></tscreen>
3339
3340 <sect1>reject/spots (0)
3341
3342 <P>
3343 <tt>
3344 <bf>reject/spots &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set a reject filter 
3345 line for spots
3346 </tt>
3347
3348 <P>
3349 Create a 'reject this spot' line for a filter. 
3350
3351 A reject filter line means that if the spot matches this filter it is
3352 dumped (not passed on). See HELP FILTERS for more info. Please read this
3353 to understand how filters work - it will save a lot of grief later on.
3354
3355 You can use any of the following things in this line:-
3356
3357 <tscreen><verb>
3358   freq <range>           eg: 0/30000 or hf or hf/cw or 6m,4m,2m
3359   on <range>             same as 'freq'
3360   call <prefixes>        eg: G,PA,HB9
3361   info <string>          eg: iota or qsl
3362   by <prefixes>            
3363   call_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
3364   call_itu <numbers>
3365   call_zone <numbers>
3366   by_dxcc <numbers>
3367   by_itu <numbers>
3368   by_zone <numbers>
3369   origin <prefixes>
3370   channel <prefixes>
3371 </verb></tscreen>
3372
3373 For frequencies, you can use any of the band names defined in
3374 SHOW/BANDS and you can use a subband name like: cw, rtty, data, ssb -
3375 thus: hf/ssb. You can also just have a simple range like: 0/30000 -
3376 this is more efficient than saying simply: on HF (but don't get
3377 too hung up about that)
3378
3379 some examples:-
3380
3381 <tscreen><verb>
3382   rej/spot 1 on hf
3383   rej/spot 2 on vhf and not (by_zone 14,15,16 or call_zone 14,15,16)
3384 </verb></tscreen>
3385
3386 You can use the tag 'all' to reject everything eg:
3387
3388 <tscreen><verb>
3389   rej/spot 3 all
3390 </verb></tscreen>
3391
3392 but this probably for advanced users...
3393
3394 <sect1>reject/spots (extended for sysops) (8)
3395
3396 <P>
3397 <tt>
3398 <bf>reject/spots &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf>
3399  Reject spot filter sysop version 
3400 </tt>
3401
3402 <P>
3403 This version allows a sysop to set a filter for a callsign as well as the
3404 default for nodes and users eg:-
3405
3406 <tscreen><verb>
3407   reject/spot db0sue-7 1 by_zone 14,15,16
3408   reject/spot node_default all
3409   set/hops node_default 10
3410
3411   reject/spot user_default by G,M,2
3412 </verb></tscreen>
3413
3414 <sect1>reject/wcy (0)
3415
3416 <P>
3417 <tt>
3418 <bf>reject/wcy &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set a reject WCY filter
3419 </tt>
3420
3421 <P>
3422 It is unlikely that you will want to do this, but if you do then you can
3423 filter on the following fields:-
3424
3425 <tscreen><verb>
3426   by <prefixes>            eg: G,M,2         
3427   origin <prefixes>
3428   origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
3429   origin_itu <numbers>
3430   origin_zone <numbers>
3431   by_dxcc <numbers>
3432   by_itu <numbers>
3433   by_zone <numbers>
3434   channel <prefixes>
3435 </verb></tscreen>
3436
3437 There are no examples because WCY Broadcasts only come from one place and
3438 you either want them or not (see UNSET/WCY if you don't want them).
3439
3440 This command is really provided for future use.
3441
3442 See HELP FILTER for information.
3443
3444 <sect1>reject/wcy (extended for sysops) (8)
3445
3446 <P>
3447 <tt>
3448 <bf>reject/wcy &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf>
3449  WCY reject filter sysop version
3450 </tt>
3451
3452 <P>
3453 This version allows a sysop to set a filter for a callsign as well as the
3454 default for nodes and users eg:-
3455
3456   reject/wcy gb7djk all
3457
3458 <sect1>reject/wwv (0)
3459
3460 <P>
3461 <tt>
3462 <bf>reject/wwv &lsqb;0-9&rsqb; &lt;pattern&gt;</bf> Set a reject WWV filter
3463 </tt>
3464
3465 <P>
3466 It is unlikely that you will want to do this, but if you do then you can
3467 filter on the following fields:-
3468
3469 <tscreen><verb>
3470   by <prefixes>            eg: G,M,2         
3471   origin <prefixes>
3472   origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
3473   origin_itu <numbers>
3474   origin_zone <numbers>
3475   by_dxcc <numbers>
3476   by_itu <numbers>
3477   by_zone <numbers>
3478   channel <prefixes>
3479 </verb></tscreen>
3480
3481 for example 
3482
3483 <tscreen><verb>
3484   reject/wwv by_zone 14,15,16
3485 </verb></tscreen>
3486
3487 is probably the only useful thing to do (which will only show WWV broadcasts
3488 by stations in the US).
3489
3490 See HELP FILTER for information.
3491
3492 <sect1>reject/wwv (extended for sysops) (8)
3493
3494 <P>
3495 <tt>
3496 <bf>reject/wwv &lt;call&gt; &lsqb;input&rsqb; &lsqb;0-9&rsqb; &lt;pattern&gt;</bf>
3497  WWV reject filter sysop version
3498 </tt>
3499
3500 <P>This version allows a sysop to set a filter for a callsign as well as the
3501 default for nodes and users eg:-
3502
3503 <tscreen><verb>
3504   reject/wwv db0sue-7 1 by_zone 4
3505   reject/wwv node_default all
3506
3507   reject/wwv user_default by W
3508 </verb></tscreen>
3509
3510 <sect1>reply (0)
3511
3512 <P>
3513 <tt>
3514 <bf>reply</bf> Reply (privately) to the last message that you have read<newline>
3515 <bf>reply &lt;msgno&gt;</bf> Reply (privately) to the specified message<newline>
3516 <bf>reply B &lt;msgno&gt;</bf> Reply as a Bulletin to the specified message<newline>
3517 <bf>reply NOPrivate &lt;msgno&gt;</bf> Reply as a Bulletin to the specified
3518 message<newline>
3519 <bf>reply RR &lt;msgno&gt;</bf> Reply to the specified message with read 
3520 receipt<newline>
3521 </tt>
3522
3523 <P>
3524 You can reply to a message and the subject will automatically have
3525 "Re:" inserted in front of it, if it isn't already present.
3526
3527 You can also use all the extra qualifiers such as RR, PRIVATE, 
3528 NOPRIVATE, B that you can use with the SEND command (see SEND
3529 for further details)
3530
3531 <sect1>send (0)
3532
3533 <P>
3534 <tt>
3535 <bf>send &lt;call&gt; &lsqb;&lt;call&gt; ...&rsqb;</bf> Send a message to 
3536 one or more callsigns<newline>
3537 <bf>send RR &lt;call&gt;</bf> Send a message and ask for a read receipt<newline>
3538 <bf>send COPY &lt;msgno&gt; &lt;call&gt;</bf> Send a copy of a  message 
3539 to someone<newline>
3540 <bf>send PRIVATE &lt;call&gt;</bf> Send a personal message<newline>
3541 <bf>send NOPRIVATE &lt;call&gt;</bf> Send a message to all stations<newline>
3542 </tt>
3543
3544 <P>
3545 All the SEND commands will create a message which will be sent either to
3546 an individual callsign or to one of the 'bulletin' addresses. 
3547
3548 SEND &lt;call&gt; on its own acts as though you had typed SEND PRIVATE, that is
3549 it will mark the message as personal and send it to the cluster node that
3550 that callsign is connected to.
3551
3552 You can have more than one callsign in all of the SEND commands.
3553
3554 You can have multiple qualifiers so that you can have for example:-
3555
3556 <tscreen><verb>
3557   SEND RR COPY 123 PRIVATE G1TLH G0RDI
3558 </verb></tscreen>
3559
3560 which should send a copy of message 123 to G1TLH and G0RDI and you will
3561 receive a read receipt when they have read the message.
3562
3563 SB is an alias for SEND NOPRIVATE (or send a bulletin in BBS speak)
3564 SP is an alias for SEND PRIVATE
3565
3566 <sect1>set/address (0)
3567
3568 <P>
3569 <tt>
3570 <bf>set/address &lt;your_address&gt;</bf> Record your postal address
3571 </tt>
3572
3573 <P>
3574 Literally, record your address details on the cluster.
3575
3576 <sect1>set/announce (0)
3577
3578 <P>
3579 <tt>
3580 <bf>set/announce</bf> Allow announce messages
3581 </tt>
3582
3583 <P>
3584 Allow announce messages to arrive at your terminal.
3585
3586 <sect1>set/arcluster (5)
3587
3588 <P>
3589 <tt>
3590 <bf>set/arcluster &lt;node_call&gt; &lsqb;&lt;node_call&gt; ...&rsqb;</bf> Make
3591 the node_call an AR-Cluster type node
3592 </tt>
3593
3594 <P>
3595 Set the node_call as an AR-Cluster type node
3596
3597 <sect1>set/baddx (8)
3598
3599 <P>
3600 <tt>
3601 <bf>set/baddx &lt;call&gt;</bf> Stop words we do not wish to see in the callsign field
3602 of a dx spot being propagated
3603 </tt>
3604
3605 <P>
3606 Setting a word as 'baddx' will prevent spots with that word in the callsign 
3607 field of a DX spot from going any further. They will not be displayed and they 
3608 will not be sent onto other nodes.
3609
3610 The word must be wriiten in full, no wild cards are allowed eg:-
3611
3612 <tscreen><verb>
3613   set/baddx FORSALE VIDEO FR0G 
3614 </verb></tscreen>
3615
3616 To allow a word again, use the following command ...
3617
3618 <tscreen><verb>
3619   unset/baddx VIDEO
3620 </verb></tscreen>
3621
3622 <sect1>set/badnode (6)
3623
3624 <P>
3625 <tt>
3626 <bf>set/badnode &lt;node_call&gt;</bf> Stop spots from this node_call
3627 being propagated
3628 </tt>
3629
3630 <P>
3631 Setting a callsign as a 'badnode' will prevent spots from that node 
3632 going any further. They will not be displayed and they will not be 
3633 sent onto other nodes.
3634
3635 The call can be a full or partial call (or a prefix), eg:-
3636
3637 <tscreen><verb>
3638   set/badnode K1TTT 
3639 </verb></tscreen>
3640
3641 will stop anything from K1TTT (including any SSID's)
3642
3643 <tscreen><verb>
3644   unset/badnode K1TTT
3645 </verb></tscreen>
3646
3647 will allow spots from him again.
3648
3649 Use with extreme care. This command may well be superceded by FILTERing.
3650
3651 <sect1>set/badspotter (8)
3652
3653 <P>
3654 <tt>
3655 <bf>set/badspotter &lt;call&gt;</bf> Stop spots from this callsign being propagated
3656 </tt>
3657
3658 <P>
3659 Setting a callsign as a 'badspotter' will prevent spots from this callsign 
3660 going any further. They will not be displayed and they will not be 
3661 sent onto other nodes.
3662
3663 The call must be written in full, no wild cards are allowed eg:-
3664
3665 <tscreen><verb>
3666   set/badspotter VE2STN 
3667 </verb></tscreen>
3668
3669 will stop anything from VE2STN. If you want SSIDs as well then you must
3670 enter them specifically.
3671
3672 <tscreen><verb>
3673   unset/badspotter VE2STN
3674 </verb></tscreen>
3675
3676 will allow spots from him again.
3677
3678 Use with extreme care. This command may well be superceded by FILTERing.
3679
3680 <sect1>set/beep (0)
3681
3682 <P>
3683 <tt>
3684 <bf>set/beep</bf> Add beeps to terminal messages
3685 </tt>
3686
3687 <P>
3688 Add a beep to DX and other terminal messages.
3689
3690 <sect1>set/clx (5)
3691
3692 <P>
3693 <tt>
3694 <bf>set/clx &lt;node_call&gt; &lsqb;&lt;node_call&gt; ...&rsqb;</bf> Make
3695 the node_call a CLX type node
3696 </tt>
3697
3698 <P>
3699 Set the node_call as a CLX type node
3700
3701 <sect1>set/debug (9)
3702
3703 <P>
3704 <tt>
3705 <bf>set/debug &lt;name&gt;</bf> Add a debug level to the debug set
3706 </tt>
3707
3708 <P>
3709 You can choose to log several different levels.  The levels are
3710
3711 chan
3712 state
3713 msg
3714 cron
3715 connect
3716
3717 You can show what levels you are logging with the <em>show/debug</em>
3718 command.
3719
3720 You can remove a debug level with unset/debug &lt;name&gt;
3721
3722 <sect1>set/dx (0)
3723
3724 <P>
3725 <tt>
3726 <bf>set/dx</bf>Allow DX messages to arrive at your terminal
3727 </tt>
3728
3729 <P>
3730 You can stop DX messages with the <em>unset/dx</em> command
3731
3732 <sect1>set/dxgrid (0)
3733
3734 <P>
3735 <tt>
3736 <bf>set/dxgrid</bf>Allow grid squares on the end of DX messages
3737 </tt>
3738
3739 <P>
3740 Some logging programs do not like the additional information at
3741 the end of a DX spot.  If this is the case, use the <em>unset/dxgrid</em>
3742 command to remove the grid squares.
3743
3744 <sect1>set/dxnet (5)
3745
3746 <P>
3747 <tt>
3748 <bf>set/dxnet &lt;node_call&gt; &lsqb;&lt;node_call&gt; ...&rsqb;</bf> Make
3749 the node_call a DXNet type node
3750 </tt>
3751
3752 <P>
3753 Set the node_call as a DXNet type node
3754
3755 <sect1>set/echo (0)
3756
3757 <P>
3758 <tt>
3759 <bf>set/echo</bf> Make the cluster echo your input
3760 </tt>
3761
3762 <P>
3763 If you are connected via a telnet session, different implimentations
3764 of telnet handle echo differently depending on whether you are 
3765 connected via port 23 or some other port. You can use this command
3766 to change the setting appropriately. 
3767
3768 You can remove the echo with the <em>unset/echo</em> command
3769
3770 The setting is stored in your user profile.
3771
3772 YOU DO NOT NEED TO USE THIS COMMAND IF YOU ARE CONNECTED VIA AX25.
3773
3774 <sect1>set/here (0)
3775
3776 <P>
3777 <tt>
3778 <bf>set/here</bf> Set the here flag
3779 </tt>
3780
3781 <P>
3782 Let others on the cluster know you are here by only displaying your
3783 callsign.  If you are away from your terminal you can use the <em>unset/here</em>
3784 command to let people know you are away.  This simply puts brackets
3785 around your callsign to indicate you are not available.
3786
3787 <sect1>set/homenode (0)
3788
3789 <P>
3790 <tt>
3791 <bf>set/homenode &lt;node_call&gt;</bf> Set your home cluster
3792 </tt>
3793
3794 <P>
3795 Tell the cluster system where you normally connect to. Any Messages sent
3796 to you will normally find their way there should you not be connected.
3797 eg:-
3798
3799 <tscreen><verb>
3800   SET/HOMENODE gb7djk
3801 </verb></tscreen>
3802
3803 <sect1>set/hops (8)
3804
3805 <P>
3806 <tt>
3807 <bf>set/hops &lt;node_call&gt; ann&verbar;spots&verbar;wwv&verbar;wcy &lt;n&gt;</bf>
3808 Set hop count
3809 </tt>
3810
3811 <P>
3812 Set the hop count for a particular type of broadcast for a node.
3813
3814 This command allows you to set up special hop counts for a node 
3815 for currently: announce, spots, wwv and wcy broadcasts.
3816
3817 <tscreen><verb>
3818 eg:
3819   set/hops gb7djk ann 10
3820   set/hops gb7mbc spots 20
3821 </verb></tscreen>
3822
3823 Set SHOW/HOPS for information on what is already set. This command
3824 creates a filter and works in conjunction with the filter system. 
3825
3826 <sect1>set/isolate (9)
3827
3828 <P>
3829 <tt>
3830 <bf>set/isolate &lt;node call&gt;</bf> Isolate a node from the rest of the network
3831 </tt>
3832
3833 <P>
3834 Connect a node to your system in such a way that you are a full protocol
3835 member of its network and can see all spots on it, but nothing either leaks
3836 out from it nor goes back into from the rest of the nodes connected to you.
3837
3838 You can potentially connect several nodes in this way.
3839
3840 You can see which nodes are isolated with the show/isolate (1) command.
3841
3842 You can remove the isolation with the command unset/isolate.
3843
3844 <sect1>set/language (0)
3845
3846 <P>
3847 <tt>
3848 <bf>set/language &lt;language&gt;</bf> Set the language you wish to use
3849 </tt>
3850
3851 <P>
3852 You can select the language that you want the cluster to use. Currently
3853 the languages available are <em>en</em> (English) and <em>nl</em> (Dutch).
3854
3855 <sect1>set/location (0)
3856
3857 <P>
3858 <tt>
3859 <bf>set/location &lt;lat and long&gt;</bf> Set your latitude and longitude
3860 </tt>
3861
3862 <P>
3863 You can set your latitude and longitude manually or alternatively use the
3864 <em>set/qra</em> command which will do the conversion for you.
3865
3866 <tscreen><verb>
3867   set/location 54 04 N 2 02 E
3868 </verb></tscreen>
3869
3870
3871 <sect1>set/sys_location (9)
3872
3873 <P>
3874 <tt>
3875 <bf>set/sys_location &lt;lat & long&gt;</bf> Set your cluster latitude and longitude
3876 </tt>
3877
3878 <P>
3879 In order to get accurate headings and such like you must tell the system
3880 what your latitude and longitude is. If you have not yet done a SET/QRA
3881 then this command will set your QRA locator for you. For example:-
3882
3883 <tscreen><verb>
3884   SET/LOCATION 52 22 N 0 57 E
3885 </verb></tscreen>
3886
3887 <sect1>set/logininfo (0)
3888
3889 <P>
3890 <tt>
3891 <bf>set/logininfo</bf> Show logins and logouts of nodes and users
3892 </tt>
3893
3894 <P>
3895 Show users and nodes when they log in and out of the local cluster.  You
3896 can stop these messages by using the <em>unset/logininfo</em> command.
3897
3898
3899 <sect1>set/lockout (9)
3900
3901 <P>
3902 <tt>
3903 <bf>set/lockout &lt;call&gt;</bf> Stop a callsign connecting to the cluster
3904 </tt>
3905
3906 <P>
3907 You can show who is locked out with the <em>show/lockout</em> command.
3908 To allow the user to connect again, use the <em>unset/lockout</em> command.
3909
3910 <sect1>set/name (0)
3911
3912 <P>
3913 <tt>
3914 <bf>set/name &lt;your_name&gt;</bf> Set your name
3915 </tt>
3916
3917 <P>
3918 Tell the cluster what your name is, eg:-
3919
3920 <tscreen><verb>
3921   set/name Dirk
3922 </verb></tscreen>
3923
3924 <sect1>set/node (9)
3925
3926 <P>
3927 <tt>
3928 <bf>set/node &lt;call&gt; [&lt;call&gt; ...]</bf> Make the callsign an AK1A cluster
3929 </tt>
3930
3931 <P>
3932 Tell the system that the call(s) are to be treated as AK1A cluster and
3933 fed PC Protocol rather normal user commands.
3934
3935 From version 1.41 you can also set the following types of cluster
3936
3937 <tscreen><verb>
3938   set/spider
3939   set/dxnet
3940   set/clx
3941   set/arcluster
3942 </verb></tscreen>
3943
3944 To see what your nodes are set to, use the <em>show/nodes</em> command.
3945
3946 <sect1>set/obscount (9)
3947
3948 <P>
3949 <tt>
3950 <bf>set/obscount &lt;count&gt; &lt;node call&gt;</bf> Set the 'pump-up' 
3951 obsolescence counter
3952 </tt>
3953
3954 <P>
3955 From version 1.35 onwards neighbouring nodes are pinged at regular intervals (see
3956 SET/PINGINTERVAL), usually 300 seconds or 5 minutes. There is a 'pump-up'
3957 counter which is decremented on every outgoing ping and then reset to
3958 the 'obscount' value on every incoming ping. The default value of this
3959 parameter is 2. 
3960
3961 What this means is that a neighbouring node will be pinged twice at 
3962 (default) 300 second intervals and if no reply has been heard just before
3963 what would be the third attempt, that node is disconnected.
3964
3965 If a ping is heard then the obscount is reset to the full value. Using
3966 default values, if a node has not responded to a ping within 15 minutes,
3967 it is disconnected.
3968
3969 <sect1>set/page (0)
3970
3971 <P>
3972 <tt>
3973 <bf>set/page &lt;n&gt;</bf> Set the number of lines per page
3974 </tt>
3975
3976 <P>
3977 Tell the system how many lines you wish on a page when the number of lines
3978 of output from a command is more than this. The default is 20. Setting it
3979 explicitly to 0 will disable paging. 
3980
3981 <tscreen><verb>
3982   SET/PAGE 30
3983   SET/PAGE 0
3984 </verb></tscreen>
3985
3986 The setting is stored in your user profile.
3987
3988
3989 <sect1>set/password (9)
3990
3991 <P>
3992 <tt>
3993 <bf>set/password &lt;callsign&gt; &lt;string&gt;</bf> Set a users password
3994 </tt>
3995
3996 <P>
3997 The password for a user can only be set by a full sysop. The string
3998 can contain any characters but any spaces are removed (you can type in
3999 spaces - but they won't appear in the password). You can see the
4000 result with STAT/USER.  The password is the usual 30 character baycom
4001 type password.
4002
4003 <sect1>set/pinginterval (9)
4004
4005 <P>
4006 <tt>
4007 <bf>set/pinginterval &lt;time&gt; &lt;node call&gt;</bf> Set the ping time 
4008 to neighbouring nodes
4009 </tt>
4010
4011 <P>
4012 As from version 1.35 all neighbouring nodes are pinged at regular intervals
4013 in order to determine the rolling quality of the link and, in future, to
4014 affect routing decisions. The default interval is 300 secs or 5 minutes.
4015
4016 You can use this command to set a different interval. Please don't. 
4017
4018 But if you do the value you enter is treated as minutes up 60 and seconds
4019 for numbers greater than that.
4020
4021 This is used also to help determine when a link is down at the far end
4022 (as certain cluster software doesn't always notice), see SET/OBSCOUNT
4023 for more information.
4024
4025 <sect1>set/privilege (9)
4026
4027 <P>
4028 <tt>
4029 <bf>set/privilege &lt;n&gt; &lt;call&gt; [&lt;call&gt; ...]</bf> Set the 
4030 privilege level on a call
4031 </tt>
4032
4033 <P>
4034 Set the privilege level on a callsign. The privilege levels that pertain
4035 to commands are as default:-
4036
4037 <tscreen><verb>
4038   0 - normal user
4039   1 - allow remote nodes normal user RCMDs
4040   5 - various privileged commands (including shutdown, but not disc-
4041       connect), the normal level for another node.
4042   8 - more privileged commands (including disconnect)
4043   9 - local sysop privilege. DO NOT SET ANY REMOTE USER OR NODE TO THIS
4044       LEVEL.
4045 </verb></tscreen>
4046
4047 If you are a sysop and you come in as a normal user on a remote connection
4048 your privilege will automatically be set to 0.
4049
4050 <sect1>set/spider (5)
4051
4052 <P>
4053 <tt>
4054 <bf>set/spider &lt;node_call&gt; &lsqb;&lt;node_call&gt; ...&rsqb;</bf> Make
4055 the node_call a DXSpider type node
4056 </tt>
4057
4058 <P>
4059 Set the node_call as a DXSpider type node
4060
4061 <sect1>set/sys_qra (9)
4062
4063 <P>
4064 <tt>
4065 <bf>set/sys_qra &lt;locator&gt;</bf> Set your cluster QRA locator
4066 </tt>
4067
4068 <sect1>set/qra (0)
4069
4070 <P>
4071 <tt>
4072 <bf>set/qra &lt;locator&gt;</bf> Set your QRA locator
4073 </tt>
4074
4075 <P>
4076 Tell the system what your QRA (or Maidenhead) locator is. If you have not
4077 done a SET/LOCATION then your latitude and longitude will be set roughly
4078 correctly (assuming your locator is correct ;-). For example:-
4079
4080 <tscreen><verb>
4081   SET/QRA JO02LQ
4082 </verb></tscreen>
4083
4084 <sect1>set/qth (0)
4085
4086 <P>
4087 <tt>
4088 <bf>set/qth &lt;your QTH&gt;</bf> Set your QTH
4089 </tt>
4090
4091 <P>
4092 Tell the system where your are.  For example:-
4093
4094 <tscreen><verb>
4095   set/qth East Dereham, Norfolk
4096 </verb></tscreen>
4097
4098 <sect1>set/talk (0)
4099
4100 <P>
4101 <tt>
4102 <bf>set/talk</bf> Allow talk messages to be seen at your console
4103 </tt>
4104
4105 <P>
4106 Allow talk messages to arrive at your console.  You can switch off
4107 talks with the <em>unset/talk</em> command.
4108
4109 <sect1>set/wcy (0)
4110
4111 <P>
4112 <tt>
4113 <bf>set/wcy</bf> Allow WCY messages to be seen at your console
4114 </tt>
4115
4116 <P>
4117 Allow WCY information to be seen at your console.  You can switch off
4118 WCY messages with the <em>unset/wcy</em> command.
4119
4120 <sect1>set/wwv (0)
4121
4122 <P>
4123 <tt>
4124 <bf>set/wwv</bf> Allow WWV messages to be seen at your console
4125 </tt>
4126
4127 <P>
4128 Allow WWV information to be seen at your console.  You can switch off
4129 WWV messages with the <em>unset/wwv</em> command.
4130
4131 <sect1>set/wx (0)
4132
4133 <P>
4134 <tt>
4135 <bf>set/wx</bf> Allow WX messages to be seen at your console
4136 </tt>
4137
4138 <P>
4139 Allow WX information to be seen at your console.  You can switch off
4140 WX messages with the <em>unset/wx</em> command.
4141
4142 <sect1>show/baddx (1)
4143
4144 <P>
4145 <tt>
4146 <bf>show/baddx</bf>Show all the bad dx calls in the system
4147 </tt>
4148
4149 <P>
4150 Display all the bad dx callsigns in the system, see SET/BADDX
4151 for more information.
4152
4153 <sect1>show/badnode (6)
4154
4155 <P>
4156 <tt>
4157 <bf>show/badnode</bf> Show all the bad nodes in the system
4158 </tt>
4159
4160 <P>
4161 Display all the bad node callsigns in the system, see SET/BADNODE
4162 for more information.
4163
4164 <sect1>show/badspotter (1)
4165
4166 <P>
4167 <tt>
4168 <bf>show/badspotter</bf> Show all the bad spotters in the system
4169 </tt>
4170
4171 <P>
4172 Display all the bad spotter's callsigns in the system, see SET/BADSPOTTER
4173 for more information.
4174
4175 <sect1>show/date (0)
4176
4177 <P>
4178 <tt>
4179 <bf>show/date &lsqb;&lt;prefix&gt;&verbar;&lt;callsign&gt;&rsqb;</bf> Show
4180 the local time
4181 </tt>
4182
4183 <P>
4184 This is very nearly the same as SHOW/TIME, the only difference the format
4185 of the date string if no arguments are given.
4186
4187 If no prefixes or callsigns are given then this command returns the local
4188 time and UTC as the computer has it right now. If you give some prefixes
4189 then it will show UTC and UTC + the local offset (not including DST) at
4190 the prefixes or callsigns that you specify.
4191
4192 <sect1>show/debug (9)
4193
4194 <P>
4195 <tt>
4196 <bf>show/debug</bf> Show what levels of debug you are logging
4197 </tt>
4198
4199 <P>
4200 The levels can be set with <em>set/debug</em>
4201
4202 <sect1>show/dx (0)
4203
4204 <P>
4205 <tt>
4206 <bf>show/dx &lsqb;options&rsqb;</bf> interrogate the spot database
4207 </tt>
4208
4209 <P>
4210 If you just type SHOW/DX you will get the last so many spots
4211 (sysop configurable, but usually 10).
4212    
4213 In addition you can add any number of these options in very nearly
4214 any order to the basic SHOW/DX command, they are:-
4215
4216 <tscreen><verb>   
4217 on &lt;band&gt;       - eg 160m 20m 2m 23cm 6mm
4218 on &lt;region&gt;     - eg hf vhf uhf shf      (see SHOW/BANDS)
4219    
4220 &lt;number&gt;        - the number of spots you want
4221 &lt;from&gt;-&lt;to&gt     - &lt;from&gt; spot no &lt;to&gt; spot no in 
4222                   the selected list
4223    
4224 &lt;prefix&gt;        - for a spotted callsign beginning with &lt;prefix&gt;
4225 *&lt;suffix&gt;       - for a spotted callsign ending in &lt;suffix&gt;
4226 *&lt;string&gt;*      - for a spotted callsign containing &lt;string&gt;
4227    
4228 day &lt;number&gt;    - starting &lt;number&gt; days ago
4229 day &lt;from&gt;-&lt;to&gt; - &lt;from&gt; days &lt;to&gt; days ago
4230    
4231 info &lt;text&gt;     - any spots containing &lt;text&gt; in the info or remarks
4232    
4233 by &lt;call&gt;       - any spots spotted by &lt;call&gt; (spotter &lt;call&gt; 
4234                         is the same).
4235
4236 qsl             - this automatically looks for any qsl info on the call
4237                   held in the spot database.
4238
4239 iota &lsqb;&lt;iota&gt;&rsqb;   - If the iota island number is missing it will 
4240                   look for the string iota and anything which looks like 
4241                   an iota island number. If you specify then it will look 
4242                   for that island.
4243
4244 qra &lsqb;&lt;locator&gt;&rsqb; - this will look for the specific locator if 
4245                   you specify one or else anything that looks like a locator.
4246 </verb></tscreen>
4247    
4248 e.g. 
4249
4250 <tscreen><verb>   
4251    SH/DX 9m0
4252    SH/DX on 20m info iota
4253    SH/DX 9a on vhf day 30
4254    SH/DX rf1p qsl
4255    SH/DX iota 
4256    SH/DX iota eu-064
4257    SH/DX qra jn86
4258 </verb></tscreen>
4259
4260 <sect1>show/dxcc (0)
4261
4262 <P>
4263 <tt>
4264 <bf>show/dxcc &lt;prefix&gt;</bf> Interrogate the spot database by country
4265 </tt>
4266
4267 <P>
4268 This command takes the &lt;prefix&gt; (which can be a full or partial 
4269 callsign if desired), looks up which internal country number it is
4270 and then displays all the spots as per SH/DX for that country.
4271    
4272 The options for SHOW/DX also apply to this command.   
4273 e.g. 
4274
4275 <tscreen><verb>   
4276    SH/DXCC G
4277    SH/DXCC W on 20m info iota
4278 </verb></tscreen>
4279
4280 <sect1>show/files (0)
4281
4282 <P>
4283 <tt>
4284 <bf>show/files &lsqb;&lt;filearea&gt; &lsqb;&lt;string&gt;&rsqb;&rsqb;</bf> List
4285 the contents of a filearea
4286 </tt>
4287
4288 <P>
4289 SHOW/FILES on its own will show you a list of the various fileareas
4290 available on the system. To see the contents of a particular file
4291 area type:-
4292
4293 <tscreen><verb>
4294    SH/FILES &lt;filearea&gt;
4295 </verb></tscreen>
4296
4297 where &lt;filearea&gt; is the name of the filearea you want to see the 
4298 contents of.
4299
4300 You can also use shell globbing characters like '*' and '?' in a
4301 string to see a selection of files in a filearea eg:-
4302
4303 <tscreen><verb>
4304    SH/FILES bulletins arld*
4305 </verb></tscreen>
4306
4307 See also TYPE - to see the contents of a file.
4308
4309 <sect1>show/filter (0)
4310
4311 <P>
4312 <tt>
4313 <bf>show/filter</bf> Show the filters you have set
4314 </tt>
4315
4316 <P>
4317 Show the contents of all the filters that are set by you. This command 
4318 displays all the filters set - for all the various categories.
4319
4320 <sect1>show/filter (extended for sysops) (5)
4321
4322 <P>
4323 <tt>
4324 <bf>show/filter &lt;callsign&gt;</bf> Show the filters set by &lt;callsign&gt;
4325 </tt>
4326
4327 <P>
4328 A sysop can look at any filters that have been set.
4329
4330 <sect1>show/hops (8)
4331
4332 <P>
4333 <tt>
4334 <bf>show/hops &lt;node_call&gt; &lsqb;ann&verbar;spots&verbar;wcy&verbar;wwv&verbar;&rsqb;</bf> Show the hop 
4335 counts for a node
4336 </tt>
4337
4338 <P>
4339 This command shows the hop counts set up for a node. You can specify
4340 which category you want to see. If you leave the category out then 
4341 all the categories will be listed.
4342
4343 <sect1>show/isolate (1)
4344
4345 <P>
4346 <tt>
4347 <bf>show/isolate</bf> Show a list of isolated nodes
4348 </tt>
4349
4350 <P>
4351 Show which nodes are currently set to be isolated.
4352
4353 <sect1>show/lockout (9)
4354
4355 <P>
4356 <tt>
4357 <bf>show/lockout</bf> Show a list of excluded callsigns
4358 </tt>
4359
4360 <P>
4361 Show a list of callsigns that have been excluded (locked out) of the
4362 cluster locally with the <em>set/lockout</em> command
4363
4364 <sect1>show/log (8)
4365
4366 <P>
4367 <tt>
4368 <bf>show/log &lsqb;&lt;callsign&gt;&rsqb;</bf> Show excerpts from the system log
4369 </tt>
4370
4371 <P>
4372 This command outputs a short section of the system log.  On its own
4373 it will output a general logfile.  With the optional callsign it will
4374 show output from the log associated with that callsign.
4375
4376 <sect1>show/moon (0)
4377
4378 <P>
4379 <tt>
4380 <bf>show/moon &lsqb;&lt;prefix&gt;&verbar;&lt;callsign&gt;&rsqb;</bf> Show moon
4381 rise and set times
4382 </tt>
4383
4384 <P>
4385 Show the Moon rise and set times for a (list of) prefixes or callsigns, 
4386 together with the azimuth and elevation of the sun currently at those
4387 locations.
4388
4389 If you don't specify any prefixes or callsigns, it will show the times for
4390 your QTH (assuming you have set it with either SET/LOCATION or SET/QRA),
4391 together with the current azimuth and elevation.
4392
4393 In addition, it will show the gain or loss dB relative to the nominal 
4394 distance of 385,000Km due to the ellipsoidal nature of the orbit.
4395
4396 If all else fails it will show the Moonrise and set times for the node
4397 that you are connected to. 
4398
4399 For example:-
4400
4401 <tscreen><verb>
4402   SH/MOON
4403   SH/MOON G1TLH W5UN
4404 </verb></tscreen>
4405
4406 <sect1>show/muf (0)
4407
4408 <P>
4409 <tt>
4410 <bf>show/muf &lt;prefix&gt; &lsqb;&lt;hours&gt;&rsqb;&lsqb;long&rsqb;</bf> Show
4411 the likely propagation to &lt;prefix&gt;
4412 </tt>
4413
4414 <P>
4415 This command allow you to estimate the likelihood of you contacting
4416 a station with the prefix you have specified. The output assumes a modest
4417 power of 20dBW and receiver sensitivity of -123dBm (about 0.15muV/10dB SINAD)
4418
4419 The result predicts the most likely operating frequencies and signal
4420 levels for high frequency (shortwave) radio propagation paths on
4421 specified days of the year and hours of the day. It is most useful for
4422 paths between 250 km and 6000 km, but can be used with reduced accuracy
4423 for paths shorter or longer than this.
4424
4425 The command uses a routine MINIMUF 3.5 developed by the U.S. Navy and
4426 used to predict the MUF given the predicted flux, day of the year,
4427 hour of the day and geographic coordinates of the transmitter and
4428 receiver. This routine is reasonably accurate for the purposes here,
4429 with a claimed RMS error of 3.8 MHz, but much smaller and less complex
4430 than the programs used by major shortwave broadcasting organizations,
4431 such as the Voice of America.
4432
4433 The command will display some header information detailing its
4434 assumptions, together with the locations, latitude and longitudes and
4435 bearings. It will then show UTC (UT), local time at the other end
4436 (LT), calculate the MUFs, Sun zenith angle at the midpoint of the path
4437 (Zen) and the likely signal strengths. Then for each frequency for which
4438 the system thinks there is a likelihood of a circuit it prints a value.
4439
4440 The value is currently a likely S meter reading based on the conventional
4441 6dB / S point scale. If the value has a '+' appended it means that it is
4442 1/2 an S point stronger. If the value is preceeded by an 'm' it means that
4443 there is likely to be much fading and by an 's' that the signal is likely
4444 to be noisy.  
4445
4446 By default SHOW/MUF will show the next two hours worth of data. You
4447 can specify anything up to 24 hours worth of data by appending the no of
4448 hours required after the prefix. For example:-
4449
4450 <tscreen><verb>
4451   SH/MUF W
4452 </verb></tscreen>
4453
4454 produces:
4455
4456 <tscreen><verb>
4457   RxSens: -123 dBM SFI: 159   R: 193   Month: 10   Day: 21
4458   Power :   20 dBW    Distance:  6283 km    Delay: 22.4 ms
4459   Location                       Lat / Long           Azim
4460   East Dereham, Norfolk          52 41 N 0 57 E         47
4461   United-States-W                43 0 N 87 54 W        299
4462   UT LT  MUF Zen  1.8  3.5  7.0 10.1 14.0 18.1 21.0 24.9 28.0 50.0
4463   18 23 11.5 -35  mS0+ mS2   S3
4464   19  0 11.2 -41  mS0+ mS2   S3
4465 </verb></tscreen>
4466
4467 indicating that you will have weak, fading circuits on top band and 
4468 80m but usable signals on 40m (about S3).
4469
4470 inputing:-
4471
4472 <tscreen><verb>
4473   SH/MUF W 24
4474 </verb></tscreen>
4475
4476 will get you the above display, but with the next 24 hours worth of
4477 propagation data.
4478
4479 <tscreen><verb>
4480   SH/MUF W L 24
4481   SH/MUF W 24 Long
4482 </verb></tscreen>
4483
4484 Gives you an estimate of the long path propagation characterics. It
4485 should be noted that the figures will probably not be very useful, nor
4486 terrible accurate, but it is included for completeness.
4487
4488 <sect1>show/node (1)
4489
4490 <P>
4491 <tt>
4492 <bf>show/node &lsqb;&lt;node_call&gt; ...&rsqb;</bf> Show the type and version
4493 number of nodes
4494 </tt>
4495
4496 <P>
4497 Show the type and version (if connected) of the nodes specified on the
4498 command line. If no callsigns are specified then a sorted list of all
4499 the non-user callsigns known to the system will be displayed.
4500
4501 <sect1>show/prefix (0)
4502
4503 <P>
4504 <tt>
4505 <bf>show/prefix &lt;callsign&gt;</bf> Interrogate the prefix database
4506 </tt>
4507
4508 <P>
4509 This command takes the &lt;callsign&gt; (which can be a full or partial 
4510 callsign or a prefix), looks up which internal country number 
4511 it is and then displays all the relevant prefixes for that country
4512 together with the internal country no, the CQ and ITU regions. 
4513
4514 See also SHOW/DXCC
4515
4516
4517 <sect1>show/program (5)
4518
4519 <P>
4520 <tt>
4521 <bf>show/program</bf> Show the locations of all the included program modules
4522 </tt>
4523
4524 <P>
4525 Show the name and location where every program module was load from. This
4526 is useful for checking where you think you have loaded a .pm file from.
4527
4528 <sect1>show/qra (0)
4529
4530 <P>
4531 <tt>
4532 <bf>show/qra &lt;locator&gt &lsqb;&lt;locator&gt;&rsqb;</bf> Show the distance
4533 between locators<newline>
4534 <bf>show/qra &lt;lat&gt; &lt;long&gt;</bf> Convert latitude and longitude to 
4535 a locator
4536 </tt>
4537
4538 <P>
4539 This is a multipurpose command that allows you either to calculate the
4540 distance and bearing between two locators or (if only one locator is
4541 given on the command line) the distance and beraing from your station
4542 to the locator. For example:-
4543
4544 <tscreen><verb>
4545 SH/QRA IO92QL 
4546 SH/QRA JN06 IN73
4547 </verb></tscreen>
4548
4549 The first example will show the distance and bearing to the locator from
4550 yourself, the second example will calculate the distance and bearing from
4551 the first locator to the second. You can use 4 or 6 character locators.
4552
4553 It is also possible to convert a latitude and longitude to a locator by 
4554 using this command with a latitude and longitude as an argument, for
4555 example:-
4556
4557 <tscreen><verb>
4558 SH/QRA 52 41 N 0 58 E
4559 </verb></tscreen>
4560
4561 <sect1>show/qrz (0)
4562
4563 <P>
4564 <tt>
4565 <bf>show/qrz &lt;callsign&gt;</bf> Show any callbook details on a callsign
4566 </tt>
4567
4568 <P>
4569 This command queries the QRZ callbook server on the internet
4570 and returns any information available for that callsign. This service
4571 is provided for users of this software by http://www.qrz.com 
4572
4573 <sect1>show/route (0)
4574
4575 <P>
4576 <tt>
4577 <bf>show/route &lt;callsign&gt;</bf> Show the route to &lt;callsign&gt;
4578 </tt>
4579
4580 <P>
4581 This command allows you to see to which node the callsigns specified are
4582 connected. It is a sort of inverse sh/config.
4583
4584 <tscreen><verb>
4585   sh/route n2tly
4586 </verb></tscreen>
4587
4588 <sect1>show/satellite (0)
4589
4590 <P>
4591 <tt>
4592 <bf>show/satellite &lt;name&gt; &lsqb;&lt;hours&gt; &lt;interval&gt;&rsqb;</bf>
4593 Show satellite tracking data
4594 </tt>
4595
4596 <P>
4597 Show the tracking data from your location to the satellite of your choice
4598 from now on for the next few hours.
4599
4600 If you use this command without a satellite name it will display a list
4601 of all the satellites known currently to the system. 
4602
4603 If you give a name then you can obtain tracking data of all the passes
4604 that start and finish 5 degrees below the horizon. As default it will
4605 give information for the next three hours for every five minute period.
4606
4607 You can alter the number of hours and the step size, within certain 
4608 limits. 
4609
4610 Each pass in a period is separated with a row of '-----' characters
4611
4612 So for example:-
4613
4614 <tscreen><verb>
4615 SH/SAT AO-10 
4616 SH/SAT FENGYUN1 12 2
4617 </verb></tscreen>
4618
4619 <sect1>show/sun (0)
4620
4621 <P>
4622 <tt>
4623 <bf>show/sun &lsqb;&lt;prefix&gt;&verbar;&lt;callsign&gt;&rsqb;</bf> Show
4624 sun rise and set times
4625 </tt>
4626
4627 <P>
4628 Show the sun rise and set times for a (list of) prefixes or callsigns, 
4629 together with the azimuth and elevation of the sun currently at those
4630 locations.
4631
4632 If you don't specify any prefixes or callsigns, it will show the times for
4633 your QTH (assuming you have set it with either SET/LOCATION or SET/QRA),
4634 together with the current azimuth and elevation.
4635
4636 If all else fails it will show the sunrise and set times for the node
4637 that you are connected to. 
4638
4639 For example:-
4640
4641 <tscreen><verb>
4642   SH/SUN
4643   SH/SUN G1TLH K9CW ZS
4644 </verb></tscreen>
4645
4646 <sect1>show/time (0)
4647
4648 <P>
4649 <tt>
4650 <bf>show/time &lsqb;&lt;prefix&gt;&verbar;&lt;callsign&gt;&rsqb;</bf> Show
4651 the local time
4652 </tt>
4653
4654 <P>
4655 If no prefixes or callsigns are given then this command returns the local
4656 time and UTC as the computer has it right now. If you give some prefixes
4657 then it will show UTC and UTC + the local offset (not including DST) at
4658 the prefixes or callsigns that you specify.
4659
4660 <sect1>show/wcy (0)
4661
4662 <P>
4663 <tt>
4664 <bf>show/wcy</bf> Show the last 10 WCY broadcasts<newline>
4665 <bf>show/wcy &lt;n&gt;</bf> Show the last &lt;n&gt; WCY broadcasts
4666 </tt>
4667
4668 <P>
4669 Display the most recent WCY information that has been received by the system
4670
4671 <sect1>show/wwv (0)
4672
4673 <P>
4674 <tt>
4675 <bf>show/wwv</bf> Show the last 10 WWV broadcasts<newline>
4676 <bf>show/wwv &lt;n&gt;</bf> Show the last &lt;n&gt; WWV broadcasts
4677 </tt>
4678
4679 <P>
4680 Display the most recent WWV information that has been received by the system
4681
4682
4683 <sect1>shutdown (5)
4684
4685 <P>
4686 <tt>
4687 <bf>shutdown</bf> Shutdown the cluster
4688 </tt>
4689
4690 <P>
4691 Shutdown the cluster and disconnect all the users.  If you have Spider
4692 set to respawn in /etc/inittab it will of course restart.
4693
4694 <sect1>spoof (9)
4695
4696 <P>
4697 <tt>
4698 <bf>spoof &lt;callsign&gt; &lt;command&gt;</bf> Run commands as another user
4699 </tt>
4700
4701 <P>
4702 This is a very simple yet powerful command for the sysop.  It allows you to
4703 issue commands as if you were a different user.  This is very useful for the
4704 kind of things that users seem to always get wrong.. like home_node for
4705 example.
4706
4707 <sect1>stat/db (5)
4708
4709 <P>
4710 <tt>
4711 <bf>stat/db &lt;dbname&gt;</bf> Show the status of a database
4712 </tt>
4713
4714 <P>
4715 Show the internal status of a database descriptor.
4716
4717 Depending on your privilege level you will see more or less information. 
4718 This command is unlikely to be of much use to anyone other than a sysop.
4719
4720 <sect1>stat/channel (5)
4721
4722 <P>
4723 <tt>
4724 <bf>stat/channel &lt;callsign&gt;</bf> Show the status of a channel on the cluster
4725 </tt>
4726
4727 <P>
4728 Show the internal status of the channel object either for the channel that 
4729 you are on or else for the callsign that you asked for.
4730
4731 Only the fields that are defined (in perl term) will be displayed.
4732
4733 <sect1>stat/msg (5)
4734
4735 <P>
4736 <tt>
4737 <bf>stat/msg &lt;msgno&gt;</bf> Show the status of a message
4738 </tt>
4739
4740 <P>
4741 This command shows the internal status of a message and includes information
4742 such as to whom it has been forwarded, its size, origin etc etc.
4743
4744 <sect1>stat/user (5)
4745
4746 <P>
4747 <tt>
4748 <bf>stat/user &lt;callsign&gt;</bf> Show the full status of a user
4749 </tt>
4750
4751 <P>
4752 Shows the full contents of a user record including all the secret flags
4753 and stuff.
4754
4755 Only the fields that are defined (in perl term) will be displayed.
4756
4757 <sect1>sysop (0)
4758
4759 <P>
4760 <tt>
4761 <bf>sysop</bf> Regain your privileges if you login remotely
4762 </tt>
4763
4764 <P>
4765 The system automatically reduces your privilege level to that of a
4766 normal user if you login in remotely. This command allows you to
4767 regain your normal privilege level. It uses the normal system: five
4768 numbers are returned that are indexes into the character array that is
4769 your assigned password (see SET/PASSWORD). The indexes start from
4770 zero.
4771
4772 You are expected to return a string which contains the characters
4773 required in the correct order. You may intersperse those characters
4774 with others to obscure your reply for any watchers. For example (and
4775 these values are for explanation :-):
4776
4777 <tscreen><verb>
4778   password = 012345678901234567890123456789
4779   > sysop
4780   22 10 15 17 3
4781 </verb></tscreen>
4782
4783 you type:-
4784
4785 <tscreen><verb>
4786  aa2bbbb0ccc5ddd7xxx3n
4787  or 2 0 5 7 3
4788  or 20573
4789 </verb></tscreen>
4790
4791 They will all match. If there is no password you will still be offered
4792 numbers but nothing will happen when you input a string. Any match is
4793 case sensitive.
4794
4795 <sect1>talk (0)
4796
4797 <P>
4798 <tt>
4799 <bf>talk &lt;callsign&gt;</bf> Enter talk mode with &lt;callsign&gt;<newline>
4800 <bf>talk &lt;callsign&gt; &lt;text&gt;</bf> Send a text message to &lt;callsign&gt;<newline>
4801 <bf>talk &lt;callsign&gt; &gt; &lt;node_call&gt; &lsqb;&lt;text&gt;&rsqb;</bf>
4802 Send a text message to &lt;callsign&gt; via &lt;node_call&gt;
4803 </tt>
4804
4805 <P>
4806 Send a short message to any other station that is visible on the cluster
4807 system. You can send it to anyone you can see with a SHOW/CONFIGURATION 
4808 command, they don't have to be connected locally.
4809
4810 The second form of TALK is used when other cluster nodes are connected
4811 with restricted information. This usually means that they don't send 
4812 the user information usually associated with logging on and off the cluster.
4813
4814 If you know that G3JNB is likely to be present on GB7TLH, but you can only
4815 see GB7TLH in the SH/C list but with no users, then you would use the
4816 second form of the talk message.
4817
4818 If you want to have a ragchew with someone you can leave the text message
4819 out and the system will go into 'Talk' mode. What this means is that a
4820 short message is sent to the recipient telling them that you are in a 'Talking' 
4821 frame of mind and then you just type - everything you send will go to the 
4822 station that you asked for. 
4823
4824 All the usual announcements, spots and so on will still come out on your
4825 terminal.
4826
4827 If you want to do something (such as send a spot) you precede the normal 
4828 command with a '/' character, eg:-
4829
4830 <tscreen><verb>
4831    /DX 14001 G1TLH What's a B class licensee doing on 20m CW?
4832    /HELP talk
4833 </verb></tscreen>
4834
4835 To leave talk mode type:
4836    
4837 <tscreen><verb>
4838    /EX
4839 </verb></tscreen>
4840
4841 <sect1>type (0)
4842
4843 <P>
4844 <tt>
4845 <bf>type &lt;filearea&gt;/&lt;name&gt;</bf> Look at a file in one of the fileareas
4846 </tt>
4847
4848 <P>
4849 Type out the contents of a file in a filearea. So, for example, in 
4850 filearea 'bulletins' you want to look at file 'arld051' you would 
4851 enter:-
4852
4853 <tscreen><verb>
4854    TYPE bulletins/arld051
4855 </verb></tscreen>
4856
4857 See also SHOW/FILES to see what fileareas are available and a 
4858 list of content.
4859
4860 <sect1>who (0)
4861
4862 <P>
4863 <tt>
4864 <bf>who</bf> Show who is physically connected locally
4865 </tt>
4866
4867 <P>
4868 This is a quick listing that shows which callsigns are connected and
4869 what sort of connection they have
4870
4871 <sect1>wx (0)
4872
4873 <P>
4874 <tt>
4875 <bf>wx &lt;text&gt;</bf> Send a weather message to local users<newline>
4876 <bf>wx full &lt;text&gt; </bf> Send a weather message to all cluster users
4877 </tt>
4878
4879 <P>
4880 Weather messages can sometimes be useful if you are experiencing an extreme
4881 that may indicate enhanced conditions
4882
4883 <sect1>wx (enhanced for sysops) (5)
4884
4885 <P>
4886 <tt>
4887 <bf>wx sysop &lt;text&gt;</bf> Send a weather message to other clusters only
4888 </tt>
4889
4890 <P>
4891 Send a weather message only to other cluster nodes and not to general users.
4892
4893
4894
4895 </article>