====== Use Synchronet as a Door Game Server ======

A door game server is a TCP server (typically using the RLogin protocol) that provides remote user (player) access to BBS door games, only.

Synchronet makes an excellent door game server:
  * The Synchronet Virtual FOSSIL/UART driver enables the fast and reliable running of the vast majority of legacy (16-bit DOS) BBS door games on Windows
  * The RLogin protocol allows for automatic user identification and authentication (no entering of user-ids or passwords)
  * Seamless new //user creation// is supported through simple configuration changes and customization
  * The stock [[module:logon|Synchronet logon module]] supports automatic invocation of a specified external program (door) or direction to a menu of external programs (door games)

This guide will help a sysop that wants to use their Synchronet BBS as a door game server.

===== Setup =====

Follow these steps for initial setup:

  - [[howto:door:|Install and test your door games]] via normal (e.g. Telnet or SSH) user login first.
  - Confirm RLogin support is enabled and working for accessing your Synchronet Terminal Server (i.e. from a local RLogin client, e.g. [[http://syncterm.net|SyncTERM]])
  - If remote RLogin support is desired, insure RLogin access from the Internet (e.g. test from remote RLogin client or [[http://vert.synchro.net/scanmyports.ssjs|TCP port scanners]]).
  - Set **''rlogin_xtrn_menu=true''** and/or **''rlogin_auto_xtrn=true''** in the ''[[module:logon|[logon]]]'' section of your ''[[dir:ctrl]]/[[config:modopts.ini]]'' file.

At this point, another BBS or user using an RLogin client or proxy/gateway should be able to connect to your Synchronet BBS, automatically authenticate as an existing BBS user, and either go directly to a door game menu (if ''rlogin_xtrn_menu'' was enabled) or go directly to a specified door game (if ''rlogin_auto_xtrn'' was enabled). The automatic invocation of a client-specified door-game is achieved by specifying the internal code of the door game to execute (in the form "xtrn=<doorcode>") as the //terminal-type// string sent as part of the RLogin initial connection negotiation. No other logon screens or typical BBS logon features (e.g. news, bulletins, new messages) will interfere with the user's door game experience. The user will be automatically disconnected when done with either the external program menu (where multiple door games may be run) or when done running the door game specified during login (''terminal-type: xtrn=<doorcode>'').

If you wish to only allow RLogin connections to your game server that have initiated from your same computer system (e.g. running another BBS software), then insure that your RLogin server is only bound to a //localhost// network interface (e.g. 127.0.0.1). If you wish to only allow RLogin connections to your game server that have initiated from (other systems) within your local/private network, then filtering/blocking/not-forwarding the relevant TCP port (e.g. 513) in your Internet gateway/router configuration should achieve that.

===== New users =====

If you wish for new RLogin users to have accounts automatically created on the Synchronet BBS/game server:

  - Insure that the BBS is not closed to new users and does not require a new user password in [[util:SCFG]]->System->Security Options.
  - Disable any extraneous/undesirable New User Prompts/Questions in [[util:SCFG]]->System->New User Prompts.
  - Set any remaining undesired new user question/prompt strings in ''[[dir:ctrl]]/[[custom:text.dat]]'' to blank strings (i.e. "").

Test new user creation by connecting to the Synchronet RLogin server with a new/unique username specified in the 2nd string (//server-user-name//) of the RLogin connection negotiation. If an acceptable user password is specified in the 1st string (//client-user-name//), it will be automatically used as the user's password.

When an unrecognized user connects via RLogin and a new user record is about to be created, you should see a terminal server log message similar to the following:
  !UNKNOWN specified username: 'name', starting new user signup
  
It's a good idea to test this flow and disable any undesired prompts or questions that a new game server user might encounter.

===== Gating ===== 

If the desired RLogin client is actually a user on another BBS system (Synchronet or otherwise), that other BBS system will need to support gating or proxying that BBS user connection (e.g. Telnet, SSH, Raw TCP, WebSocket, etc.) to an RLogin connection to your game server.

If this other system is a Synchronet BBS, then this is typically accomplished using the [[module:rlogin|RLogin Gateway Module]] invoked via one or more online external programs (configured in [[util:SCFG]]->External Programs->Online Programs (Doors)).

To login to a Synchronet RLogin (e.g. door game) server automatically from another Synchronet system, using the same user alias and password as on the client-side Synchronet BBS, you would set up the online program in the client-side SCFG with a command-line of:
  ?rlogin <server-address>[:port] -p

Where ''<server-address>'' is the IP address or hostname of the Synchronet game server and ''[:port]'' is the optional TCP port number to connect to (default: 513).

If the Synchronet door game server is configured to send RLogin users directly to the external program menu, then you should see/interact with the game server's external program menu upon successful connection and authentication. Exiting the door game menu will disconnect the user.

To login to a Synchronet door game server and automatically run a specific door game, using the same user alias and password as on the client-side Synchronet BBS, you would set up the online program in client-side SCFG with a command-line of:
  ?rlogin <server-address>[:port] -p -t xtrn=<door-game-code>
  
Where ''<door-game-code>'' is the internal code of the door game as configured on the Synchronet game server (in SCFG).

If the Synchronet door game server is configured to accept direct door game connections via RLogin (''rlogin_auto_xtrn=true'') and it recognizes the specified external program internal code, the user should be automatically seeing and interacting with the specified door game. Exiting the door game will disconnect the user.

===== See Also =====
  * [[:howto:|howto index]]
  * [[:server:terminal|Synchronet Terminal Server]]
  * [[:module:rlogin|Synchronet RLogin Gateway Module]]

{{tag>door game rlogin server}}
