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