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