Add changes to the installation manual for Windows users from K1XX
[spider.git] / sgml / installation.sgml
1 <!doctype linuxdoc system>
2
3 <article>
4
5 <!-- Title information -->
6
7 <title>The DXSpider Installation Manual v1.50</title> 
8 <author>Iain Philipps, G0RDI (g0rdi@77hz.com),
9 Ian Maude, G0VGS, (g0vgs@gb7mbc.net) and Charlie
10 Carroll, K1XX, (k1xx@ptcnh.net)</author>
11 <date>September 2002 revision 0.4</date>
12
13 <abstract>
14 A reference for SysOps of the DXSpider DXCluster program.
15 </abstract>
16
17 <!-- Table of contents -->
18 <toc>
19
20 <!-- Begin the document -->
21
22 <sect>Linux Installation 
23
24 <sect1>Introduction
25
26 <P>
27 This section describes the installation of DX Spider v1.50 on a 
28 <htmlurl url="http://www.redhat.com" name="RedHat"> Linux Distribution.
29 Wherever possible I will try to include differences for other distributions.  
30
31 <P>
32 I am assuming a general knowledge of Linux and its commands.  You should 
33 know how to use <em>tar</em> and how to edit files using your favourite editor.
34
35 <P>
36 The crucial ingredient for all of this is 
37 <htmlurl url="http://www.perl.org" name="Perl">.  Earlier versions of
38 Spider required perl 5.004, however it is now <it>STRONGLY</it> recommended
39 that you use at least version 5.005_03 as this is the version being used
40 in the development of Spider.
41
42 <P>
43 In addition to the standard Red Hat distribution you will require the 
44 following modules from <htmlurl url="http://www.cpan.org/modules/by-module/" name="http://www.cpan.org/modules/by-module/"> , please note however that with later versions of perl, some of these
45 modules may be included with the distribution.  Get the modules anyway and try
46 to install as below.  If they complain, they are probably already a part of your
47 perl distribution.
48
49 <P>
50 <itemize>
51 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Data/Data-Dumper-2.10.tar.gz" name="Data-Dumper-2.10.tar.gz">
52 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Date/TimeDate-1.10.tar.gz" name="TimeDate-1.10.tar.gz">
53 <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)">
54 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Net/Net-Telnet-3.02.tar.gz" name="Net-Telnet-3.02.tar.gz">
55 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Curses/Curses-1.06.tar.gz" name="Curses-1.06.tar.gz">
56 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Time/Time-HiRes-01.20.tar.gz" name="Time-HiRes-01.20.tar.gz">
57 <item> <htmlurl url="http://www.cpan.org/modules/by-module/Digest/Digest-SHA1-2.01.tar.gz" name="Digest-SHA1-2.01.tar.gz">
58 </itemize>
59
60 <P>
61 Copy the CPAN modules listed above to a convenient place on your computer. One good 
62 place would be /usr/local/packages, and the instructions which follow will assume that 
63 that's where you have put them.
64
65 <P>
66 Log in as 'root', and make sure you're at '/root' before you continue. Here are exactly the commands you must issue next: -
67
68 <verb>
69 # tar xvfz /usr/local/packages/Data-Dumper-2.10.tar.gz
70 # cd Data-Dumper-2.10
71 # perl Makefile.PL
72 # make test
73 # make install
74 # cd ..
75 #
76 # tar xvfz /usr/local/packages/TimeDate-1.10.tar.gz
77 # cd TimeDate-1.10
78 # perl Makefile.PL
79 # make test
80 # make install
81 # cd ..
82 #
83 # tar xvfz /usr/local/packages/IO-1.20.tar.gz
84 # cd IO-1.20
85 # perl Makefile.PL
86 # make test
87 # make install UNINST=1
88 # cd ..
89 #
90 # tar xvfz /usr/local/packages/Net-Telnet-3.02.tar.gz
91 # cd Net-Telnet-3.02
92 # perl Makefile.PL
93 # make test
94 # make install
95 # cd ..
96 #
97 # tar xvfz /usr/local/packages/Curses-1.06.tar.gz
98 # cd Curses-1.06
99 # perl Makefile.PL
100 # make test
101 # make install
102 # cd ..
103 #
104 # tar xvfz /usr/local/packages/Time-HiRes-01.20.tar.gz 
105 # cd Time-HiRes-01.20
106 # perl Makefile.PL
107 # make test
108 # make install
109 # cd ..
110 #
111 # tar xvfz /usr/local/packages/Digest-SHA1-2.01.tar.gz
112 # cd Digest-SHA1-2.01
113 # perl Makefile.PL
114 # make test
115 # make install
116 # cd ..
117 </verb>
118
119 <P>
120 Do not fall into the trap of thinking they're all the same, just because they 
121 nearly are! Pay particular attention to the instructions of <em>IO</em>, above.
122
123
124 <sect1>Preparation
125
126 <P>
127 I will assume that you have already downloaded the latest tarball of 
128 the DXSpider software and are ready to install it. I am assuming version 
129 1.50 for this section but of course you would use the latest version.
130
131 <P>
132 Login as root and create a user to run the cluster under.  <bf><it>UNDER 
133 NO CIRCUMSTANCES USE ROOT AS THIS USER!</it></bf>.  I am going to use 
134 the name <em>sysop</em>.  You can call it anything you wish.  Depending 
135 on your security requirements you may wish to use an existing user, 
136 however this is your own choice.
137
138 <tscreen><verb>
139 # adduser -m sysop
140 </verb></tscreen>
141
142 <P>
143 For SuSE distributions, the command would be ..
144
145 <tscreen><verb>
146 # useradd -m sysop
147 </verb></tscreen>
148
149 <P>
150 Now set a password for the user ...
151
152 <tscreen><verb>
153 # passwd sysop
154 # New UNIX password:
155 # Retype new UNIX password:
156 passwd: all authentication tokens updated successfully
157 </verb></tscreen>
158
159 <sect1>Installing the software
160
161 <P>
162 Now to unpack the DX Spider distribution, set symbolic links and group 
163 permissions.  Copy the tarball to /home/sysop and do the following.
164
165 <tscreen><verb>
166 # cd ~sysop
167 # tar xvfz spider-1.50.tar.gz
168 # ln -s ~sysop/spider /spider
169 # groupadd -g 251 spider       (or another number)
170 </verb></tscreen>
171
172 <P>
173 If you do not have the command <em>groupadd</em> available to you simply 
174 add a line in /etc/group by hand.
175
176 <tscreen><verb>
177 # vi /etc/group                (or your favorite editor)
178 </verb></tscreen>
179
180 <P>
181 You also need to add some others to the group, including your own callsign 
182 (this will be used as an alias) and root.  The finished line in /etc/group 
183 should look something like this
184
185 <tt>
186 spider:x:251:sysop,g0vgs,root
187 </tt>
188
189 <P>
190 The next step is to set the permissions on the Spider directory tree and files ....
191
192 <tscreen><verb>
193 # chown -R sysop.spider spider
194 # find . -type d -exec chmod 2775 {} \;
195 # find . -type f -exec chmod 775 {} \;
196 </verb></tscreen>
197
198 <P>
199 This last step allows various users of the group <em>spider</em> to have 
200 write access to all the directories.  This is not really needed just yet 
201 but will be useful when web interfaces start to appear.
202
203 <P>
204 Finally, you need to fix the permissions on the ax25_call and netrom_call 
205 programs.  Check where they are with the <em>locate</em> command and alter 
206 the permissions with the <em>chmod</em> command like this ..
207
208 <tscreen><verb>
209 # chown root ax25_call netrom_call
210 # chmod 4775 ax25_call netrom_call
211 </verb></tscreen>
212
213 <sect1>Setting callsigns etc
214
215 <P>
216 Now login to your machine as the user you created earlier.  In my case that 
217 user is called <em>sysop</em>.  Once logged in, issue the following commands ....
218
219 <tscreen><verb>
220 $ cd /spider
221 $ mkdir local
222 $ mkdir local_cmd
223 $ cp perl/DXVars.pm.issue local/DXVars.pm
224 $ cd local
225 $ vi DXVars.pm (or your favourite editor)
226 </verb></tscreen>
227
228 <P>
229 Using the distributed DXVars.pm as a a template, set your cluster callsign, 
230 sysop callsign and other user info to suit your own environment. 
231
232 <tscreen><verb>
233 $mycall = "GB7DJK";     
234 </verb></tscreen>
235
236 <P>
237 This is the call sign of your cluster.  If you use an SSID then include it here
238 also.
239
240 <tscreen><verb>
241 $myalias = "G1TLH";
242 </verb></tscreen>
243
244 <P>
245 This is the sysop user callsign, normally your own.
246
247 <P>
248 <bf>PLEASE USE CAPITAL LETTERS FOR CALLSIGNS</bf>
249
250 <P>
251 Note that this a perl file which will be parsed and executed as part of the 
252 cluster. If you get it wrong then perl will complain when you start the cluster 
253 process.  It is important only to alter the text of any section.  Some of the 
254 lines look a little odd.  Take this line for example ....
255
256 <tt>
257 $myemail = "ianmaude\@btinternet.com";
258 </tt>
259
260 <P>
261 There appears to be an extra slash in there.  However this has to be there 
262 for the file to work so leave it in.
263                 
264 <P>
265 DON'T alter any file in /spider/perl, they are overwritten with every
266 release. Any files or commands you place in /spider/local or /spider/local_cmd 
267 will automagically be used in preference to the ones in /spider/perl EVEN 
268 while the cluster is running!
269
270 <P>
271 Save the new file and change directory to ../perl ....
272
273 <tscreen><verb>
274 $ cd ../perl
275 </verb></tscreen>
276
277 <P>
278 Now type the following command which creates the basic user file with you as 
279 the sysop.
280
281 <tscreen><verb>
282 $ ./create_sysop.pl
283 </verb></tscreen>
284
285 <sect1>The client program
286
287 <P>
288 In earlier versions of Spider, all the processes were Perl scripts.  This
289 was fine but with a lot of users your computer memory would soon be used up.
290 To combat this a new client was written in "C".  This client only works for
291 <em>incoming</em> connects at the moment.  Before you can use it though it
292 has to be "made".  CD to /spider/src and type <em>make</em>.  You
293 should see the output on your screen and hopefully now have a small C program
294 called <em>client</em>.  Leave it in this directory.
295
296
297 <sect1>Starting up for the first time
298
299 <P>
300 We can now bring spider up for the first time and see if all is well or not!  
301 It should look something like this ...
302
303 <tscreen><verb>
304 $ ./cluster.pl
305 DXSpider DX Cluster Version 1.50
306 Copyright (c) 1998 Dirk Koopman G1TLH
307 loading prefixes ...
308 loading band data ...
309 loading user file system ...
310 starting listener ...
311 reading existing message headers
312 reading cron jobs
313 orft we jolly well go ...
314 </verb></tscreen>
315
316 <P>
317 If all is well then login on another term or console as <em>sysop</em> and 
318 cd to /spider/src.  Now issue the following command ...
319
320 <tscreen><verb>
321 $ ./client
322 </verb></tscreen>
323
324 <P>
325 This should log you into the cluster as the sysop under the alias callsign we 
326 set earlier.  In this case the callsign is G0VGS.  The cluster callsign is set 
327 in the DXVars.pm file in /spider/local.  In this case we will assume that this 
328 was set as GB7MBC.  You should therefore see this when you login ....
329
330 <tscreen><verb>
331 G0VGS de GB7MBC 19-Nov-1999 2150Z >
332 </verb></tscreen>
333
334 <P>
335 If you do, congratulations!  If not, look over the instructions again, you 
336 have probably missed something out.  You can shut spider down again with the 
337 command ....
338
339 <tscreen><verb>
340 shutdown
341 </verb></tscreen>
342
343 <P>
344 and both the cluster and the client should return to Linux prompts.
345
346
347 <sect>Linux quick installation guide
348
349 <P>
350 This section is designed for experienced Spider sysops who want to install
351 Spider from scratch.  It is simply a check list of things that need to be
352 done without any explanations.  The name in brackets at the end of each line
353 is the user that should be doing that process.
354
355 <itemize>
356 <item>Login as root
357 <item>Get the additional CPAN modules and install them (root)
358 <item>Create the "sysop" user and set a password (root)
359 <item>Put the Spider tarball in ~sysop and untar it (root)
360 <item>ln -s ~sysop/spider /spider (root)
361 <item>groupadd -g 251 spider (root)
362 <item>Add any more users you need to the group entry in /etc/group (root)
363 <item>Set the permissions on the spider tree (root)
364 <item>Fix permissions on ax25_call and netrom_call (root)
365 <item>Login as the sysop user
366 <item>cd to /spider (sysop)
367 <item>mkdir local (sysop)
368 <item>mkdir local_cmd (sysop)
369 <item>cp perl/DXVars.pm.issue local/DXVars.pm (sysop)
370 <item>cd to /spider/local and edit DXVars to set your details (sysop)
371 <item>cd ../perl (sysop)
372 <item>./create_sysop.pl (sysop)
373 <item>./cluster.pl (sysop)
374 </itemize>
375
376 <P>
377 Spider should now be running and you should be able to login using the
378 client program.
379
380 <itemize>
381 <item>Login as root
382 <item>Enter the correct line in ax25d.conf (root)
383 <item>Enter the correct line in /etc/services (root)
384 <item>Enter the correct line in /etc/inetd.conf (root)
385 <item>killall -HUP inetd (root)
386 </itemize>
387
388 <P>
389 Spider should now be able to accept logins via telnet, netrom and ax25.
390
391 <itemize>
392 <item>Login as sysop
393 <item>Start the cluster (sysop)
394 <item>set/node and type for links (sysop)
395 <item>Write any connect scripts (sysop)
396 <item>Edit /spider/crontab as required (sysop)
397 <item>Edit any other files as necessary (sysop)
398 <item>Set filters, hops and forwarding files (sysop)
399 <item>Login as root
400 <item>Enter the correct line in /etc/inittab (root)
401 </itemize>
402
403 <sect>Setting up the AX25 Utilities
404
405 <P>
406 The aim of this section is not to fully cover the installation
407 and configuration of all the possible ax25 modules.  I will
408 attempt to cover a simple installation and configure 2 serial
409 ports as if they had TNC's on them.  I will also show what
410 additional configuration the DXSpider program requires.
411
412 <P>
413 Please bear in mind that I am basing this section on a RedHat
414 7.1 distribution, if you are using SuSe or any other distibution
415 then your mileage may vary.  I will be happy to make any changes
416 and additions if you email me any errors or distribution specific
417 requirements.
418
419 <P>
420 You would probably benefit from reading the <htmlurl url="http://www.fokus.gmd.de/linux/HOWTO/html_single/AX25-HOWTO.html#AEN151" name="AX25-HOWTO"> which is much more
421 comprehensive and an interesting configuration program is also available
422 called <htmlurl url="http://1409.org/projects/index.html" name="ax25-config"> which
423 may help you to configure things.
424
425 <P>
426 The following files are extracts from the working files at GB7MBC and
427 are in daily use.  However, there are many ways that you can configure the
428 ax25 utils, this is just the one I use, it does not mean it is necessarily
429 the best or for that matter, the right way!
430
431 <sect1>Getting Started
432
433 <P>
434 There are 2 things you need to do initially.  You need to get the
435 3 files required for the ax25 installation and you need to make
436 some changes to the kernel configuration.
437
438 <P>
439 The first thing is to get the versions of the ax25 utils that match
440 your kernel.  You may also wish to get a node package of some kind.
441 There are 2 main node packages in use of which I shall keep to the
442 original by Tomi Manninen, OH2BNS as this is included in the ax25
443 rpms as standard.  The other is <htmlurl url="ftp://ftp.funet.fi/pub/ham/packet/linux/awznode/" name="AWZNode"> by IZ5AWZ.
444
445 <P>
446 NB: The AX25 stuff in 2.4 kernels appears to have been broken until 2.4.18.  I
447 strongly suggest you get at least this kernel.
448
449 <P>
450 For 2.4 kernels you need these files...
451
452 <P>
453 <itemize>
454 <item> <htmlurl url="ftp://ftp.rpmfind.net/linux/redhat/7.1/en/powertools/i386/RedHat/RPMS/libax25-0.0.7-7.i386.rpm" name="libax25-0.0.7-7.i386.rpm">
455 <item> <htmlurl url="ftp://ftp.rpmfind.net/linux/redhat/7.1/en/powertools/i386/RedHat/RPMS/ax25-tools-0.0.6-13.i386.rpm" name="ax25-tools-0.0.6-13.i386.rpm">
456 <item> <htmlurl url="ftp://ftp.rpmfind.net/linux/redhat/7.1/en/powertools/i386/RedHat/RPMS/ax25-apps-0.0.4-9.i386.rpm" name="ax25-apps-0.0.4-9.i386.rpm">
457 </itemize>
458
459 <sect1>The kernel
460
461 <P>
462 First you need to add Amateur Radio Support to your kernel.  This is
463 a main menu item and should be easily found.  Within this header you
464 will find lots of options.  For our purposes you need to enable
465 Amateur Radio AX.25 Level 2 Protocol, NET/ROM and the Serial Port 
466 KISS Driver.  For the purposes of this document I will work under the
467 assumption that you include them in the kernel fully, ie not as modules.
468 If you need to look at compiling your kernel for ax25 more fully, I would
469 refer to the excellent 
470 <htmlurl url="http://www.fokus.gmd.de/linux/HOWTO/html_single/AX25-HOWTO.html#AEN151" name="AX25-HOWTO">
471
472 <P>
473 I should say at this stage that NET/ROM is not mandatory.  If you do not use it
474 simply ignore any instruction concerning it.
475
476 <P>
477 Now recompile your kernel in the normal way and reboot your system.
478
479 <sect1>Installing the RPM's
480
481 <P>
482 Now install the RPM's you downloaded, libax25 first, then ax25-tools,
483 then ax25-apps.
484
485 <tscreen><verb>
486 rpm -ivh libax25-0.0.7-7.i386.rpm
487 rpm -ivh ax25-tool-0.0.6-13.i386.rpm
488 rpm -ivh ax25-apps-0.0.4-9.i386.rpm
489 </verb></tscreen>
490
491 <sect1>Configuration
492
493 <P>
494 You will find the configuration files in /etc/ax25.  These consist of
495 several files ...
496
497 <itemize>
498 <item>axports
499 <item>nrports
500 <item>nrbroadcast
501 <item>ax25d.conf
502 <item>node.conf
503 </itemize>
504
505 <P>
506 These are the main files. You will find other files but they do not
507 have any use unless you are wanting to use that particular protocol,
508 Rose or axip for example.
509
510 <P>
511 NOTE:- before we start it is important to realise that every interface
512 requires a different SSID.  You should be able to follow this in the
513 following examples.
514
515 <sect1>axports
516
517 <P>
518 This file sets up the ax25 ports you want to use.  An example is below
519 for a standard TNC2 ...
520
521 <tscreen><verb>
522 #portname   callsign   baudrate   paclen   window   description
523  2m         gb7mbc-2   19200      256      2        2m port on 144.900MHz
524  4m         gb7mbc-4   19200      256      2        4m port on 70.325MHz
525 </verb></tscreen>
526
527 <P>
528 Note that the portnames have to be unique.
529
530 <P>
531 The file headings are as follows ...
532
533 <verb>
534 portname        -       The name you will refer to the port by
535 callsign        -       The ax25 callsign you want to assign to the port
536 baudrate        -       The speed you communicate between TNC and computer
537 paclen          -       The maximum packet length for ax25 connections
538 window          -       The ax25 window parameter.  This is like 'maxframe'
539 description     -       A textual description of the port
540 </verb>
541
542 <sect1>nrports
543
544 <P>
545 This file sets up the netrom ports you want to use.  An example is below
546 and includes a port for both cluster and node.  You will see why we need
547 2 ports later ...
548
549 <tscreen><verb>
550 #portname   callsign   alias   paclen   description
551  netrom     gb7mbc-8   BARE    236      Node Netrom Port
552  netrom2    gb7mbc-9   MBCDX   236      Cluster Netrom Port
553 </verb></tscreen>
554
555 <P>
556 Note that the portnames have to be unique.
557
558 <P>
559 The file headings are as follows ...
560
561 <verb>
562 portname        -       The name you will refer to the port by
563 callsign        -       This is the callsign that NET/ROM traffic from this
564                         port will use
565 alias           -       The NET/ROM alias this port will be assigned
566 paclen          -       The maximum size of NET/ROM frames transmitted
567 description     -       A textual description of the port
568 </verb>
569
570 <sect1>nrbroadcast
571
572 <P>
573 This file sets up the netrom broadcast qualities.  An example is below ...
574
575 <tscreen><verb>
576 #axport   min_obs   def_qual   worst_qual   verbose
577  4m       5         10         100          1
578 </verb></tscreen>
579
580 <P>
581 The file headings are as follows ...
582
583 <verb>
584 axport          -       The port name in axports that you wish to broadcast
585                         NET/ROM on.
586 min_obs         -       The minimum obsolescence value for the port
587 def_qual        -       The default quality for the port
588 worst_qual      -       The worst quality for the port.  Any routes under
589                         this quality will be ignored
590 verbose         -       This flag determines whether you will only broadcast
591                         your own node (0) or all known nodes (1)
592 </verb>
593
594 <sect1>ax25d.conf
595
596 <P>
597 This file controls any incoming ax25 and NET/ROM connections and steers
598 them to the relevant program.  There are lots of configuration options
599 you can set here, however they are well covered in the AX25-HOWTO.  For
600 our purposes I will show a typical set of parameters.  An example is 
601 below ...
602
603 <tscreen><verb>
604 [gb7mbc-0 via 2m]
605 parameters    2 1   6  900 *  15  0
606 NOCALL *  *  *  *  *  *  L
607 default  * * * * * *  - sysop /spider/src/client client %u ax25
608
609 [gb7mbc-1 via 2m]
610 parameters    2 1   6  900 *  15  0
611 NOCALL *  *  *  *  *  *  L
612 default *  *  *  *  *  *  0  root  /usr/sbin/node  node
613
614 [gb7mbc-0 via 4m]
615 parameters    2 1   6  900 *  15  0
616 NOCALL *  *  *  *  *  *  L
617 default  * * * * * *  - sysop /spider/src/client client %u ax25
618
619 [gb7mbc-1 via 4m]
620 parameters    2 1   6  900 *  15  0
621 NOCALL *  *  *  *  *  *  L
622 default *  *  *  *  *  *  0  root /usr/sbin/node  node
623
624 <netrom2>
625 parameters 1    10 * * * 3 *
626 NOCALL *  *  *  *  *  *  L
627 default  * * * * * *  - sysop /spider/src/client client %u ax25
628
629 <netrom>
630 parameters 1    10 * * * 3 *
631 NOCALL *  *  *  *  *  *  L
632 default *  *  *  *  *  *  0  root  /usr/sbin/node  node
633 </verb></tscreen>
634
635 <P>
636 There are a few things to take note of here.  Firstly, all ax25
637 sections are wrapped in [ ] and all NET/ROM sections are wrapped in
638 &lt; &gt;.  Secondly you should be able to see that anyone who forgets to
639 set their callsign in a TNC and tries to connect with the standard
640 NOCALL set into their TNC will not connect, the 'L' means 'lockout'.
641 Lastly and importantly, notice the order of the sections.  They are
642 all done in interface order.
643
644 <P>
645 You should be able to see that the normal line for access to the
646 cluster is like this ..
647
648 <tscreen><verb>
649 default  * * * * * *  - sysop /spider/src/client client %u ax25
650 </verb></tscreen>
651
652 <P>
653 however, if you wish your users to be able to use SSID's on their callsigns ..
654
655 <tscreen><verb>
656 default  * * * * * *  - sysop /spider/src/client client %s ax25
657 </verb></tscreen>
658
659 <P>
660 For most purposes this is not desirable. The only time you probably will
661 need this is when you need to allow other cluster nodes that are using SSID's
662 in. In this case it would probably be better to use the first example and
663 then add a specific line for that node like this:
664
665 <tscreen><verb>
666 GB7DJK-2  * * * * * *  - sysop /spider/src/client client gb7djk-2 ax25
667 default  * * * * * *  - sysop /spider/src/client client %u ax25
668 </verb></tscreen>
669
670 <sect1>node.conf
671
672 <P>
673 For those of you that wish to run the node, you need to set up the
674 node.conf file.  There are a couple of additional files, node.perms is
675 very similar to the way ftp permissions are set up in NOS systems and 
676 node.motd is the message anyone logging into the node will get.
677 The node.conf file sets all the parameters of the node as you would
678 expect.  An example is below ...
679
680 <tscreen><verb>
681 # /etc/ax25/node.conf - LinuxNode configuration file
682 #
683 # see node.conf(5)
684
685 # Idle timeout (seconds).
686 #
687 IdleTimeout     1800
688
689 # Timeout when gatewaying (seconds).
690 #
691 ConnTimeout     40000
692
693 # Visible hostname. Will be shown at telnet login.
694 #
695 HostName        gb7mbc.ampr.org
696
697 # ReConnect flag.
698
699 ReConnect       off
700
701 # "Local" network.
702 #
703 #LocalNet       44.139.8.48/32
704
705 # Command aliases. See node.conf(5) for the meaning of the uppercase
706 # letters in the name of the alias.
707 #
708 ##Alias         CAllbook 'telnet %{2:44.17.0.53} 1235 %1 s'
709 #Alias          CONVers  'telnet %{2:oh2ti} 3600 "/n %u %{1:139}\n/w *"'
710 #Alias          CLuster  'c hkiclh'
711 Alias           CONV    "telnet lurpac 3600"
712 Alias           BBS     "c 70cm gb7crv"
713 Alias           DXC     "telnet localhost 9000"
714 Alias           MUD     "telnet homer 4000"
715 ##Alias           TEMP    "finger temp@mary.g6phf"
716 ##Alias           TNOS    "c ip1 gb7mbc-5"
717 ##Alias           TUtor   "telnet gb7mbc 3599"
718                                           
719 # Hidden ports.
720 #
721 #HiddenPorts    2
722
723 # External commands. See node.conf(5) for the meaning of the uppercase
724 # letters in the name of the extcmd.
725 #
726 # Flags:        1       Run command through pipe
727 #               2       Reconnected flag
728 #
729 #ExtCmd         TPM     3       nobody  /usr/bin/finger finger tpm
730 #ExtCmd         ECho    1       nobody  /bin/echo echo \%U \%u \%S \%s \%P \%p \%R \%r \%T \%t \%\% \%0 \%{1:foobar} \%{2} \%3 \%4 \%5
731
732 # Node ID.
733 #
734 NodeId          "\nBARE:GB7MBC-1"
735 #NodeId         \033[01;31m***\033[0m
736
737 # Netrom port name. This port is used for outgoing netrom connects.
738 #
739 NrPort          netrom
740
741 # Logging level
742 #
743 LogLevel        3
744
745 # The escape character (CTRL-T)
746 #
747 EscapeChar      ^T
748
749 # Resolve ip numbers to addresses?
750 #
751 ResolveAddrs    off
752
753 # Node prompt.
754 #
755 #NodePrompt     "\n"
756 #NodePrompt     "%s@%h \%i> "
757 NodePrompt      "\nBARE:GB7MBC-1 \%i > "
758 #NodePrompt     "\a\033[36m%U\033[0m de \033[01;32m#LNODE\033[0m:\033[01;33mOH2BNS-10\033[0m> "
759 </verb></tscreen>
760
761 <P>
762 This should be fairly obvious I hope.
763
764 <sect1>Getting it all running
765
766 <P>
767 Ok, now we have all the relevant files configured, the next step is to get
768 it all running.
769
770 <P>
771 The first thing to do is attach the TNC's.  Your TNC's should be in KISS mode
772 and connected to the serial ports involved.
773
774 <P>
775 You now use the 'kissattach' command to connect the TNC's to the system like this ...
776
777 <tscreen><verb>
778 kissattach /dev/ttyS0 2m 44.131.96.199
779 kissattach /dev/ttyS1 4m 44.131.96.199
780 </verb></tscreen>
781
782 <P>
783 Assuming that 44.131.96.199 is your IP address.  The devices ttyS0 and ttyS1 are com1 and
784 com2 respectively.  Now we can set some parameters ...
785
786 <tscreen><verb>
787 kissparms -p 2m -t 150 -l 150 -s 50 -r 50
788 kissparms -p 4m -t 150 -l 150 -s 50 -r 50
789 </verb></tscreen>
790
791 <P>
792 The command 'man kissparms' will give you the explanation of the switches.
793
794 <P>
795 Now we need to attach the NET/ROM ports in the same way ...
796
797 <tscreen><verb>
798 nrattach netrom
799 nrattach netrom2
800 </verb></tscreen>
801
802 <P>
803 All of the above can be put in a file and called from /etc/rc.d/rc.local.  Put all
804 the above commands in a file called rc.ax25 and put a line in rc.local to call it.
805
806 <P>
807 Now you can start the daemons that set everything in motion ...
808
809 <tscreen><verb>
810 ax25d
811 netromd -i
812 </verb></tscreen>
813
814 <P>
815 All should now be running.  All that remains is to get the node working for telnet
816 connections.  If nothing else, this will allow you to connect to the node yourself
817 to check on connection status etc.  There are 2 files that need to be edited.
818
819 <P>
820 First edit /etc/services and add
821
822 <tscreen><verb>
823 node    3000/tcp     #OH2BNS's Node Software
824 </verb></tscreen>
825
826 <P>
827 Assuming you want it to run on port 3000
828
829 <P>
830 Now cd /etc/xinetd.d and edit a new file called node.  It should look like this ...
831
832 <tscreen><verb>
833 # default: on
834 #       unencrypted username/password pairs for authentication.
835 service node
836 {
837         socket_type     = stream        
838         wait            = no
839         user            = root
840         server          = /usr/sbin/node
841         log_on_failure  += USERID
842         disable         = yes
843 }
844 </verb></tscreen>
845
846 <P>
847 You now need to restart the xinetd daemon.  First find out what the PID is
848 like so ..
849
850 <tscreen><verb>
851 ps auxw |grep xinetd
852 </verb></tscreen>
853
854 <P>
855 You will get a reply something like this ...
856
857 <tscreen><verb>
858 root       592  0.0  0.1  2256  620 ?        S    Feb07   0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
859 </verb></tscreen>
860
861 <P>
862 The PID or Process ID is 592 in this case so now we can issue the command ...
863
864 <tscreen><verb>
865 kill -HUP 592
866 </verb></tscreen>
867
868 <P>
869 All should now be operational and you should be able to log into the node by
870 using a telnet session to the relevant port, like so ...
871
872 <tscreen><verb>
873 telnet localhost 3000
874 </verb></tscreen>
875
876 <P>
877 If that works, you are just about there.  you should (assuming you have radios connected
878 to the TNC's) be able to connect out to other stations and receive incoming ax25 and
879 netrom connections.
880
881 <sect>Configuration
882
883 <sect1>Allowing ax25 connects from users
884
885 <P>
886 This is dealt with in the previous section
887  
888 <sect1>Allowing telnet connects from users 
889
890 <P> 
891 >From version 1.47 there is a new (more efficient) way of doing this
892 (see next section) but, if you prefer, the method of doing it described 
893 here will continue to work just fine.
894  
895 <P>
896 Allowing telnet connections is quite simple.  Firstly you need to add a line 
897 in /etc/services to allow connections to a port number, like this ....
898
899 <tscreen><verb>
900 spdlogin   8000/tcp     # spider anonymous login port
901 </verb></tscreen>
902
903 <P>
904 Then add a line in /etc/inetd.conf like this ....
905
906 <tscreen><verb>
907 spdlogin stream tcp nowait root /usr/sbin/tcpd /spider/src/client login telnet
908 </verb></tscreen>
909
910 <P>
911 Once this is done, you need to restart inetd like this ....
912
913 <tscreen><verb>
914 killall -HUP inetd
915 </verb></tscreen>
916
917 <P>
918 Now login as <em>sysop</em> and cd spider/src. You can test that spider 
919 is accepting telnet logins by issuing the following command ....
920
921 <tscreen><verb>
922 ./client login telnet
923 </verb></tscreen>
924
925 <P>
926 You should get a login prompt and on issuing a callsign, you will be given 
927 access to the cluster.  Note, you will not get a password login.  There seems 
928 no good reason for a password prompt to be given so it is not asked for.
929
930 <P>
931 Assuming all is well, then try a telnet from your linux console ....
932
933 <tscreen><verb>
934 telnet localhost 8000
935 </verb></tscreen>
936
937 <P>
938 You should now get the login prompt and be able to login as before.
939
940 <sect1>Setting up telnet connects (from 1.47 onwards)
941
942 <P>
943 >From version 1.47 you can choose to allow the perl cluster.pl program to 
944 allow connections directly (i.e. not via the <tt>/spider/src/client</tt>
945 interface program). If you are using Windows then this is the only method
946 available of allowing incoming telnet connections.
947
948 <P>
949 To do this you need first to remove any line that you may previously have set
950 up in /etc/inetd.conf. Remember to:-
951
952 <tscreen><verb>
953 killall -HUP inetd
954 </verb></tscreen>
955
956 <P>
957 to make the change happen...
958
959 <P>
960 Having done that, you need to copy the file 
961 <em>/spider/perl/Listeners.pm</em> to <em>/spider/local</em> and 
962 then edit it. You will need to uncomment the line containing &dquot;0.0.0.0&dquot; 
963 and select the correct port to listen on. So that it looks like this:-
964
965 <tscreen><verb>
966 @listen = (
967     ["0.0.0.0", 8000],
968 );
969 </verb></tscreen>
970
971 <P>
972 As standard, the listener will listen on all interfaces simultaneously. 
973 If you require more control than this, you can specify each interface 
974 individually:-
975
976 <tscreen><verb>
977 @listen = (
978     ["gb7baa.dxcluster.net", 8000],
979     ["44.131.16.2", 6300],
980 );
981 </verb></tscreen>
982
983 <P>
984 This will only be successful if the IP addresses on each interface are static. 
985 If you are using some kind of dynamic IP addressing then the 'default' method 
986 is the only one that will work.
987
988 <P>
989 Restart the cluster.pl program to enable the listener.
990
991 <P>
992 One important difference with the internal listener is that no echoing 
993 is done by the cluster program. Users will need to set 'local-echo' on in 
994 their telnet clients if it isn't set automatically (as per the standards). 
995 Needless to say this will probably only apply to Windows users. 
996
997 <sect1>Setting up for AGW Engine (1.47 onwards)
998
999 <P>
1000 AGW Engine is a Windows based ax25 stack. You can connect to an AGW engine 
1001 from Linux as well as Windows based machines.
1002
1003 <P>
1004 In order to enable access to an AGW Engine you need to copy 
1005 <em>/spider/perl/AGWConnect.pm</em> to <em>/spider/local</em> and edit it. 
1006 Specifically you must:-
1007
1008 <itemize>
1009 <item> set <tt>$enable</tt> to 1.
1010 <item> set <tt>$login</tt> and <tt>$passwd</tt> to the values set up in your AGW installation. 
1011 If you haven't set any there, then you should not touch these values.
1012 <item> You can connect to a remote AGW engine (ie on some other machine) by changing <tt>$addr</tt>
1013 and <tt>$port</tt> appropriately.
1014 <item> Restart the cluster.pl program
1015 </itemize>   
1016
1017
1018 <sect1>Setting up node connects
1019
1020 <P>
1021 In order to allow cluster node connections, spider needs to know that the 
1022 connecting callsign is a cluster node.  This is the case whether the connect 
1023 is incoming or outgoing.  In spider this is a simple task and can be done in 
1024 runtime.
1025
1026 <P>
1027 Later versions of Spider can distinguish different software and treat them
1028 differently.  For example, the WCY beacon cannot be handles by AK1A type
1029 nodes as AK1A does not know what to do with PC73.  There are 4 different
1030 types of node at present and although they may not have any major
1031 differences at the moment, it allows for compatibility.  The 4 types are ...
1032
1033 <tscreen><verb>
1034 set/node        (AK1A type)
1035 set/spider
1036 set/dxnet
1037 set/clx
1038 </verb></tscreen>
1039
1040 <P>
1041 For now, we will assume that the cluster we are going to connect to is an
1042 AK1A type node.
1043
1044 <P>
1045 Start up the cluster as you did before and login as the sysop with client.
1046 The cluster node I am wanting to make a connection to is GB7BAA but you would
1047 obviously use whatever callsign you required.  At the prompt type ...
1048
1049 <tscreen><verb>
1050 set/node gb7baa
1051 </verb></tscreen>
1052
1053 <P>
1054 The case does not matter as long as you have a version of DXSpider later than 
1055 1.33.  Earlier versions required the callsign to be in upper case.
1056
1057 <P>
1058 That is now set, it is as simple as that.  To prove it, login on yet another 
1059 console as sysop, cd to spider/src and issue the command ...
1060
1061 <tscreen><verb>
1062 ./client gb7baa (using the callsign you set as a node)
1063 </verb></tscreen>
1064
1065 <P>
1066 You should get an initialisation string from DXSpider like this ...
1067
1068 <tscreen><verb>
1069 ./client gb7baa
1070 PC38^GB7MBC^~
1071 </verb></tscreen>
1072
1073 If the callsign you just set up as a cluster node is for an incoming connect, 
1074 this is all that needs to be done.  If the connection is to be outgoing then 
1075 a connection script needs to be written.
1076
1077 <P>
1078 Sometimes you make a mistake... Honest, it does happen.  If you want to make a node
1079 back to being a normal user, regardless
1080 of what type it is, do:
1081
1082 <tscreen><verb>
1083 unset/node gb7baa
1084 </verb></tscreen>
1085
1086 <sect1>Connection scripts
1087
1088 <P>
1089 Because DXSpider operates under Linux, connections can be made using just about 
1090 any protocol;  AX25, NETRom, tcp/ip, ROSE etc are all possible examples.  
1091 Connect scripts live in the /spider/connect directory and are simple ascii files.  
1092 Writing a script for connections is therefore relatively simple.  
1093
1094 <P>
1095 The connect scripts consist of lines which start with the following keywords 
1096 or symbols:-
1097
1098 <descrip>
1099         
1100 <tag/#/All lines starting with a <tt>#</tt> are ignored, as are completely 
1101                 blank lines.
1102
1103 <tag/timeout/<tt>timeout</tt> followed by a number is the number of seconds to wait for a 
1104                 command to complete. If there is no timeout specified in the script 
1105                 then the default is 60 seconds.
1106
1107 <tag/abort/     <tt>abort</tt> is a regular expression containing one or more strings to look 
1108                 for to abort a connection. This is a perl regular expression and is 
1109                 executed ignoring case.
1110
1111 <tag/connect/<tt>connect</tt> followed by ax25, agw (for Windows users) or telnet and some type dependent 
1112                 information. In the case of a telnet connection, there can be up to 
1113                 two parameters.
1114                 The first is the ip address or hostname of the computer you wish to 
1115                 connect to and the second is the port number you want to use (this 
1116                 can be left out if it is a normal telnet session).
1117                 In the case of an ax25 session then this would normally be a call to
1118                 ax25_call or netrom_call as in the example above. It is your
1119                 responsibility to get your node and other ax25 parameters to work 
1120                 before going down this route!
1121
1122 <tag/'/<tt>'</tt> is the delimiting character for a word or phrase of an expect/send 
1123                 line in a chat type script. The words/phrases normally come in pairs,
1124                 either can be empty. Each line reads input from the connection until 
1125                 it sees the string (or perl regular expression) contained in the
1126                 left hand string. If the left hand string is empty then it doesn't 
1127                 read or wait for anything. The comparison is done ignoring case.
1128                 When the left hand string has found what it is looking for (if it is)
1129                 then the right hand string is sent to the connection.
1130                 This process is repeated for every line of chat script. 
1131
1132 <tag/client/<tt>client</tt> starts the connection, put the arguments you would want here 
1133                 if you were starting the client program manually. You only need this 
1134                 if the script has a different name to the callsign you are trying to 
1135                 connect to (i.e. you have a script called other which actually 
1136                 connects to GB7DJK-1 [instead of a script called gb7djk-1]).
1137 </descrip>
1138
1139 <P>
1140 There are many possible ways to configure the script but here are three examples, 
1141 one for a NETRom/AX25 connect, one for AGW engines and one for tcp/ip.  
1142
1143 <tscreen><verb>
1144 timeout 60
1145 abort (Busy|Sorry|Fail)
1146 # don't forget to chmod 4775 netrom_call!
1147 connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
1148 'Connect' '' 
1149 'Connect' 'c np7'
1150 'Connect' 'c gb7dxm'
1151 # you can leave this out if you call the script 'gb7dxm'
1152 client gb7dxm ax25
1153 </verb></tscreen>
1154
1155 <P>
1156
1157 <tscreen><verb>
1158 timeout 60
1159 abort (Busy|Sorry|Fail)
1160 # this does exactly the same as the previous example
1161 # the '1' is the AGW port number to connect thru for g1tlh
1162 connect agw 1 g1tlh
1163 'Connect' '' 
1164 'Connect' 'c np7'
1165 'Connect' 'c gb7dxm'
1166 # you can leave this out if you call the script 'gb7dxm'
1167 client gb7dxm ax25
1168 </verb></tscreen>
1169
1170 <P>
1171
1172 <tscreen><verb>
1173 timeout 15
1174 connect telnet dirkl.tobit.co.uk
1175 'login' 'gb7djk'
1176 'word' 'gb7djk'
1177 # tell GB7DJK-1 that it is connected to GB7DJK
1178 # you can leave this out if you call this script 'gb7djk'
1179 client gb7djk telnet
1180 </verb></tscreen>
1181
1182 <P>
1183 Both these examples assume that everything is set up properly at the other end.  
1184 You will find other examples in the /spider/examples directory.
1185
1186 <sect1>Starting the connection
1187
1188 <P>
1189 You start the connection, from within a sysop enabled cluster login, by typing 
1190 in the word <em>connect</em> followed by a script name like this ....
1191
1192 <tscreen><verb>
1193 G0VGS de GB7MBC 13-Dec-1998 2041Z >connect gb7djk-1
1194 connection to GB7DJK-1 started
1195 G0VGS de GB7MBC 13-Dec-1998 2043Z >
1196 </verb></tscreen>
1197
1198 <P>
1199 This will start a connection using the script called <em>gb7djk-1</em>.  You can
1200 follow the connection by watching the term or console from where you started
1201 <em>cluster.pl</em>.  From version 1.47 onwards, you will need to <tt>set/debug connect</tt> first.
1202 You should see something like this ...
1203
1204 <tscreen><verb>
1205 <- D G1TLH connect gb7djk-1
1206 -> D G1TLH connection to GB7DJK-1 started
1207 -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
1208 timeout set to 15
1209 CONNECT sort: telnet command: dirkl.tobit.co.uk
1210 CHAT "login" -> "gb7djk"
1211 received "
1212 Red Hat Linux release 5.1 (Manhattan)
1213 Kernel 2.0.35 on an i586
1214 "
1215 received "login: "
1216 sent "gb7djk"
1217 CHAT "word" -> "gb7djk"
1218 received "gb7djk"
1219 received "Password: "
1220 sent "gb7djk"
1221 Connected to GB7DJK-1, starting normal protocol
1222 <- O GB7DJK-1 telnet
1223 -> B GB7DJK-1 0
1224 GB7DJK-1 channel func  state 0 -> init
1225 <- D GB7DJK-1 
1226 <- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
1227 <- D GB7DJK-1 PC38^GB7DJK-1^~
1228 <- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 
1229 0 00:00^5447^~
1230     etc
1231
1232 </verb></tscreen>
1233
1234 <P>
1235 With later versions of Spider there is a set/login command for users.  This 
1236 tells them when a user or node logs in or out.  If you do not add a line to 
1237 your scripts after the final line (or before the client line which should always 
1238 be last if needed) then the login/logout information will be sent to users
1239 <it>before</it> the login actually completes.  This means if a node is 
1240 unreachable, it will continue sending logins and logouts to users even though it 
1241 is not actually connecting.  To avoid this use the following line ...
1242
1243 <tscreen><verb>
1244 'connect' ''
1245 </verb></tscreen>
1246
1247 <P>
1248 In a script, this might look like ...
1249
1250 <tscreen><verb>
1251 timeout 35 
1252 abort (Busy|Sorry|Fail)
1253 connect telnet mary 3000
1254 'ogin:' 'gb7mbc'
1255 '>' 'telnet 44.131.93.96 7305'
1256 'connect' ''
1257 </verb></tscreen>
1258
1259 <sect1>Telnet echo
1260
1261 <P>
1262 Cluster links in particular suffer greatly from the presence of telnet echo.  
1263 This is caused by the telnet negotiation itself and can create at worst severe 
1264 loops.  At best it creates unnecessary bandwidth and large logfiles!  There are
1265 things that can be done to limit this problem but will not always work dependent 
1266 on the route taken to connect.
1267
1268 <P>
1269 Telnet echo itself should only be a problem if the connection is being made to 
1270 the telnet port (23).  This port uses special rules that include echo negotiation.
1271 If the connection is to a different port, such as 7300, this negotiation does 
1272 not happen and therefore no echo should be present.
1273
1274 <P>
1275 Sometimes it is not possible to make a direct connection to another node and this 
1276 can cause problems.  There is a way of trying to suppress the telnet echo but 
1277 this will not always work, unfortunately it is difficult to be more specific.  
1278 Here is an example of what I mean ...
1279
1280 <tscreen><verb>
1281 timeout 35
1282 abort (Busy|Sorry|Fail)
1283 connect telnet mary.lancs.ac.uk
1284 'ogin:' 'gb7mbc'
1285 'word:' 'mypasswd'
1286 '\$' 'stty -echo raw'
1287 '\$' 'telnet 44.131.93.96'
1288 'connect' ''
1289 </verb></tscreen>
1290
1291 <P>
1292 So, the first connection is made by Spider.  This is fine as Spider uses the
1293 Net_Telnet script from within perl.  This actually uses TCP rather than TELNET 
1294 so no negotiation will be done on the first connection.  Once connected to
1295 mary.lancs.ac.uk, the command is sent to suppress echo.  Now a telnet is made 
1296 to a cluster node that is accepting connections on port 23.  The problem with 
1297 this link is that the negotiation is made by the remote machine, therefore you 
1298 have no control over it.  The chances are that this link will create echo and 
1299 there will be no way you can stop it.
1300
1301
1302 <sect1>Autostarting the cluster
1303
1304 <P>
1305 Ok, you should now have DXSpider running nicely and allowing connects by cluster
1306 nodes or users.  However, it has to be shutdown and restarted manually.  It
1307 would be much easier to have it start automatically. 
1308
1309 <P>
1310 This is not only a way to start the cluster automatically, it also works as a
1311 watchdog, checking the sanity of DXSpider and respawning it should it crash for 
1312 any reason.  Before doing the following, shutdown the cluster as you did earlier.
1313
1314 <P>
1315 Login as root and bring up the /etc/inittab file in your favourite editor.  Add 
1316 the following lines to the file near the end ...
1317
1318 <tscreen><verb>
1319 ##Start DXSpider on bootup and respawn it should it crash
1320 DX:3:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
1321 </verb></tscreen>
1322
1323 <P>
1324 This line works fine for RedHat distributions. It is also fine for SuSE up to
1325 7.0.  From SuSE 7.1 you need to add runlevels 2 and 5 like this ...
1326
1327 <tscreen><verb>
1328 DX:235:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
1329 </verb></tscreen>
1330
1331 <P>
1332 The line required for Slackware distributions is slightly different.  My thanks to 
1333 Aurelio, PA3EZL for this information.
1334
1335 <tscreen><verb>
1336 DX:23:respawn:/bin/su - sysop -c "/usr/bin/perl -w /spider/perl/cluster.pl" >/dev/tty7
1337 </verb></tscreen>
1338
1339 <P>
1340 This will automatically start DXSpider on tty7 (ALT-F7) on bootup and restart 
1341 it should it crash for any reason.
1342
1343 <P>
1344 NB: It should be noted that /dev/tty7 is only an example.  Some SuSE systems will
1345 only accept upto tty6.  It really does not matter which tty you run it on.
1346
1347 <P>
1348 As root type the command <em>telinit q</em>.  DXSpider should start up 
1349 immediately.  You will see the output on tty7 and if you login as <em>sysop</em> 
1350 you should find everything running nicely.
1351
1352 <sect>Microsoft Windows Installation
1353
1354 <sect1>Introduction
1355
1356 <P>
1357 <bf>IMPORTANT:</bf> 
1358
1359 What you'll be left with once you've followed these instructions
1360 is (hopefully) a working DX Spider v1.50 system that is capable
1361 of accepting or originating "internet" connections, plus inbound
1362 and outbound AX.25 and TCP/IP radio connections.
1363
1364 On the other hand, you may have an enquiring mind, or better yet,
1365 may be looking for a useful way of connecting your current
1366 (perhaps) AK1A cluster "to the internet" via some networking
1367 mechanism (BPQEther, etc) or other. I won't be producing
1368 instructions for the latter case, because I don't have an AK1A to
1369 play with. But someone might ...
1370
1371 Whatever, this document is intended to get you started with DX
1372 Spider in a Microsoft Windows &trade; environment. It's not
1373 intended to teach you anything other than how to perform a
1374 minimum configuration of a DX Spider installation and have it
1375 able to connect across "the internet" to other DX Clusters, while
1376 accepting inbound TELNET and radio connections.
1377
1378 <sect1>The requirements
1379
1380 <P>
1381 The very first things you're going to need are (in order of
1382 importance):-
1383
1384 <itemize>
1385 <item>A cup of good, strong tea
1386 <item>A supported Windows platform with an internet connection so you can
1387 download the necessary software bits and bobs directly to it. There are other ways, but this is preferable.
1388 <item>Another cup of good, strong tea
1389 <item>If all goes according to plan, about an hour to spare
1390 <item>Plenty of good, strong tea
1391 </itemize>
1392
1393 <sect1>The system
1394
1395 <P>
1396 The platform I used to generate these instructions was a
1397 "vanilla" Microsoft Windows Me 4.90.3000 system, with a 700MHz
1398 AMD Athlon processor and 96 Mb memory. I've also personally
1399 verified that it runs on my laptop (Pentium 266MHz, 32 Mb memory,
1400 Windows 98 SE v4.10.2222 A) and a computer that I assembled from
1401 a random pile of junk (AMD K6-2 333MHz, 64 Mb memory, Windows 98
1402 v4.10.1998). As a result, I have reason to believe that what I'm
1403 about to describe will perform equally on any 32-bit MS Windows
1404 environment with 32 Mb of memory.
1405
1406 Because of the changes that have recently been made to the core
1407 "cluster.pl" module and the introduction of a very lightweight
1408 "winclient.pl", I have a sneaking suspicion that this will now
1409 run on any platform that has reasonably complete support for
1410 Perl. Is there someone out there with both an enquiring mind and
1411 (say) a Macintosh, for instance?
1412
1413 Please bear in mind, though, that my instructions relate solely
1414 to how to get this going under a Microsoft Windows environment,
1415 and I have zero intention of trying to make them say otherwise.
1416
1417 <sect1>Perl
1418
1419 <P>
1420 Install your chosen Perl environment. Unless you have a very good
1421 reason for not doing so, I strongly suggest that you use
1422 ActivePerl v5.6. For my testing & development, I used build 623.
1423 (A recent installation used the newer ActivePerl v5.6.1, build
1424 633 without any noticable difficulty.)  You can get this from:
1425 <htmlurl url="http://www.activestate.com/Products/ActivePerl/Download.html"
1426 name="http://www.activestate.com/Products/ActivePerl/Download.html">
1427
1428 The link takes you to an initial page of System Requirements and
1429 Software Prerequisites.  If you do not have it already installed, 
1430 you can download and install the Windows Installer 2.0 for a Win98
1431 installation.  Be forewarned, you will have to reboot your PC at the
1432 completion of the installer's installation.  
1433
1434 If you already have the installer on your PC, simply click on the 
1435 Next arrow at the bottom of the page.  Two clicks will finally get
1436 you to the actual download page.  The MSI version of Build 633 is 
1437 now 8.6MB in size, so make that a big cup of tea or coffee if you're
1438 on a slow dial-up connection.
1439
1440 During installation, please ensure that you do choose the options
1441 to "Add Perl to the PATH environment variable" and "Create Perl
1442 file extension association"; it will make your life so much
1443 easier. Once the installation is finished, be sure to reboot your
1444 PC. You probably won't be told anywhere else that this needs to
1445 be done now, but it does. Really.
1446
1447 Once you've rebooted, open a "DOS box" (Start > Run > command
1448 might do it, if you can't find it elsewhere) and from wherever it
1449 lands, type PERL -v &lt;ENTER&gt; (it's better if that's a lower-case
1450 'v', because an upper-case 'V' means something else. You should
1451 be rewarded with some interesting information about your Perl
1452 installation. If you're not, you must go back to the beginning
1453 and discover what went wrong and fix it. It's pointless to
1454 proceed unless this simple check is passed. Assuming it did work,
1455 you may now move on.
1456
1457 <sect1>Additional packages
1458
1459 <P>
1460 Some extensions ("packages") need to be added to the base Perl
1461 distribution, and we'll do this next. If you're using the Perl I
1462 recommended, and don't know any better for yourself, then just
1463 blindly following these instructions will work just fine. If that
1464 didn't describe you, then you're on your own.
1465
1466 Visit the following URL:
1467
1468 <htmlurl url="http://www.activestate.com/PPMPackages/zips/6xx-builds-only/"
1469 name="http://www.activestate.com/PPMPackages/zips/6xx-builds-only/">
1470
1471 and download the following files:-
1472
1473 <tscreen><verb>
1474 Data-Dumper.zip
1475 Net-Telnet.zip
1476 TimeDate.zip
1477 Time-HiRes.zip
1478 DB_File.zip
1479 </verb></tscreen>
1480
1481 If this is a new installation, now would also be a good time to 
1482 install a copy of WinZip on your PC.  Make yourself a convenient 
1483 directory to unpack all of these zip files into (I put mine in 
1484 "D:\ppm>" but "C:\ppm" works just as well.) and do the following 
1485 (the bits you type in are blue ).  You can upzip all of the files into
1486 the same directory.  When prompted, simply overwrite the Readme file 
1487 from each zip package.  Note that where these files land will be 
1488 directly related to where you chose to install your ActivePerl 
1489 (mine, as you can probably guess from what follows, went into "D:\Perl"):-
1490
1491 <tscreen><verb>
1492 D:\ppm>ppm install Data-Dumper.ppd
1493 Installing package 'Data-Dumper.ppd'
1494 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.bs
1495 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.dll
1496 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.exp
1497 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.lib
1498 Installing D:\Perl\html\site\lib\auto\Data\Dumper\Dumper.html
1499 Installing D:\Perl\site\lib\Data\Dumper\Dumper.pm
1500 Writing D:\Perl\site\lib\auto\Data\Dumper\Dumper.packlist
1501 D:\ppm>
1502 </verb></tscreen>
1503
1504 I'm not going to bother you with exhaustive details of the rest
1505 of them, but suffice it to say you need to:
1506
1507 <tscreen><verb>
1508 ppm install DB_File.ppd
1509 ppm install Net-Telnet.ppd
1510 ppm install TimeDate.ppd
1511 ppm install Time-HiRes.ppd
1512 </verb></tscreen>
1513
1514 If all that seemed to work OK, time to move along. Before anyone
1515 who is familiar with PPM tells me that we didn't need to download
1516 and keep those files locally, I knew that. I also knew that PPM
1517 is sometimes awkward to configure via firewalls, and that
1518 sometimes the repositories don't always work the way we'd hope. I
1519 do it that way because it suits me.
1520
1521 <sect1>Getting Spider
1522
1523 <P>
1524 Get the current version of the DX Spider distribution. This needs
1525 to be v1.50 or later. You've got two ways (currently) of getting
1526 this; either get a CVS update from sourceforge (if you don't know
1527 what this is, then it isn't for you) or get the latest "official"
1528 release from:
1529
1530 <htmlurl url="http://www.dxcluster.org/download/index.html" name="http://www.dxcluster.org/download/index.html">
1531
1532 or if you want the lastest snapshot of CVS version (which is produced 
1533 every night):-
1534
1535 <htmlurl url="http://www.dxcluster.org/download/CVSlatest.tgz" name="http://www.dxcluster.org/download/CVSlatest.tgz">
1536
1537 This is generally the best one to go for as it is completely up to
1538 date. However, there is always the very slight chance that it might
1539 unstable. Generally, there will be a note on the website if this is 
1540 the case. 
1541
1542
1543 The only difference between "CVSlatest.tgz" and the latest
1544 "official" release version is that it is more up to date. <bf>Do not confuse 
1545 the "CVSlatest.tgz" file with "Downloading from Sourceforge with CVS" - they
1546 are two quite different things.</bf>  "Downloading from Sourceforge with CVS" is
1547 explained in a section within the Admin manual.
1548
1549 <p>
1550 If you go down the CVS route (ie installing WinCVS as explained in the Admin
1551 manual and downloaded from sourceforge), then everything will be nicely
1552 installed on your local disk. If you got the CVSlatest.tgz file, unzip 
1553 (<htmlurl url="http://www.winzip.com" name="winzip">) it to "C:\".  
1554 This is an important point since paths are included within the .tgz 
1555 file.  Make sure you unzip to the root directory of whichever drive you use...
1556 "C:\" or "D:\" or .., not "C:\spider."  If you double click on CVSlatest.tgz, 
1557 WinZip should open with a dialogue box that says the Archive contains a single
1558 file (CVSlatest.tar) and asks whether WinZip should decompress it to a 
1559 temporary fold and then open it.  Say "Yes" and then you will get the typical 
1560 Classical WinZip listing of files ready for extraction.  Remember, extract 
1561 them to your desired root directory ("C:\" or "D:\" or ...).  The following 
1562 examples assume that you put it on drive "C:\", for convenience.
1563
1564 <sect>Installing the software
1565
1566 <P>
1567 At this point you will need to create 2 additional directories under 
1568 "C:\Spider."  Make directories "C:\spider\local" and "C:\spider\local_cmd". 
1569 If "C:\spider" is missing, go back and figure out why, because it shouldn't be.
1570
1571 Now create your own local copy of the DXVars.pm file by:-
1572
1573 <tscreen><verb>
1574 copy c:\spider\perl\DXVars.pm.issue
1575 c:\spider\local\DXVars.pm
1576 </verb></tscreen>
1577
1578 Now you'll need to edit this file using a text editor like Notepad. If nothing
1579 else, you can simply
1580
1581 <tscreen><verb>
1582 cd \spider\local
1583 </verb></tscreen>
1584
1585 and then
1586
1587 <tscreen><verb>
1588 notepad DXVars.pm
1589 </verb></tscreen>
1590
1591 to bring up an editor window containing the file. As an absolute
1592 minimum you must adjust the following items in DXVars.pm:-
1593
1594 <itemize>
1595 <item> $mycall  - Should hold the callsign of your DX Cluster
1596 <item> $myname  - The SysOp's first name
1597 <item> $myalias - the SysOp's callsign. Cannot be the same as $mycall!
1598 <item> $myqth - The station's geographical location (QTH).
1599 <item> $mylatitude - The station latitude in degrees and decimal fractions
1600 <item> $mylongitude - The station longitude in degrees and decimal fractions
1601 <item> $mylocator - The Maidenhead (or QRA) locator of the station 
1602 </itemize>
1603
1604 You really also ought to update the $myqth and $myemail variables. And
1605 unless you are absolutely certain you know what you're doing, you
1606 should change nothing else in this file. Note that if you use an "@" or 
1607 a "$" character in one of the above strings (typically in $myemail) you must 
1608 write them as "\@" or "\$". 
1609
1610 <sect1>Incoming telnets
1611
1612 <P>
1613 If you want to enable inbound "TELNET" connections (or you are running
1614 Windows 98, NT, 2000 or XP), you've got a little more work to do. From a
1615 handy "DOS box" that's not doing anything else, do the following:-
1616
1617 <tscreen><verb>
1618 copy \spider\perl\Listeners.pm \spider\local
1619 cd \spider\local
1620 notepad listeners.pm
1621 </verb></tscreen>
1622
1623 The following line need attention:-
1624
1625 <tscreen><verb>
1626 #               ["0.0.0.0", 7300],
1627 </verb></tscreen>
1628
1629 On my machine, I've simply uncommented the "0.0.0.0" entry by
1630 removing the '#' from the front of the line. 
1631
1632 <bf>You MUST carry out this step if you are
1633 running on a Windows 98, NT, 2000 or XP based system</bf>
1634
1635 If you don't have a static hostname for your machine, and you
1636 intend to allow folk to connect to your machine across the
1637 internet, then I'd suggest you pay a visit to www.dyndns.org and
1638 create one for yourself. While it's free, it will take a modest
1639 amount of effort on your part to read, understand and
1640 implement what needs to be done to set this up.
1641
1642 <p>If your machine is connected to the internet <bf>and</bf> you don't
1643 want to allow your machine to be visible to the outside world you
1644 should change the "0.0.0.0" to "127.0.0.1" [which is
1645 "localhost"]. This will then only allow connections from inside your
1646 machine. As was said earlier: if you aren't running Win9x (or you want
1647 to use DXTelnet or somesuch), then you need to have the machine
1648 listening at least to "127.0.0.1" ("0.0.0.0" means <bf>all</bf> IP
1649 addresses).
1650
1651 <sect1>The AGW packet engine
1652
1653 <P>
1654 On the assumption that you'll be using the SV2AGW Packet Engine
1655 to interface your radios to the cluster, it would be a good idea to
1656 download the Packet Engine software!  You can get this software from:
1657
1658 <htmlurl url="http://www.raag.org/sv2agw/agwpe.zip" name="http://www.raag.org/sv2agw/agwpe.zip">
1659
1660 Depending upon your TNCs, you may also need to get:
1661
1662 <htmlurl url="http://www.raag.org/sv2agw/drivers.zip" name="http://www.raag.org/sv2agw/drivers.zip">
1663
1664 A couple of the tools:
1665
1666 <htmlurl url="http://www.raag.org/sv2agw/agwterm.zip" name="http://www.raag.org/sv2agw/agwterm.zip">
1667
1668 <htmlurl url="http://www.raag.org/sv2agw/agwmonitor.zip" name="http://www.raag.org/sv2agw/agwmonitor.zip">
1669
1670 will also help with troubleshooting of the RF links themselves.
1671
1672 Install and configure AGWPE.  You should now create your own local copy of 
1673 AGWConnect.pm by:-
1674
1675 <tscreen><verb>
1676 copy c:\spider\perl\AGWConnect.pm
1677 c:\spider\local\AGWConnect.pm
1678 </verb></tscreen>
1679
1680 and then
1681
1682 <tscreen><verb>
1683 notepad AGWConnect.pm
1684 </verb></tscreen>
1685
1686 to bring up an editor window containing the file. You must
1687 consider adjusting the following items in AGWConnect.pm:-
1688
1689 <itemize>
1690 <item>$enable - set to '1' to enable AGWPE interface 
1691 <item>$login  - the login ID you chose when you set up the SV2AGW security :-)
1692 <item>$passwd - password that matches $login
1693 </itemize>
1694
1695 The login ID and passwd only need to be set if you are accessing AGW separately
1696 via its web interface.  This interface is normally not needed for use with DXSpider.
1697
1698 <sect1>Setting up the initial user files
1699
1700 <P>
1701 Next you need to create the initial user files, etc. A tool is
1702 supplied which will do this for you. To run the tool:-
1703
1704 <tscreen><verb>
1705 cd \spider\perl
1706 perl create_sysop.pl
1707 </verb></tscreen>
1708
1709 If all goes according to plan, you will see no output from this
1710 program, and after a brief wait, your DOS prompt will be
1711 returned.
1712
1713 Depending on how brave you are, you might now care to try the
1714 following:-
1715
1716 <tscreen><verb>
1717 perl cluster.pl
1718 </verb></tscreen>
1719
1720 If you did everything you were told, your DOS window will now
1721 hold a display which looks something like:-
1722
1723 <tscreen><verb>
1724 DXSpider DX Cluster Version 1.50
1725 Copyright (c) 1998-2002 Dirk Koopman G1TLH
1726 loading prefixes ...
1727 loading band data ...
1728 loading user file system ...
1729 starting listeners ...
1730 Internal port: localhost 27754
1731 load badwords: Ok
1732 reading in duplicate spot and WWV info ...
1733 reading existing message headers ...
1734 load badmsg: Ok
1735 load forward: Ok
1736 load swop: Ok
1737 @msg = 0 before delete
1738 @msg = 0 after delete
1739 reading cron jobs ...v cron: reading /spider/cmd/crontab
1740 cron: adding 1 0 * * 0
1741 DXUser::export("$main::data/user_asc")
1742 reading database descriptors ...
1743 doing local initialisation ...
1744 orft we jolly well go ...
1745 queue msg (0)
1746 </verb></tscreen>
1747
1748 Now, if that's what you've got, you are very nearly home and dry
1749 (in as far as these particular experiments are concerned, anyhow)
1750
1751 If you are running Windows 9x you can access your new cluster (from
1752 the local machine) by finding yourself another "DOS box" and doing the
1753 following:-
1754
1755 <tscreen><verb>
1756 cd \spider\perl
1757 perl winclient.pl
1758 </verb></tscreen>
1759
1760 If you are running Windows NT, 2000 or XP then winclient.pl does not
1761 work. We don't know why other than this seems to be some kind of
1762 incomaptibility in perl. You can achieve the same thing by telnetting
1763 to the port you defined in Listeners.pm (7300 as default), thus:-
1764
1765 <tscreen><verb>
1766 Menu->Start->Run
1767 telnet localhost 7300
1768 </verb></tscreen>
1769
1770 On getting the <bf>login:</bf> prompt, enter your sysop callsign (the one you
1771 put in DXVars.pm as $myalias).
1772
1773 <p>I would recommend <bf>strongly</bf> that you obtain a better telnet
1774 client than that which comes with windows (I use <htmlurl
1775 url="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"
1776 name="PuTTY">). 
1777
1778 <p>Anyway, if you are rewarded with a display which looks something like:-
1779
1780 <tscreen><verb>
1781 Hello Iain, this is GB7SJP in Amersham, Bucks running DXSpider V1.50
1782 Cluster: 1 nodes, 1 local / 1 total users Max users 2 Uptime 0 00:00
1783 M0ADI de GB7SJP 4-Mar-2001 1511Z >
1784 </verb></tscreen>
1785
1786 You've arrived. Try some commands, and see how they feel. (In
1787 case you were wondering, "Iain", "M0ADI" and "GB7SJP" all came
1788 from the version of DXVars.pm that was on the machine when I
1789 started the winclient.pl)
1790
1791 <p>The interface is very basic. It is a simple command line. There are
1792 better looking interfaces. Most of the "standard" logging and DX
1793 Cluster access programs that are capable of connecting via a TCP or
1794 telnet connection will work as a "Sysop Console" client. You connect
1795 to "localhost" on the port that you defined in Listeners.pm (usually
1796 7300). I recommend packages like <htmlurl
1797 url="http://www.qsl.net/wd4ngb/telnet.htm" name="DXTelnet">.
1798
1799 <sect1>Connecting to other clusters
1800
1801 <P>
1802 If you want to connect this to another cluster, then you'll want to
1803 negotiate a link with someone. For experimental purposes, I'm happy to
1804 allow folk to connect to GB7DXA (spud.ath.cx), on the understanding
1805 that the system may or may not be there and may or may not be
1806 connected to anything particularly useful at any given moment. Contact
1807 me by <htmlurl url="mailto:g0rdi@blacksheep.org" name="Email"> if you
1808 want me to set up a connection for you.
1809
1810 <sect>General Information
1811
1812 <P>
1813 The following relates to all versions of DXSpider and is not platform related.
1814
1815 <sect1>The crontab file
1816
1817 <P>
1818 Login as <em>sysop</em> and create a file in /spider/local_cmd called crontab.  
1819 Edit it with your favourite editor and add a line like this (I have included 
1820 a comment)
1821
1822 <tscreen><verb>
1823 # check every 10 minutes to see if gb7xxx is connected and if not
1824 # start a connect job going
1825
1826 0,10,20,30,40,50 * * * * start_connect('gb7xxx') unless connected('gb7xxx')
1827 </verb></tscreen>
1828
1829 <P>
1830 The callsign involved will be the callsign of the cluster node you are 
1831 going to connect to.  This will now check every 10 minutes to see if 
1832 gb7xxx is connected, if it is then nothing will be done.  If it is not, 
1833 then a connect attempt will be started.
1834
1835 <P>
1836 There are probably lots of other things you could use this crontab file for.  
1837 If you want to know more about it, look at the
1838 <htmlurl url="http://www.dxcluster.org/cron.html" name="DXSpider"> website 
1839 at the cron page where it is explained more fully.
1840
1841 </article>
1842
1843