**********************************************************************
            FTSC FIDONET TECHNICAL STANDARDS COMMITTEE
**********************************************************************

Publication:   FSP-1016
Revision:      1
Title:         Automatic configuration of Points in FidoNet
Author:        Christian von Busse, on behalf of all Points and Nodes
              who took part in the development of this document.
Revision Date: 17 July 2000
Expire Date:   17 July 2002


Status of this document
-----------------------

 This document is a Fidonet Standards Proposal (FSP).

 This document specifies an optional Fidonet standard protocol for
 the Fidonet community and requests discussion and suggestions for
 improvements.

 This document is released to the public domain and may be used,
 copied or modified for any purpose whatever.

Contents
--------
 1. Introduction
 2. Definitions
 3. Description of the communication between CDP and CDN
 3.1 Files to be transfered
 3.1.1 From CDP to CDN
 3.1.2 From CDN to CDP
 3.1.2.1 In case of an accepted automatic application
 3.1.2.1.1 PPPPZZZZ.CDN
 3.1.2.1.2 ECHOZZZZ.ZIP
 3.1.2.1.3 NODEZZZZ.ZIP
 3.1.2.2 In case of a rejected automatic application
 3.2 How the files are transfered
 3.2.1 An address for the CDP
 3.2.2 Transmitting the application data
 4. Procedure after the first session
 4.1 Determining the passwords to be used
 4.2 Other recommendations
 5. Appendix: Example piece of source code to calculate CRC16
 6. Acknowledgements


1. Introduction
---------------
 This document proposes a protocol which will enable new Points,
 without any specific knowledge about FidoNet and its technicalities,
 to quickly and easily establish a link to FidoNet.
 The purpose is to make it as easy for everybody to participate in
 FidoNet as it is to access the InterNet.

 This protocol was designed to be usable, or at least to be able to
 be made usable, with common FidoNet Node and Point software. The
 effort for Nodes to accept new Points this way and the effort
 for developers (or users) to make their Point software compliant
 with this protocol has been kept as low as possible.


2. Definitions
--------------
 CDP: The new Point.

 CDN: A Node accepting new Points in accordance with the proposed
      protocol. A CDN Node carries the user-defined flag CDP in the
      nodelist.

 Function Request: (Also called Service Request). This type of
      file request can be used to request a dummy filename from a
      Node system. This file request causes an external programme to
      be started during the current session. Certain files may be
      transfered back to the requesting user in the same session.

 Text File: A file containing only ASCII characters between 32 and
      126, but including CR (13) and LF (10).

 PPPP: Whenever this is used, it stands for the temporary Point
      number with which the CDP makes his/her first poll to the CDN.
      (See para 3.2.1). The Point number is specified by four
      hexadecimal digits. Leading zeros must be added if necessary.

 ZZZZ: Stands for the Zone for which the CDP's application shall
      be valid. Normally, this is the CDN's FidoNet Zone but it may
      differ if the CDN has multiple addresses in multiple Zones.
      The Zone number is specified by four hexadecimal digits.
      Leading zeros must be added if necessary.


3. Description of the communication between CDP and CDN
-------------------------------------------------------

 3.1 Files to be Transfered
 --------------------------
 All files to be transfered are text files.
 They contain either comments or data.
 Comment lines start with a ';' or a '#'.
 Data lines have the format:

 KEY_WORD=VALUE

 ... and a length of 255 characters at maximum, including the line
 termination character(s) CR, LF or CR/LF.
 Key words are not case sensitive and can contain spaces in
 non-escaped form.
 There must not be spaces before or after the =.

 By way of exeption ascii characters > 126 may be used in the fields
 which will not be used for configuring either the point software or
 the node software, and thus not cause any problems: These fields
 are:

 - In PPPPZZZZ.CDP: RESIDENCE
 - In PPPPZZZZ.CDN: EMAIL_ADDR, VOICE

 3.1.1 From CDP to CDN
 ---------------------
 The CDP transmits his application to the Node in a text file.
 The text file is named PPPPZZZZ.CDP.

 PPPPZZZZ.CDP must contain the following keywords:

 POINTNAME
   The name of the point operator as used in field 5 of a nodelist,
   but in the format: First_name Last_name

 RESIDENCE
   The place where the Point lives, format: zip_code city
   The use of zip_code is recommended, city is mandatory.
   Please remember, that a zip code is not necessarily composed of
   5 numeric characters and that it also can contain alphanumeric
   characters.

 PNTLST_RES
   Again, the place where the Point lives. This field contains
   abbrevations typically used in the Pointlist for cities,
   format: City

   It is recommended not to allow the Point to fill out this entry
   but to have the setup automatically generate this value from
   RESIDENCE.

 VOICEPHONE
   The voice phone number of the Point, in international (ISO)
   standard, but spaces replaced by dashes, as in the nodelist:
   +<country_code>-<area_code>-<phone_number>
   An area_code must only be supplied, if it is used in the point's
   country.

 TEMPAKA
   The temporary AKA with which the Point calls the Node during the
   application poll.

 RESULT
   For faster processing on the Node system, this value contains
   the filename of the PPPPZZZZ.CDN file that is sent back to the
   CDP, should his/her application be successful.

 PW_USABLE
   The value transmitted here specifies how many different passwords
   the point software can make use of. The value ranges from 1 to 4.
   The numbers have the following meanings:
   1 = The Point software can make use of only one password as
       session password, areafix password, file ticker password and
       PKT password.
   2 = The Point software can make use of one password as session
       password and PKT password and can make use of a second one as
       areafix and file ticker password.
   3 = The Point software can make use of one password as session and
       PKT password, can make use of a second one as areafix password
       and can make use of a third one as file ticker password.
   4 = The Point software can be configured to make use of four
       different passwords for the session, areafix, the transmitted
       PKTs and the file ticker.

 3.1.2 From CDN to CDP
 ---------------------
 Depending on whether the CDN accepts the application or not, the CDP
 gets a different text file as an answer.

 3.1.2.1 In the case of an accepted automatic application
 ----------------------------------------------------
 If the application is accepted, the CDN transmits three files to the
 CDP.

 3.1.2.1.1 PPPPZZZZ.CDN
 ----------------------
 This file must contain the following keywords:

 POINTNUMBER
   The Point number (not the complete AKA) assigned to the CDP.
   The CDN's AKA is taken from the nodelist entry carrying the CDP
   flag.

 PASSWORD
   A password for the CDP, to be used at least as session password.
   Which passwords will really be used will be defined later on.

 AREAFIXPW
   A password which can be used as areafix password.

 TICKERPW
   A password to be used as password for the file ticker.

 PKTPW
   A password to be used as PKT password.

 AREAFIX_NAME
   The name to which areafix messages should be addressed.

 TICKER_NAME
   The name under which the file ticker expects to receive messages.

 NL_FREQ
   The filename under which the current nodelist can be requested
   from the CDN.

 NL_DIFF
   The name of the nodelist difference files, without extension.

 EMAIL_ADDR
   An e-Mail address of the Node, which can be used by the Point
   in case of questions or difficulties.
   Every Node should at least be able to transmit his fidonet.org
   address here:
   [email protected]<NodeNr>.n<NetNr>.z<Zone>.fidonet.org

 VOICE
   The CDN's voice phone number, which can be used by the CDP in
   case of questions or difficulties.
   The CDN can specify a one-line text here of at most 255
   characters, which is displayed to the CDP later on. So the CDN
   could also tell the CDP that he is not available for voice calls.

 WAIT
   A non-committal time in minutes, after which, the Node system
   should have completely processed the CDP's application. The CDP's
   first call with his/her real Point data should not be made before
   this time has passed since his/her initial call.
   WAIT passes the time to wait as a signed integer. The valid values
   range from 0 to 32767.

 In case the CDN system should not support all four possible
 passwords, the CDN will transmit identical passwords in the
 different fields, according to its needs. Otherwise, all four fields
 will be filled with different passwords.

 PW_USABLE from the PPPPZZZZ.CDP will not be evaluated for this entry
 in order to save time during the established connection. It will onl
 be evaluated later on, when the CDN configures the CDP on his
 system.

 All passwords must be 5 to 8 characters long. Passwords have to be
 in upper case.

 3.1.2.1.2 ECHOZZZZ.ZIP
 ----------------------
 The CDN transfers a list of the echomail areas available to the
 Point. This list is a text file named ECHOZZZZ.LST. It has the
 format compliant with the *.NA lists:

 AREATAG description
 AREATAG description
 [...]

 The description is optional. If it is given, there has to be at
 least one space between the AREATAG and the description. A line may
 be at max 80 characters long. If a description is longer than that,
 it has to be continued in the next line. Lines containing only a
 continued description have to start with at least one space.

 3.1.2.1.3 NODEZZZZ.ZIP
 ----------------------
 Finally, the CDN transmits a current nodelist to the CDP.

 NODEZZZZ.ZIP contains a 3D nodelist with at least the CDN's home
 region. The name of that nodelist is  the name commonly used for
 nodelists in zone ZZZZ.
 e.g. in FidoNet Zone 2 this would be NODELIST.<day_of_year>

 3.1.2.2 In case of a refused automatic application
 -------------------------------------------------------
 If the CDN does not accept the application, for whatever reason, the
 Point will receive a text file named NOPOINT.CDN.
 This text file should contain an explanation as to why the entry was
 rejected but it may also be empty.

 3.2 How the files are transfered
 --------------------------------
 All these files are transmitted within an unsecure established
 session between the CDN's and the CDP's FidoNet mailer.

 3.2.1 An address for the CDP
 ----------------------------
 Two CDPs must be prevented from calling the CDN at the same time
 with the same AKA. To achieve this, a temporary AKA is needed for
 the application call.
 This temporary AKA is formed according to the following scheme:

 Zone
   The CDN's home Zone

 Net
   The CDN's Net

 Node
   Node number 9999

 Pointnumber
   The Point number is created as a CRC16 (upside-down-CRC16
   as used for Z-Modem and the nodelist - start polynom 11021H, start
   value 0 without modulation, shifting to the left) checksum created
   with POINTNAME, RESIDENCE and VOICEPHONE from PPPPZZZZ.CDP. The
   values will be concatenated directly without inserting any spaces.
   The checksum has then to be built modulo 32768 in order to prevent
   Point numbers exceeding 32767. The Point number is, as all numbers
   in the address, specified in decimal format.

   Code examples for the most commonly used programming languages
   can be found in para.5 below.

 3.2.2 Transmitting the application data
 ---------------------------------------
 The CDP transmits the PPPPZZZZ.CDP. In addition, he/she
 file-requests the following three "MAGIC" files:

 1. CDPOINT, password protected: CDP-PW
 2. ECHOLIST
 3. NODEZZZZ

 The file request of CDPOINT initiates the creation process of
 PPPPZZZZ.CDN on the CDN's system. The CDNs system will pick a free
 Point number and randomly create the necessary password via a
 function file-request, if the mailer cannot react directly to
 received files matching a certain filemask.
 The file-request of CDPOINT is password protected to minimize the
 chance of accidentally initiating this process.
 In order to minimize the online time for the CDP, the CDP is not
 configured online after he has delivered his data but only after
 the session has terminated.

 The file-request of ECHOLIST causes ECHOZZZZ.ZIP to be transmitted
 to the CDP.

 The file-request of NODEZZZZ causes NODEZZZZ.ZIP to be transmitted
 to the CDP.


4. Procedure after the first session
------------------------------------

 4.1 Determining the passwords to be used
 ----------------------------------------
 The CDN can decide how many different passwords will be used by
 entering the same password into mulitple password fields in the
 file PPPPZZZZ.CDN (See para. 3.1.2.1)

 The Point software transmits its capabilities via the keyword
 PW_USABLE in the file PPPPZZZZ.CDP (See para. 3.1.1)

 When configuring the passwords, both parties can decide exactly
 which password will be used by combining the PW_USABLE entry
 with the transmitted passwords.

 The following table will make it clear which passwords will be used:

             +-------------------------------------------------+
             |   These passwords will be configured with the   |
             |             value of the field...               |
 +-----------|------------+-----------+------------+-----------|
 | PW_USABLE | Session-PW |  PKT-PW   | Areafix-PW | Ticker-PW |
 +-----------+------------+-----------+------------+-----------|
 |     1     | PASSWORD   | PASSWORD  | PASSWORD   | PASSWORD  |
 |     2     | PASSWORD   | PASSWORD  | AREAFIXPW  | AREAFIXPW |
 |     3     | PASSWORD   | PASSWORD  | AREAFIXPW  | TICKERPW  |
 |     4     | PASSWORD   | PKTPW     | AREAFIXPW  | TICKERPW  |
 +-----------+------------+-----------+------------+-----------+

 4.2 Other recommendations
 -------------------------
 After the initial session has terminated, the automatic
 configuration of the CDP should to be initiated as quickly as
 possible.

 The new Point should be told by his/her software that his/her
 application is being processed now, which will take about WAIT (See
 para. 3.1.2.1.1) minutes.
 The Point can make use of this time by reading documents about
 FidoNet, which the Point software should offer to him/her.

5. Appendix: Example pieces of source code to calculate CRC16
-------------------------------------------------------------
 Function crc16_string(InString: String): Word;
 { calculate CRC16 of a string, string is passed }
 Var
   CRC   : Word;    { CRC16                              }
   i     : Integer; { Index variable for loop            }
   Index : Byte;    { Index variable for CRC calculation }
 Begin
   CRC := 0; { initialize CRC }

   { calculate CRC for every character }
   For i := 1 to Length(InString) Do
   Begin
     CRC := (CRC xor (Ord(InString[i]) SHL 8));
     For Index := 1 to 8 Do
       If ((CRC and $8000) <> 0)
        Then CRC := ((CRC SHL 1) xor $1021)
        Else CRC := (CRC SHL 1)
   End;

   crc16_string := (CRC and $FFFF) { return calculated CRC16 }
 End; { crc16_string }

 [...]

 Writeln('CRC16 modulo 32768 (values between 0 and 32767):');
 checksum := checksum mod 32768;
 Writeln(angStr:12, '   HEX-CRC/16: ', numb2hex(checksum));
 Writeln(angStr:12, '   DEZ-CRC/16: ', checksum);


A. Author contact data
----------------------

Christian von Busse
Fidonet: 2:240/2188


B. Acknowledgements
-------------------
 The following people (without laying claim to completeness) have
 participated in developing this document:

 Norbert Bilek, 2:2468/9929
 Christian von Busse, 2:240/2188
 Werner Dworak, 2:2480/9504
 Markus Engmann, 2:2483/21
 Michael Haase, 2:2457/265.15
 Daniel Hahler, 2:2432/337
 Wolfgang Huebner, 2:2490/1906.9
 Denny Mleinek, 2:248/7310
 Dirk Pokorny, 2:240/5401.7
 Herbert Rosenau, 2:2476/493
 Tim Schattkowsky, 2:2437/70.29
 Siggi Schoenicke, 2:2426/1210
 Henning Schroeer, 2:2457/265
 Ulrich Schroeter, 2:244/1120
 Monika Steinhaeuser, 2:249/3110

C. History
------------

Rev.1, 20000717   First release.