Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.


Synchronet Services1) are loadable modules or external executables designed to be loaded by the Synchronet Services Server to service a particular TCP or UDP protocol for remote client connections. Synchronet Services are similar in concept to UNIX's [x]inetd services.


The Services Server can be configured via SCFG:Servers->Services Server:

║                Services Server               ║
║ │Enabled                       Yes           ║
║ │Log Level                     Informational ║
║ │Network Interfaces  , ::   ║
║ │Lookup Client Hostname        No            ║
║ │Configuration File            services.ini  ║
║ │JavaScript Settings...                      ║
║ │Failed Login Attempts...                    ║

... or (on Windows) via SBBSCTRL:Services->Configure:

... or by editing the [Services] section of the ctrl/sbbs.ini file.


Services are normally configured via the ctrl/services.ini file with some global settings controlled via the [Services] section of the sbbs.ini file.

... or (on Windows) via the “Services” tab of the SBBSCTRL:Services->Configure dialog:

Some static services (e.g. the IRC Daemon) may alternatively be executed independently of the Services Server using JSexec.

Service Types

There are four types of services currently supported:

  1. Dynamic JavaScript (the most common service type)
  2. Static JavaScript (e.g. the IRC Daemon)
  3. Dynamic Native
  4. Static Native

JavaScript Services

Additional methods and properties available to Synchronet Services written in JavaScript:


Property Type Description
logged_in booleanIndication if user has successfully authenticated or not
datagram string Contents of received UDP datagram (when applicable)


Along with the common global methods, JavaScript services include support for the following methods:

Method Returns Usage Description
loginbooleanlogin(user, password [,increment_logins=false])Attempt to authenticate as specified user (name or number)
logoutbooleanlogout() Logout currently authenticated user
server.client_addvoidserver.client_add(Socket, [user], [host]) Register client based on specified socket connection, with optional username and hostname
server.client_updatevoidserver.client_update(Socket, [user], [host])Update client based on specified socket connection, with optional username and hostname
server.client_removevoidserver.client_remove(Socket) Unregister client based on specified socket connection

Included Services

See Also

a feature suggested by Angus McLeod of ANJO BBS