f78af3c192142fff771971d864820c299ba7f1df
[spider.git] / sgml / installation.sgml
1 <!doctype linuxdoc system>
2
3 <article>
4
5 <!-- Title information -->
6
7 <title>The DXSpider Installation Manual v1.48</title> 
8 <author>Iain Philipps, G0RDI (g0rdi@77hz.com) and
9 Ian Maude, G0VGS, (ianmaude@btinternet.com)</author>
10 <date>Version 1.48, September 2001 revision 1.0</date>
11
12 <abstract>
13 A reference for SysOps of the DXSpider DXCluster program.
14 </abstract>
15
16 <!-- Table of contents -->
17 <toc>
18
19 <!-- Begin the document -->
20
21 <sect>Linux Installation 
22
23 <sect1>Introduction
24
25 <P>
26 This section describes the installation of DX Spider v1.47 on a 
27 <htmlurl url="http://www.redhat.com" name="RedHat"> Linux Distribution.
28 Wherever possible I will try to include differences for other distributions.  
29 I do not intend to try and cover the installation of Linux or the setup 
30 of the AX25 utilities.  If you need help on this then read Iains original 
31 installation guide that comes with the Spider distribution.
32
33 <P>
34 I am assuming a general knowledge of Linux and its commands.  You should 
35 know how to use <em>tar</em> and how to edit files using your favourite editor.
36
37 <P>
38 The crucial ingredient for all of this is 
39 <htmlurl url="http://www.perl.org" name="Perl">.  Earlier versions of
40 Spider required perl 5.004, however it is now <it>STRONGLY</it> recommended
41 that you use at least version 5.005_03 as this is the version being used
42 in the development of Spider.
43
44 <P>In addition to the standard Red Hat distribution you will require the 
45 following modules from <htmlurl url="http://www.cpan.org/CPAN.html" name="http://www.cpan.org/CPAN.html"> ...
46
47 <P>
48 <itemize>
49 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Data/Data-Dumper-2.10.tar.gz" name="Data-Dumper-2.10.tar.gz">
50 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Date/TimeDate-1.10.tar.gz" name="TimeDate-1.10.tar.gz">
51 <item> <htmlurl url="http://www.cpan.org/modules/by-module/IO/IO-1.20.tar.gz" name="IO-1.20.tar.gz (for perl 5.00403 and lower)">
52 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Net/Net-Telnet-3.02.tar.gz" name="Net-Telnet-3.02.tar.gz">
53 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Curses/Curses-1.06.tar.gz" name="Curses-1.06.tar.gz">
54 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Time/Time-HiRes-01.20.tar.gz" name="Time-HiRes-01.20.tar.gz">
55 </itemize>
56
57 <P>
58 Copy the CPAN modules listed above to a convenient place on your computer. One good place would be /usr/local/packages, and the instructions which follow will assume that that's where you have put them.
59
60 <P>
61 Log in as 'root', and make sure you're at '/root' before you continue. Here are exactly the commands you must issue next: -
62
63 <verb>
64 # tar xvfz /usr/local/packages/Data-Dumper-2.10.tar.gz
65 # cd Data-Dumper-2.10
66 # perl Makefile.PL
67 # make test
68 # make install
69 # cd ..
70 #
71 # tar xvfz /usr/local/packages/TimeDate-1.10.tar.gz
72 # cd TimeDate-1.10
73 # perl Makefile.PL
74 # make test
75 # make install
76 # cd ..
77 #
78 # tar xvfz /usr/local/packages/IO-1.20.tar.gz
79 # cd IO-1.20
80 # perl Makefile.PL
81 # make test
82 # make install UNINST=1
83 # cd ..
84 #
85 # tar xvfz /usr/local/packages/Net-Telnet-3.02.tar.gz
86 # cd Net-Telnet-3.02
87 # perl Makefile.PL
88 # make test
89 # make install
90 # cd ..
91 #
92 # tar xvfz /usr/local/packages/Curses-1.06.tar.gz
93 # cd Curses-1.06
94 # perl Makefile.PL
95 # make test
96 # make install
97 # cd ..
98 #
99 # tar xvfz /usr/local/packages/Time-HiRes-01.20.tar.gz 
100 # cd Time-HiRes-01.20
101 # perl Makefile.PL
102 # make test
103 # make install
104 # cd ..
105 </verb>
106
107 <P>
108 Do not fall into the trap of thinking they're all the same, just because they nearly are! Pay particular attention to the instructions of IO, above.
109
110
111 <sect1>Preparation
112
113 <P>
114 I will assume that you have already downloaded the latest tarball of 
115 the DXSpider software and are ready to install it. I am assuming version 
116 1.47 for this section but of course you would use the latest version.
117
118 <P>
119 Login as root and create a user to run the cluster under.  <bf><it>UNDER 
120 NO CIRCUMSTANCES USE ROOT AS THIS USER!</it></bf>.  I am going to use 
121 the name <em>sysop</em>.  You can call it anything you wish.  Depending 
122 on your security requirements you may wish to use an existing user, 
123 however this is your own choice.
124
125 <P>
126 <tscreen><verb>
127 # adduser -m sysop
128 </verb></tscreen>
129
130 <P>
131 Now set a password for the user ...
132
133 <tscreen><verb>
134 # passwd sysop
135 # New UNIX password:
136 # Retype new UNIX password:
137 passwd: all authentication tokens updated successfully
138 </verb></tscreen>
139
140 <sect1>Installing the software
141
142 <P>
143 Now to unpack the DX Spider distribution, set symbolic links and group 
144 permissions.  Copy the tarball to /home/sysop and do the following.
145
146 <tscreen><verb>
147 # cd ~sysop
148 # tar xvfz spider-1.47.tar.gz
149 # ln -s ~sysop/spider /spider
150 # groupadd -g 251 spider       (or another number)
151 </verb></tscreen>
152
153 If you do not have the command <em>groupadd</em> available to you simply 
154 add a line in /etc/group by hand.
155
156 <tscreen><verb>
157 # vi /etc/group                (or your favorite editor)
158 </verb></tscreen>
159
160 You also need to add some others to the group, including your own callsign 
161 (this will be used as an alias) and root.  The finished line in /etc/group 
162 should look something like this
163
164 <tt>
165 spider:x:251:sysop,g0vgs,root
166 </tt>
167
168 <P>
169 The next step is to set the permissions on the Spider directory tree and files ....
170
171 <tscreen><verb>
172 # chown -R sysop.spider spider
173 # find . -type d -exec chmod 2775 {} \;
174 # find . -type f -exec chmod 775 {} \;
175 </verb></tscreen>
176
177 <P>
178 This last step allows various users of the group <em>spider</em> to have 
179 write access to all the directories.  This is not really needed just yet 
180 but will be useful when web interfaces start to appear.
181
182 <P>
183 Finally, you need to fix the permissions on the ax25_call and netrom_call 
184 programs.  Check where they are with the <em>locate</em> command and alter 
185 the permissions with the <em>chmod</em> command like this ..
186
187 <tscreen><verb>
188 # chown root ax25_call netrom_call
189 # chmod 4775 ax25_call netrom_call
190 </verb></tscreen>
191
192 <sect1>Setting callsigns etc
193
194 <P>
195 Now login to your machine as the user you created earlier.  In my case that 
196 user is called <em>sysop</em>.  Once logged in, issue the following commands ....
197
198 <tscreen><verb>
199 $ cd /spider
200 $ mkdir local
201 $ mkdir local_cmd
202 $ cp perl/DXVars.pm.issue local/DXVars.pm
203 $ cd local
204 $ vi DXVars.pm (or your favourite editor)
205 </verb></tscreen>
206
207 <P>
208 Using the distributed DXVars.pm as a a template, set your cluster callsign, 
209 sysop callsign and other user info to suit your own environment. Note that 
210 this a perl file which will be parsed and executed as part of the cluster. If 
211 you get it wrong then perl will complain when you start the cluster process.  
212 It is important only to alter the text of any section.  Some of the lines look 
213 a little odd.  Take this line for example ....
214
215 <tt>
216 $myemail = "ianmaude\@btinternet.com";
217 </tt>
218
219 <P>
220 There appears to be an extra slash in there.  However this has to be there 
221 for the file to work so leave it in.
222                 
223 <P><bf>PLEASE USE CAPITAL LETTERS FOR CALLSIGNS</bf>
224                 
225 <P>
226 DON'T alter any file in /spider/perl, they are overwritten with every
227 release. Any files or commands you place in /spider/local or /spider/local_cmd 
228 will automagically be used in preference to the ones in /spider/perl EVEN 
229 while the cluster is running!
230
231 <P>
232 Save the new file and change directory to ../perl ....
233
234 <tscreen><verb>
235 $ cd ../perl
236 </verb></tscreen>
237
238 <P>
239 Now type the following command which creates the basic user file with you as 
240 the sysop.
241
242 <tscreen><verb>
243 $ ./create_sysop.pl
244 </verb></tscreen>
245
246 <sect1>Starting up for the first time
247
248 <P>
249 We can now bring spider up for the first time and see if all is well or not!  
250 It should look something like this ...
251
252 <tscreen><verb>
253 $ ./cluster.pl
254 DXSpider DX Cluster Version 1.47
255 Copyright (c) 1998 Dirk Koopman G1TLH
256 loading prefixes ...
257 loading band data ...
258 loading user file system ...
259 starting listener ...
260 reading existing message headers
261 reading cron jobs
262 orft we jolly well go ...
263 </verb></tscreen>
264
265 <P>
266 If all is well then login on another term or console as <em>sysop</em> and 
267 cd to /spider/src.  Now issue the following command ...
268
269 <tscreen><verb>
270 $ ./client
271 </verb></tscreen>
272
273 <P>
274 This should log you into the cluster as the sysop under the alias callsign we 
275 set earlier.  In this case the callsign is G0VGS.  The cluster callsign is set 
276 in the DXVars.pm file in /spider/local.  In this case we will assume that this 
277 was set as GB7MBC.  You should therefore see this when you login ....
278
279 <tscreen><verb>
280 G0VGS de GB7MBC 19-Nov-1999 2150Z >
281 </verb></tscreen>
282
283 If you do, congratulations!  If not, look over the instructions again, you 
284 have probably missed something out.  You can shut spider down again with the 
285 command ....
286
287 <tscreen><verb>
288 shutdown
289 </verb></tscreen>
290
291 <P>
292 and both the cluster and the client should return to Linux prompts.
293
294 <sect1>The Client program
295
296 <P>
297 In earlier versions of Spider, all the processes were Perl scripts.  This 
298 was fine but with a lot of users your computer memory would soon be used up.  
299 To combat this a new client was written in "C".  This client only works for
300 <em>incoming</em> connects at the moment.  Before you can use it though it 
301 has to be "made".  CD to /spider/src and type <em>make</em>.  You 
302 should see the output on your screen and hopefully now have a small C program 
303 called <em>client</em>.  Leave it in this directory.
304
305
306 <sect>Linux quick installation guide
307
308 <P>
309 This section is designed for experienced Spider sysops who want to install
310 Spider from scratch.  It is simply a check list of things that need to be
311 done without any explanations.  The name in brackets at the end of each line
312 is the user that should be doing that process.
313
314 <itemize>
315 <item>Login as root
316 <item>Get the additional CPAN modules and install them (root)
317 <item>Create the "sysop" user and set a password (root)
318 <item>Put the Spider tarball in ~sysop and untar it (root)
319 <item>ln -s ~sysop/spider /spider (root)
320 <item>groupadd -g 251 spider (root)
321 <item>Add any more users you need to the group entry in /etc/group (root)
322 <item>Set the permissions on the spider tree (root)
323 <item>Fix permissions on ax25_call and netrom_call (root)
324 <item>Login as the sysop user
325 <item>cd to /spider (sysop)
326 <item>mkdir local (sysop)
327 <item>mkdir local_cmd (sysop)
328 <item>cp perl/DXVars.pm.issue local/DXVars.pm (sysop)
329 <item>cd to /spider/local and edit DXVars to set your details (sysop)
330 <item>cd ../perl (sysop)
331 <item>./create_sysop.pl (sysop)
332 <item>./cluster.pl (sysop)
333 </itemize>
334
335 Spider should now be running and you should be able to login using the
336 client program.
337
338 <itemize>
339 <item>Login as root
340 <item>Enter the correct line in ax25d.conf (root)
341 <item>Enter the correct line in /etc/services (root)
342 <item>Enter the correct line in /etc/inetd.conf (root)
343 <item>killall -HUP inetd (root)
344 </itemize>
345
346 Spider should now be able to accept logins via telnet, netrom and ax25.
347
348 <itemize>
349 <item>Login as sysop
350 <item>Start the cluster (sysop)
351 <item>set/node and type for links (sysop)
352 <item>Write any connect scripts (sysop)
353 <item>Edit /spider/crontab as required (sysop)
354 <item>Edit any other files as necessary (sysop)
355 <item>Set filters, hops and forwarding files (sysop)
356 <item>Login as root
357 <item>Enter the correct line in /etc/inittab (root)
358 </itemize>
359
360 <sect>Configuration
361
362 <sect1>Allowing ax25 connects from users
363
364 <P>
365 As stated previously, the aim of this document is not to tell you how to 
366 configure Linux or the ax25 utilities.  However, you do need to add a line 
367 in your ax25d.conf to allow connections to DXSpider for your users.  For
368 each interface that you wish to allow connections on, use the following format ...
369
370 <tscreen><verb>
371 default  * * * * * *  - sysop /spider/src/client client %u ax25
372 </verb></tscreen>
373
374 or, if you wish your users to be able to use SSID's on their callsigns ..
375
376 <tscreen><verb>
377 default  * * * * * *  - sysop /spider/src/client client %s ax25
378 </verb></tscreen>
379
380 For most purposes this is not desirable. The only time you probably will 
381 need this is when you need to allow other cluster nodes that are using SSID's
382 in. In this case it would probably be better to use the first example and 
383 then add a specific line for that node like this:
384
385 <tscreen><verb>
386 GB7DJK-2  * * * * * *  - sysop /spider/src/client client gb7djk-2 ax25
387 default  * * * * * *  - sysop /spider/src/client client %u ax25
388 </verb></tscreen>
389  
390 <sect1>Allowing telnet connects from users 
391
392 <P> 
393 From version 1.47 there is a new (more efficient) way of doing this
394 (see next section) but, if you prefer, the method of doing it described 
395 here will continue to work just fine.
396  
397 <P>
398 Allowing telnet connections is quite simple.  Firstly you need to add a line 
399 in /etc/services to allow connections to a port number, like this ....
400
401 <tscreen><verb>
402 spdlogin   8000/tcp     # spider anonymous login port
403 </verb></tscreen>
404
405 Then add a line in /etc/inetd.conf like this ....
406
407 <tscreen><verb>
408 spdlogin stream tcp nowait root /usr/sbin/tcpd /spider/src/client login telnet
409 </verb></tscreen>
410
411 <P>
412 Once this is done, you need to restart inetd like this ....
413
414 <tscreen><verb>
415 killall -HUP inetd
416 </verb></tscreen>
417
418
419 <P>Now login as <em>sysop</em> and cd spider/src. You can test that spider 
420 is accepting telnet logins by issuing the following command ....
421
422 <tscreen><verb>
423 ./client login telnet
424 </verb></tscreen>
425
426 You should get a login prompt and on issuing a callsign, you will be given 
427 access to the cluster.  Note, you will not get a password login.  There seems 
428 no good reason for a password prompt to be given so it is not asked for.
429
430 <P>
431 Assuming all is well, then try a telnet from your linux console ....
432
433 <tscreen><verb>
434 telnet localhost 8000
435 </verb></tscreen>
436
437 <P>
438 You should now get the login prompt and be able to login as before.
439
440 <sect1>Setting up telnet connects (from 1.47 onwards)
441
442 <P>
443 From version 1.47 you can choose to allow the perl cluster.pl program to 
444 allow connections directly (i.e. not via the <tt>/spider/src/client</tt>
445 interface program). If you are using Windows then this is the only method
446 available of allowing incoming telnet connections.
447
448 <P>
449 To do this you need first to remove any line that you may previously have set
450 up in /etc/inetd.conf. Remember to:-
451
452 <tscreen><verb>
453 killall -HUP inetd
454 </verb></tscreen>
455
456 <P>
457 to make the change happen...
458
459 <P>
460 Having done that, you need to copy the file 
461 <em>/spider/perl/Listeners.pm</em> to <em>/spider/local</em> and 
462 then edit it. You will need to uncomment the line containing &dquot;0.0.0.0&dquot; 
463 and select the correct port to listen on. So that it looks like this:-
464
465 <tscreen><verb>
466 @listen = (
467     ["0.0.0.0", 8000],
468 );
469 </verb></tscreen>
470
471 <P>
472 As standard, the listener will listen on all interfaces simultaneously. 
473 If you require more control than this, you can specify each interface 
474 individually:-
475
476 <tscreen><verb>
477 @listen = (
478     ["gb7baa.dxcluster.net", 8000],
479     ["44.131.16.2", 6300],
480 );
481 </verb></tscreen>
482
483 <P>
484 This will only be successful if the IP addresses on each interface are static. 
485 If you are using some kind of dynamic IP addressing then the 'default' method 
486 is the only one that will work.
487
488 <P>
489 Restart the cluster.pl program to enable the listener.
490
491 <P>
492 One important difference with the internal listener is that no echoing 
493 is done by the cluster program. Users will need to set 'local-echo' on in 
494 their telnet clients if it isn't set automatically (as per the standards). 
495 Needless to say this will probably only apply to Windows users. 
496
497 <sect1>Setting up for AGW Engine (1.47 onwards)
498
499 <P>
500 AGW Engine is a Windows based ax25 stack. You can connect to an AGW engine 
501 from Linux as well as Windows based machines.
502
503 <P>
504 In order to enable access to an AGW Engine you need to copy 
505 <em>/spider/perl/AGWConnect.pm</em> to <em>/spider/local</em> and edit it. 
506 Specifically you must:-
507
508 <itemize>
509 <item> set <tt>$enable</tt> to 1.
510 <item> set <tt>$login</tt> and <tt>$passwd</tt> to the values set up in your AGW installation. 
511 If you haven't set any there, then you should not touch these values.
512 <item> You can connect to a remote AGW engine (ie on some other machine) by changing <tt>$addr</tt>
513 and <tt>$port</tt> appropriately.
514 <item> Restart the cluster.pl program
515 </itemize>   
516
517
518 <sect1>Setting up node connects
519
520 <P>
521 In order to allow cluster node connections, spider needs to know that the 
522 connecting callsign is a cluster node.  This is the case whether the connect 
523 is incoming or outgoing.  In spider this is a simple task and can be done in 
524 runtime.
525
526 <P>
527 Later versions of Spider can distinguish different software and treat them
528 differently.  For example, the WCY beacon cannot be handles by AK1A type
529 nodes as AK1A does not know what to do with PC73.  There are 4 different
530 types of node at present and although they may not have any major
531 differences at the moment, it allows for compatibility.  The 4 types are ...
532
533 <tscreen><verb>
534 set/node        (AK1A type)
535 set/spider
536 set/dxnet
537 set/clx
538 </verb></tscreen>
539
540 <P>
541 For now, we will assume that the cluster we are going to connect to is an
542 AK1A type node.
543
544 <P>
545 Start up the cluster as you did before and login as the sysop with client.
546 The cluster node I am wanting to make a connection to is GB7BAA but you would
547 obviously use whatever callsign you required.  At the prompt type ...
548
549 <tscreen><verb>
550 set/node gb7baa
551 </verb></tscreen>
552
553 <P>
554 The case does not matter as long as you have a version of DXSpider later than 
555 1.33.  Earlier versions required the callsign to be in upper case.
556
557 <P>
558 That is now set, it is as simple as that.  To prove it, login on yet another 
559 console as sysop, cd to spider/src and issue the command ...
560
561 <tscreen><verb>
562 ./client gb7baa (using the callsign you set as a node)
563 </verb></tscreen>
564
565 <P>
566 You should get an initialisation string from DXSpider like this ...
567
568 <tscreen><verb>
569 ./client gb7baa
570 PC38^GB7MBC^~
571 </verb></tscreen>
572
573 If the callsign you just set up as a cluster node is for an incoming connect, 
574 this is all that needs to be done.  If the connection is to be outgoing then 
575 a connection script needs to be written.
576
577 <P>
578 Sometimes you make a mistake... Honest, it does happen.  If you want to make a node
579 back to being a normal user, regardless
580 of what type it is, do:
581
582 <tscreen><verb>
583 unset/node gb7baa
584 </verb></tscreen>
585
586 <sect1>Connection scripts
587
588 <P>
589 Because DXSpider operates under Linux, connections can be made using just about 
590 any protocol;  AX25, NETRom, tcp/ip, ROSE etc are all possible examples.  
591 Connect scripts live in the /spider/connect directory and are simple ascii files.  
592 Writing a script for connections is therefore relatively simple.  
593
594 <P>
595 The connect scripts consist of lines which start with the following keywords 
596 or symbols:-
597
598 <descrip>
599         
600 <tag/#/All lines starting with a <tt>#</tt> are ignored, as are completely 
601                 blank lines.
602
603 <tag/timeout/<tt>timeout</tt> followed by a number is the number of seconds to wait for a 
604                 command to complete. If there is no timeout specified in the script 
605                 then the default is 60 seconds.
606
607 <tag/abort/     <tt>abort</tt> is a regular expression containing one or more strings to look 
608                 for to abort a connection. This is a perl regular expression and is 
609                 executed ignoring case.
610
611 <tag/connect/<tt>connect</tt> followed by ax25, agw (for Windows users) or telnet and some type dependent 
612                 information. In the case of a telnet connection, there can be up to 
613                 two parameters.
614                 The first is the ip address or hostname of the computer you wish to 
615                 connect to and the second is the port number you want to use (this 
616                 can be left out if it is a normal telnet session).
617                 In the case of an ax25 session then this would normally be a call to
618                 ax25_call or netrom_call as in the example above. It is your
619                 responsibility to get your node and other ax25 parameters to work 
620                 before going down this route!
621
622 <tag/'/<tt>'</tt> is the delimiting character for a word or phrase of an expect/send 
623                 line in a chat type script. The words/phrases normally come in pairs,
624                 either can be empty. Each line reads input from the connection until 
625                 it sees the string (or perl regular expression) contained in the
626                 left hand string. If the left hand string is empty then it doesn't 
627                 read or wait for anything. The comparison is done ignoring case.
628                 When the left hand string has found what it is looking for (if it is)
629                 then the right hand string is sent to the connection.
630                 This process is repeated for every line of chat script. 
631
632 <tag/client/<tt>client</tt> starts the connection, put the arguments you would want here 
633                 if you were starting the client program manually. You only need this 
634                 if the script has a different name to the callsign you are trying to 
635                 connect to (i.e. you have a script called other which actually 
636                 connects to GB7DJK-1 [instead of a script called gb7djk-1]).
637 </descrip>
638
639
640 There are many possible ways to configure the script but here are three examples, 
641 one for a NETRom/AX25 connect, one for AGW engines and one for tcp/ip.  
642
643 <tscreen><verb>
644 timeout 60
645 abort (Busy|Sorry|Fail)
646 # don't forget to chmod 4775 netrom_call!
647 connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
648 'Connect' '' 
649 'Connect' 'c np7'
650 'Connect' 'c gb7dxm'
651 # you can leave this out if you call the script 'gb7dxm'
652 client gb7dxm ax25
653 </verb></tscreen>
654
655 <P>
656
657 <tscreen><verb>
658 timeout 60
659 abort (Busy|Sorry|Fail)
660 # this does exactly the same as the previous example
661 # the '1' is the AGW port number to connect thru for g1tlh
662 connect agw 1 g1tlh
663 'Connect' '' 
664 'Connect' 'c np7'
665 'Connect' 'c gb7dxm'
666 # you can leave this out if you call the script 'gb7dxm'
667 client gb7dxm ax25
668 </verb></tscreen>
669
670 <P>
671
672 <tscreen><verb>
673 timeout 15
674 connect telnet dirkl.tobit.co.uk
675 'login' 'gb7djk'
676 'word' 'gb7djk'
677 # tell GB7DJK-1 that it is connected to GB7DJK
678 # you can leave this out if you call this script 'gb7djk'
679 client gb7djk telnet
680 </verb></tscreen>
681
682 <P>
683 Both these examples assume that everything is set up properly at the other end.  
684 You will find other examples in the /spider/examples directory.
685
686 <sect1>Starting the connection
687
688 <P>
689 You start the connection, from within a sysop enabled cluster login, by typing 
690 in the word <em>connect</em> followed by a script name like this ....
691
692 <tscreen><verb>
693 G0VGS de GB7MBC 13-Dec-1998 2041Z >connect gb7djk-1
694 connection to GB7DJK-1 started
695 G0VGS de GB7MBC 13-Dec-1998 2043Z >
696 </verb></tscreen>
697
698 This will start a connection using the script called <em>gb7djk-1</em>.  You can
699 follow the connection by watching the term or console from where you started
700 <em>cluster.pl</em>.  From version 1.47 onwards, you will need to <tt>set/debug connect</tt> first.
701 You should see something like this ...
702
703 <tscreen><verb>
704 <- D G1TLH connect gb7djk-1
705 -> D G1TLH connection to GB7DJK-1 started
706 -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
707 timeout set to 15
708 CONNECT sort: telnet command: dirkl.tobit.co.uk
709 CHAT "login" -> "gb7djk"
710 received "
711 Red Hat Linux release 5.1 (Manhattan)
712 Kernel 2.0.35 on an i586
713 "
714 received "login: "
715 sent "gb7djk"
716 CHAT "word" -> "gb7djk"
717 received "gb7djk"
718 received "Password: "
719 sent "gb7djk"
720 Connected to GB7DJK-1, starting normal protocol
721 <- O GB7DJK-1 telnet
722 -> B GB7DJK-1 0
723 GB7DJK-1 channel func  state 0 -> init
724 <- D GB7DJK-1 
725 <- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
726 <- D GB7DJK-1 PC38^GB7DJK-1^~
727 <- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 
728 0 00:00^5447^~
729     etc
730
731 </verb></tscreen>
732
733 <P>
734 With later versions of Spider there is a set/login command for users.  This 
735 tells them when a user or node logs in or out.  If you do not add a line to 
736 your scripts after the final line (or before the client line which should always 
737 be last if needed) then the login/logout information will be sent to users
738 <it>before</it> the login actually completes.  This means if a node is 
739 unreachable, it will continue sending logins and logouts to users even though it 
740 is not actually connecting.  To avoid this use the following line ...
741
742 <tscreen><verb>
743 'connect' ''
744 </verb></tscreen>
745
746 <P>
747 In a script, this might look like ...
748
749 <tscreen><verb>
750 timeout 35 
751 abort (Busy|Sorry|Fail)
752 connect telnet mary 3000
753 'ogin:' 'gb7mbc'
754 '>' 'telnet 44.131.93.96 7305'
755 'connect' ''
756 </verb></tscreen>
757
758 <sect1>Telnet echo
759
760 <P>
761 Cluster links in particular suffer greatly from the presence of telnet echo.  
762 This is caused by the telnet negotiation itself and can create at worst severe 
763 loops.  At best it creates unnecessary bandwidth and large logfiles!  There are
764 things that can be done to limit this problem but will not always work dependent 
765 on the route taken to connect.
766
767 <P>
768 Telnet echo itself should only be a problem if the connection is being made to 
769 the telnet port (23).  This port uses special rules that include echo negotiation.
770 If the connection is to a different port, such as 7300, this negotiation does 
771 not happen and therefore no echo should be present.
772
773 <P>
774 Sometimes it is not possible to make a direct connection to another node and this 
775 can cause problems.  There is a way of trying to suppress the telnet echo but 
776 this will not always work, unfortunately it is difficult to be more specific.  
777 Here is an example of what I mean ...
778
779 <tscreen><verb>
780 timeout 35
781 abort (Busy|Sorry|Fail)
782 connect telnet mary.lancs.ac.uk
783 'ogin:' 'gb7mbc'
784 'word:' 'mypasswd'
785 '\$' 'stty -echo raw'
786 '\$' 'telnet 44.131.93.96'
787 'connect' ''
788 </verb></tscreen>
789
790 So, the first connection is made by Spider.  This is fine as Spider uses the
791 Net_Telnet script from within perl.  This actually uses TCP rather than TELNET 
792 so no negotiation will be done on the first connection.  Once connected to
793 mary.lancs.ac.uk, the command is sent to suppress echo.  Now a telnet is made 
794 to a cluster node that is accepting connections on port 23.  The problem with 
795 this link is that the negotiation is made by the remote machine, therefore you 
796 have no control over it.  The chances are that this link will create echo and 
797 there will be no way you can stop it.
798
799
800 <sect1>Autostarting the cluster
801
802 <P>
803 Ok, you should now have DXSpider running nicely and allowing connects by cluster
804 nodes or users.  However, it has to be shutdown and restarted manually.  It
805 would be much easier to have it start automatically. 
806
807 <P>
808 This is not only a way to start the cluster automatically, it also works as a
809 watchdog, checking the sanity of DXSpider and respawning it should it crash for 
810 any reason.  Before doing the following, shutdown the cluster as you did earlier.
811
812 <P>
813 Login as root and bring up the /etc/inittab file in your favourite editor.  Add 
814 the following lines to the file near the end ...
815
816 <tscreen><verb>
817 ##Start DXSpider on bootup and respawn it should it crash
818 DX:3:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
819 </verb></tscreen>
820
821 <P>
822 This line works fine for RedHat distributions. It is also fine for SuSE up to
823 7.0.  From Suse 7.1 you need to add runlevels 2 and 5 like this ...
824
825 <tscreen><verb>
826 DX:235:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
827 </verb></tscreen>
828
829
830 The line required for Slackware distributions is slightly different.  My thanks to 
831 Aurelio, PA3EZL for this information.
832
833 <tscreen><verb>
834 DX:23:respawn:/bin/su - sysop -c "/usr/bin/perl -w /spider/perl/cluster.pl" >/dev/tty7
835 </verb></tscreen>
836
837 <P>
838 This will automatically start DXSpider on tty7 (ALT-F7) on bootup and restart 
839 it should it crash for any reason.
840
841 <P>
842 As root type the command <em>telinit q</em>.  DXSpider should start up 
843 immediately.  You will see the output on tty7 and if you login as <em>sysop</em> 
844 you should find everything running nicely.
845
846 <sect>Microsoft Windows Installation
847
848 <sect1>Introduction
849
850 <P>
851 <bf>IMPORTANT:</bf> 
852
853 What you'll be left with once you've followed these instructions
854 is (hopefully) a working DX Spider v1.47 system that is capable
855 of accepting or originating "internet" connections, plus inbound
856 AX.25 and TCP/IP radio connections. If the absence of outbound
857 radio connections is a serious limitation for you, it would be
858 better for you to wait a couple more weeks until this support has
859 been added.
860
861 On the other hand, you may have an enquiring mind, or better yet,
862 may be looking for a useful way of connecting your current
863 (perhaps) AK1A cluster "to the internet" via some networking
864 mechanism (BPQEther, etc) or other. I won't be producing
865 instructions for the latter case, because I don't have an AK1A to
866 play with. But someone might ...
867
868 Whatever, this document is intended to get you started with DX
869 Spider in a Microsoft Windows &trade; environment. It's not
870 intended to teach you anything other than how to perform a
871 minimum configuration of a DX Spider installation and have it
872 able to connect across "the internet" to other DX Clusters, while
873 accepting inbound TELNET and radio connections.
874
875 <sect1>The requirements
876
877 <P>
878 The very first things you're going to need are (in order of
879 importance):-
880
881 <itemize>
882 <item>A cup of good, strong tea
883 <item>A supported Windows platform with an internet connection so you can
884 download the necessary software bits and bobs directly to it. There are other ways, but this is preferable.
885 <item>Another cup of good, strong tea
886 <item>If all goes according to plan, about an hour to spare
887 <item>Plenty of good, strong tea
888 </itemize>
889
890 <sect1>The system
891
892 <P>
893 The platform I used to generate these instructions was a
894 "vanilla" Microsoft Windows Me 4.90.3000 system, with a 700MHz
895 AMD Athlon processor and 96 Mb memory. I've also personally
896 verified that it runs on my laptop (Pentium 266MHz, 32 Mb memory,
897 Windows 98 SE v4.10.2222 A) and a computer that I assembled from
898 a random pile of junk (AMD K6-2 333MHz, 64 Mb memory, Windows 98
899 v4.10.1998). As a result, I have reason to believe that what I'm
900 about to describe will perform equally on any 32-bit MS Windows
901 environment with 32 Mb of memory.
902
903 Because of the changes that have recently been made to the core
904 "cluster.pl" module and the introduction of a very lightweight
905 "winclient.pl", I have a sneaking suspicion that this will now
906 run on any platform that has reasonably complete support for
907 Perl. Is there someone out there with both an enquiring mind and
908 (say) a Macintosh, for instance?
909
910 Please bear in mind, though, that my instructions relate solely
911 to how to get this going under a Microsoft Windows environment,
912 and I have zero intention of trying to make them say otherwise.
913
914 <sect1>Perl
915
916 <P>
917 Install your chosen Perl environment. Unless you have a very good
918 reason for not doing so, I strongly suggest that you use
919 ActivePerl v5.6. For my testing & development, I used build 623.
920 You can get this from:- <htmlurl
921 url="http://www.activestate.com/Products/ActivePerl/Download.html"
922 name="http://www.activestate.com/Products/ActivePerl/Download.html">
923
924 You will need to choose either the MSI or the AS package. My
925 recommendation is that you choose the MSI package and deal with
926 the consequences if your system isn't equipped with support for
927 the latest MS Installer; you'll be better off in the long run.
928 The build 623 download is 7,460 KB, so now is a really good time
929 to have some tea if you're on a slow dial-up connection.
930
931 During installation, please ensure that you do choose the options
932 to "Add Perl to the PATH environment variable" and "Create Perl
933 file extension association"; it will make your life so much
934 easier. Once the installation is finished, be sure to reboot your
935 PC. You probably won't be told anywhere else that this needs to
936 be done now, but it does. Really.
937
938 Once you've rebooted, open a "DOS box" (Start > Run > command
939 might do it, if you can't find it elsewhere) and from wherever it
940 lands, type PERL -v &lt;ENTER&gt; (it's better if that's a lower-case
941 'v', because an upper-case 'V' means something else. You should
942 be rewarded with some interesting information about your Perl
943 installation. If you're not, you must go back to the beginning
944 and discover what went wrong and fix it. It's pointless to
945 proceed unless this simple check is passed. Assuming it did work,
946 you may now move on.
947
948 <sect1>Additional packages
949
950 <P>
951 Some extensions ("packages") need to be added to the base Perl
952 distribution, and we'll do this next. If you're using the Perl I
953 recommended, and don't know any better for yourself, then just
954 blindly following these instructions will work just fine. If that
955 didn't describe you, then you're on your own.
956
957 Visit the following URL:
958
959 <htmlurl url="http://www.activestate.com/PPMPackages/zips/6xx-builds-only/"
960 name="http://www.activestate.com/PPMPackages/zips/6xx-builds-only/">
961
962 and download the following files:-
963
964 <tscreen><verb>
965 Data-Dumper.zip
966 Net-Telnet.zip
967 TimeDate.zip
968 Time-HiRes.zip
969 DB_File.zip
970 </verb></tscreen>
971
972 Make yourself a convenient directory to unpack all of these zip
973 files into (I put mine in "D:\ppm>") and do the following (the
974 bits you type in are blue ). Note that where these files land
975 will be directly related to where you chose to install your
976 ActivePerl (mine, as you can probably guess from what follows,
977 went into "D:\Perl"):-
978
979 <tscreen><verb>
980 D:\ppm>ppm install Data-Dumper.ppd
981 Installing package 'Data-Dumper.ppd'
982 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.bs
983 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.dll
984 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.exp
985 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.lib
986 Installing D:\Perl\html\site\lib\auto\Data\Dumper\Dumper.html
987 Installing D:\Perl\site\lib\Data\Dumper\Dumper.pm
988 Writing D:\Perl\site\lib\auto\Data\Dumper\Dumper.packlist
989 D:\ppm>
990 </verb></tscreen>
991
992 I'm not going to bother you with exhaustive details of the rest
993 of them, but suffice it to say you need to:
994
995 <tscreen><verb>
996 ppm install DB_File.ppd
997 ppm install Net-Telnet.ppd
998 ppm install TimeDate.ppd
999 ppm install Time-HiRes.ppd
1000 </verb></tscreen>
1001
1002 If all that seemed to work OK, time to move along. Before anyone
1003 who is familiar with PPM tells me that we didn't need to download
1004 and keep those files locally, I knew that. I also knew that PPM
1005 is sometimes awkward to configure via firewalls, and that
1006 sometimes the repositories don't always work the way we'd hope. I
1007 do it that way because it suits me.
1008
1009 <sect1>Getting Spider
1010
1011 <P>
1012 Get the current version of the DX Spider distribution. This needs
1013 to be v1.47 or later. You've got two ways (currently) of getting
1014 this; either get a CVS update from sourceforge (if you don't know
1015 what this is, then it isn't for you) or get my package from:-
1016
1017 <htmlurl url="http://www.dcc.rsgb.org/WinSpider.zip" name="http://www.dcc.rsgb.org/WinSpider.zip">
1018
1019 or if you want the lastest CVS version (which is produced every night)
1020
1021 <htmlurl url="http://www.dxcluster.org/download/CVSlatest.tgz" name="http://www.dxcluster.org/download/CVSlatest.tgz">
1022
1023 If you went down the CVS route, then everything will be nicely
1024 set out on your local disk. If you got the ZIP file, unpack it to
1025 somewhere convenient. The following examples assume that you put
1026 it on drive "C:\", for convenience.
1027
1028 <bf>NOTE:</bf> This distribution method will go away as soon as the first
1029 v1.47 tarball is released. You can use WinZip to unpack that, and
1030 my life will be made easier by not needing to keep this .ZIP file
1031 updated.
1032
1033 <sect>Installing the software
1034
1035 <P>
1036 Ensure that your CVS session or your unZIPped file have left you
1037 with a directory "C:\spider\local"; if not, go to "C:\spider\"
1038 and create one. If "C:\spider" is missing, go back and figure out
1039 why, because it shouldn't be.
1040
1041 Now create your own local copy of the DXVars.pm file by:-
1042
1043 <tscreen><verb>
1044 copy c:\spider\perl\DXVars.pm.issue
1045 c:\spider\local\DXVars.pm
1046 </verb></tscreen>
1047
1048 Now you'll need to edit this file using a text editor. If nothing
1049 else, you can simply
1050
1051 <tscreen><verb>
1052 cd \spider\local
1053 </verb></tscreen>
1054
1055 and then
1056
1057 <tscreen><verb>
1058 notepad DXVars.pm
1059 </verb></tscreen>
1060
1061 to bring up an editor window containing the file. As an absolute
1062 minimum you must adjust the following items in DXVars.pm:-
1063
1064 <itemize>
1065 <item> $mycall  - Should hold the callsign of your DX Cluster
1066 <item> $myname  - The SysOp's first name
1067 <item> $myalias - the SysOp's callsign. Cannot be the same as $mycall!
1068 </itemize>
1069
1070 You really also ought to update the $mylatitude, $mylongitude,
1071 $myqth and $myemail variables. And unless you are absolutely
1072 certain you know what you're doing, you should change nothing
1073 else in this file.
1074
1075 <sect1>The AGW packet engine
1076
1077 <P>
1078 On the assumption that you'll be using the SV2AGW Packet Engine
1079 to interface your radios to the cluster, you should now create
1080 your own local copy of AGWConnect.pm by:-
1081
1082 <tscreen><verb>
1083 copy c:\spider\perl\AGWConnect.pm
1084 c:\spider\local\AGWConnect.pm
1085 </verb></tscreen>
1086
1087 and then
1088
1089 <tscreen><verb>
1090 notepad AGWConnect.pm
1091 </verb></tscreen>
1092
1093 to bring up an editor window containing the file. You must
1094 consider adjusting the following items in AGWConnect.pm:-
1095
1096 <itemize>
1097 <item>$enable - set to '1' to enable AGWPE interface 
1098 <item>$login  - the login ID you chose when you set up the SV2AGW security :-)
1099 <item>$passwd - password that matches $login
1100 </itemize>
1101
1102 <sect1>Setting up the initial user files
1103
1104 <P>
1105 Next you need to create the initial user files, etc. A tool is
1106 supplied which will do this for you. To run the tool:-
1107
1108 <tscreen><verb>
1109 cd \spider\perl
1110 perl create_sysop.pl
1111 </verb></tscreen>
1112
1113 If all goes according to plan, you will see no output from this
1114 program, and after a brief wait, your DOS prompt will be
1115 returned.
1116
1117 Depending on how brave you are, you might now care to try the
1118 following:-
1119
1120 <tscreen><verb>
1121 perl cluster.pl
1122 </verb></tscreen>
1123
1124 If you did everything you were told, your DOS window will now
1125 hold a display which looks something like:-
1126
1127 <tscreen><verb>
1128 DXSpider DX Cluster Version 1.47
1129 Copyright (c) 1998-2001 Dirk Koopman G1TLH
1130 loading prefixes ...
1131 loading band data ...
1132 loading user file system ...
1133 starting listeners ...
1134 Internal port: localhost 27754
1135 load badwords: Ok
1136 reading in duplicate spot and WWV info ...
1137 reading existing message headers ...
1138 load badmsg: Ok
1139 load forward: Ok
1140 load swop: Ok
1141 @msg = 0 before delete
1142 @msg = 0 after delete
1143 reading cron jobs ...v cron: reading /spider/cmd/crontab
1144 cron: adding 1 0 * * 0
1145 DXUser::export("$main::data/user_asc")
1146 reading database descriptors ...
1147 doing local initialisation ...
1148 orft we jolly well go ...
1149 queue msg (0)
1150 </verb></tscreen>
1151
1152 Now, if that's what you've got, you are very nearly home and dry
1153 (in as far as these particular experiments are concerned, anyhow)
1154
1155 To access your new cluster (from the local machine) find yourself another
1156 "DOS box" and do the following:-
1157
1158 <tscreen><verb>
1159 cd \spider\perl
1160 perl winclient.pl
1161 </verb></tscreen>
1162
1163 If you are rewarded with a display which looks something like:-
1164
1165 <tscreen><verb>
1166 Hello Iain, this is GB7SJP in Amersham, Bucks running DXSpider V1.47
1167 Cluster: 1 nodes, 1 local / 1 total users Max users 2 Uptime 0 00:00
1168 M0ADI de GB7SJP 4-Mar-2001 1511Z >
1169 </verb></tscreen>
1170
1171 You've arrived. Try some commands, and see how they feel. (In
1172 case you were wondering, "Iain", "M0ADI" and "GB7SJP" all came
1173 from the version of DXVars.pm that was on the machine when I
1174 started the winclient.pl)
1175
1176 <sect1>Incoming telnets
1177
1178 <P>
1179 If you want to enable inbound "TELNET" connections, you've got a
1180 little more work to do. From a handy "DOS box" that's not doing
1181 anything else, do the following:-
1182
1183 <tscreen><verb>
1184 copy \spider\perl\listeners.pm \spider\local
1185 cd \spider\local
1186 notepad listeners.pm
1187 </verb></tscreen>
1188
1189 The following lines need attention:-
1190
1191 <tscreen><verb>
1192 ["0.0.0.0", 7300],
1193 </verb></tscreen>
1194
1195 On my machine, I've simply uncommented the "0.0.0.0" entry by
1196 removing the '#' from the front of the line. 
1197
1198 If you don't have a static hostname for your machine, and you
1199 intend to allow folk to connect to your machine across the
1200 internet, then I'd suggest you pay a visit to www.dyndns.org and
1201 create one for yourself. While it's free, it will take a modest
1202 an amount of effort on your part to read, understand and
1203 implement what needs to be done to set this up.
1204
1205 <sect1>Connecting to other clusters
1206
1207 <P>
1208 If you want to connect this to another cluster, then you'll want
1209 to negotiate a link with someone. For experimental purposes, I'm
1210 happy to allow folk to connect to GB7DXA (spud.ath.cx), on the
1211 understanding that the system may or may not be there and may or
1212 may not be connected to anything particularly useful at any given
1213 moment. Contact me by Email if you want me to set up a connection
1214 for you.
1215
1216 <sect>General Information
1217
1218 <P>
1219 The following relates to all versions of DXSpider and is not platform related.
1220
1221 <sect1>The crontab file
1222
1223 <P>
1224 Login as <em>sysop</em> and create a file in /spider/local_cmd called crontab.  
1225 Edit it with your favourite editor and add a line like this (I have included 
1226 a comment)
1227
1228 <tscreen><verb>
1229 # check every 10 minutes to see if gb7xxx is connected and if not
1230 # start a connect job going
1231
1232 0,10,20,30,40,50 * * * * start_connect('gb7xxx') if unless connected('gb7xxx')
1233 </verb></tscreen>
1234
1235 <P>
1236 The callsign involved will be the callsign of the cluster node you are 
1237 going to connect to.  This will now check every 10 minutes to see if 
1238 gb7xxx is connected, if it is then nothing will be done.  If it is not, 
1239 then a connect attempt will be started.
1240
1241 <P>
1242 There are probably lots of other things you could use this crontab file for.  
1243 If you want to know more about it, look at the
1244 <htmlurl url="http://www.dxcluster.org/cron.html" name="DXSpider"> website 
1245 at the cron page where it is explained more fully.
1246
1247 </article>