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