5ad00ccf71770b34101dd0e5ebe09bcd5e8698fd
[spider.git] / html / connect.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3   <head>
4     <title>Connecting to other Clusters</title>
5         <meta name="Keywords" content="DX Cluster, DXSpider, Spider, Packet Cluster, DXCluster, Pavillion Software, AK1A, AX25, AX.25, WWV, Packet Radio, Amateur Radio, Propagation, DX, DXing, G1TLH, GB7TLH, Dirk Koopman, Mailing list, Linux, RedHat, PERL">
6         <meta name="Description" content="Software and systems for realtime digital communications between amateur radio stations for the provision of information on propagation conditions and stations operating">
7         <meta name="Author" content="Dirk Koopman G1TLH">
8     <link rel=stylesheet href="style.css" type="text/css" title="default stylesheet">
9   </head>
10
11   <body TEXT="#000000" LINK="#0000ff" VLINK="#800080" BGCOLOR="#FFFFFF">
12         <FONT COLOR="#606060"> 
13           <hr>
14           <h2>Connecting to other Clusters</h2>
15           <hr>
16         </font>
17         
18         
19         <address><a href="mailto:djk@tobit.co.uk">Dirk Koopman G1TLH</a></address>
20         <p>
21           <!-- Created: Sun Dec 13 20:25:14 GMT 1998 -->
22           <!-- hhmts start -->
23 Last modified: Sun Sep  2 21:12:19 BST 2001
24 <!-- hhmts end -->
25         <p>At the moment, anybody can connect inwards at any time from outside, either by ax25 or by
26           telnet (assuming you have followed the instructions in <a href="install.html">installation</a>
27           instructions. However, in order to connect outwards, you will need to create <em>connect</em> scripts.
28           
29         <p><em>Connect</em> scripts live in the <tt>/spider/connect</tt> directory and are simple ascii scripts
30           that are written using a normal editor. There are a couple of examples in the issue directory.
31
32         <p>The first example is a simple telnet (TCP/IP) connect to port 7000 of WR3D (this will actually
33           work if you have or make an arrangement to connect to WR3D)[oh, and substitute x1xxx for your real
34           node callsign].</p>
35
36         <p>The colouration will be explained later on in this page, you don't have to try to emulate the colours!</p>
37
38         <pre>
39     <span class=cmd>timeout 15</span>
40     # this is a comment
41     <span class=connect>connect telnet wr3d.dxcluster.net 7000</span>
42     <span class=expect>'login'</span> <span class=send>'x1xxx'</span>
43     <span class=cmd>client wr3d telnet</span>
44         </pre>
45
46         <p>If you put the above script in a file called: <tt>/spider/connect/wr3d</tt> then you can leave out 
47           line: <span class=cmd>client wr3d telnet</span>.
48         <p>For a connect that requires a login and execution of the programs
49           from a normal shell, do:-</p>
50
51         <pre>
52     <span class=cmd>timeout 15</span>
53     <span class=connect>connect telnet dirkl.tobit.co.uk</span>
54     <span class=expect>'login'</span> <span class=send>'gb7djk'</span>
55     <span class=expect>'word'</span> <span class=send>'gb7djk'</span>
56     <span class=expect>'\$'</span> <span class=send>'cd /spider/perl'</span>
57     # set the line to prevent echoing, leaving this out will
58     # confuse whole networks for hours!
59     <span class=expect>'\$'</span> <span class=send>'stty -echo raw'</span>
60     # tell GB7DJK that you are GB7DJK-1
61     <span class=expect>'\$'</span> <span class=send>'/spider/src/client gb7djk-1 telnet'</span>
62     # tell GB7DJK-1 that it is connected to GB7DJK
63     # you can leave this out if you call this script 'gb7djk'
64     <span class=cmd>client gb7djk telnet</span>
65         </pre>
66
67         <p>a ax25 example (connecting from GB7DJK, to GB7DXM via my local BPQ node and one X1J intermediate node):-
68
69         <pre>
70     <span class=cmd>timeout 60</span>
71     <span class=cmd>abort (Busy|Sorry|Fail)</span>
72     # don't forget to chmod 4775 netrom_call!
73     <span class=connect>connect ax25 /usr/sbin/netrom_call bbs gb7djk-0 g1tlh-0</span>
74     <span class=expect>'Connected'</span> <span class=send>''</span>
75     <span class=expect>'Connected'</span> <span class=send>'c np7'</span>
76     <span class=expect>'*** Connect'</span> <span class=send>'c gb7dxm'</span>
77     <span class=expect>'Connect'</span> <span class=send>''</span>
78         </pre>
79
80     <p>The <tt>-0</tt> ssid is important if you want it to work reliably. Obviously if you are
81     using a different ssid then you would use that. You can use the Netrom alias instead if it
82         it is in the machines node table</p>
83
84     <p>A AGW Engine example would be very similar and look like this:-</p>
85
86         <pre>
87     <span class=cmd>timeout 60</span>
88     <span class=cmd>abort (Busy|Sorry|Fail)</span>
89     <span class=connect>connect agw 2 g1tlh</span>
90     <span class=expect>'*** Connected'</span> <span class=send>''</span>
91     <span class=expect>'*** Connect'</span> <span class=send>'c np7'</span>
92     <span class=expect>'Connected'</span> <span class=send>'c gb7dxm'</span>
93     <span class=expect>'Connect'</span> <span class=send>''</span>
94         </pre>
95         
96         <p>A connection is started manually by typing in <tt>connect &lt;scriptname&gt;</tt> on a sysop enabled
97           <tt>client.pl</tt> session. For example:-</p>
98
99         <pre>
100     G1TLH de GB7DJK 13-Dec-1998 2041Z > connect gb7djk-1
101     connection to GB7DJK-1 started
102     G1TLH de GB7DJK 13-Dec-1998 2043Z > 
103         </pre>
104         
105         <p>Consider the following specific example, it is located in the file <tt>/spider/connect/gb7djk-1</tt> :-</p>
106
107     <pre>
108     <span class=cmd>timeout 15</span>
109     <span class=connect>connect telnet dirkl.tobit.co.uk</span>
110     <span class=expect>'login'</span> <span class=send>'gb7djk'</span>
111     <span class=expect>'ssword'</span> <span class=send>'gb7djk'</span>
112     </pre>
113
114     <p>You can watch the progress of the connection (if you have <tt>connect</tt> 
115      debugging enabled [<tt>set/debug connect</tt>]) on the
116           <tt>cluster.pl</tt> screen and you should see something like this:-</p>
117
118         <pre>
119     &lt;- D G1TLH connect gb7djk-1
120     -> D G1TLH connection to GB7DJK-1 started
121     -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
122     <span class=cmd>timeout set to 15</span>
123     <span class=connect>CONNECT sort: telnet command: dirkl.tobit.co.uk</span>
124     CHAT "login" -> "gb7djk"
125     received "
126     Red Hat Linux release 5.1 (Manhattan)
127     Kernel 2.0.35 on an i586
128     "
129     <span class=expect>received "login: "</span>
130     <span class=send>sent "gb7djk"</span>
131     CHAT "word" -> "gb7djk"
132     received "gb7djk
133  
134     "
135     <span class=expect>received "Password: "</span>
136     <span class=send>sent "gb7djk"</span>
137     Connected to GB7DJK-1, starting normal protocol
138     &lt;- O GB7DJK-1 telnet
139     -> B GB7DJK-1 0
140     GB7DJK-1 channel func  state 0 -> init
141     &lt;- D GB7DJK-1 
142     &lt;- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
143     &lt;- D GB7DJK-1 PC38^GB7DJK-1^~
144     &lt;- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 0 00:00^5447^~
145     etc
146         </pre>
147
148         <p>I have coloured the commands in an attempt to make it clear as
149         to what goes on, where and why.  Lines that are <span
150         class=cmd>coloured thus</span> are miscellaneous setup
151         commands. Lines that are <span class=connect>this colour</span>
152         are lines that make the initial <span
153         class=connect>connection</span> to the first hop. The things that
154         are <span class=expect>this colour</span> are the strings I am
155         looking for (what I am <span class=expect>"expecting"</span>) and
156         the things that are <span class=send>this colour</span> are the
157         commands I am going to <span class=send>send</span> when I see the
158         "expect" strings in the input.</p>
159
160         <p>The script starts by setting the timeout to 15 seconds, then starts
161           the connection. It is <b>important</b> to note that, in the case of 
162           an ax25 connection (usually) this will be the callsign of the <i>first hop</i> along the 
163           route that you are going to take to the destination, so this will be typically the callsign
164           of your local node.</p>
165
166     <p>You will notice that the script waits until it sees the left hand string
167           of the pair and <b>only then</b> does it send the, 
168           string on the right 
169           hand side. This is called a <i>State Machine</i>.</p>
170
171         <p>A <i>state machine</i> "walks" through a conversation (in this case) looking
172           for "states" (in this case particular strings) and then performs some
173           "action" (usually some kind of connect command for the type of system
174           you are trying to navigate). When one "state" "fires" (detects the string
175           are looking for), it sends the command associated with that state and then 
176           moves onto the next "state", in our case: the next line.</p>
177
178         <p><b>PLEASE NOTE</b>: the colouration in the above example is for illustrative purposes
179           only, the debug output is all one colour.</p>
180
181         <p>The connect scripts consist of lines which start with the
182         following keywords or symbols:-</p>
183
184         <ul>
185
186                 <li><b>#</b> All lines starting with a <b>#</b> are
187                 ignored, as are wholly blank lines.
188         <br><br>
189
190                 <li><b>timeout</b> followed by a number is the number of
191                 seconds to wait for a command to complete. If there is no
192                 <b>timeout</b> specified in the script then the default is 60
193                 seconds.
194         <br><br>
195
196                 <li><b>abort</b> is a regular expression containing one or
197                 more strings to look for to abort a connection. This is a perl
198                 regular expression and is executed ignoring case.
199         <br><br>
200
201                 <li><b>connect</b> followed by <b>ax25</b>, <b>telnet</b> or <b>agw</b>
202                 and some type dependent information. 
203
204         <p>In the case of a
205                 <b>telnet</b> connection, there can be up to two parameters,
206                 the first is the ip address or hostname of the computer you
207                 wish to connect to and the second is the port number you want
208                 to use (this can be left out if it is a normal telnet
209                 session).
210
211                 <p>In the case of an <b>ax25</b> session then this would
212                 normally be a call to <tt>/usr/sbin/ax25_call</tt> or
213                 <tt>/usr/sbin/netrom_call</tt> as in the example above. It is your
214                 responsibility to get your node and other ax25 parameters to
215                 work before going down this route!
216
217         <p>For <b>agw</b> connections you will need a port number (starting
218         from 1) and the callsign of the first &quot;hop&quot; along the way.
219         <br><br>
220
221                 <li><b>'</b> is the delimiting character for a word or
222                 phrase of an expect/send line in a <tt>chat</tt> type
223                 script. The words/phrases normally come in pairs, either can
224                 be empty. Each line reads input from the connection until it
225                 sees the string (or perl regular expression) contained in the
226                 left hand string. If the left hand string is empty then it
227                 doesn't read or wait for anything. The comparison is done
228                 ignoring case.
229
230                 <p>When the left hand string has found what it is looking (if
231                 it is) then the right hand string is sent to the connection.
232
233                 <p>This process is repeated for every line of <tt>chat</tt> script. 
234         <br><br>
235
236                 <li><b>client</b> starts the connection, put the arguments
237                 you would want here if you were starting the client program
238                 manually. You only need this if the script has a different
239                 name to the callsign you are trying to connect to (i.e. you
240                 have a script called <tt>other</tt> which actually connects to
241                 <tt>GB7DJK-1</tt> [instead of a script called
242                 <tt>gb7djk-1</tt>]).
243
244         </ul>
245
246 <!-- Standard Footer!! -->
247         <p>&nbsp;</p>
248         <hr>
249         <span class=copy>Copyright &copy; 1998 by Dirk Koopman G1TLH. All Rights Reserved</span><br>
250         <span class=id>$Id$</span>
251   </body>
252 </html>