add DXCIDR, fix version no tracking
[spider.git] / html / connect.html
index b5a067b0147ee62226c3b152f1e6ef1c84846504..4a4eaa3cd86dadb7e583a7e3b9d7b6b58964982c 100644 (file)
 <html>
   <head>
     <title>Connecting to other Clusters</title>
+       <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">
+       <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">
+       <meta name="Author" content="Dirk Koopman G1TLH">
+    <link rel=stylesheet href="style.css" type="text/css" title="default stylesheet">
   </head>
 
-  <body>
-    <h2>Connecting to other Clusters</h2>
-
-    <hr>
-    <address><a href="mailto:djk@tobit.co.uk">Dirk Koopman G1TLH</a></address>
+  <body TEXT="#000000" LINK="#0000ff" VLINK="#800080" BGCOLOR="#FFFFFF">
+       <FONT COLOR="#606060"> 
+         <hr>
+         <h2>Connecting to other Clusters</h2>
+         <hr>
+       </font>
+       
+       
+       <address><a href="mailto:djk@tobit.co.uk">Dirk Koopman G1TLH</a></address>
        <p>
-<!-- Created: Sun Dec 13 20:25:14 GMT 1998 -->
-<!-- hhmts start -->
-Last modified: Sun Dec 13 22:31:33 GMT 1998
+         <!-- Created: Sun Dec 13 20:25:14 GMT 1998 -->
+         <!-- hhmts start -->
+Last modified: Sun Sep  2 22:02:36 BST 2001
 <!-- hhmts end -->
        <p>At the moment, anybody can connect inwards at any time from outside, either by ax25 or by
          telnet (assuming you have followed the instructions in <a href="install.html">installation</a>
          instructions. However, in order to connect outwards, you will need to create <em>connect</em> scripts.
-
+         
        <p><em>Connect</em> scripts live in the <tt>/spider/connect</tt> directory and are simple ascii scripts
          that are written using a normal editor. There are a couple of examples in the issue directory.
 
-       <p>Here are a couple of basic types, first a telnet connection:-
+       <p>The first example is a simple telnet (TCP/IP) connect to port 7000 of WR3D (this will actually
+         work if you have or make an arrangement to connect to WR3D)[oh, and substitute x1xxx for your real
+         node callsign].</p>
+
+       <p>The colouration will be explained later on in this page, you don't have to try to emulate the colours!</p>
+
        <pre>
-    timeout 15
+    <span class=cmd>timeout 15</span>
     # this is a comment
-    connect telnet dirkl.tobit.co.uk
-    'login' 'gb7djk'
-    'word' 'gb7djk'
-    client /usr/bin/perl /spider/perl/client.pl gb7djk-1 telnet
+    <span class=connect>connect telnet wr3d.dxcluster.net 7000</span>
+    <span class=expect>'login'</span> <span class=send>'x1xxx'</span>
+    <span class=cmd>client wr3d telnet</span>
        </pre>
-       <p>and an ax25 example:-
+
+       <p>If you put the above script in a file called: <tt>/spider/connect/wr3d</tt> then you can leave out 
+         line: <span class=cmd>client wr3d telnet</span>.
+       <p>For a connect that requires a login and execution of the programs
+         from a normal shell, do:-</p>
+
        <pre>
-    timeout 60
-    abort (Busy|Sorry|Fail)
+    <span class=cmd>timeout 15</span>
+    <span class=connect>connect telnet dirkl.tobit.co.uk</span>
+    <span class=expect>'login'</span> <span class=send>'gb7djk'</span>
+    <span class=expect>'word'</span> <span class=send>'gb7djk'</span>
+    <span class=expect>'\$'</span> <span class=send>'cd /spider/perl'</span>
+    # set the line to prevent echoing, leaving this out will
+    # confuse whole networks for hours!
+    <span class=expect>'\$'</span> <span class=send>'stty -echo raw'</span>
+    # tell GB7DJK that you are GB7DJK-1
+    <span class=expect>'\$'</span> <span class=send>'/spider/src/client gb7djk-1 telnet'</span>
+    # tell GB7DJK-1 that it is connected to GB7DJK
+    # you can leave this out if you call this script 'gb7djk'
+    <span class=cmd>client gb7djk telnet</span>
+       </pre>
+
+       <p>An ax25 example (connecting from GB7DJK, to GB7DXM via my local BPQ node and one X1J intermediate node):-
+
+       <pre>
+    <span class=cmd>timeout 60</span>
+    <span class=cmd>abort (Busy|Sorry|Fail)</span>
     # don't forget to chmod 4775 netrom_call!
-    connect ax25 /usr/sbin/netrom_call bbs gb7djk g1tlh
-    'Connect' ''
-    'Connect' 'c np7'
-    'Connect' 'c gb7dxm'
-    'Connect' ''
-    client /usr/bin/perl /spider/perl/client.pl gb7dxm ax25
+    <span class=connect>connect ax25 /usr/sbin/netrom_call bbs gb7djk-0 g1tlh-0</span>
+    <span class=expect>'Connected'</span> <span class=send>'c np7'</span>
+    <span class=expect>'*** Connect'</span> <span class=send>'c gb7dxm'</span>
+    <span class=expect>'Connect'</span> <span class=send>''</span>
+       </pre>
+
+    <p>The <tt>-0</tt> ssid is important if you want it to work reliably. Obviously if you are
+    using a different ssid then you would use that. You can use the Netrom alias instead if it
+       it is in the machines node table.</p>
+
+       <p>The line: "<tt><span class=expect>'Connected'</span> <span class=send>''</span></tt>" means: wait for
+         the string <span class=expect>Connected</span> and when that is seen, then move onto the next line
+         <b>without <span class=send>sending</span> anything</b>. The reason you do this (in this case) is to wait
+       for the final "connect" string from the BPQ node that directly connects you to the
+       cluster node itself.</p>
+
+    <p>An AGW Engine example would be very similar and look like this:-</p>
+
+       <pre>
+    <span class=cmd>timeout 60</span>
+    <span class=cmd>abort (Busy|Sorry|Fail)</span>
+    <span class=connect>connect agw 2 g1tlh</span>
+    <span class=expect>'*** Connect'</span> <span class=send>'c np7'</span>
+    <span class=expect>'Connected'</span> <span class=send>'c gb7dxm'</span>
+    <span class=expect>'Connect'</span> <span class=send>''</span>
        </pre>
+       
+       <p>A connection is started manually by typing in <tt>connect &lt;scriptname&gt;</tt> on a sysop enabled
+         <tt>client.pl</tt> session. For example:-</p>
 
-       <p>A connection is started manually by typing in <tt>connect <scriptname></tt> on a sysop enabled
-         <tt>client.pl</tt> session. For example:-
        <pre>
     G1TLH de GB7DJK 13-Dec-1998 2041Z > connect gb7djk-1
     connection to GB7DJK-1 started
     G1TLH de GB7DJK 13-Dec-1998 2043Z > 
+       </pre>
+       
+       <p>Consider the following specific example, it is located in the file <tt>/spider/connect/gb7djk-1</tt> :-</p>
+
+    <pre>
+    <span class=cmd>timeout 15</span>
+    <span class=connect>connect telnet dirkl.tobit.co.uk</span>
+    <span class=expect>'login'</span> <span class=send>'gb7djk'</span>
+    <span class=expect>'ssword'</span> <span class=send>'gb7djk'</span>
     </pre>
-    
-    <p>You can watch the progress of the connection (if you have the standard debugging enabled) on the
-         <tt>cluster.pl</tt> screen and you should see something like this:-
+
+    <p>You can watch the progress of the connection (if you have <tt>connect</tt> 
+     debugging enabled [<tt>set/debug connect</tt>]) on the
+         <tt>cluster.pl</tt> screen and you should see something like this:-</p>
+
        <pre>
     &lt;- D G1TLH connect gb7djk-1
     -> D G1TLH connection to GB7DJK-1 started
     -> D G1TLH G1TLH de GB7DJK 13-Dec-1998 2046Z >
-    timeout set to 15
-    CONNECT sort: telnet command: dirkl.tobit.co.uk
+    <span class=cmd>timeout set to 15</span>
+    <span class=connect>CONNECT sort: telnet command: dirkl.tobit.co.uk</span>
     CHAT "login" -> "gb7djk"
     received "
     Red Hat Linux release 5.1 (Manhattan)
     Kernel 2.0.35 on an i586
     "
-    received "login: "
-    sent "gb7djk"
+    <span class=expect>received "login: "</span>
+    <span class=send>sent "gb7djk"</span>
     CHAT "word" -> "gb7djk"
     received "gb7djk
  
     "
-    received "Password: "
-    sent "gb7djk"
+    <span class=expect>received "Password: "</span>
+    <span class=send>sent "gb7djk"</span>
     Connected to GB7DJK-1, starting normal protocol
     &lt;- O GB7DJK-1 telnet
     -> B GB7DJK-1 0
@@ -81,33 +147,119 @@ Last modified: Sun Dec 13 22:31:33 GMT 1998
     &lt;- D GB7DJK-1 PC38^GB7DJK-1^~
     &lt;- D GB7DJK-1 PC18^ 1 nodes, 0 local / 1 total users  Max users 0  Uptime 0 00:00^5447^~
     etc
-    </pre>
+       </pre>
+
+       <p>I have coloured the commands in an attempt to make it clear as
+       to what goes on, where and why.  Lines that are <span
+       class=cmd>coloured thus</span> are miscellaneous setup
+       commands. Lines that are <span class=connect>this colour</span>
+       are lines that make the initial <span
+       class=connect>connection</span> to the first hop. The things that
+       are <span class=expect>this colour</span> are the strings I am
+       looking for (what I am <span class=expect>"expecting"</span>) and
+       the things that are <span class=send>this colour</span> are the
+       commands I am going to <span class=send>send</span> when I see the
+       "expect" strings in the input.</p>
+
+       <p>The script starts by setting the timeout to 15 seconds, then starts
+         the connection. It is <b>important</b> to note that, in the case of 
+         an ax25 connection (usually) this will be the callsign of the <i>first hop</i> along the 
+         route that you are going to take to the destination, so this will be typically the callsign
+         of your local node.</p>
+
+    <p>You will notice that the script <span class=expect>waits</span>
+    until it sees the left hand string of the pair and <b>only
+    then</b> does it <span class=send>send</span> the string on the
+    right hand side. This is called a <i>State Machine</i>.</p>
+
+       <p>A <i>state machine</i> "walks" through a conversation (in this
+       case) looking for "<span class=expect>states</span>" (in this case
+       particular strings) and then performs some "<span
+       class=send>action</span>" (usually some kind of connect command
+       for the type of system you are trying to navigate). When one
+       "<span class=expect>state</span>" "fires"
+       (detects the string are looking for), it <span class=send>sends the command</span>
+       associated with that state and then moves onto the next "<span
+       class=expect>state</span>", in our case: the next line.</p>
+
+       <p><b>PLEASE NOTE</b>: the colouration in the above example is for illustrative purposes
+         only, the debug output is all one colour.</p>
+
+       <p>The connect scripts consist of lines which start with the
+       following keywords or symbols:-</p>
 
-       <p>The connect scripts consist of lines which start with the following keywords or symbols:-
        <ul>
-               <p><li><b>#</b> All lines starting with a <b>#</b> are ignored, as are wholly blank lines.
-               <p><li><b>timeout</b> followed by a number is the number of seconds to wait for a command
-               to complete. If there is no <b>timeout</b> specified in the script then the default is 60 seconds.
-               <P><li><b>abort</b> is a regular expression containing one or more strings to look for to abort a 
-               connection. This is a perl regular expression and is executed ignoring case.
-               <p><li><b>connect</b> followed by <b>ax25</b> or <b>telnet</b> and some type dependent information. In 
-               the case of a <b>telnet</b> connection, there can be up to two parameters, the first is the ip
-               address or hostname of the computer you wish to connect to and the second is the port number you
-               want to use (this can be left out if it is a normal telnet session).
-               <p>In the case of an <b>ax25</b> session then this would normally be a call to <tt>ax25_call</tt>
-                 or <tt>netrom_call</tt> as in the example above. It is your responsibility to get your node
-                 and other ax25 parameters to work before going down this route!
-               <p><li><b>'</b> or <b>"</b> are the delimiting characters for a <tt>chat</tt> type script. They normally
-               come in pairs, either can be empty. Each line reads input from the connection until it sees the string
-               (or perl regular expression) contained in the left hand string. If the  left hand string is empty then
-               it doesn't read or wait for anything. The comparison is done ignoring case.
-               <p>When the left hand string has found what it is looking (if it is) then the right hand string is
-                 sent to the connection. 
-               <p>This process is repeated for every line of <tt>chat</tt> script. 
-               <p><li><b>client</b> starts the client program and should be exactly as you would want it with an incoming
-               connection.
+
+               <li><b>#</b> All lines starting with a <b>#</b> are
+               ignored, as are wholly blank lines.
+        <br><br>
+
+               <li><b><span class=cmd>timeout</span></b> followed by a number is the number of
+               seconds to wait for a command to complete. If there is no
+               <b><span class=cmd>timeout</span></b> specified in the script then the default is 60
+               seconds.
+        <br><br>
+
+               <li><b><span class=cmd>abort</span></b> is a regular expression containing one or
+               more strings to look for to abort a connection. This is a perl
+               regular expression and is executed ignoring case.
+        <br><br>
+
+               <li><b><span class=connect>connect</span></b> followed by <b>ax25</b>, <b>telnet</b> or <b>agw</b>
+               and some type dependent information. 
+
+        <p>In the case of a
+               <b>telnet</b> connection, there can be up to two parameters,
+               the first is the ip address or hostname of the computer you
+               wish to connect to and the second is the port number you want
+               to use (this can be left out if it is a normal telnet
+               session).</p>
+
+               <p>In the case of an <b>ax25</b> session then this would
+               normally be a call to <tt>/usr/sbin/ax25_call</tt> or
+               <tt>/usr/sbin/netrom_call</tt> as in the example above. It is your
+               responsibility to get your node and other ax25 parameters to
+               work before going down this route!</p>
+
+        <p>For <b>agw</b> connections you will need a port number (starting
+        from 1) and the callsign of the first &quot;hop&quot; along the way.</p>
+
+               <li><b>'</b> is the delimiting character for a word or phrase
+               of an <span class=expect>expect</span>/<span
+               class=send>send</span> line.  The words/phrases normally come
+               in pairs, but either can be empty. Each line reads input from
+               the connection until it sees the string (or perl regular
+               expression) that 
+               is contained in the left hand string. 
+
+               <p>When the <span class=expect>left hand string</span> has found what it is <span class=expect>expecting</span> (if
+               it is) then the <span class=send>right hand string</span> is <span class=send>sent</span> to the connection.</p>
+
+               <p>If the <span class=expect>left hand
+               string</span> is empty then it doesn't read or wait for anything, it
+               simply <span class=send>sends</span> whatever is on the <span class=send>right hand side</span>.</p> 
+
+               <p>All comparisons are done ignoring case.</p>
+
+               <p>If the <span class=send>right hand string</span> is empty ('') then nothing is <span class=send>sent</span>, the 
+                 script simply moves onto the next line.</P>
+
+               <p>This process is repeated for every line of <tt>chat</tt> script.</p> 
+
+               <li><b><span class=cmd>client</span></b> starts the connection, put the arguments
+               you would want here if you were starting the client program
+               manually. You only need this if the script has a different
+               name to the callsign you are trying to connect to (i.e. you
+               have a script called <tt>other</tt> which actually connects to
+               <tt>GB7DJK-1</tt> [instead of a script called
+               <tt>gb7djk-1</tt>]).
+
        </ul>
-    <hr>
-       <h5>$Id</h5>
+
+<!-- Standard Footer!! -->
+       <p>&nbsp;</p>
+       <hr>
+       <span class=copy>Copyright &copy; 1998 by Dirk Koopman G1TLH. All Rights Reserved</span><br>
+       <span class=id>$Id$</span>
   </body>
 </html>