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