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