improve the connect instructions
[spider.git] / html / connect.html
index b5a067b0147ee62226c3b152f1e6ef1c84846504..ecfedd1cd1ab65abd212a817e8807a8493001f1f 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 20:31:56 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>Here are a few of basic types, first a telnet connection where the 
+          client is set up in the passwd file thus:-
+       <pre>
+    gb7djk:x:1372:1291::/home/gb7djk:/usr/bin/perl /spider/perl/client.pl gb7djk telnet
+       </pre>
+       and the connect script would be:-
        <pre>
     timeout 15
     # 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
+    client gb7djk telnet
        </pre>
-       <p>and an ax25 example:-
+       <p>For a connect that requires a login and execution of the programs
+         from a normal shell, do:-
+
+       <pre>
+    timeout 15
+    connect telnet dirkl.tobit.co.uk
+    'login' 'gb7djk'
+    'word' 'gb7djk'
+    '\$' 'cd /spider/perl'
+    # set the line to prevent echoing, leaving this out will
+    # confuse whole networks for hours!
+    '\$' 'stty -echo raw'
+    # tell GB7DJK that you are GB7DJK-1
+    '\$' '/spider/src/client gb7djk-1 telnet'
+    # tell GB7DJK-1 that it is connected to GB7DJK
+    # you can leave this out if you call this script 'gb7djk'
+    client gb7djk telnet
+       </pre>
+
+       <p>a ax25 example:-
        <pre>
     timeout 60
     abort (Busy|Sorry|Fail)
     # 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 ax25 /usr/sbin/netrom_call bbs gb7djk-0 g1tlh-0
+    'Connected' ''
+    'Connected' 'c np7'
+    'linked to' 'c gb7dxm'
     'Connect' ''
-    client /usr/bin/perl /spider/perl/client.pl gb7dxm ax25
        </pre>
 
-       <p>A connection is started manually by typing in <tt>connect <scriptname></tt> on a sysop enabled
+    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.
+
+    <p>A AGW Engine example would be very similar and look like this:-
+       <pre>
+    timeout 60
+    abort (Busy|Sorry|Fail)
+    connect agw 2 g1tlh
+    '*** Connected' ''
+    '*** Connect' 'c np7'
+    'linked to' 'c gb7dxm'
+    'Connect' ''
+       </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:-
        <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=cmd>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
+
+    <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:-
        <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=cmd>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 +136,107 @@ 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. 
+         <span class=cmd>These coloured lines are miscellaneous commands</span>, the <span class=expect>things
+         that are this colour are the strings I am looking for (what I am "expecting")</span> 
+         and the <span class=send>things that are this colour
+         are the commands I am going to make when I see the "expect" strings in the input</span>.</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 waits until it sees the left hand string
+         of the pair and <b>only then</b> does it send 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 "states" (in this case particular strings) and then performs some
+         "action" (usually some kind of connect command for the type of system
+         you are trying to navigate). When one "state" "fires" (detects the string
+         are looking for), it sends the command associated with that state and then 
+         moves onto the next "state", 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>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. 
+
+               <li><b>#</b> All lines starting with a <b>#</b> are
+               ignored, as are wholly blank lines.
+        <br><br>
+
+               <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.
+        <br><br>
+
+               <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.
+        <br><br>
+
+               <li><b>connect</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>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>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.
+        <br><br>
+
+               <li><b>'</b> is the delimiting character for a word or
+               phrase of an expect/send line in a <tt>chat</tt> type
+               script. The words/phrases 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.
+        <br><br>
+
+               <li><b>client</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>
+       <p>
+         <FONT COLOR="#606060"><hr></font>
+       <font color="#FF0000" size=-2>
+         Copyright &copy; 1998 by Dirk Koopman G1TLH. All Rights Reserved<br>
+       </font>
+       <font color="#000000" size=-2>$Id$</font>
   </body>
 </html>