1 The DXSpider Installation Manual v1.50
2 Iain Philipps, G0RDI (g0rdi@77hz.com), Ian Maude, G0VGS,
3 (g0vgs@gb7mbc.net) and Charlie Carroll, K1XX,
5 February 2003 revision 0.5
7 A reference for SysOps of the DXSpider DXCluster program.
8 ______________________________________________________________________
16 1.3 Installing the software
17 1.4 Setting callsigns etc
18 1.5 The client program
19 1.6 Starting up for the first time
21 2. Linux quick installation guide
22 3. Setting up the AX25 Utilities
25 3.3 Installing the RPM's
32 3.10 Getting it all running
35 4.1 Allowing ax25 connects from users
36 4.2 Allowing telnet connects from users
37 4.3 Setting up telnet connects (from 1.47 onwards)
38 4.4 Setting up for AGW Engine (1.47 onwards)
39 4.5 Setting up node connects
40 4.6 Connection scripts
41 4.7 Starting the connection
43 4.9 Autostarting the cluster
45 5. Microsoft Windows Installation
50 5.5 Additional packages
53 6. Installing the software
55 6.2 The AGW packet engine
56 6.3 Setting up the initial user files
57 6.4 Connecting to other clusters
59 7. General Information
63 ______________________________________________________________________
71 This section describes the installation of DX Spider v1.50 on a RedHat
72 Linux Distribution. Wherever possible I will try to include
73 differences for other distributions.
76 I am assuming a general knowledge of Linux and its commands. You
77 should know how to use tar and how to edit files using your favourite
81 The crucial ingredient for all of this is Perl. Earlier versions of
82 Spider required perl 5.004, however it is now STRONGLY recommended
83 that you use at least version 5.005_03 as this is the version being
84 used in the development of Spider.
87 In addition to the standard Red Hat distribution you will require the
88 following modules from http://www.cpan.org/modules/by-module/ , please
89 note however that with later versions of perl, some of these modules
90 may be included with the distribution. Get the modules anyway and try
91 to install as below. If they complain, they are probably already a
92 part of your perl distribution.
96 o Data-Dumper-2.101.tar.gz
98 o TimeDate-1.10.tar.gz
100 o IO-1.20.tar.gz (for perl 5.00403 and lower)
102 o Net-Telnet-3.03.tar.gz
106 o Time-HiRes-01.20.tar.gz
108 o Digest-SHA1-2.01.tar.gz
111 Copy the CPAN modules listed above to a convenient place on your
112 computer. One good place would be /usr/local/packages, and the
113 instructions which follow will assume that that's where you have put
117 Log in as 'root', and make sure you're at '/root' before you continue.
118 Here are exactly the commands you must issue next: -
122 # tar xvfz /usr/local/packages/Data-Dumper-2.101.tar.gz
123 # cd Data-Dumper-2.101
129 # tar xvfz /usr/local/packages/TimeDate-1.10.tar.gz
136 # tar xvfz /usr/local/packages/IO-1.20.tar.gz
140 # make install UNINST=1
143 # tar xvfz /usr/local/packages/Net-Telnet-3.03.tar.gz
150 # tar xvfz /usr/local/packages/Curses-1.06.tar.gz
157 # tar xvfz /usr/local/packages/Time-HiRes-01.20.tar.gz
158 # cd Time-HiRes-01.20
164 # tar xvfz /usr/local/packages/Digest-SHA1-2.01.tar.gz
165 # cd Digest-SHA1-2.01
173 Do not fall into the trap of thinking they're all the same, just
174 because they nearly are! Pay particular attention to the instructions
181 I will assume that you have already downloaded the latest tarball of
182 the DXSpider software and are ready to install it. I am assuming
183 version 1.50 for this section but of course you would use the latest
187 Login as root and create a user to run the cluster under. UNDER NO
188 CIRCUMSTANCES USE ROOT AS THIS USER!. I am going to use the name
189 sysop. You can call it anything you wish. Depending on your security
190 requirements you may wish to use an existing user, however this is
199 For SuSE distributions, the command would be ..
207 Now set a password for the user ...
213 # Retype new UNIX password:
214 passwd: all authentication tokens updated successfully
218 1.3. Installing the software
220 Now to unpack the DX Spider distribution, set symbolic links and group
221 permissions. Copy the tarball to /home/sysop and do the following.
226 # tar xvfz spider-1.50.tar.gz
227 # ln -s ~sysop/spider /spider
228 # groupadd -g 251 spider (or another number)
232 If you do not have the command groupadd available to you simply add a
233 line in /etc/group by hand.
237 # vi /etc/group (or your favorite editor)
241 You also need to add some others to the group, including your own
242 callsign (this will be used as an alias) and root. The finished line
243 in /etc/group should look something like this
245 spider:x:251:sysop,g0vgs,root
248 The next step is to set the permissions on the Spider directory tree
253 # chown -R sysop.spider spider
254 # find . -type d -exec chmod 2775 {} \;
255 # find . -type f -exec chmod 775 {} \;
259 This last step allows various users of the group spider to have write
260 access to all the directories. This is not really needed just yet but
261 will be useful when web interfaces start to appear.
264 Finally, you need to fix the permissions on the ax25_call and
265 netrom_call programs. Check where they are with the locate command
266 and alter the permissions with the chmod command like this ..
270 # chown root ax25_call netrom_call
271 # chmod 4775 ax25_call netrom_call
275 1.4. Setting callsigns etc
277 Now login to your machine as the user you created earlier. In my case
278 that user is called sysop. Once logged in, issue the following
286 $ cp perl/DXVars.pm.issue local/DXVars.pm
288 $ vi DXVars.pm (or your favourite editor)
292 Using the distributed DXVars.pm as a a template, set your cluster
293 callsign, sysop callsign and other user info to suit your own
302 This is the call sign of your cluster. If you use an SSID then
303 include it here also.
311 This is the sysop user callsign, normally your own.
314 PLEASE USE CAPITAL LETTERS FOR CALLSIGNS
317 Note that this a perl file which will be parsed and executed as part
318 of the cluster. If you get it wrong then perl will complain when you
319 start the cluster process. It is important only to alter the text of
320 any section. Some of the lines look a little odd. Take this line for
323 $myemail = "ianmaude\@btinternet.com";
326 There appears to be an extra slash in there. However this has to be
327 there for the file to work so leave it in.
330 DON'T alter any file in /spider/perl, they are overwritten with every
331 release. Any files or commands you place in /spider/local or
332 /spider/local_cmd will automagically be used in preference to the ones
333 in /spider/perl EVEN while the cluster is running!
336 Save the new file and change directory to ../perl ....
344 Now type the following command which creates the basic user file with
353 1.5. The client program
355 In earlier versions of Spider, all the processes were Perl scripts.
356 This was fine but with a lot of users your computer memory would soon
357 be used up. To combat this a new client was written in "C". This
358 client only works for incoming connects at the moment. Before you can
359 use it though it has to be "made". CD to /spider/src and type make.
360 You should see the output on your screen and hopefully now have a
361 small C program called client. Leave it in this directory.
362 1.6. Starting up for the first time
364 We can now bring spider up for the first time and see if all is well
365 or not! It should look something like this ...
370 DXSpider DX Cluster Version 1.50
371 Copyright (c) 1998 Dirk Koopman G1TLH
373 loading band data ...
374 loading user file system ...
375 starting listener ...
376 reading existing message headers
378 orft we jolly well go ...
382 If all is well then login on another term or console as sysop and cd
383 to /spider/src. Now issue the following command ...
391 This should log you into the cluster as the sysop under the alias
392 callsign we set earlier. In this case the callsign is G0VGS. The
393 cluster callsign is set in the DXVars.pm file in /spider/local. In
394 this case we will assume that this was set as GB7MBC. You should
395 therefore see this when you login ....
399 G0VGS de GB7MBC 19-Nov-1999 2150Z >
403 If you do, congratulations! If not, look over the instructions again,
404 you have probably missed something out. You can shut spider down
405 again with the command ....
413 and both the cluster and the client should return to Linux prompts.
417 2. Linux quick installation guide
419 This section is designed for experienced Spider sysops who want to
420 install Spider from scratch. It is simply a check list of things that
421 need to be done without any explanations. The name in brackets at the
422 end of each line is the user that should be doing that process.
427 o Get the additional CPAN modules and install them (root)
429 o Create the "sysop" user and set a password (root)
431 o Put the Spider tarball in sysop and untar it (root)
433 o ln -s sysop/spider /spider (root)
435 o groupadd -g 251 spider (root)
437 o Add any more users you need to the group entry in /etc/group (root)
439 o Set the permissions on the spider tree (root)
441 o Fix permissions on ax25_call and netrom_call (root)
443 o Login as the sysop user
445 o cd to /spider (sysop)
447 o mkdir local (sysop)
449 o mkdir local_cmd (sysop)
451 o cp perl/DXVars.pm.issue local/DXVars.pm (sysop)
453 o cd to /spider/local and edit DXVars to set your details (sysop)
457 o ./create_sysop.pl (sysop)
459 o ./cluster.pl (sysop)
462 Spider should now be running and you should be able to login using the
468 o Enter the correct line in ax25d.conf (root)
470 o Enter the correct line in /etc/services (root)
472 o Enter the correct line in /etc/inetd.conf (root)
474 o killall -HUP inetd (root)
477 Spider should now be able to accept logins via telnet, netrom and
483 o Start the cluster (sysop)
485 o set/node and type for links (sysop)
487 o Write any connect scripts (sysop)
489 o Edit /spider/crontab as required (sysop)
491 o Edit any other files as necessary (sysop)
493 o Set filters, hops and forwarding files (sysop)
497 o Enter the correct line in /etc/inittab (root)
500 3. Setting up the AX25 Utilities
502 The aim of this section is not to fully cover the installation and
503 configuration of all the possible ax25 modules. I will attempt to
504 cover a simple installation and configure 2 serial ports as if they
505 had TNC's on them. I will also show what additional configuration the
506 DXSpider program requires.
509 Please bear in mind that I am basing this section on a RedHat 7.1
510 distribution, if you are using SuSe or any other distibution then your
511 mileage may vary. I will be happy to make any changes and additions
512 if you email me any errors or distribution specific requirements.
515 You would probably benefit from reading the AX25-HOWTO which is much
516 more comprehensive and an interesting configuration program is also
517 available called ax25-config which may help you to configure things.
520 The following files are extracts from the working files at GB7MBC and
521 are in daily use. However, there are many ways that you can configure
522 the ax25 utils, this is just the one I use, it does not mean it is
523 necessarily the best or for that matter, the right way!
528 There are 2 things you need to do initially. You need to get the 3
529 files required for the ax25 installation and you need to make some
530 changes to the kernel configuration.
533 The first thing is to get the versions of the ax25 utils that match
534 your kernel. You may also wish to get a node package of some kind.
535 There are 2 main node packages in use of which I shall keep to the
536 original by Tomi Manninen, OH2BNS as this is included in the ax25 rpms
537 as standard. The other is AWZNode by IZ5AWZ.
540 NB: The AX25 stuff in 2.4 kernels appears to have been broken until
541 2.4.18. I strongly suggest you get at least this kernel.
544 For 2.4 kernels you need these files...
548 o libax25-0.0.7-7.i386.rpm
550 o ax25-tools-0.0.6-13.i386.rpm
552 o ax25-apps-0.0.4-9.i386.rpm
557 First you need to add Amateur Radio Support to your kernel. This is a
558 main menu item and should be easily found. Within this header you
559 will find lots of options. For our purposes you need to enable
560 Amateur Radio AX.25 Level 2 Protocol, NET/ROM and the Serial Port KISS
561 Driver. For the purposes of this document I will work under the
562 assumption that you include them in the kernel fully, ie not as
563 modules. If you need to look at compiling your kernel for ax25 more
564 fully, I would refer to the excellent AX25-HOWTO
567 I should say at this stage that NET/ROM is not mandatory. If you do
568 not use it simply ignore any instruction concerning it.
571 Now recompile your kernel in the normal way and reboot your system.
574 3.3. Installing the RPM's
576 Now install the RPM's you downloaded, libax25 first, then ax25-tools,
581 rpm -ivh libax25-0.0.7-7.i386.rpm
582 rpm -ivh ax25-tool-0.0.6-13.i386.rpm
583 rpm -ivh ax25-apps-0.0.4-9.i386.rpm
589 You will find the configuration files in /etc/ax25. These consist of
604 These are the main files. You will find other files but they do not
605 have any use unless you are wanting to use that particular protocol,
606 Rose or axip for example.
609 NOTE:- before we start it is important to realise that every interface
610 requires a different SSID. You should be able to follow this in the
614 This file sets up the ax25 ports you want to use. An example is below
615 for a standard TNC2 ...
619 #portname callsign baudrate paclen window description
620 2m gb7mbc-2 19200 256 2 2m port on 144.900MHz
621 4m gb7mbc-4 19200 256 2 4m port on 70.325MHz
625 Note that the portnames have to be unique.
628 The file headings are as follows ...
631 portname - The name you will refer to the port by
632 callsign - The ax25 callsign you want to assign to the port
633 baudrate - The speed you communicate between TNC and computer
634 paclen - The maximum packet length for ax25 connections
635 window - The ax25 window parameter. This is like 'maxframe'
636 description - A textual description of the port
642 This file sets up the netrom ports you want to use. An example is
643 below and includes a port for both cluster and node. You will see why
644 we need 2 ports later ...
648 #portname callsign alias paclen description
649 netrom gb7mbc-8 BARE 236 Node Netrom Port
650 netrom2 gb7mbc-9 MBCDX 236 Cluster Netrom Port
654 Note that the portnames have to be unique.
657 The file headings are as follows ...
660 portname - The name you will refer to the port by
661 callsign - This is the callsign that NET/ROM traffic from this
663 alias - The NET/ROM alias this port will be assigned
664 paclen - The maximum size of NET/ROM frames transmitted
665 description - A textual description of the port
671 This file sets up the netrom broadcast qualities. An example is below
676 #axport min_obs def_qual worst_qual verbose
681 The file headings are as follows ...
684 axport - The port name in axports that you wish to broadcast
686 min_obs - The minimum obsolescence value for the port
687 def_qual - The default quality for the port
688 worst_qual - The worst quality for the port. Any routes under
689 this quality will be ignored
690 verbose - This flag determines whether you will only broadcast
691 your own node (0) or all known nodes (1)
697 This file controls any incoming ax25 and NET/ROM connections and
698 steers them to the relevant program. There are lots of configuration
699 options you can set here, however they are well covered in the
700 AX25-HOWTO. For our purposes I will show a typical set of parameters.
701 An example is below ...
706 parameters 2 1 6 900 * 15 0
708 default * * * * * * - sysop /spider/src/client client %u ax25
711 parameters 2 1 6 900 * 15 0
713 default * * * * * * 0 root /usr/sbin/node node
716 parameters 2 1 6 900 * 15 0
718 default * * * * * * - sysop /spider/src/client client %u ax25
721 parameters 2 1 6 900 * 15 0
723 default * * * * * * 0 root /usr/sbin/node node
726 parameters 1 10 * * * 3 *
728 default * * * * * * - sysop /spider/src/client client %u ax25
731 parameters 1 10 * * * 3 *
733 default * * * * * * 0 root /usr/sbin/node node
737 There are a few things to take note of here. Firstly, all ax25
738 sections are wrapped in [ ] and all NET/ROM sections are wrapped in <
739 >. Secondly you should be able to see that anyone who forgets to set
740 their callsign in a TNC and tries to connect with the standard NOCALL
741 set into their TNC will not connect, the 'L' means 'lockout'. Lastly
742 and importantly, notice the order of the sections. They are all done
746 You should be able to see that the normal line for access to the
747 cluster is like this ..
751 default * * * * * * - sysop /spider/src/client client %u ax25
755 however, if you wish your users to be able to use SSID's on their
760 default * * * * * * - sysop /spider/src/client client %s ax25
764 For most purposes this is not desirable. The only time you probably
765 will need this is when you need to allow other cluster nodes that are
766 using SSID's in. In this case it would probably be better to use the
767 first example and then add a specific line for that node like this:
771 GB7DJK-2 * * * * * * - sysop /spider/src/client client gb7djk-2 ax25
772 default * * * * * * - sysop /spider/src/client client %u ax25
778 For those of you that wish to run the node, you need to set up the
779 node.conf file. There are a couple of additional files, node.perms is
780 very similar to the way ftp permissions are set up in NOS systems and
781 node.motd is the message anyone logging into the node will get. The
782 node.conf file sets all the parameters of the node as you would
783 expect. An example is below ...
787 # /etc/ax25/node.conf - LinuxNode configuration file
791 # Idle timeout (seconds).
795 # Timeout when gatewaying (seconds).
799 # Visible hostname. Will be shown at telnet login.
801 HostName gb7mbc.ampr.org
809 #LocalNet 44.139.8.48/32
811 # Command aliases. See node.conf(5) for the meaning of the uppercase
812 # letters in the name of the alias.
814 ##Alias CAllbook 'telnet %{2:44.17.0.53} 1235 %1 s'
815 #Alias CONVers 'telnet %{2:oh2ti} 3600 "/n %u %{1:139}\n/w *"'
816 #Alias CLuster 'c hkiclh'
817 Alias CONV "telnet lurpac 3600"
818 Alias BBS "c 70cm gb7crv"
819 Alias DXC "telnet localhost 9000"
820 Alias MUD "telnet homer 4000"
821 ##Alias TEMP "finger temp@mary.g6phf"
822 ##Alias TNOS "c ip1 gb7mbc-5"
823 ##Alias TUtor "telnet gb7mbc 3599"
829 # External commands. See node.conf(5) for the meaning of the uppercase
830 # letters in the name of the extcmd.
832 # Flags: 1 Run command through pipe
835 #ExtCmd TPM 3 nobody /usr/bin/finger finger tpm
836 #ExtCmd ECho 1 nobody /bin/echo echo \%U \%u \%S \%s \%P \%p \%R \%r \%T \%t \%\% \%0 \%{1:foobar} \%{2} \%3 \%4 \%5
840 NodeId "\nBARE:GB7MBC-1"
841 #NodeId \033[01;31m***\033[0m
843 # Netrom port name. This port is used for outgoing netrom connects.
851 # The escape character (CTRL-T)
855 # Resolve ip numbers to addresses?
862 #NodePrompt "%s@%h \%i> "
863 NodePrompt "\nBARE:GB7MBC-1 \%i > "
864 #NodePrompt "\a\033[36m%U\033[0m de \033[01;32m#LNODE\033[0m:\033[01;33mOH2BNS-10\033[0m> "
868 This should be fairly obvious I hope.
871 3.10. Getting it all running
873 Ok, now we have all the relevant files configured, the next step is to
877 The first thing to do is attach the TNC's. Your TNC's should be in
878 KISS mode and connected to the serial ports involved.
881 You now use the 'kissattach' command to connect the TNC's to the
886 kissattach /dev/ttyS0 2m 44.131.96.199
887 kissattach /dev/ttyS1 4m 44.131.96.199
891 Assuming that 44.131.96.199 is your IP address. The devices ttyS0 and
892 ttyS1 are com1 and com2 respectively. Now we can set some parameters
897 kissparms -p 2m -t 150 -l 150 -s 50 -r 50
898 kissparms -p 4m -t 150 -l 150 -s 50 -r 50
902 The command 'man kissparms' will give you the explanation of the
906 Now we need to attach the NET/ROM ports in the same way ...
913 All of the above can be put in a file and called from
914 /etc/rc.d/rc.local. Put all the above commands in a file called
915 rc.ax25 and put a line in rc.local to call it.
918 Now you can start the daemons that set everything in motion ...
927 All should now be running. All that remains is to get the node
928 working for telnet connections. If nothing else, this will allow you
929 to connect to the node yourself to check on connection status etc.
930 There are 2 files that need to be edited.
933 First edit /etc/services and add
937 node 3000/tcp #OH2BNS's Node Software
941 Assuming you want it to run on port 3000
944 Now cd /etc/xinetd.d and edit a new file called node. It should look
950 # unencrypted username/password pairs for authentication.
956 server = /usr/sbin/node
957 log_on_failure += USERID
963 You now need to restart the xinetd daemon. First find out what the
972 You will get a reply something like this ...
976 root 592 0.0 0.1 2256 620 ? S Feb07 0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
980 The PID or Process ID is 592 in this case so now we can issue the
989 All should now be operational and you should be able to log into the
990 node by using a telnet session to the relevant port, like so ...
994 telnet localhost 3000
998 If that works, you are just about there. you should (assuming you
999 have radios connected to the TNC's) be able to connect out to other
1000 stations and receive incoming ax25 and netrom connections.
1005 4.1. Allowing ax25 connects from users
1007 This is dealt with in the previous section
1010 4.2. Allowing telnet connects from users
1013 >From version 1.47 there is a new (more efficient) way of doing this
1014 (see next section) but, if you prefer, the method of doing it
1015 described here will continue to work just fine.
1018 Allowing telnet connections is quite simple. Firstly you need to add
1019 a line in /etc/services to allow connections to a port number, like
1024 spdlogin 8000/tcp # spider anonymous login port
1028 Then add a line in /etc/inetd.conf like this ....
1030 spdlogin stream tcp nowait root /usr/sbin/tcpd /spider/src/client login telnet
1034 Once this is done, you need to restart inetd like this ....
1042 Now login as sysop and cd spider/src. You can test that spider is
1043 accepting telnet logins by issuing the following command ....
1047 ./client login telnet
1051 You should get a login prompt and on issuing a callsign, you will be
1052 given access to the cluster. Note, you will not get a password login.
1053 There seems no good reason for a password prompt to be given so it is
1057 Assuming all is well, then try a telnet from your linux console ....
1061 telnet localhost 8000
1065 You should now get the login prompt and be able to login as before.
1068 4.3. Setting up telnet connects (from 1.47 onwards)
1070 >From version 1.47 you can choose to allow the perl cluster.pl program
1071 to allow connections directly (i.e. not via the /spider/src/client
1072 interface program). If you are using Windows then this is the only
1073 method available of allowing incoming telnet connections.
1076 To do this you need first to remove any line that you may previously
1077 have set up in /etc/inetd.conf. Remember to:-
1085 to make the change happen...
1088 Having done that, you need to copy the file /spider/perl/Listeners.pm
1089 to /spider/local and then edit it. You will need to uncomment the line
1090 containing "0.0.0.0" and select the correct port to listen on. So that
1091 it looks like this:-
1101 As standard, the listener will listen on all interfaces
1102 simultaneously. If you require more control than this, you can
1103 specify each interface individually:-
1108 ["gb7baa.dxcluster.net", 8000],
1109 ["44.131.16.2", 6300],
1114 This will only be successful if the IP addresses on each interface are
1115 static. If you are using some kind of dynamic IP addressing then the
1116 'default' method is the only one that will work.
1119 Restart the cluster.pl program to enable the listener.
1122 One important difference with the internal listener is that no echoing
1123 is done by the cluster program. Users will need to set 'local-echo' on
1124 in their telnet clients if it isn't set automatically (as per the
1125 standards). Needless to say this will probably only apply to Windows
1129 4.4. Setting up for AGW Engine (1.47 onwards)
1131 AGW Engine is a Windows based ax25 stack. You can connect to an AGW
1132 engine from Linux as well as Windows based machines.
1135 In order to enable access to an AGW Engine you need to copy
1136 /spider/perl/AGWConnect.pm to /spider/local and edit it. Specifically
1142 o set $login and $passwd to the values set up in your AGW
1143 installation. If you haven't set any there, then you should not
1147 o You can connect to a remote AGW engine (ie on some other machine)
1148 by changing $addr and $port appropriately.
1150 o Restart the cluster.pl program
1154 4.5. Setting up node connects
1156 In order to allow cluster node connections, spider needs to know that
1157 the connecting callsign is a cluster node. This is the case whether
1158 the connect is incoming or outgoing. In spider this is a simple task
1159 and can be done in runtime.
1162 Later versions of Spider can distinguish different software and treat
1163 them differently. For example, the WCY beacon cannot be handles by
1164 AK1A type nodes as AK1A does not know what to do with PC73. There are
1165 4 different types of node at present and although they may not have
1166 any major differences at the moment, it allows for compatibility. The
1171 set/node (AK1A type)
1178 For now, we will assume that the cluster we are going to connect to is
1182 Start up the cluster as you did before and login as the sysop with
1183 client. The cluster node I am wanting to make a connection to is
1184 GB7BAA but you would obviously use whatever callsign you required. At
1193 The case does not matter as long as you have a version of DXSpider
1194 later than 1.33. Earlier versions required the callsign to be in
1198 That is now set, it is as simple as that. To prove it, login on yet
1199 another console as sysop, cd to spider/src and issue the command ...
1203 ./client gb7baa (using the callsign you set as a node)
1207 You should get an initialisation string from DXSpider like this ...
1216 If the callsign you just set up as a cluster node is for an incoming
1217 connect, this is all that needs to be done. If the connection is to
1218 be outgoing then a connection script needs to be written.
1221 Sometimes you make a mistake... Honest, it does happen. If you want
1222 to make a node back to being a normal user, regardless of what type it
1231 4.6. Connection scripts
1233 Because DXSpider operates under Linux, connections can be made using
1234 just about any protocol; AX25, NETRom, tcp/ip, ROSE etc are all
1235 possible examples. Connect scripts live in the /spider/connect
1236 directory and are simple ascii files. Writing a script for
1237 connections is therefore relatively simple.
1240 The connect scripts consist of lines which start with the following
1241 keywords or symbols:-
1245 # All lines starting with a # are ignored, as are completely blank
1250 timeout followed by a number is the number of seconds to wait
1251 for a command to complete. If there is no timeout specified in
1252 the script then the default is 60 seconds.
1256 abort is a regular expression containing one or more strings to
1257 look for to abort a connection. This is a perl regular
1258 expression and is executed ignoring case.
1262 connect followed by ax25, agw (for Windows users) or telnet and
1263 some type dependent information. In the case of a telnet
1264 connection, there can be up to two parameters. The first is the
1265 ip address or hostname of the computer you wish to connect to
1266 and the second is the port number you want to use (this can be
1267 left out if it is a normal telnet session). In the case of an
1268 ax25 session then this would normally be a call to ax25_call or
1269 netrom_call as in the example above. It is your responsibility
1270 to get your node and other ax25 parameters to work before going
1274 ' line in a chat type script. The words/phrases normally come in
1275 pairs, either can be empty. Each line reads input from the
1276 connection until it sees the string (or perl regular expression)
1277 contained in the left hand string. If the left hand string is
1278 empty then it doesn't read or wait for anything. The comparison
1279 is done ignoring case. When the left hand string has found what
1280 it is looking for (if it is) then the right hand string is sent
1281 to the connection. This process is repeated for every line of
1286 client starts the connection, put the arguments you would want
1287 here if you were starting the client program manually. You only
1288 need this if the script has a different name to the callsign you
1289 are trying to connect to (i.e. you have a script called other
1290 which actually connects to GB7DJK-1 [instead of a script called
1294 There are many possible ways to configure the script but here are
1295 three examples, one for a NETRom/AX25 connect, one for AGW engines and
1301 abort (Busy|Sorry|Fail)
1302 # don't forget to chmod 4775 netrom_call!
1303 connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
1304 # you can leave this out if you call the script 'gb7dxm'
1310 abort (Busy|Sorry|Fail)
1311 # this does exactly the same as the previous example
1312 # the '1' is the AGW port number to connect thru for g1tlh
1314 # you can leave this out if you call the script 'gb7dxm'
1320 connect telnet dirkl.tobit.co.uk
1321 # tell GB7DJK-1 that it is connected to GB7DJK
1322 # you can leave this out if you call this script 'gb7djk'
1323 client gb7djk telnet
1326 Both these examples assume that everything is set up properly at the
1327 other end. You will find other examples in the /spider/examples
1331 4.7. Starting the connection
1333 You start the connection, from within a sysop enabled cluster login,
1334 by typing in the word connect followed by a script name like this ....
1338 G0VGS de GB7MBC 13-Dec-1998 2041Z >connect gb7djk-1
1339 connection to GB7DJK-1 started
1340 G0VGS de GB7MBC 13-Dec-1998 2043Z >
1344 This will start a connection using the script called gb7djk-1. You
1345 can follow the connection by watching the term or console from where
1346 you started cluster.pl. From version 1.47 onwards, you will need to
1347 set/debug connect first. You should see something like this ...
1351 <- D G1TLH connect gb7djk-1
1352 -> D G1TLH connection to GB7DJK-1 started
1353 -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
1355 CONNECT sort: telnet command: dirkl.tobit.co.uk
1356 CHAT "login" -> "gb7djk"
1358 Red Hat Linux release 5.1 (Manhattan)
1359 Kernel 2.0.35 on an i586
1363 CHAT "word" -> "gb7djk"
1365 received "Password: "
1367 Connected to GB7DJK-1, starting normal protocol
1368 <- O GB7DJK-1 telnet
1370 GB7DJK-1 channel func state 0 -> init
1372 <- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
1373 <- D GB7DJK-1 PC38^GB7DJK-1^~
1374 <- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users Max users 0 Uptime
1380 With later versions of Spider there is a set/login command for users.
1381 This tells them when a user or node logs in or out. If you do not add
1382 a line to your scripts after the final line (or before the client line
1383 which should always be last if needed) then the login/logout
1384 information will be sent to users before the login actually completes.
1385 This means if a node is unreachable, it will continue sending logins
1386 and logouts to users even though it is not actually connecting. To
1387 avoid this use the following line ...
1388 In a script, this might look like ...
1393 abort (Busy|Sorry|Fail)
1394 connect telnet mary 3000
1400 Cluster links in particular suffer greatly from the presence of telnet
1401 echo. This is caused by the telnet negotiation itself and can create
1402 at worst severe loops. At best it creates unnecessary bandwidth and
1403 large logfiles! There are things that can be done to limit this
1404 problem but will not always work dependent on the route taken to
1408 Telnet echo itself should only be a problem if the connection is being
1409 made to the telnet port (23). This port uses special rules that
1410 include echo negotiation. If the connection is to a different port,
1411 such as 7300, this negotiation does not happen and therefore no echo
1415 Sometimes it is not possible to make a direct connection to another
1416 node and this can cause problems. There is a way of trying to
1417 suppress the telnet echo but this will not always work, unfortunately
1418 it is difficult to be more specific. Here is an example of what I
1424 abort (Busy|Sorry|Fail)
1425 connect telnet mary.lancs.ac.uk
1429 So, the first connection is made by Spider. This is fine as Spider
1430 uses the Net_Telnet script from within perl. This actually uses TCP
1431 rather than TELNET so no negotiation will be done on the first
1432 connection. Once connected to mary.lancs.ac.uk, the command is sent
1433 to suppress echo. Now a telnet is made to a cluster node that is
1434 accepting connections on port 23. The problem with this link is that
1435 the negotiation is made by the remote machine, therefore you have no
1436 control over it. The chances are that this link will create echo and
1437 there will be no way you can stop it.
1441 4.9. Autostarting the cluster
1443 Ok, you should now have DXSpider running nicely and allowing connects
1444 by cluster nodes or users. However, it has to be shutdown and
1445 restarted manually. It would be much easier to have it start
1450 This is not only a way to start the cluster automatically, it also
1451 works as a watchdog, checking the sanity of DXSpider and respawning it
1452 should it crash for any reason. Before doing the following, shutdown
1453 the cluster as you did earlier.
1456 Login as root and bring up the /etc/inittab file in your favourite
1457 editor. Add the following lines to the file near the end ...
1461 ##Start DXSpider on bootup and respawn it should it crash
1462 DX:3:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
1466 This line works fine for RedHat distributions. It is also fine for
1467 SuSE up to 7.0. From SuSE 7.1 you need to add runlevels 2 and 5 like
1472 DX:235:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
1476 The line required for Slackware distributions is slightly different.
1477 My thanks to Aurelio, PA3EZL for this information.
1481 DX:23:respawn:/bin/su - sysop -c "/usr/bin/perl -w /spider/perl/cluster.pl" >/dev/tty7
1485 This will automatically start DXSpider on tty7 (ALT-F7) on bootup and
1486 restart it should it crash for any reason.
1489 NB: It should be noted that /dev/tty7 is only an example. Some SuSE
1490 systems will only accept upto tty6. It really does not matter which
1494 As root type the command telinit q. DXSpider should start up
1495 immediately. You will see the output on tty7 and if you login as
1496 sysop you should find everything running nicely.
1499 5. Microsoft Windows Installation
1505 What you'll be left with once you've followed these instructions is
1506 (hopefully) a working DX Spider v1.50 system that is capable of
1507 accepting or originating "internet" connections, plus inbound and
1508 outbound AX.25 and TCP/IP radio connections.
1510 On the other hand, you may have an enquiring mind, or better yet, may
1511 be looking for a useful way of connecting your current (perhaps) AK1A
1512 cluster "to the internet" via some networking mechanism (BPQEther,
1513 etc) or other. I won't be producing instructions for the latter case,
1514 because I don't have an AK1A to play with. But someone might ...
1516 Whatever, this document is intended to get you started with DX Spider
1517 in a Microsoft Windows (TM) environment. It's not intended to teach
1518 you anything other than how to perform a minimum configuration of a DX
1519 Spider installation and have it able to connect across "the internet"
1520 to other DX Clusters, while accepting inbound TELNET and radio
1524 5.2. The requirements
1526 The very first things you're going to need are (in order of
1530 o A cup of good, strong tea
1532 o A supported Windows platform with an internet connection so you can
1533 download the necessary software bits and bobs directly to it. There
1534 are other ways, but this is preferable.
1536 o Another cup of good, strong tea
1538 o If all goes according to plan, about an hour to spare
1540 o Plenty of good, strong tea
1545 The platform I used to generate these instructions was a "vanilla"
1546 Microsoft Windows Me 4.90.3000 system, with a 700MHz AMD Athlon
1547 processor and 96 Mb memory. I've also personally verified that it runs
1548 on my laptop (Pentium 266MHz, 32 Mb memory, Windows 98 SE v4.10.2222
1549 A) and a computer that I assembled from a random pile of junk (AMD
1550 K6-2 333MHz, 64 Mb memory, Windows 98 v4.10.1998). As a result, I have
1551 reason to believe that what I'm about to describe will perform equally
1552 on any 32-bit MS Windows environment with 32 Mb of memory.
1554 Because of the changes that have recently been made to the core
1555 "cluster.pl" module and the introduction of a very lightweight
1556 "winclient.pl", I have a sneaking suspicion that this will now run on
1557 any platform that has reasonably complete support for Perl. Is there
1558 someone out there with both an enquiring mind and (say) a Macintosh,
1561 Please bear in mind, though, that my instructions relate solely to how
1562 to get this going under a Microsoft Windows environment, and I have
1563 zero intention of trying to make them say otherwise.
1568 Install your chosen Perl environment. Unless you have a very good
1569 reason for not doing so, I strongly suggest that you use ActivePerl
1570 v5.6. For my testing & development, I used build 623. (A recent
1571 installation used the newer ActivePerl v5.6.1, build 633 without any
1572 noticable difficulty.) You can get this from:
1573 http://www.activestate.com/Products/ActivePerl/Download.html
1576 The link takes you to an initial page of System Requirements and
1577 Software Prerequisites. If you do not have it already installed, you
1578 can download and install the Windows Installer 2.0 for a Win98
1579 installation. Be forewarned, you will have to reboot your PC at the
1580 completion of the installer's installation.
1582 If you already have the installer on your PC, simply click on the Next
1583 arrow at the bottom of the page. Two clicks will finally get you to
1584 the actual download page. The MSI version of Build 633 is now 8.6MB
1585 in size, so make that a big cup of tea or coffee if you're on a slow
1588 During installation, please ensure that you do choose the options to
1589 "Add Perl to the PATH environment variable" and "Create Perl file
1590 extension association"; it will make your life so much easier. Once
1591 the installation is finished, be sure to reboot your PC. You probably
1592 won't be told anywhere else that this needs to be done now, but it
1595 Once you've rebooted, open a "DOS box" (Start > Run > command might do
1596 it, if you can't find it elsewhere) and from wherever it lands, type
1597 PERL -v <ENTER> (it's better if that's a lower-case be rewarded with
1598 some interesting information about your Perl installation. If you're
1599 not, you must go back to the beginning and discover what went wrong
1600 and fix it. It's pointless to proceed unless this simple check is
1601 passed. Assuming it did work, you may now move on.
1604 5.5. Additional packages
1606 Some extensions ("packages") need to be added to the base Perl
1607 distribution, and we'll do this next. If you're using the Perl I
1608 recommended, and don't know any better for yourself, then just blindly
1609 following these instructions will work just fine. If that didn't
1610 describe you, then you're on your own.
1612 Visit the following URL:
1614 http://www.activestate.com/PPMPackages/zips/6xx-builds-only/
1616 and download the following files:-
1628 If this is a new installation, now would also be a good time to
1629 install a copy of WinZip on your PC. Make yourself a convenient
1630 directory to unpack all of these zip files into (I put mine in
1631 "D:\ppm>" but "C:\ppm" works just as well.) and do the following (the
1632 bits you type in are blue ). You can upzip all of the files into the
1633 same directory. When prompted, simply overwrite the Readme file from
1634 each zip package. Note that where these files land will be directly
1635 related to where you chose to install your ActivePerl (mine, as you
1636 can probably guess from what follows, went into "D:\Perl"):-
1640 D:\ppm>ppm install Data-Dumper.ppd
1641 Installing package 'Data-Dumper.ppd'
1642 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.bs
1643 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.dll
1644 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.exp
1645 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.lib
1646 Installing D:\Perl\html\site\lib\auto\Data\Dumper\Dumper.html
1647 Installing D:\Perl\site\lib\Data\Dumper\Dumper.pm
1648 Writing D:\Perl\site\lib\auto\Data\Dumper\Dumper.packlist
1653 I'm not going to bother you with exhaustive details of the rest of
1654 them, but suffice it to say you need to:
1658 ppm install DB_File.ppd
1659 ppm install Net-Telnet.ppd
1660 ppm install TimeDate.ppd
1661 ppm install Time-HiRes.ppd
1665 If all that seemed to work OK, time to move along. Before anyone who
1666 is familiar with PPM tells me that we didn't need to download and keep
1667 those files locally, I knew that. I also knew that PPM is sometimes
1668 awkward to configure via firewalls, and that sometimes the
1669 repositories don't always work the way we'd hope. I do it that way
1670 because it suits me.
1675 Get the current version of the DX Spider distribution. This needs to
1676 be v1.50 or later. You've got two ways (currently) of getting this;
1677 either get a CVS update from sourceforge (if you don't know what this
1678 is, then it isn't for you) or get the latest "official" release from:
1680 http://www.dxcluster.org/download/index.html
1682 or if you want the lastest snapshot of CVS version (which is produced
1685 http://www.dxcluster.org/download/CVSlatest.tgz
1687 This is generally the best one to go for as it is completely up to
1688 date. However, there is always the very slight chance that it might
1689 unstable. Generally, there will be a note on the website if this is
1693 The only difference between "CVSlatest.tgz" and the latest "official"
1694 release version is that it is more up to date. Do not confuse the
1695 "CVSlatest.tgz" file with "Downloading from Sourceforge with CVS" -
1696 they are two quite different things. "Downloading from Sourceforge
1697 with CVS" is explained in a section within the Admin manual.
1700 If you go down the CVS route (ie installing WinCVS as explained in the
1701 Admin manual and downloaded from sourceforge), then everything will be
1702 nicely installed on your local disk. If you got the CVSlatest.tgz
1703 file, unzip (winzip) it to "C:\". This is an important point since
1704 paths are included within the .tgz file. Make sure you unzip to the
1705 root directory of whichever drive you use... "C:\" or "D:\" or ..,
1706 not "C:\spider." If you double click on CVSlatest.tgz, WinZip should
1707 open with a dialogue box that says the Archive contains a single file
1708 (CVSlatest.tar) and asks whether WinZip should decompress it to a
1709 temporary fold and then open it. Say "Yes" and then you will get the
1710 typical Classical WinZip listing of files ready for extraction.
1711 Remember, extract them to your desired root directory ("C:\" or "D:\"
1712 or ...). The following examples assume that you put it on drive
1713 "C:\", for convenience.
1716 6. Installing the software
1718 At this point you will need to create 2 additional directories under
1719 "C:\Spider." Make directories "C:\spider\local" and
1720 "C:\spider\local_cmd". If "C:\spider" is missing, go back and figure
1721 out why, because it shouldn't be.
1723 Now create your own local copy of the DXVars.pm file by:-
1727 copy c:\spider\perl\DXVars.pm.issue
1728 c:\spider\local\DXVars.pm
1732 Now you'll need to edit this file using a text editor like Notepad. If
1733 nothing else, you can simply
1749 to bring up an editor window containing the file. As an absolute
1750 minimum you must adjust the following items in DXVars.pm:-
1753 o $mycall - Should hold the callsign of your DX Cluster
1755 o $myname - The SysOp's first name
1757 o $myalias - the SysOp's callsign. Cannot be the same as $mycall!
1759 o $myqth - The station's geographical location (QTH).
1761 o $mylatitude - The station latitude in degrees and decimal fractions
1763 o $mylongitude - The station longitude in degrees and decimal
1767 o $mylocator - The Maidenhead (or QRA) locator of the station
1769 You really also ought to update the $myqth and $myemail variables. And
1770 unless you are absolutely certain you know what you're doing, you
1771 should change nothing else in this file. Note that if you use an "@"
1772 or a "$" character in one of the above strings (typically in $myemail)
1773 you must write them as "\@" or "\$".
1776 6.1. Incoming telnets
1778 If you want to enable inbound "TELNET" connections (or you are running
1779 Windows 98, NT, 2000 or XP), you've got a little more work to do. From
1780 a handy "DOS box" that's not doing anything else, do the following:-
1784 copy \spider\perl\Listeners.pm \spider\local
1786 notepad listeners.pm
1790 The following line need attention:-
1794 # ["0.0.0.0", 7300],
1798 On my machine, I've simply uncommented the "0.0.0.0" entry by removing
1799 the '#' from the front of the line.
1801 You MUST carry out this step if you are running on a Windows 98, NT,
1802 2000 or XP based system
1804 If you don't have a static hostname for your machine, and you intend
1805 to allow folk to connect to your machine across the internet, then I'd
1806 suggest you pay a visit to www.dyndns.org and create one for yourself.
1807 While it's free, it will take a modest amount of effort on your part
1808 to read, understand and implement what needs to be done to set this
1812 If your machine is connected to the internet and you don't want to
1813 allow your machine to be visible to the outside world you should
1814 change the "0.0.0.0" to "127.0.0.1" [which is "localhost"]. This will
1815 then only allow connections from inside your machine. As was said
1816 earlier: if you aren't running Win9x (or you want to use DXTelnet or
1817 somesuch), then you need to have the machine listening at least to
1818 "127.0.0.1" ("0.0.0.0" means all IP addresses).
1821 6.2. The AGW packet engine
1823 On the assumption that you'll be using the SV2AGW Packet Engine to
1824 interface your radios to the cluster, it would be a good idea to
1825 download the Packet Engine software! You can get this software from:
1827 http://www.raag.org/sv2agw/agwpe.zip
1829 Depending upon your TNCs, you may also need to get:
1831 http://www.raag.org/sv2agw/drivers.zip
1833 A couple of the tools:
1835 http://www.raag.org/sv2agw/agwterm.zip
1837 http://www.raag.org/sv2agw/agwmonitor.zip
1839 will also help with troubleshooting of the RF links themselves.
1841 Install and configure AGWPE. You should now create your own local
1842 copy of AGWConnect.pm by:-
1846 copy c:\spider\perl\AGWConnect.pm
1847 c:\spider\local\AGWConnect.pm
1855 notepad AGWConnect.pm
1859 to bring up an editor window containing the file. You must consider
1860 adjusting the following items in AGWConnect.pm:-
1863 o $enable - set to '1' to enable AGWPE interface
1865 o $login - the login ID you chose when you set up the SV2AGW
1868 o $passwd - password that matches $login
1870 The login ID and passwd only need to be set if you are accessing AGW
1871 separately via its web interface. This interface is normally not
1872 needed for use with DXSpider.
1875 6.3. Setting up the initial user files
1877 Next you need to create the initial user files, etc. A tool is
1878 supplied which will do this for you. To run the tool:-
1883 perl create_sysop.pl
1887 If all goes according to plan, you will see no output from this
1888 program, and after a brief wait, your DOS prompt will be returned.
1890 Depending on how brave you are, you might now care to try the
1898 If you did everything you were told, your DOS window will now hold a
1899 display which looks something like:-
1903 DXSpider DX Cluster Version 1.50
1904 Copyright (c) 1998-2002 Dirk Koopman G1TLH
1905 loading prefixes ...
1906 loading band data ...
1907 loading user file system ...
1908 starting listeners ...
1909 Internal port: localhost 27754
1911 reading in duplicate spot and WWV info ...
1912 reading existing message headers ...
1916 @msg = 0 before delete
1917 @msg = 0 after delete
1918 reading cron jobs ...v cron: reading /spider/cmd/crontab
1919 cron: adding 1 0 * * 0
1920 DXUser::export("$main::data/user_asc")
1921 reading database descriptors ...
1922 doing local initialisation ...
1923 orft we jolly well go ...
1928 Now, if that's what you've got, you are very nearly home and dry (in
1929 as far as these particular experiments are concerned, anyhow)
1931 If you are running Windows 9x you can access your new cluster (from
1932 the local machine) by finding yourself another "DOS box" and doing the
1942 If you are running Windows NT, 2000 or XP then winclient.pl does not
1943 work. We don't know why other than this seems to be some kind of
1944 incomaptibility in perl. You can achieve the same thing by telnetting
1945 to the port you defined in Listeners.pm (7300 as default), thus:-
1950 telnet localhost 7300
1954 On getting the login: prompt, enter your sysop callsign (the one you
1955 put in DXVars.pm as $myalias).
1956 I would recommend strongly that you obtain a better telnet client than
1957 that which comes with windows (I use PuTTY).
1960 Anyway, if you are rewarded with a display which looks something
1965 Hello Iain, this is GB7SJP in Amersham, Bucks running DXSpider V1.50
1966 Cluster: 1 nodes, 1 local / 1 total users Max users 2 Uptime 0 00:00
1967 M0ADI de GB7SJP 4-Mar-2001 1511Z >
1971 You've arrived. Try some commands, and see how they feel. (In case you
1972 were wondering, "Iain", "M0ADI" and "GB7SJP" all came from the version
1973 of DXVars.pm that was on the machine when I started the winclient.pl)
1976 The interface is very basic. It is a simple command line. There are
1977 better looking interfaces. Most of the "standard" logging and DX
1978 Cluster access programs that are capable of connecting via a TCP or
1979 telnet connection will work as a "Sysop Console" client. You connect
1980 to "localhost" on the port that you defined in Listeners.pm (usually
1981 7300). I recommend packages like DXTelnet.
1984 6.4. Connecting to other clusters
1986 If you want to connect this to another cluster, then you'll want to
1987 negotiate a link with someone. For experimental purposes, I'm happy to
1988 allow folk to connect to GB7DXA (spud.ath.cx), on the understanding
1989 that the system may or may not be there and may or may not be
1990 connected to anything particularly useful at any given moment. Contact
1991 me by Email if you want me to set up a connection for you.
1994 7. General Information
1996 The following relates to all versions of DXSpider and is not platform
2000 7.1. The crontab file
2002 Login as sysop and create a file in /spider/local_cmd called crontab.
2003 Edit it with your favourite editor and add a line like this (I have
2008 # check every 10 minutes to see if gb7xxx is connected and if not
2009 # start a connect job going
2011 0,10,20,30,40,50 * * * * start_connect('gb7xxx') unless connected('gb7xxx')
2015 The callsign involved will be the callsign of the cluster node you are
2016 going to connect to. This will now check every 10 minutes to see if
2017 gb7xxx is connected, if it is then nothing will be done. If it is
2018 not, then a connect attempt will be started.
2019 There are probably lots of other things you could use this crontab
2020 file for. If you want to know more about it, look at the DXSpider
2021 website at the cron page where it is explained more fully.