diff --git a/docs/_includes/nav.md b/docs/_includes/nav.md index 4fb9a399..c4303fac 100644 --- a/docs/_includes/nav.md +++ b/docs/_includes/nav.md @@ -67,6 +67,7 @@ - BBSLink - Combatnet - Exodus + - [Telnet Bridge]({{ site.baseurl }}{% link modding/telnet-bridge.md %}) - [Existing Mods]({{ site.baseurl }}{% link modding/existing-mods.md %}) - [File Area List]({{ site.baseurl }}{% link modding/file-area-list.md %}) - [Last Callers]({{ site.baseurl }}{% link modding/last-callers.md %}) diff --git a/docs/modding/local-doors.md b/docs/modding/local-doors.md index 4ab8037b..2a4a1338 100644 --- a/docs/modding/local-doors.md +++ b/docs/modding/local-doors.md @@ -3,7 +3,7 @@ layout: page title: Local Doors --- ## Local Doors -ENiGMA½ has many ways to add doors to your system. In addition to the many built in door server modules, local doors are of course also supported using the ! The `abracadabra` module! +ENiGMA½ has many ways to add doors to your system. In addition to the [many built in door server modules](door-servers.md), local doors are of course also supported using the ! The `abracadabra` module! ## The abracadabra Module The `abracadabra` module provides a generic and flexible solution for many door types. Through this module you can execute native processes & scripts directly, and perform I/O through standard I/O (stdio) or a temporary TCP server. @@ -17,7 +17,7 @@ The `abracadabra` `config` block can contain the following members: | `dropFileType` | :+1: | Specifies the type of dropfile to generate (See **Dropfile Types** below). | | `cmd` | :+1: | Path to executable to launch. | | `args` | :-1: | Array of argument(s) to pass to `cmd`. See **Argument Variables** below for information on variables that can be used here. -| `cwd` | :-1: | Sets the Current Working Directory (CWD) for `cmd`. Defaults to the directory of `cmd`. | +| `cwd` | :-1: | Sets the Current Working Directory (CWD) for `cmd`. Defaults to the directory of `cmd`. | | `nodeMax` | :-1: | Max number of nodes that can access this door at once. Uses `name` as a tracking key. | | `tooManyArt` | :-1: | Art spec to display if too many instances are already in use. | | `io` | :-1: | How to process input/output (I/O). Can be `stdio` or `socket`. When using `stdio`, I/O is handled via standard stdin/stdout. When using `socket` a temporary socket server is spawned that can be connected back to. The server listens on localhost on `{srvPort}` (See **Argument Variables** below for more information). Default value is `stdio`. | @@ -99,8 +99,8 @@ doorPimpWars: { cmd: /usr/bin/dosemu args: [ "-quiet", - "-f", - "/path/to/dosemu.conf", + "-f", + "/path/to/dosemu.conf", "X:\\PW\\START.BAT {dropFile} {node}" ], nodeMax: 1 @@ -149,7 +149,7 @@ Please see the [bivrost!](https://github.com/NuSkooler/bivrost) documentation fo Pre-built binaries of bivrost! have been released under [Phenom Productions](https://www.phenomprod.com/) and can be found on various boards. #### Alternative Workarounds -Alternative workarounds include Telnet Bridge (`telnet_bridge` module) to hook up Telnet-accessible (including local) door servers -- It may also be possible bridge via [NET2BBS](http://pcmicro.com/netfoss/guide/net2bbs.html). +Alternative workarounds include [Telnet Bridge module](telnet-bridge.md) to hook up Telnet-accessible (including local) door servers -- It may also be possible bridge via [NET2BBS](http://pcmicro.com/netfoss/guide/net2bbs.html). ### QEMU with abracadabra [QEMU](http://wiki.qemu.org/Main_Page) provides a robust, cross platform solution for launching doors under many platforms (likely anywhere Node.js is supported and ENiGMA½ can run). Note however that there is an important and major caveat: **Multiple instances of a particular door/OS image should not be run at once!** Being more flexible means being a bit more complex. Let's look at an example for running L.O.R.D. under a UNIX like system such as Linux or FreeBSD. @@ -223,8 +223,13 @@ doorLORD: { } ``` +## See Also +* [Telnet Bridge](telnet-bridge.md) +* [Door Servers](door-servers.md) + ## Additional Resources -### DOSBox +### DOS Emulation +* [DOSEMU](http://www.dosemu.org/) * [DOSBox-X](https://github.com/joncampbell123/dosbox-x) ### Door Downloads & Support Sites @@ -233,4 +238,4 @@ doorLORD: { * http://bbstorrents.bbses.info/ #### L.O.R.D. -* http://lord.lordlegacy.com/ \ No newline at end of file +* http://lord.lordlegacy.com/ diff --git a/docs/modding/show-art.md b/docs/modding/show-art.md index c00d7009..5ffce10c 100644 --- a/docs/modding/show-art.md +++ b/docs/modding/show-art.md @@ -29,8 +29,8 @@ showWithExtraArgs: { If the `showWithExtraArgs` menu was entered and passed `extraArgs` as the following: ```json { - fizzBang : true, - fooBaz : "LOLART" + "fizzBang" : true, + "fooBaz" : "LOLART" } ``` diff --git a/docs/modding/telnet-bridge.md b/docs/modding/telnet-bridge.md new file mode 100644 index 00000000..36e1b3e6 --- /dev/null +++ b/docs/modding/telnet-bridge.md @@ -0,0 +1,96 @@ +--- +layout: page +title: Telnet Bridge +--- +## Telnet Bridge +The `telnet_bridge` module allows "bridged" Telnet connections from your board to other Telnet services (such as other BBSes!). + +## Configuration +### Config Block +Available `config` entries: +* `host`: Hostname or IP address to connect to. +* `port`: Port to connect to. Defaults to the standard Telnet port of `23`. +* `font`: A SyncTERM style font. Useful for example if you would like to connect form a "DOS" style BBS to an Amiga. See [the general art documentation on SyncTERM Style Fonts](/docs/art/general.md). + +### Example +Below is an example `menu.hjson` entry that would connect to [Xibalba](https://xibalba.l33t.codes): + +```hjson +{ + telnetBridgeXibalba: { + desc: Xibalba BBS + module: telnet_bridge + config: { + host: xibalba.l33t.codes + port: 45510 + } + } +} +``` + +### Using Extra Args +The `telnet_bridge` module can also accept standard `extraArgs` of the same configuration arguments described above. This can be illustrated with an example: + +```hjson +telnetBridgeMenu: { + desc: Telnet Bridge + art: telnet_bridge + config: { + font: cp437 + } + form: { + 0: { + mci: { + VM1: { + argName: selection + + items: [ + { + board: BLACK Flag + soft: Mystic + data: bf + } + { + board: Xibalba + soft: ENiGMA½ + data: xib + } + ] + + // sort by 'board' fields above + sort: board + submit: true + } + } + + submit: { + *: [ + { + value: { "selection" : "bf" } + action: @menu:telnetBridgeFromExtraFlags + extraArgs: { + host: blackflag.acid.org + } + } + { + value: { "selection" : "xib" } + action: @menu:telnetBridgeFromExtraFlags + extraArgs: { + host: xibalba.l33t.codes + port: 44510 + } + } + ] + } + } + } +} + +telnetBridgeFromExtraFlags: { + desc: Telnet Bridge + module: telnet_bridge +} +``` + +Here we've created a lightbar menu with custom items in which we'd use `itemFormat`'s with in a theme. When the user selects an item, the `telnetBridgeFromExtraFlags` menu is instantiated using the supplied `extraArgs`. +