~~NOTOC~~ ====== 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 % 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: - ASCII - ANSI - AVATAR - RIPScript - MAX Colors - PETSCII - "TBD". Value UserFont Values: * The first digit is usually 0 (zero) for most terminals ~ CANNED font. * In Glitch we support 0 = Standard 40+ Fonts * In Glitch 1 = GAME Font, 9x16 * In Glitch 2 = GAME Font, 8x8 * In Glitch 3 = GAME Font, 12x12 * In Glitch 4 = GAME Font, 16x16 * The Second Value range is 0 to 42 or 100 or 101 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 * 0 = FALSE * 1 = TRUE