home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / protocol / remote-set.spec < prev    next >
Internet Message Format  |  2020-01-01  |  13KB

  1. Date: Mon, 11 Dec 89 19:15:07 EST
  2. >From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  3. Subject: Proposal for REMOTE SET Extension to the Kermit Protocol
  4. Keywords: Kermit Protocol, REMOTE SET Command
  5.  
  6. PROBLEM:
  7.  
  8. Certain Kermit programs (including MS-Kermit 3.0, C-Kermit 4F) include
  9. information about whether a file is text or binary in the File Attribute
  10. packet, so the receiver can put itself into the right mode automatically.  But
  11. when talking to a server there is no way for the client program, before
  12. issuing a GET command, to tell the server whether to send the file in text or
  13. binary mode.  This problem extends to various other protocol and file-related
  14. parameters.
  15.  
  16. NOTE:
  17.  
  18. The Kermit protocol definition includes a REMOTE KERMIT command, and the
  19. associated packet format and protocol.  It lets the user of the client program
  20. issue a command to the server in its own interactive-mode command language.
  21. But this is not a totally satisfactory answer because the syntax of Kermit
  22. programs can and does vary and, perhaps more to the point, some Kermit
  23. programs do not have an interactive command mode at all (Macintosh Kermit is
  24. one example).  What is needed is a standard mechanism and syntax that can
  25. apply to all Kermit programs uniformly.
  26.  
  27. SOLUTION:
  28.  
  29. A new addition to the Kermit protocol: REMOTE SET.
  30.  
  31. REMOTE SET would be a Generic Kermit Server command.  A generic command looks
  32. like this:
  33.  
  34.     +-----+---------------------------------+
  35.     |  G  | x <len1> <op1> <len2> <op2> ... |
  36.     +-----+---------------------------------+
  37.      Type   Data
  38.  
  39. where "x" is the generic command, a single letter.  The letter S is not yet in
  40. use, so let's define S to mean SET.  The S is followed by a single operand,
  41. which includes a single-character length field, similar to other generic
  42. command packets.
  43.  
  44. The parameters which may be SET remotely are the ones having to do with file
  45. transfer and Kermit protocol in general, not system-dependent or
  46. communications-dependent parameters, since these must already have been set
  47. prior to making the initial connection, and must be set correctly in any event
  48. BEFORE you can successfully send a REMOTE SET (or any other) packet to the
  49. server.
  50.  
  51. The most needed REMOTE SET command is REMOTE SET FILE TYPE {TEXT,BINARY}, but
  52. the others should be specified in the protocol too.  Numeric codes are
  53. assigned to the parameters and values, so that the mechanism for conveying
  54. this information is system- and language-independent and reasonably compact.
  55. The REMOTE SET command does exactly what the corresponding SET command would
  56. do if it had been given to the remote server as an interactive command before
  57. it entered server mode.
  58.  
  59.   Command                                Code   Values
  60.  
  61.   REMOTE SET ATTRIBUTES IN ALL            132   0 = OFF, 1 = ON
  62.   REMOTE SET ATTRIBUTES IN LENGTH         133   0 = OFF, 1 = ON
  63.   REMOTE SET ATTRIBUTES IN TYPE           134   0 = OFF, 1 = ON
  64.   REMOTE SET ATTRIBUTES IN DATE           135   0 = OFF, 1 = ON
  65.   REMOTE SET ATTRIBUTES IN CREATOR        136   0 = OFF, 1 = ON
  66.   REMOTE SET ATTRIBUTES IN ACCOUNT        137   0 = OFF, 1 = ON
  67.   REMOTE SET ATTRIBUTES IN AREA           138   0 = OFF, 1 = ON
  68.   REMOTE SET ATTRIBUTES IN BLOCK-SIZE     139   0 = OFF, 1 = ON
  69.   REMOTE SET ATTRIBUTES IN ACCESS         140   0 = OFF, 1 = ON
  70.   REMOTE SET ATTRIBUTES IN ENCODING       141   0 = OFF, 1 = ON
  71.   REMOTE SET ATTRIBUTES IN DISPOSITION    142   0 = OFF, 1 = ON
  72.   REMOTE SET ATTRIBUTES IN PROTECTION     143   0 = OFF, 1 = ON
  73.   REMOTE SET ATTRIBUTES IN GPROTECTION    144   0 = OFF, 1 = ON
  74.   REMOTE SET ATTRIBUTES IN SYSTEM-ID      145   0 = OFF, 1 = ON
  75.   REMOTE SET ATTRIBUTES IN FORMAT         146   0 = OFF, 1 = ON
  76.   REMOTE SET ATTRIBUTES IN SYS-INFO       147   0 = OFF, 1 = ON
  77.   REMOTE SET ATTRIBUTES IN BYTE-COUNT     148   0 = OFF, 1 = ON
  78.  
  79.   REMOTE SET ATTRIBUTES OUT ALL           232   0 = OFF, 1 = ON
  80.   REMOTE SET ATTRIBUTES OUT LENGTH        233   0 = OFF, 1 = ON
  81.   REMOTE SET ATTRIBUTES OUT TYPE          234   0 = OFF, 1 = ON
  82.   REMOTE SET ATTRIBUTES OUT DATE          235   0 = OFF, 1 = ON
  83.   REMOTE SET ATTRIBUTES OUT CREATOR       236   0 = OFF, 1 = ON
  84.   REMOTE SET ATTRIBUTES OUT ACCOUNT       237   0 = OFF, 1 = ON
  85.   REMOTE SET ATTRIBUTES OUT AREA          238   0 = OFF, 1 = ON
  86.   REMOTE SET ATTRIBUTES OUT BLOCK-SIZE    239   0 = OFF, 1 = ON
  87.   REMOTE SET ATTRIBUTES OUT ACCESS        240   0 = OFF, 1 = ON
  88.   REMOTE SET ATTRIBUTES OUT ENCODING      241   0 = OFF, 1 = ON
  89.   REMOTE SET ATTRIBUTES OUT DISPOSITION   242   0 = OFF, 1 = ON
  90.   REMOTE SET ATTRIBUTES OUT PROTECTION    243   0 = OFF, 1 = ON
  91.   REMOTE SET ATTRIBUTES OUT GPROTECTION   244   0 = OFF, 1 = ON
  92.   REMOTE SET ATTRIBUTES OUT SYSTEM-ID     245   0 = OFF, 1 = ON
  93.   REMOTE SET ATTRIBUTES OUT FORMAT        246   0 = OFF, 1 = ON
  94.   REMOTE SET ATTRIBUTES OUT SYS-INFO      247   0 = OFF, 1 = ON
  95.   REMOTE SET ATTRIBUTES OUT BYTE-COUNT    248   0 = OFF, 1 = ON
  96.  
  97.   REMOTE SET FILE TYPE                    300   0 = TEXT, 1 = BINARY
  98.   REMOTE SET FILE NAMES                   301   0 = CONVERTED, 1 = LITERAL
  99.   REMOTE SET FILE COLLISION               302   0 = RENAME,  1 = REPLACE,
  100.                                                 2 = BACKUP,  3 = APPEND,
  101.                                                 4 = DISCARD, 4 = ASK
  102.   REMOTE SET FILE REPLACE                 303   0 = PRESERVE, 1 = DEFAULT
  103.   REMOTE SET FILE INCOMPLETE              310   0 = DISCARD, 1 = KEEP
  104.   REMOTE SET INCOMPLETE (same as above)
  105.  
  106. *** Added Later ***
  107.  
  108.   REMOTE SET FILE BLOCKSIZE               311   number
  109.   REMOTE SET FILE RECORD-LENGTH           312   number
  110.   REMOTE SET FILE RECORD-FORMAT           313   number
  111.   REMOTE SET FILE ORGANIZATION            314   number
  112.   REMOTE SET FILE CARRIAGE-CONTROL        315   number
  113.  
  114. *** End Added Later ***
  115.  
  116.   REMOTE SET BLOCK-CHECK                  400   number (1, 2, 3, 4, or B)
  117.   REMOTE SET RECEIVE PACKET-LENGTH        401   number (10-9024)
  118.   REMOTE SET RECEIVE TIMEOUT              402   number (any, 0 = no timeout)
  119.   REMOTE SET RETRY                        403   number (any, 0 = no limit)
  120.   REMOTE SET SERVER TIMEOUT               404   number (any, 0 = no timeout)
  121.   REMOTE SET TRANSFER CHARACTER-SET       405   Character Set Designator
  122.   REMOTE SET WINDOW-SLOTS                 406   number (1-31)
  123.  
  124. *** Added Later ***
  125.  
  126.   REMOTE SET TRANSFER MODE                410   0 = automatic, 1 = manual
  127.  
  128. *** End Added Later ***
  129.  
  130. One Kermit program should not have knowledge of another Kermit program's local
  131. character sets, therefore REMOTE SET FILE CHARACTER-SET is not included.  The
  132. Transfer Character Set Designator is the one described in the "ISO/Kermit"
  133. proposal.  For example "I2/100" (ISO Latin Alphabet 1), "I2/144" (ISO
  134. Latin/Cyrillic), or "I14/13" (Japanese Roman/Katakana).  The command would
  135. use the name (for example REMOTE SET TRANSFER CHARACTER-SET LATIN1) and the
  136. generic server command packet would use the corresponding designator.
  137.  
  138. REMOTE SET LANGUAGE is omitted for the present, but can be added later.  The
  139. problem here is assigning a unique code to each of the world's languages.
  140.  
  141. The numbers shown for the codes and values are expressed as character
  142. strings composed of ASCII digits, 0-9.  Here are examples, showing the TYPE
  143. and DATA fields of the Kermit packet:
  144.  
  145.   GS#101!0      = REMOTE SET ATTRIBUTE LENGTH OFF
  146.   GS#202!0      = REMOTE SET ATTRIBUTE TYPE OFF
  147.   GS#300!1      = REMOTE SET FILE TYPE BINARY
  148.   GS#400!2      = REMOTE SET BLOCK CHECK 2
  149.   GS#401$1000   = REMOTE SET RECEIVE PACKET-LENGTH 1000
  150.   GS#405&I2/100 = REMOTE SET TRANSFER CHARACTER-SET LATIN-1
  151.  
  152. ORGANIZATION AND EXPANSION:
  153.  
  154. The codes are numeric strings, with the hundred's place assigned roughly
  155. according to "topic": 100's for Incoming Attributes, 200's for Outbound
  156. Attributes, 300's for file-related items, and 400's for packet-related items.
  157. Note that the SET ATTRIBUTE codes are equal to 100 or 200 plus the value of
  158. the corresponding attribute designator.  There is plenty of room for expansion
  159. within each category, and new categories can be added as required.
  160.  
  161. PROTOCOL:
  162.  
  163. The person using the client Kermit program issues a REMOTE SET command for
  164. a single parameter, such as REMOTE SET FILE TYPE BINARY.  The program forms
  165. the corresponding G packet and sends it to the server.
  166.  
  167. The server program can respond in any of the following ways, and the client
  168. program should be prepared for each kind of response:
  169.  
  170.   E-packet:  An Error packet.  The server does not understand REMOTE SET
  171.              packets, or it is not able to perform the specific SET that was
  172.              requested.  Therefore the client must not assume that the SET has
  173.              been done, and if it is in local mode, it must give a message to
  174.              the user, as described below.
  175.  
  176.   Y-packet:  An Acknowledgement.  The server accepted the command, and
  177.              performed the requested SET.  The data field of the Y-packet can
  178.              be empty, to indicate that the requested value was accepted.  Or
  179.              it can contain the value which the server actually set.  For
  180.              example, the user types REMOTE SET RECEIVE PACKET-LENGTH 5000 but
  181.              the server only supports lengths up to 1000:
  182.  
  183.         To server -->  GS#400$5000
  184.                    Y1000        <-- To client
  185.  
  186. CLIENT IMPLEMENTATION:
  187.  
  188. A client can include support for any number of the REMOTE SET commands, or
  189. none at all.  A minimal implementation might include only REMOTE SET FILE
  190. TYPE.  This would include addition of the command to the program's command
  191. tables, code to send the generic packet, and code to interpret the response
  192. and issue any appropriate messages to the user, like the contents of the
  193. error packet data field, or any altered value that the server sent back in
  194. the data field of an acknowledgement.  Examples:
  195.  
  196.     REMOTE SET command succeeded
  197.     REMOTE SET value changed to 1000
  198.     REMOTE SET command failed: <reason from data field of E-packet>
  199.  
  200. SERVER IMPLEMENTATION:
  201.  
  202. A server can also include support for any number of the REMOTE SET commands,
  203. or none at all.  If it supports none at all, then it will automatically
  204. respond to a REMOTE SET packet with an error packet containing a message
  205. like "Unimplemented REMOTE command".
  206.  
  207. If the server receives a REMOTE SET packet for a parameter it does not support
  208. the REMOTE SETting of, then it should respond with an error packet containing
  209. the message "Unknown REMOTE SET parameter".
  210.  
  211. If the server gets a REMOTE SET packet for a parameter which is known to it,
  212. then it should:
  213.  
  214. (a) Set the parameter to the requested value and respond with an empty Y
  215.     packet, or:
  216.  
  217. (b) If the requested value exceeds the server's maximum value for the
  218.     parameter, set it to its own maximum value and respond with a Y packet
  219.     containing the new value in its data field, as in the packet-length
  220.     example above.
  221.  
  222. If the server is a "permanent" Kermit server which cannot be terminated using
  223. BYE or FINISH, then when the user disengages from it using BYE, FINISH, or
  224. LOGOUT, then when the server receives a BYE, FINISH, or LOGOUT command, it
  225. should revert any parameters that were changed by REMOTE SET back to the
  226. values that were in use when server mode was entered.
  227.  
  228. Thanks to Joe Doupnik and John Chandler for their assistance in the design
  229. of this protocol extension.
  230.  
  231. From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  232. Subject: Kermit Protocol Additions
  233. Keywords: Kermit Protocol
  234.  
  235. This issue of the Info-Kermit Digest contains several proposals for extending
  236. the Kermit protocol in certain minor ways, all of them related.  These
  237. discussions are for Kermit developers.  They assume familiarity with the
  238. Kermit protocol, as described in "Kermit, A File Transfer Protocol", by Frank
  239. da Cruz, Digital Press (1987).
  240.  
  241. ------------------------------
  242.  
  243. Date: Mon, 22 Jan 90 12:51:21 EST
  244. From: Christine M Gianone <cmg@watsun.cc.columbia.edu>
  245. Subject: Additions to REMOTE SET Proposal
  246. Keywords: Kermit Protocol, REMOTE SET Command
  247.  
  248. REMOTE SET FILE BLOCKSIZE       311  number
  249. REMOTE SET FILE RECORD-LENGTH   312  number
  250. REMOTE SET FILE RECORD-FORMAT   313  ???
  251.  
  252. This is just for the record, to assign these numbers to these commands
  253. for somebody who needed them.  Details to be filled in later.
  254.  
  255. ------------------------------
  256. Date: Tue Jul 21 15:50:16 1998
  257. From: fdc
  258. Subject: Additions to REMOTE SET Proposal
  259.  
  260. Client/Server settings, 420 series.
  261.  
  262.   REMOTE SET SERVER CD-MESSAGE            420   0 = OFF, 1 = ON
  263.  
  264. ------------------------------
  265. Date: Thu Oct 14 13:46:17 1999
  266. From: fdc
  267. Subject: REMOTE SET FILE CHARACTER-SET
  268.  
  269. Here we have two choices: just pass the keywords and hope for the best
  270. (requires the client know the server's syntax) or assign codes to every
  271. possible file character-set, which would be silly since that would make
  272. us a registration authority for private charsets.  Or use MIME tags, but
  273. I hate MIME.  In any case, using any kind of codes means the user can't
  274. choose a set that might be supported but is not codified.  So names are
  275. the lesser of two evils.
  276.  
  277.   REMOTE SET FILE CHARACTER-SET         320   string
  278.  
  279. ------------------------------
  280.