1 The DXSpider Installation Manual v1.49
2 Iain Philipps, G0RDI (g0rdi@77hz.com) and Ian Maude, G0VGS,
4 February 2002 revision 1.2
6 A reference for SysOps of the DXSpider DXCluster program.
7 ______________________________________________________________________
71 1.3 Installing the software
72 1.4 Setting callsigns etc
73 1.5 The client program
74 1.6 Starting up for the first time
76 2. Linux quick installation guide
78 3. Setting up the AX25 Utilities
82 3.3 Installing the RPM's
89 3.10 Getting it all running
93 4.1 Allowing ax25 connects from users
94 4.2 Allowing telnet connects from users
95 4.3 Setting up telnet connects (from 1.47 onwards)
96 4.4 Setting up for AGW Engine (1.47 onwards)
97 4.5 Setting up node connects
98 4.6 Connection scripts
99 4.7 Starting the connection
101 4.9 Autostarting the cluster
103 5. Microsoft Windows Installation
109 5.5 Additional packages
112 6. Installing the software
115 6.2 The AGW packet engine
116 6.3 Setting up the initial user files
117 6.4 Connecting to other clusters
119 7. General Information
124 ______________________________________________________________________
126 1. Linux Installation
130 This section describes the installation of DX Spider v1.47 on a RedHat
131 Linux Distribution. Wherever possible I will try to include
132 differences for other distributions. I do not intend to try and cover
133 the installation of Linux or the setup of the AX25 utilities. If you
134 need help on this then read Iains original installation guide that
135 comes with the Spider distribution.
138 I am assuming a general knowledge of Linux and its commands. You
139 should know how to use tar and how to edit files using your favourite
143 The crucial ingredient for all of this is Perl. Earlier versions of
144 Spider required perl 5.004, however it is now STRONGLY recommended
145 that you use at least version 5.005_03 as this is the version being
146 used in the development of Spider.
149 In addition to the standard Red Hat distribution you will require the
150 following modules from http://www.cpan.org/CPAN.html , please note
151 however that with later versions of perl, some of these modules may be
152 included with the distribution. Get the modules anyway and try to
153 install as below. If they complain, they are probably already a part
154 of your perl distribution.
158 o Data-Dumper-2.10.tar.gz
160 o TimeDate-1.10.tar.gz
162 o IO-1.20.tar.gz (for perl 5.00403 and lower)
164 o Net-Telnet-3.02.tar.gz
168 o Time-HiRes-01.20.tar.gz
171 Copy the CPAN modules listed above to a convenient place on your
172 computer. One good place would be /usr/local/packages, and the
173 instructions which follow will assume that that's where you have put
177 Log in as 'root', and make sure you're at '/root' before you continue.
178 Here are exactly the commands you must issue next: -
199 # tar xvfz /usr/local/packages/Data-Dumper-2.10.tar.gz
200 # cd Data-Dumper-2.10
206 # tar xvfz /usr/local/packages/TimeDate-1.10.tar.gz
213 # tar xvfz /usr/local/packages/IO-1.20.tar.gz
217 # make install UNINST=1
220 # tar xvfz /usr/local/packages/Net-Telnet-3.02.tar.gz
227 # tar xvfz /usr/local/packages/Curses-1.06.tar.gz
234 # tar xvfz /usr/local/packages/Time-HiRes-01.20.tar.gz
235 # cd Time-HiRes-01.20
244 Do not fall into the trap of thinking they're all the same, just
245 because they nearly are! Pay particular attention to the instructions
252 I will assume that you have already downloaded the latest tarball of
253 the DXSpider software and are ready to install it. I am assuming
254 version 1.47 for this section but of course you would use the latest
258 Login as root and create a user to run the cluster under. UNDER NO
259 CIRCUMSTANCES USE ROOT AS THIS USER!. I am going to use the name
260 sysop. You can call it anything you wish. Depending on your security
261 requirements you may wish to use an existing user, however this is
271 For SUSE distributions, the command would be ..
281 Now set a password for the user ...
287 # Retype new UNIX password:
288 passwd: all authentication tokens updated successfully
294 1.3. Installing the software
296 Now to unpack the DX Spider distribution, set symbolic links and group
297 permissions. Copy the tarball to /home/sysop and do the following.
302 # tar xvfz spider-1.47.tar.gz
303 # ln -s ~sysop/spider /spider
304 # groupadd -g 251 spider (or another number)
310 If you do not have the command groupadd available to you simply add a
311 line in /etc/group by hand.
315 # vi /etc/group (or your favorite editor)
321 You also need to add some others to the group, including your own
322 callsign (this will be used as an alias) and root. The finished line
323 in /etc/group should look something like this
325 spider:x:251:sysop,g0vgs,root
328 The next step is to set the permissions on the Spider directory tree
331 # chown -R sysop.spider spider
332 # find . -type d -exec chmod 2775 {} \;
333 # find . -type f -exec chmod 775 {} \;
339 This last step allows various users of the group spider to have write
340 access to all the directories. This is not really needed just yet but
341 will be useful when web interfaces start to appear.
344 Finally, you need to fix the permissions on the ax25_call and
345 netrom_call programs. Check where they are with the locate command
346 and alter the permissions with the chmod command like this ..
350 # chown root ax25_call netrom_call
351 # chmod 4775 ax25_call netrom_call
357 1.4. Setting callsigns etc
359 Now login to your machine as the user you created earlier. In my case
360 that user is called sysop. Once logged in, issue the following
368 $ cp perl/DXVars.pm.issue local/DXVars.pm
370 $ vi DXVars.pm (or your favourite editor)
376 Using the distributed DXVars.pm as a a template, set your cluster
377 callsign, sysop callsign and other user info to suit your own
388 This is the call sign of your cluster. If you use an SSID then
389 include it here also.
397 This is the sysop user callsign, normally your own.
400 PLEASE USE CAPITAL LETTERS FOR CALLSIGNS
403 Note that this a perl file which will be parsed and executed as part
404 of the cluster. If you get it wrong then perl will complain when you
405 start the cluster process. It is important only to alter the text of
406 any section. Some of the lines look a little odd. Take this line for
409 $myemail = "ianmaude\@btinternet.com";
412 There appears to be an extra slash in there. However this has to be
413 there for the file to work so leave it in.
416 DON'T alter any file in /spider/perl, they are overwritten with every
417 release. Any files or commands you place in /spider/local or
418 /spider/local_cmd will automagically be used in preference to the ones
419 in /spider/perl EVEN while the cluster is running!
422 Save the new file and change directory to ../perl ....
432 Now type the following command which creates the basic user file with
443 1.5. The client program
445 In earlier versions of Spider, all the processes were Perl scripts.
446 This was fine but with a lot of users your computer memory would soon
447 be used up. To combat this a new client was written in "C". This
448 client only works for incoming connects at the moment. Before you can
449 use it though it has to be "made". CD to /spider/src and type make.
450 You should see the output on your screen and hopefully now have a
451 small C program called client. Leave it in this directory.
455 1.6. Starting up for the first time
457 We can now bring spider up for the first time and see if all is well
458 or not! It should look something like this ...
464 DXSpider DX Cluster Version 1.47
465 Copyright (c) 1998 Dirk Koopman G1TLH
467 loading band data ...
468 loading user file system ...
469 starting listener ...
470 reading existing message headers
472 orft we jolly well go ...
478 If all is well then login on another term or console as sysop and cd
479 to /spider/src. Now issue the following command ...
489 This should log you into the cluster as the sysop under the alias
490 callsign we set earlier. In this case the callsign is G0VGS. The
491 cluster callsign is set in the DXVars.pm file in /spider/local. In
492 this case we will assume that this was set as GB7MBC. You should
493 therefore see this when you login ....
497 G0VGS de GB7MBC 19-Nov-1999 2150Z >
503 If you do, congratulations! If not, look over the instructions again,
504 you have probably missed something out. You can shut spider down
505 again with the command ....
515 and both the cluster and the client should return to Linux prompts.
519 2. Linux quick installation guide
521 This section is designed for experienced Spider sysops who want to
522 install Spider from scratch. It is simply a check list of things that
523 need to be done without any explanations. The name in brackets at the
524 end of each line is the user that should be doing that process.
529 o Get the additional CPAN modules and install them (root)
531 o Create the "sysop" user and set a password (root)
533 o Put the Spider tarball in sysop and untar it (root)
535 o ln -s sysop/spider /spider (root)
537 o groupadd -g 251 spider (root)
539 o Add any more users you need to the group entry in /etc/group (root)
541 o Set the permissions on the spider tree (root)
543 o Fix permissions on ax25_call and netrom_call (root)
545 o Login as the sysop user
547 o cd to /spider (sysop)
549 o mkdir local (sysop)
551 o mkdir local_cmd (sysop)
553 o cp perl/DXVars.pm.issue local/DXVars.pm (sysop)
555 o cd to /spider/local and edit DXVars to set your details (sysop)
559 o ./create_sysop.pl (sysop)
561 o ./cluster.pl (sysop)
564 Spider should now be running and you should be able to login using the
570 o Enter the correct line in ax25d.conf (root)
572 o Enter the correct line in /etc/services (root)
574 o Enter the correct line in /etc/inetd.conf (root)
576 o killall -HUP inetd (root)
579 Spider should now be able to accept logins via telnet, netrom and
585 o Start the cluster (sysop)
587 o set/node and type for links (sysop)
589 o Write any connect scripts (sysop)
591 o Edit /spider/crontab as required (sysop)
593 o Edit any other files as necessary (sysop)
595 o Set filters, hops and forwarding files (sysop)
599 o Enter the correct line in /etc/inittab (root)
602 3. Setting up the AX25 Utilities
604 The aim of this section is not to fully cover the installation and
605 configuration of all the possible ax25 modules. I will attempt to
606 cover a simple installation and configure 2 serial ports as if they
607 had TNC's on them. I will also show what additional configuration the
608 DXSpider program requires.
611 Please bear in mind that I am basing this section on a RedHat 7.1
612 distribution, if you are using SuSe or any other distibution then your
613 mileage may vary. I will be happy to make any changes and additions
614 if you email me any errors or distribution specific requirements.
617 You would probably benefit from reading the AX25-HOWTO which is much
618 more comprehensive and an interesting configuration program is also
619 available called ax25-config which may help you to configure things.
622 The following files are extracts from the working files at GB7MBC and
623 are in daily use. However, there are many ways that you can configure
624 the ax25 utils, this is just the one I use, it does not mean it is
625 necessarily the best or for that matter, the right way!
630 There are 2 things you need to do initially. You need to get the 3
631 files required for the ax25 installation and you need to make some
632 changes to the kernel configuration.
635 The first thing is to get the versions of the ax25 utils that match
636 your kernel. You may also wish to get a node package of some kind.
637 There are 2 main node packages in use of which I shall keep to the
638 original by Tomi Manninen, OH2BNS as this is included in the ax25 rpms
639 as standard. The other is AWZNode by IZ5AWZ.
642 For 2.4 kernels you need these files...
646 o libax25-0.0.7-7.i386.rpm
648 o ax25-tools-0.0.6-13.i386.rpm
650 o ax25-apps-0.0.4-9.i386.rpm
655 First you need to add Amateur Radio Support to your kernel. This is a
656 main menu item and should be easily found. Within this header you
657 will find lots of options. For our purposes you need to enable
658 Amateur Radio AX.25 Level 2 Protocol, NET/ROM and the Serial Port KISS
659 Driver. For the purposes of this document I will work under the
660 assumption that you include them in the kernel fully, ie not as
661 modules. If you need to look at compiling your kernel for ax25 more
662 fully, I would refer to the excellent AX25-HOWTO
665 I should say at this stage that NET/ROM is not mandatory. If you do
666 not use it simply ignore any instruction concerning it.
669 Now recompile your kernel in the normal way and reboot your system.
672 3.3. Installing the RPM's
674 Now install the RPM's you downloaded, libax25 first, then ax25-tools,
679 rpm -ivh libax25-0.0.7-7.i386.rpm
680 rpm -ivh ax25-tool-0.0.6-13.i386.rpm
681 rpm -ivh ax25-apps-0.0.4-9.i386.rpm
689 You will find the configuration files in /etc/ax25. These consist of
704 These are the main files. You will find other files but they do not
705 have any use unless you are wanting to use that particular protocol,
706 Rose or axip for example.
709 NOTE:- before we start it is important to realise that every interface
710 requires a different SSID. You should be able to follow this in the
716 This file sets up the ax25 ports you want to use. An example is below
717 for a standard TNC2 ...
721 #portname callsign baudrate paclen window description
722 2m gb7mbc-2 19200 256 2 2m port on 144.900MHz
723 4m gb7mbc-4 19200 256 2 4m port on 70.325MHz
727 Note that the portnames have to be unique.
730 The file headings are as follows ...
733 portname - The name you will refer to the port by
734 callsign - The ax25 callsign you want to assign to the port
735 baudrate - The speed you communicate between TNC and computer
736 paclen - The maximum packet length for ax25 connections
737 window - The ax25 window parameter. This is like 'maxframe'
738 description - A textual description of the port
745 This file sets up the netrom ports you want to use. An example is
746 below and includes a port for both cluster and node. You will see why
747 we need 2 ports later ...
751 #portname callsign alias paclen description
752 netrom gb7mbc-8 BARE 236 Node Netrom Port
753 netrom2 gb7mbc-9 MBCDX 236 Cluster Netrom Port
759 Note that the portnames have to be unique.
762 The file headings are as follows ...
765 portname - The name you will refer to the port by
766 callsign - This is the callsign that NET/ROM traffic from this
768 alias - The NET/ROM alias this port will be assigned
769 paclen - The maximum size of NET/ROM frames transmitted
770 description - A textual description of the port
777 This file sets up the netrom broadcast qualities. An example is below
782 #axport min_obs def_qual worst_qual verbose
789 The file headings are as follows ...
793 axport - The port name in axports that you wish to broadcast
795 min_obs - The minimum obsolescence value for the port
796 def_qual - The default quality for the port
797 worst_qual - The worst quality for the port. Any routes under
798 this quality will be ignored
799 verbose - This flag determines whether you will only broadcast
800 your own node (0) or all known nodes (1)
807 This file controls any incoming ax25 and NET/ROM connections and
808 steers them to the relevant program. There are lots of configuration
809 options you can set here, however they are well covered in the
810 AX25-HOWTO. For our purposes I will show a typical set of parameters.
811 An example is below ...
816 parameters 2 1 6 900 * 15 0
818 default * * * * * * - sysop /spider/src/client client %u ax25
821 parameters 2 1 6 900 * 15 0
823 default * * * * * * 0 root /usr/sbin/node node
826 parameters 2 1 6 900 * 15 0
828 default * * * * * * - sysop /spider/src/client client %u ax25
831 parameters 2 1 6 900 * 15 0
833 default * * * * * * 0 root /usr/sbin/node node
836 parameters 1 10 * * * 3 *
838 default * * * * * * - sysop /spider/src/client client %u ax25
841 parameters 1 10 * * * 3 *
843 default * * * * * * 0 root /usr/sbin/node node
849 There are a few things to take note of here. Firstly, all ax25
850 sections are wrapped in [ ] and all NET/ROM sections are wrapped in <
851 >. Secondly you should be able to see that anyone who forgets to set
852 their callsign in a TNC and tries to connect with the standard NOCALL
853 set into their TNC will not connect, the 'L' means 'lockout'. Lastly
854 and importantly, notice the order of the sections. They are all done
859 You should be able to see that the normal line for access to the
860 cluster is like this ..
864 default * * * * * * - sysop /spider/src/client client %u ax25
870 however, if you wish your users to be able to use SSID's on their
875 default * * * * * * - sysop /spider/src/client client %s ax25
881 For most purposes this is not desirable. The only time you probably
882 will need this is when you need to allow other cluster nodes that are
883 using SSID's in. In this case it would probably be better to use the
884 first example and then add a specific line for that node like this:
888 GB7DJK-2 * * * * * * - sysop /spider/src/client client gb7djk-2 ax25
889 default * * * * * * - sysop /spider/src/client client %u ax25
897 For those of you that wish to run the node, you need to set up the
898 node.conf file. There are a couple of additional files, node.perms is
899 very similar to the way ftp permissions are set up in NOS systems and
900 node.motd is the message anyone logging into the node will get. The
901 node.conf file sets all the parameters of the node as you would
902 expect. An example is below ...
925 # /etc/ax25/node.conf - LinuxNode configuration file
929 # Idle timeout (seconds).
933 # Timeout when gatewaying (seconds).
937 # Visible hostname. Will be shown at telnet login.
939 HostName gb7mbc.ampr.org
947 #LocalNet 44.139.8.48/32
949 # Command aliases. See node.conf(5) for the meaning of the uppercase
950 # letters in the name of the alias.
952 ##Alias CAllbook 'telnet %{2:44.17.0.53} 1235 %1 s'
953 #Alias CONVers 'telnet %{2:oh2ti} 3600 "/n %u %{1:139}\n/w *"'
954 #Alias CLuster 'c hkiclh'
955 Alias CONV "telnet lurpac 3600"
956 Alias BBS "c 70cm gb7crv"
957 Alias DXC "telnet localhost 9000"
958 Alias MUD "telnet homer 4000"
959 ##Alias TEMP "finger temp@mary.g6phf"
960 ##Alias TNOS "c ip1 gb7mbc-5"
961 ##Alias TUtor "telnet gb7mbc 3599"
967 # External commands. See node.conf(5) for the meaning of the uppercase
968 # letters in the name of the extcmd.
970 # Flags: 1 Run command through pipe
973 #ExtCmd TPM 3 nobody /usr/bin/finger finger tpm
974 #ExtCmd ECho 1 nobody /bin/echo echo \%U \%u \%S \%s \%P \%p \%R \%r \%T \%t \%\% \%0 \%{1:foobar} \%{2} \%3 \%4 \%5
978 NodeId "\nBARE:GB7MBC-1"
979 #NodeId \033[01;31m***\033[0m
981 # Netrom port name. This port is used for outgoing netrom connects.
989 # The escape character (CTRL-T)
993 # Resolve ip numbers to addresses?
1000 #NodePrompt "%s@%h \%i> "
1001 NodePrompt "\nBARE:GB7MBC-1 \%i > "
1002 #NodePrompt "\a\033[36m%U\033[0m de \033[01;32m#LNODE\033[0m:\033[01;33mOH2BNS-10\033[0m> "
1008 This should be fairly obvious I hope.
1011 3.10. Getting it all running
1013 Ok, now we have all the relevant files configured, the next step is to
1017 The first thing to do is attach the TNC's. Your TNC's should be in
1018 KISS mode and connected to the serial ports involved.
1021 You now use the 'kissattach' command to connect the TNC's to the
1022 system like this ...
1026 kissattach /dev/ttyS0 2m 44.131.96.199
1027 kissattach /dev/ttyS1 4m 44.131.96.199
1033 Assuming that 44.131.96.199 is your IP address. The devices ttyS0 and
1034 ttyS1 are com1 and com2 respectively. Now we can set some parameters
1039 kissparms -p 2m -t 150 -l 150 -s 50 -r 50
1040 kissparms -p 4m -t 150 -l 150 -s 50 -r 50
1046 The command 'man kissparms' will give you the explanation of the
1050 Now we need to attach the NET/ROM ports in the same way ...
1057 All of the above can be put in a file and called from
1058 /etc/rc.d/rc.local. Put all the above commands in a file called
1059 rc.ax25 and put a line in rc.local to call it.
1062 Now you can start the daemons that set everything in motion ...
1073 All should now be running. All that remains is to get the node
1074 working for telnet connections. If nothing else, this will allow you
1075 to connect to the node yourself to check on connection status etc.
1076 There are 2 files that need to be edited.
1079 First edit /etc/services and add
1083 node 3000/tcp #OH2BNS's Node Software
1089 Assuming you want it to run on port 3000
1092 Now cd /etc/xinetd.d and edit a new file called node. It should look
1098 # unencrypted username/password pairs for authentication.
1101 socket_type = stream
1104 server = /usr/sbin/node
1105 log_on_failure += USERID
1113 You now need to restart the xinetd daemon. First find out what the
1118 ps auxw |grep xinetd
1123 You will get a reply something like this ...
1127 root 592 0.0 0.1 2256 620 ? S Feb07 0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
1133 The PID or Process ID is 592 in this case so now we can issue the
1144 All should now be operational and you should be able to log into the
1145 node by using a telnet session to the relevant port, like so ...
1149 telnet localhost 3000
1155 If that works, you are just about there. you should (assuming you
1156 have radios connected to the TNC's) be able to connect out to other
1157 stations and receive incoming ax25 and netrom connections.
1162 4.1. Allowing ax25 connects from users
1164 This is dealt with in the previous section
1167 4.2. Allowing telnet connects from users
1170 From version 1.47 there is a new (more efficient) way of doing this
1171 (see next section) but, if you prefer, the method of doing it
1172 described here will continue to work just fine.
1175 Allowing telnet connections is quite simple. Firstly you need to add
1176 a line in /etc/services to allow connections to a port number, like
1181 spdlogin 8000/tcp # spider anonymous login port
1187 Then add a line in /etc/inetd.conf like this ....
1189 spdlogin stream tcp nowait root /usr/sbin/tcpd /spider/src/client login telnet
1195 Once this is done, you need to restart inetd like this ....
1205 Now login as sysop and cd spider/src. You can test that spider is
1206 accepting telnet logins by issuing the following command ....
1210 ./client login telnet
1216 You should get a login prompt and on issuing a callsign, you will be
1217 given access to the cluster. Note, you will not get a password login.
1218 There seems no good reason for a password prompt to be given so it is
1222 Assuming all is well, then try a telnet from your linux console ....
1226 telnet localhost 8000
1232 You should now get the login prompt and be able to login as before.
1235 4.3. Setting up telnet connects (from 1.47 onwards)
1237 From version 1.47 you can choose to allow the perl cluster.pl program
1238 to allow connections directly (i.e. not via the /spider/src/client
1239 interface program). If you are using Windows then this is the only
1240 method available of allowing incoming telnet connections.
1243 To do this you need first to remove any line that you may previously
1244 have set up in /etc/inetd.conf. Remember to:-
1255 to make the change happen...
1258 Having done that, you need to copy the file /spider/perl/Listeners.pm
1259 to /spider/local and then edit it. You will need to uncomment the line
1260 containing "0.0.0.0" and select the correct port to listen on. So that
1261 it looks like this:-
1273 As standard, the listener will listen on all interfaces
1274 simultaneously. If you require more control than this, you can
1275 specify each interface individually:-
1280 ["gb7baa.dxcluster.net", 8000],
1281 ["44.131.16.2", 6300],
1288 This will only be successful if the IP addresses on each interface are
1289 static. If you are using some kind of dynamic IP addressing then the
1290 'default' method is the only one that will work.
1293 Restart the cluster.pl program to enable the listener.
1296 One important difference with the internal listener is that no echoing
1297 is done by the cluster program. Users will need to set 'local-echo' on
1298 in their telnet clients if it isn't set automatically (as per the
1299 standards). Needless to say this will probably only apply to Windows
1303 4.4. Setting up for AGW Engine (1.47 onwards)
1305 AGW Engine is a Windows based ax25 stack. You can connect to an AGW
1306 engine from Linux as well as Windows based machines.
1309 In order to enable access to an AGW Engine you need to copy
1310 /spider/perl/AGWConnect.pm to /spider/local and edit it. Specifically
1316 o set $login and $passwd to the values set up in your AGW
1317 installation. If you haven't set any there, then you should not
1321 o You can connect to a remote AGW engine (ie on some other machine)
1322 by changing $addr and $port appropriately.
1324 o Restart the cluster.pl program
1329 4.5. Setting up node connects
1331 In order to allow cluster node connections, spider needs to know that
1332 the connecting callsign is a cluster node. This is the case whether
1333 the connect is incoming or outgoing. In spider this is a simple task
1334 and can be done in runtime.
1337 Later versions of Spider can distinguish different software and treat
1338 them differently. For example, the WCY beacon cannot be handles by
1339 AK1A type nodes as AK1A does not know what to do with PC73. There are
1340 4 different types of node at present and although they may not have
1341 any major differences at the moment, it allows for compatibility. The
1346 set/node (AK1A type)
1355 For now, we will assume that the cluster we are going to connect to is
1359 Start up the cluster as you did before and login as the sysop with
1360 client. The cluster node I am wanting to make a connection to is
1361 GB7BAA but you would obviously use whatever callsign you required. At
1372 The case does not matter as long as you have a version of DXSpider
1373 later than 1.33. Earlier versions required the callsign to be in
1377 That is now set, it is as simple as that. To prove it, login on yet
1378 another console as sysop, cd to spider/src and issue the command ...
1382 ./client gb7baa (using the callsign you set as a node)
1387 You should get an initialisation string from DXSpider like this ...
1397 If the callsign you just set up as a cluster node is for an incoming
1398 connect, this is all that needs to be done. If the connection is to
1399 be outgoing then a connection script needs to be written.
1402 Sometimes you make a mistake... Honest, it does happen. If you want
1403 to make a node back to being a normal user, regardless of what type it
1414 4.6. Connection scripts
1416 Because DXSpider operates under Linux, connections can be made using
1417 just about any protocol; AX25, NETRom, tcp/ip, ROSE etc are all
1418 possible examples. Connect scripts live in the /spider/connect
1419 directory and are simple ascii files. Writing a script for
1420 connections is therefore relatively simple.
1423 The connect scripts consist of lines which start with the following
1424 keywords or symbols:-
1428 # All lines starting with a # are ignored, as are completely blank
1433 timeout followed by a number is the number of seconds to wait
1434 for a command to complete. If there is no timeout specified in
1435 the script then the default is 60 seconds.
1439 abort is a regular expression containing one or more strings to
1440 look for to abort a connection. This is a perl regular
1441 expression and is executed ignoring case.
1445 connect followed by ax25, agw (for Windows users) or telnet and
1446 some type dependent information. In the case of a telnet
1447 connection, there can be up to two parameters. The first is the
1448 ip address or hostname of the computer you wish to connect to
1449 and the second is the port number you want to use (this can be
1450 left out if it is a normal telnet session). In the case of an
1451 ax25 session then this would normally be a call to ax25_call or
1452 netrom_call as in the example above. It is your responsibility
1453 to get your node and other ax25 parameters to work before going
1457 ' line in a chat type script. The words/phrases normally come in
1458 pairs, either can be empty. Each line reads input from the
1459 connection until it sees the string (or perl regular expression)
1460 contained in the left hand string. If the left hand string is
1461 empty then it doesn't read or wait for anything. The comparison
1462 is done ignoring case. When the left hand string has found what
1463 it is looking for (if it is) then the right hand string is sent
1464 to the connection. This process is repeated for every line of
1469 client starts the connection, put the arguments you would want
1470 here if you were starting the client program manually. You only
1471 need this if the script has a different name to the callsign you
1472 are trying to connect to (i.e. you have a script called other
1473 which actually connects to GB7DJK-1 [instead of a script called
1477 There are many possible ways to configure the script but here are
1478 three examples, one for a NETRom/AX25 connect, one for AGW engines and
1484 abort (Busy|Sorry|Fail)
1485 # don't forget to chmod 4775 netrom_call!
1486 connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
1487 # you can leave this out if you call the script 'gb7dxm'
1498 abort (Busy|Sorry|Fail)
1499 # this does exactly the same as the previous example
1500 # the '1' is the AGW port number to connect thru for g1tlh
1502 # you can leave this out if you call the script 'gb7dxm'
1513 connect telnet dirkl.tobit.co.uk
1514 # tell GB7DJK-1 that it is connected to GB7DJK
1515 # you can leave this out if you call this script 'gb7djk'
1516 client gb7djk telnet
1519 Both these examples assume that everything is set up properly at the
1520 other end. You will find other examples in the /spider/examples
1524 4.7. Starting the connection
1526 You start the connection, from within a sysop enabled cluster login,
1527 by typing in the word connect followed by a script name like this ....
1531 G0VGS de GB7MBC 13-Dec-1998 2041Z >connect gb7djk-1
1532 connection to GB7DJK-1 started
1533 G0VGS de GB7MBC 13-Dec-1998 2043Z >
1539 This will start a connection using the script called gb7djk-1. You
1540 can follow the connection by watching the term or console from where
1541 you started cluster.pl. From version 1.47 onwards, you will need to
1542 set/debug connect first. You should see something like this ...
1546 <- D G1TLH connect gb7djk-1
1547 -> D G1TLH connection to GB7DJK-1 started
1548 -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
1550 CONNECT sort: telnet command: dirkl.tobit.co.uk
1551 CHAT "login" -> "gb7djk"
1553 Red Hat Linux release 5.1 (Manhattan)
1554 Kernel 2.0.35 on an i586
1558 CHAT "word" -> "gb7djk"
1560 received "Password: "
1562 Connected to GB7DJK-1, starting normal protocol
1563 <- O GB7DJK-1 telnet
1565 GB7DJK-1 channel func state 0 -> init
1567 <- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
1568 <- D GB7DJK-1 PC38^GB7DJK-1^~
1569 <- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users Max users 0 Uptime
1577 With later versions of Spider there is a set/login command for users.
1578 This tells them when a user or node logs in or out. If you do not add
1579 a line to your scripts after the final line (or before the client line
1580 which should always be last if needed) then the login/logout
1581 information will be sent to users before the login actually completes.
1582 This means if a node is unreachable, it will continue sending logins
1583 and logouts to users even though it is not actually connecting. To
1584 avoid this use the following line ...
1585 In a script, this might look like ...
1590 abort (Busy|Sorry|Fail)
1591 connect telnet mary 3000
1599 Cluster links in particular suffer greatly from the presence of telnet
1600 echo. This is caused by the telnet negotiation itself and can create
1601 at worst severe loops. At best it creates unnecessary bandwidth and
1602 large logfiles! There are things that can be done to limit this
1603 problem but will not always work dependent on the route taken to
1607 Telnet echo itself should only be a problem if the connection is being
1608 made to the telnet port (23). This port uses special rules that
1609 include echo negotiation. If the connection is to a different port,
1610 such as 7300, this negotiation does not happen and therefore no echo
1614 Sometimes it is not possible to make a direct connection to another
1615 node and this can cause problems. There is a way of trying to
1616 suppress the telnet echo but this will not always work, unfortunately
1617 it is difficult to be more specific. Here is an example of what I
1623 abort (Busy|Sorry|Fail)
1624 connect telnet mary.lancs.ac.uk
1630 So, the first connection is made by Spider. This is fine as Spider
1631 uses the Net_Telnet script from within perl. This actually uses TCP
1632 rather than TELNET so no negotiation will be done on the first
1633 connection. Once connected to mary.lancs.ac.uk, the command is sent
1634 to suppress echo. Now a telnet is made to a cluster node that is
1635 accepting connections on port 23. The problem with this link is that
1636 the negotiation is made by the remote machine, therefore you have no
1637 control over it. The chances are that this link will create echo and
1638 there will be no way you can stop it.
1642 4.9. Autostarting the cluster
1644 Ok, you should now have DXSpider running nicely and allowing connects
1645 by cluster nodes or users. However, it has to be shutdown and
1646 restarted manually. It would be much easier to have it start
1651 This is not only a way to start the cluster automatically, it also
1652 works as a watchdog, checking the sanity of DXSpider and respawning it
1653 should it crash for any reason. Before doing the following, shutdown
1654 the cluster as you did earlier.
1657 Login as root and bring up the /etc/inittab file in your favourite
1658 editor. Add the following lines to the file near the end ...
1662 ##Start DXSpider on bootup and respawn it should it crash
1663 DX:3:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
1669 This line works fine for RedHat distributions. It is also fine for
1670 SuSE up to 7.0. From Suse 7.1 you need to add runlevels 2 and 5 like
1675 DX:235:respawn:/bin/su -c "/usr/bin/perl -w /spider/perl/cluster.pl" sysop >/dev/tty7
1681 The line required for Slackware distributions is slightly different.
1682 My thanks to Aurelio, PA3EZL for this information.
1686 DX:23:respawn:/bin/su - sysop -c "/usr/bin/perl -w /spider/perl/cluster.pl" >/dev/tty7
1692 This will automatically start DXSpider on tty7 (ALT-F7) on bootup and
1693 restart it should it crash for any reason.
1696 As root type the command telinit q. DXSpider should start up
1697 immediately. You will see the output on tty7 and if you login as
1698 sysop you should find everything running nicely.
1701 5. Microsoft Windows Installation
1707 What you'll be left with once you've followed these instructions is
1708 (hopefully) a working DX Spider v1.47 system that is capable of
1709 accepting or originating "internet" connections, plus inbound AX.25
1710 and TCP/IP radio connections. If the absence of outbound radio
1711 connections is a serious limitation for you, it would be better for
1712 you to wait a couple more weeks until this support has been added.
1714 On the other hand, you may have an enquiring mind, or better yet, may
1715 be looking for a useful way of connecting your current (perhaps) AK1A
1716 cluster "to the internet" via some networking mechanism (BPQEther,
1717 etc) or other. I won't be producing instructions for the latter case,
1718 because I don't have an AK1A to play with. But someone might ...
1720 Whatever, this document is intended to get you started with DX Spider
1721 in a Microsoft Windows (TM) environment. It's not intended to teach
1722 you anything other than how to perform a minimum configuration of a DX
1723 Spider installation and have it able to connect across "the internet"
1724 to other DX Clusters, while accepting inbound TELNET and radio
1728 5.2. The requirements
1730 The very first things you're going to need are (in order of
1734 o A cup of good, strong tea
1736 o A supported Windows platform with an internet connection so you can
1737 download the necessary software bits and bobs directly to it. There
1738 are other ways, but this is preferable.
1740 o Another cup of good, strong tea
1742 o If all goes according to plan, about an hour to spare
1744 o Plenty of good, strong tea
1749 The platform I used to generate these instructions was a "vanilla"
1750 Microsoft Windows Me 4.90.3000 system, with a 700MHz AMD Athlon
1751 processor and 96 Mb memory. I've also personally verified that it runs
1752 on my laptop (Pentium 266MHz, 32 Mb memory, Windows 98 SE v4.10.2222
1753 A) and a computer that I assembled from a random pile of junk (AMD
1754 K6-2 333MHz, 64 Mb memory, Windows 98 v4.10.1998). As a result, I have
1755 reason to believe that what I'm about to describe will perform equally
1756 on any 32-bit MS Windows environment with 32 Mb of memory.
1758 Because of the changes that have recently been made to the core
1759 "cluster.pl" module and the introduction of a very lightweight
1760 "winclient.pl", I have a sneaking suspicion that this will now run on
1761 any platform that has reasonably complete support for Perl. Is there
1762 someone out there with both an enquiring mind and (say) a Macintosh,
1765 Please bear in mind, though, that my instructions relate solely to how
1766 to get this going under a Microsoft Windows environment, and I have
1767 zero intention of trying to make them say otherwise.
1772 Install your chosen Perl environment. Unless you have a very good
1773 reason for not doing so, I strongly suggest that you use ActivePerl
1774 v5.6. For my testing & development, I used build 623. You can get
1776 http://www.activestate.com/Products/ActivePerl/Download.html
1778 You will need to choose either the MSI or the AS package. My
1779 recommendation is that you choose the MSI package and deal with the
1780 consequences if your system isn't equipped with support for the latest
1781 MS Installer; you'll be better off in the long run. The build 623
1782 download is 7,460 KB, so now is a really good time to have some tea if
1783 you're on a slow dial-up connection.
1785 During installation, please ensure that you do choose the options to
1786 "Add Perl to the PATH environment variable" and "Create Perl file
1787 extension association"; it will make your life so much easier. Once
1788 the installation is finished, be sure to reboot your PC. You probably
1789 won't be told anywhere else that this needs to be done now, but it
1792 Once you've rebooted, open a "DOS box" (Start > Run > command might do
1793 it, if you can't find it elsewhere) and from wherever it lands, type
1794 PERL -v <ENTER> (it's better if that's a lower-case be rewarded with
1795 some interesting information about your Perl installation. If you're
1796 not, you must go back to the beginning and discover what went wrong
1797 and fix it. It's pointless to proceed unless this simple check is
1798 passed. Assuming it did work, you may now move on.
1801 5.5. Additional packages
1803 Some extensions ("packages") need to be added to the base Perl
1804 distribution, and we'll do this next. If you're using the Perl I
1805 recommended, and don't know any better for yourself, then just blindly
1806 following these instructions will work just fine. If that didn't
1807 describe you, then you're on your own.
1809 Visit the following URL:
1811 http://www.activestate.com/PPMPackages/zips/6xx-builds-only/
1813 and download the following files:-
1826 Make yourself a convenient directory to unpack all of these zip files
1827 into (I put mine in "D:\ppm>") and do the following (the bits you type
1828 in are blue ). Note that where these files land will be directly
1829 related to where you chose to install your ActivePerl (mine, as you
1830 can probably guess from what follows, went into "D:\Perl"):-
1834 D:\ppm>ppm install Data-Dumper.ppd
1835 Installing package 'Data-Dumper.ppd'
1836 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.bs
1837 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.dll
1838 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.exp
1839 Installing D:\Perl\site\lib\auto\Data\Dumper\Dumper.lib
1840 Installing D:\Perl\html\site\lib\auto\Data\Dumper\Dumper.html
1841 Installing D:\Perl\site\lib\Data\Dumper\Dumper.pm
1842 Writing D:\Perl\site\lib\auto\Data\Dumper\Dumper.packlist
1849 I'm not going to bother you with exhaustive details of the rest of
1850 them, but suffice it to say you need to:
1854 ppm install DB_File.ppd
1855 ppm install Net-Telnet.ppd
1856 ppm install TimeDate.ppd
1857 ppm install Time-HiRes.ppd
1862 If all that seemed to work OK, time to move along. Before anyone who
1863 is familiar with PPM tells me that we didn't need to download and keep
1864 those files locally, I knew that. I also knew that PPM is sometimes
1865 awkward to configure via firewalls, and that sometimes the
1866 repositories don't always work the way we'd hope. I do it that way
1867 because it suits me.
1872 Get the current version of the DX Spider distribution. This needs to
1873 be v1.47 or later. You've got two ways (currently) of getting this;
1874 either get a CVS update from sourceforge (if you don't know what this
1875 is, then it isn't for you) or get the latest "official" release from:-
1877 http://www.dxcluster.org/download/index.html
1879 or if you want the lastest snapshot of CVS version (which is produced
1882 http://www.dxcluster.org/download/CVSlatest.tgz
1884 This is generally the best one to go for as it is completely up to
1885 date. However, there is always the very slight chance that it might
1886 unstable. Generally, there will be a note on the website if this is
1890 The only difference between "CVSlatest.tgz" and the latest "official"
1891 release version is that it is more up to date. Don't confuse this TGZ
1892 file with "Downloading from Sourceforge with CVS" - they are two quite
1896 If you went down the CVS route (ie installed wincvs and downloaded
1897 from sourceforge), then everything will be nicely set out on your
1898 local disk. If you got the TGZ file, unpack it to somewhere
1899 convenient. The following examples assume that you put it on drive
1900 "C:\", for convenience.
1903 You will need winzip to manipulate the TGZ files (they are bit like
1904 ZIP files) if you are not using CVS.
1907 6. Installing the software
1909 Ensure that your CVS session or your WINunZIPped file have left you
1910 with a directory "C:\spider\local" and C:\spider\local_cmd"; if not,
1911 go to "C:\spider\" and create them. If "C:\spider" is missing, go back
1912 and figure out why, because it shouldn't be.
1915 Now create your own local copy of the DXVars.pm file by:-
1919 copy c:\spider\perl\DXVars.pm.issue
1920 c:\spider\local\DXVars.pm
1925 Now you'll need to edit this file using a text editor. If nothing
1926 else, you can simply
1944 to bring up an editor window containing the file. As an absolute
1945 minimum you must adjust the following items in DXVars.pm:-
1948 o $mycall - Should hold the callsign of your DX Cluster
1950 o $myname - The SysOp's first name
1952 o $myalias - the SysOp's callsign. Cannot be the same as $mycall!
1954 o $myqth - The station's geographical location (QTH).
1956 o $mylatitude - The station latitude in degrees and decimal fractions
1958 o $mylongitude - The station longitude in degrees and decimal
1961 o $mylocator - The Maidenhead (or QRA) locator of the station
1963 You really also ought to update the $myqth and $myemail variables. And
1964 unless you are absolutely certain you know what you're doing, you
1965 should change nothing else in this file. Note that if you use an "@"
1966 or a "$" character in one of the above strings (typically in $myemail)
1967 you must write them as "\@" or "\$".
1971 6.1. Incoming telnets
1973 If you want to enable inbound "TELNET" connections (or you are running
1974 Windows NT, 2000 or XP), you've got a little more work to do. From a
1975 handy "DOS box" that's not doing anything else, do the following:-
1981 copy \spider\perl\Listeners.pm \spider\local
1983 notepad listeners.pm
1988 The following lines need attention:-
1997 On my machine, I've simply uncommented the "0.0.0.0" entry by removing
1998 the '#' from the front of the line.
2000 You MUST carry out this step if you are running on a Windows NT, 2000
2003 If you don't have a static hostname for your machine, and you intend
2004 to allow folk to connect to your machine across the internet, then I'd
2005 suggest you pay a visit to www.dyndns.org and create one for yourself.
2006 While it's free, it will take a modest an amount of effort on your
2007 part to read, understand and implement what needs to be done to set
2011 If your machine is connected to the internet and you don't want to
2012 allow your machine to be visible to the outside world you should
2013 change the "0.0.0.0" to "127.0.0.1" [which is "localhost"]. This will
2014 then only allow connections from inside your machine. As was said
2015 earlier: if you aren't running Win9x (or you want to use DXTelnet or
2016 somesuch), then you need to have the machine listening at least to
2017 "127.0.0.1" ("0.0.0.0" means all IP addresses).
2020 6.2. The AGW packet engine
2022 On the assumption that you'll be using the SV2AGW Packet Engine to
2023 interface your radios to the cluster, you should now create your own
2024 local copy of AGWConnect.pm by:-
2028 copy c:\spider\perl\AGWConnect.pm
2029 c:\spider\local\AGWConnect.pm
2038 notepad AGWConnect.pm
2043 to bring up an editor window containing the file. You must consider
2044 adjusting the following items in AGWConnect.pm:-
2047 o $enable - set to '1' to enable AGWPE interface
2049 o $login - the login ID you chose when you set up the SV2AGW
2052 o $passwd - password that matches $login
2055 6.3. Setting up the initial user files
2057 Next you need to create the initial user files, etc. A tool is
2058 supplied which will do this for you. To run the tool:-
2063 perl create_sysop.pl
2068 If all goes according to plan, you will see no output from this
2069 program, and after a brief wait, your DOS prompt will be returned.
2071 Depending on how brave you are, you might now care to try the
2081 If you did everything you were told, your DOS window will now hold a
2082 display which looks something like:-
2086 DXSpider DX Cluster Version 1.47
2087 Copyright (c) 1998-2001 Dirk Koopman G1TLH
2088 loading prefixes ...
2089 loading band data ...
2090 loading user file system ...
2091 starting listeners ...
2092 Internal port: localhost 27754
2094 reading in duplicate spot and WWV info ...
2095 reading existing message headers ...
2099 @msg = 0 before delete
2100 @msg = 0 after delete
2101 reading cron jobs ...v cron: reading /spider/cmd/crontab
2102 cron: adding 1 0 * * 0
2103 DXUser::export("$main::data/user_asc")
2104 reading database descriptors ...
2105 doing local initialisation ...
2106 orft we jolly well go ...
2113 Now, if that's what you've got, you are very nearly home and dry (in
2114 as far as these particular experiments are concerned, anyhow)
2116 If you are running Windows 9x you can access your new cluster (from
2117 the local machine) by finding yourself another "DOS box" and doing the
2128 If you are running Windows NT, 2000 or XP then winclient.pl does not
2129 work. We don't know why other than this seems to be some kind of
2130 incomaptibility in perl. You can achieve the same thing by telnetting
2131 to the port you defined in Listeners.pm (7300 as default), thus:-
2136 telnet localhost 7300
2141 On getting the login: prompt, enter your sysop callsign (the one you
2142 put in DXVars.pm as $myalias).
2145 I would recommend strongly that you obtain a better telnet client than
2146 that which comes with windows (I use PuTTY).
2149 Anyway, if you are rewarded with a display which looks something
2154 Hello Iain, this is GB7SJP in Amersham, Bucks running DXSpider V1.47
2155 Cluster: 1 nodes, 1 local / 1 total users Max users 2 Uptime 0 00:00
2156 M0ADI de GB7SJP 4-Mar-2001 1511Z >
2161 You've arrived. Try some commands, and see how they feel. (In case you
2162 were wondering, "Iain", "M0ADI" and "GB7SJP" all came from the version
2163 of DXVars.pm that was on the machine when I started the winclient.pl)
2166 The interface is very basic. It is a simple command line. There are
2167 better looking interfaces. Most of the "standard" logging and DX
2168 Cluster access programs that are capable of connecting via a TCP or
2169 telnet connection will work as a "Sysop Console" client. You connect
2170 to "localhost" on the port that you defined in Listeners.pm (usually
2171 7300). I recommend packages like DXTelnet.
2174 6.4. Connecting to other clusters
2176 If you want to connect this to another cluster, then you'll want to
2177 negotiate a link with someone. For experimental purposes, I'm happy to
2178 allow folk to connect to GB7DXA (spud.ath.cx), on the understanding
2179 that the system may or may not be there and may or may not be
2180 connected to anything particularly useful at any given moment. Contact
2181 me by Email if you want me to set up a connection for you.
2184 7. General Information
2186 The following relates to all versions of DXSpider and is not platform
2190 7.1. The crontab file
2192 Login as sysop and create a file in /spider/local_cmd called crontab.
2193 Edit it with your favourite editor and add a line like this (I have
2198 # check every 10 minutes to see if gb7xxx is connected and if not
2199 # start a connect job going
2201 0,10,20,30,40,50 * * * * start_connect('gb7xxx') unless connected('gb7xxx')
2207 The callsign involved will be the callsign of the cluster node you are
2208 going to connect to. This will now check every 10 minutes to see if
2209 gb7xxx is connected, if it is then nothing will be done. If it is
2210 not, then a connect attempt will be started.
2213 There are probably lots of other things you could use this crontab
2214 file for. If you want to know more about it, look at the DXSpider
2215 website at the cron page where it is explained more fully.