EugeneBookstore Operation Alien Browser Bridge v1.0.0

Installed at https://bbs.eugenebookstore.com/alien/
This is a source backup of the installed browser bridge, not a replacement
for the original game archive. The original ALIEN12.EXE remains unmodified.
Original game: Operation Alien 1.2, Hypernet Software, 1997, freeware.
Archive: http://annex.retroarchive.org/cdrom/cotc-26/BBS/ALIEN12B.ZIP

Files and installed locations:
webroot/* -> /home/localsysop/sbbs/webv4/root/alien/
engine/web/* -> /home/localsysop/sbbs/xtrn/alien/web/
engine/world/* -> original game working directory .../xtrn/alien/world/
mods/alien-web.js -> /home/localsysop/sbbs/mods/alien-web.js
operation-alien.service -> ~/.config/systemd/user/

Runtime requirements: Python 3 + pexpect, DOSEMU2 and working FreeDOS setup,
X00.EXE FOSSIL driver (provided by existing BBS setup), original game archive.
Extract the original game twice: original/ is preserved source; world/ is the
working game. Lowercase archive filenames on the Linux host. Place X00.EXE
in world/. C:\ALIEN must map to world/ via ~/.dosemu/drive_c/alien.
The original archive's DOOR.SYS must not be retained; the bridge creates it.
Initialize the new patient from ALIENINI.BAK using its documented RESET.BAT
behavior. Point the INI's zmodem protocol driver at C:\ALIEN\SEND.BAT.
Empty the archive's demo ALIEN1.USR and HISTORY.DAT for a new installation only.
Never clear those files when restoring an existing game.

Create a private random key in engine/bridge.key (chmod 600), and replace
YOUR_LOCAL_BRIDGE_KEY in webroot/api.ssjs with the same key. Keys and player
state are intentionally excluded from this package. The backend listens
only on 127.0.0.1:8112. The SSJS gateway is served by Synchronet on the existing
public HTTPS domain. Use POST requests through the web app; filenames are
allowlisted and original HTML is sanitized before display.
Enable/start the user systemd service; enable user lingering for reboot
startup. The existing BBS web server requires no new public TCP port.

A shared patient is treated by one surgeon at a time. Idle sessions end after
20 minutes. End shift sends the original quit command and saves the world.
Tested: native engine start, multiple original HTML pages, X-ray treatment
history update, busy-room refusal, path rejection, browser entry, operating
room, WAV loading, clean quit. Test data was archived separately and the
published patient initialized cleanly before linking it from the home page.

Limitations inherited from the original freeware release remain. Version 2.0
registration features are not implemented. MIDI tracks download for external
playback. Missing original media links are disabled.
