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