Ultimate External Application File

Last Updated: January 1st 2020

When developing a BBS, there are other programs that the callers and sysop will benefit. Some systems call thee DOOR or GAME programs, I call them External Applications. One of the challenges is, how much information to write to disk so the application has all of the details it could need. And another challenge that I started to experience is, how to get updates back from the external application, without said application having direct access to the BBS databases.

For this UEAF (Ultimate External Application File), I have chosen two files name.

One when the data comes from the BBS to the External Application: dropfile.lgx

One when the data comes from the External Application to the BBS: dropfile.xtr

Both files use JSON: JavaScript Object Notation for information exchange. Everything is expected to be written in simple object syntax: {“key”:“value”, “key2”:“value”}. Please note, that both the key and the value are wrapped in quotations. To avoid conversion issues for binary data, numbers will be stores in string format, e.g. ten is written as “10”. Values are also in URL encoding, so a string with high-bit (character 128 to 255) are written in %<hex> format, so the beta character #225 is E1 in hex, so it will be stores as “%E1%”. Yes, HEX is stored in uppercase to avoid confusion on certain fonts, where lowercase l and uppercase I appear to be the same.

dropfile.lgx

{
	"BBSName": "My BBS Name",
	"BBSAddress": "www.exchangebbs.com:23",
	"BBSRoot": "/var/LEGACYX/",
	"ExternRoot": "/var/LEGACYX/DOORS/SAMPLE/",
	"GraphicsRoot": "/var/LEGACYX/GENERAL/",
	"NodeRoot": "/var/LEGACYX/DOORS/NODE72/",
	"NodeNumber": "72",
	"SysopName": "Ozz Nixon",
	"UserObj": {
		"ID": "12",
		"Name": "John Doe",
		"Alias": "Hacker Dude",
		"SecurityLevel": "20",
		"TimeLeft": "499m",
		"Emulator": "1",
		"Font": "0 0",
		"Expert": "0",
		"Rows": "35",
		"Columns": "80",
		"Location": "Florida, USA",
		"email": "email@domain.com",
		"DOB": "-315451090",
              "Connected": "1578288419"
	},
	"SocketHandle": "72"
}

** Verified by JSON Lint **

Elements

Valid UserEmulator Values:

  1. ASCII
  2. ANSI
  3. AVATAR
  4. RIPScript
  5. MAX Colors
  6. PETSCII
  7. “TBD”.

Value UserFont Values:

          0  - Codepage 437 English
          1  - Codepage 1251 Cyrillic, (swiss)
          2  - Russian koi8-r
          3  - ISO-8859-2 Central European
          4  - ISO-8859-4 Baltic wide (VGA 9bit mapped)
          5  - Codepage 866 (c) Russian
          6  - ISO-8859-9 Turkish
          7  - haik8 codepage (use only with armscii8 screenmap)
          8  - ISO-8859-8 Hebrew
          9  - Ukrainian font koi8-u
          10 - ISO-8859-15 West European, (thin)
          11 - ISO-8859-4 Baltic (VGA 9bit mapped)
          12 - Russian koi8-r (b)
          13 - ISO-8859-4 Baltic wide
          14 - ISO-8859-5 Cyrillic
          15 - ARMSCII-8 Character set
          16 - ISO-8859-15 West European
          17 - Codepage 850 Multilingual Latin I, (thin)
          18 - Codepage 850 Multilingual Latin I
          19 - Codepage 885 Norwegian, (thin)
          20 - Codepage 1251 Cyrillic
          21 - ISO-8859-7 Greek
          22 - Russian koi8-r (c)
          23 - ISO-8859-4 Baltic
          24 - ISO-8859-1 West European
          25 - Codepage 866 Russian
          26 - Codepage 437 English, (thin)
          27 - Codepage 866 (b) Russian
          28 - Codepage 885 Norwegian
          29 - Ukrainian font cp866u
          30 - ISO-8859-1 West European, (thin)
          31 - Codepage 1131 Belarusian, (swiss)
          32 - Commodore 64 (UPPER)
          33 - Commodore 64 (Lower)
          34 - Commodore 128 (UPPER)
          35 - Commodore 128 (Lower)
          36 - Atari
          37 - P0T NOoDLE (Amiga) 
          38 - mO'sOul (Amiga)    
          39 - MicroKnight Plus (Amiga)
          40 - Topaz Plus (Amiga)      
          41 - MicroKnight (Amiga)
          42 - Topaz (Amiga)      
          100 - TI-99/4
          101 - Teletext

Valid UserExpert Values