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