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