more changes
[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 20:44:59 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         <pre>
37     timeout 15
38     # this is a comment
39     connect telnet wr3d.dxcluster.net 7000
40     'login' 'x1xxx'
41     client wr3d telnet
42         </pre>
43
44         <p>For a connect that requires a login and execution of the programs
45           from a normal shell, do:-</p>
46
47         <pre>
48     timeout 15
49     connect telnet dirkl.tobit.co.uk
50     'login' 'gb7djk'
51     'word' 'gb7djk'
52     '\$' 'cd /spider/perl'
53     # set the line to prevent echoing, leaving this out will
54     # confuse whole networks for hours!
55     '\$' 'stty -echo raw'
56     # tell GB7DJK that you are GB7DJK-1
57     '\$' '/spider/src/client gb7djk-1 telnet'
58     # tell GB7DJK-1 that it is connected to GB7DJK
59     # you can leave this out if you call this script 'gb7djk'
60     client gb7djk telnet
61         </pre>
62
63         <p>a ax25 example (connecting from GB7DJK, to GB7DXM via my local BPQ node and one X1J intermediate node):-
64         <pre>
65     timeout 60
66     abort (Busy|Sorry|Fail)
67     # don't forget to chmod 4775 netrom_call!
68     connect ax25 /usr/sbin/netrom_call bbs gb7djk-0 g1tlh-0
69     'Connected' ''
70     'Connected' 'c np7'
71     '*** Connect' 'c gb7dxm'
72     'Connect' ''
73         </pre>
74
75     <p>The <tt>-0</tt> ssid is important if you want it to work reliably. Obviously if you are
76     using a different ssid then you would use that. You can use the Netrom alias instead if it
77         it is in the machines node table</p>
78
79     <p>A AGW Engine example would be very similar and look like this:-</p>
80
81         <pre>
82     timeout 60
83     abort (Busy|Sorry|Fail)
84     connect agw 2 g1tlh
85     '*** Connected' ''
86     '*** Connect' 'c np7'
87     'linked to' 'c gb7dxm'
88     'Connect' ''
89         </pre>
90         
91         <p>A connection is started manually by typing in <tt>connect &lt;scriptname&gt;</tt> on a sysop enabled
92           <tt>client.pl</tt> session. For example:-</p>
93
94         <pre>
95     G1TLH de GB7DJK 13-Dec-1998 2041Z > connect gb7djk-1
96     connection to GB7DJK-1 started
97     G1TLH de GB7DJK 13-Dec-1998 2043Z > 
98         </pre>
99         
100         <p>Consider the following specific example, it is located in the file <tt>/spider/connect/gb7djk-1</tt> :-</p>
101
102     <pre>
103     <span class=cmd>timeout 15</span>
104     <span class=cmd>connect telnet dirkl.tobit.co.uk</span>
105     <span class=expect>'login'</span> <span class=send>'gb7djk'</span>
106     <span class=expect>'ssword'</span> <span class=send>'gb7djk'</span>
107     </pre>
108
109     <p>You can watch the progress of the connection (if you have <tt>connect</tt> 
110      debugging enabled [<tt>set/debug connect</tt>]) on the
111           <tt>cluster.pl</tt> screen and you should see something like this:-</p>
112
113         <pre>
114     &lt;- D G1TLH connect gb7djk-1
115     -> D G1TLH connection to GB7DJK-1 started
116     -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
117     <span class=cmd>timeout set to 15</span>
118     <span class=cmd>CONNECT sort: telnet command: dirkl.tobit.co.uk</span>
119     CHAT "login" -> "gb7djk"
120     received "
121     Red Hat Linux release 5.1 (Manhattan)
122     Kernel 2.0.35 on an i586
123     "
124     <span class=expect>received "login: "</span>
125     <span class=send>sent "gb7djk"</span>
126     CHAT "word" -> "gb7djk"
127     received "gb7djk
128  
129     "
130     <span class=expect>received "Password: "</span>
131     <span class=send>sent "gb7djk"</span>
132     Connected to GB7DJK-1, starting normal protocol
133     &lt;- O GB7DJK-1 telnet
134     -> B GB7DJK-1 0
135     GB7DJK-1 channel func  state 0 -> init
136     &lt;- D GB7DJK-1 
137     &lt;- D GB7DJK-1 Last login: Sun Dec 13 17:59:56 from dirk1
138     &lt;- D GB7DJK-1 PC38^GB7DJK-1^~
139     &lt;- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 0 00:00^5447^~
140     etc
141         </pre>
142
143         <p>I have coloured the commands in an attempt to make it clear as to what goes on, where and why. 
144           <span class=cmd>These coloured lines are miscellaneous commands</span>, the <span class=expect>things
145           that are this colour are the strings I am looking for (what I am "expecting")</span> 
146           and the <span class=send>things that are this colour
147           are the commands I am going to send when I see the "expect" strings in the input</span>.</p>
148
149         <p>The script starts by setting the timeout to 15 seconds, then starts
150           the connection. It is <b>important</b> to note that, in the case of 
151           an ax25 connection (usually) this will be the callsign of the <i>first hop</i> along the 
152           route that you are going to take to the destination, so this will be typically the callsign
153           of your local node.</p>
154
155     <p>You will notice that the script waits until it sees the left hand string
156           of the pair and <b>only then</b> does it send the, 
157           string on the right 
158           hand side. This is called a <i>State Machine</i>.</p>
159
160         <p>A <i>state machine</i> "walks" through a conversation (in this case) looking
161           for "states" (in this case particular strings) and then performs some
162           "action" (usually some kind of connect command for the type of system
163           you are trying to navigate). When one "state" "fires" (detects the string
164           are looking for), it sends the command associated with that state and then 
165           moves onto the next "state", in our case: the next line.</p>
166
167         <p><b>PLEASE NOTE</b>: the colouration in the above example is for illustrative purposes
168           only, the debug output is all one colour.</p>
169
170         <p>The connect scripts consist of lines which start with the
171         following keywords or symbols:-</p>
172
173         <ul>
174
175                 <li><b>#</b> All lines starting with a <b>#</b> are
176                 ignored, as are wholly blank lines.
177         <br><br>
178
179                 <li><b>timeout</b> followed by a number is the number of
180                 seconds to wait for a command to complete. If there is no
181                 <b>timeout</b> specified in the script then the default is 60
182                 seconds.
183         <br><br>
184
185                 <li><b>abort</b> is a regular expression containing one or
186                 more strings to look for to abort a connection. This is a perl
187                 regular expression and is executed ignoring case.
188         <br><br>
189
190                 <li><b>connect</b> followed by <b>ax25</b>, <b>telnet</b> or <b>agw</b>
191                 and some type dependent information. 
192
193         <p>In the case of a
194                 <b>telnet</b> connection, there can be up to two parameters,
195                 the first is the ip address or hostname of the computer you
196                 wish to connect to and the second is the port number you want
197                 to use (this can be left out if it is a normal telnet
198                 session).
199
200                 <p>In the case of an <b>ax25</b> session then this would
201                 normally be a call to <tt>/usr/sbin/ax25_call</tt> or
202                 <tt>/usr/sbin/netrom_call</tt> as in the example above. It is your
203                 responsibility to get your node and other ax25 parameters to
204                 work before going down this route!
205
206         <p>For <b>agw</b> connections you will need a port number (starting
207         from 1) and the callsign of the first &quot;hop&quot; along the way.
208         <br><br>
209
210                 <li><b>'</b> is the delimiting character for a word or
211                 phrase of an expect/send line in a <tt>chat</tt> type
212                 script. The words/phrases normally come in pairs, either can
213                 be empty. Each line reads input from the connection until it
214                 sees the string (or perl regular expression) contained in the
215                 left hand string. If the left hand string is empty then it
216                 doesn't read or wait for anything. The comparison is done
217                 ignoring case.
218
219                 <p>When the left hand string has found what it is looking (if
220                 it is) then the right hand string is sent to the connection.
221
222                 <p>This process is repeated for every line of <tt>chat</tt> script. 
223         <br><br>
224
225                 <li><b>client</b> starts the connection, put the arguments
226                 you would want here if you were starting the client program
227                 manually. You only need this if the script has a different
228                 name to the callsign you are trying to connect to (i.e. you
229                 have a script called <tt>other</tt> which actually connects to
230                 <tt>GB7DJK-1</tt> [instead of a script called
231                 <tt>gb7djk-1</tt>]).
232
233         </ul>
234
235 <!-- Standard Footer!! -->
236         <p>&nbsp;</p>
237         <hr>
238         <span class=copy>Copyright &copy; 1998 by Dirk Koopman G1TLH. All Rights Reserved</span><br>
239         <span class=id>$Id$</span>
240   </body>
241 </html>