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