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