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

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ref:mqtt [2023/08/04 18:19] – [Actions] Add the "page" action digital manref:mqtt [2024/07/11 18:37] (current) – [Servers] Add server/+/highwater topic digital man
Line 24: Line 24:
 </code> </code>
  
 +===== Retention =====
 +Most Synchronet MQTT messages are published with the //retain// flag enabled. Retained messages published before a client/subscriber connects will still be received (upon new client connection) until until the broker is restarted or the retained messages are explicitly removed from the broker.
 +
 +===== Topics =====
 Synchronet MQTT message topics start with ''**sbbs/BBSID**'' where ''BBSID'' is the System's BBS ID (for QWK Packets) as configured in [[util:SCFG]]->Message Options. It's possible for a single MQTT broker to serve multiple Synchronet BBSes in this way. The full BBS name is published to this topic level (not a leaf topic). For example: Synchronet MQTT message topics start with ''**sbbs/BBSID**'' where ''BBSID'' is the System's BBS ID (for QWK Packets) as configured in [[util:SCFG]]->Message Options. It's possible for a single MQTT broker to serve multiple Synchronet BBSes in this way. The full BBS name is published to this topic level (not a leaf topic). For example:
   sbbs/MYBBS = My Brand-new BBS   sbbs/MYBBS = My Brand-new BBS
Line 56: Line 60:
   * sbbs/+/node/+/**terminal** - tab-delimited current (or last) connected-terminal definition   * sbbs/+/node/+/**terminal** - tab-delimited current (or last) connected-terminal definition
   * sbbs/+/node/+/**output** - live output to connected-terminal (for spying)   * sbbs/+/node/+/**output** - live output to connected-terminal (for spying)
-  * sbbs/+/node/+/**input** - keyboard input to inject into connected-node 
  
 Example: Example:
Line 62: Line 65:
   sbbs/VERT/node/1/status = 0                   65535                     7   sbbs/VERT/node/1/status = 0                   65535                     7
   sbbs/VERT/node/1/terminal = 80    24      syncterm        ANSI    CP437               2005   sbbs/VERT/node/1/terminal = 80    24      syncterm        ANSI    CP437               2005
 +  
 +==== Control ====
 +
 +Nodes can be controlled by publishing messages to the following topics:
 +  * sbbs/+/node/+/**input** - keyboard input to inject into connected-node
 +  * sbbs/+/node/+/**msg** - send a short text message to the node (message should be terminated with a newline character)
 +  * sbbs/+/node/+/**set/status** - set the node's status value (to an integer value: "0" is waiting for connection, "5" is off-line)
 +  * sbbs/+/node/+/**set/errors** - set the node's error counter value (to an integer value, e.g. "0" to clear the error counter)
 +  * sbbs/+/node/+/**set/misc** - set the node's miscellaneous attribute flags (to an integer value, "0x" prefix for hexadecimal values)
 +  * sbbs/+/node/+/**set/lock** - only a sysop can login (publish "0" to clear this flag)
 +  * sbbs/+/node/+/**set/intr** - interrupt (disconnect) a user's session (publish "0" to clear this flag)
 +  * sbbs/+/node/+/**set/down** - make the node not available for connections (status = 5) (publish "0" to clear this flag)
 +  * sbbs/+/node/+/**set/rerun** - have the node reload its configuration upon next connection (publish "0" to clear this flag)
  
 ===== Hosts ===== ===== Hosts =====
Line 76: Line 92:
 The control and monitoring of a specific Synchronet instance is done through this "host sub-topic" tree.  The control and monitoring of a specific Synchronet instance is done through this "host sub-topic" tree. 
  
-Publishing any message to the **recycle** sub-topic of any host topic will initiate a recycling of that host's servers (all of them).+^ Host sub-topic ^ Description 
 +| recycle        | Publishing any message to the **recycle** sub-topic of any host topic will initiate a recycling of that host's servers (all of them). 
 +| pause          | Publishing any message to the **pause** sub-topic of any host topic will initiate pause that host's servers (all of them), preventing the acceptance of any new incoming client connections. | 
 +| resume         | Publishing any message to the **resume** sub-topic of any host topic will un-pause that host's servers (all of them), that we previously paused via the **pause** topic. |
  
 ===== Servers ===== ===== Servers =====
Line 89: Line 108:
  
 The //status// of each server is published to its server topic, for example: The //status// of each server is published to its server topic, for example:
-  sbbs/MYBBS/host/MYCOMPUTER/server/term = 2   ready   1/5 clients     223 served+  sbbs/MYBBS/host/MYCOMPUTER/server/term = ready   1/5 clients     223 served
  
-The numeric //state// (first field of status) for each server is 0-5 corresponding with Stopped, Initializing, Ready, Reloading, Stopping, and Disconnected.+The //state// (first field of status) for each server is one of: 
 +  * stopped 
 +  * initializing 
 +  * ready 
 +  * paused 
 +  * reloading 
 +  * stopping 
 +  * disconnected
  
-The server status contains more details/statistics and is published more often when "High" Public Verbosity is enabled.+The server status contains more details/statistics and is published more often when "High" MQTT->Publish Verbosity is enabled in [[util:SCFG]].
  
-Publishing any message to the **recycle** sub-topic of any server topic will initiate a recycling of that server.+^ Server sub-topic ^ Description 
 +| recycle          | Publishing any message to the **recycle** sub-topic of any server topic will initiate a recycling of that server. 
 +| pause            | Publishing any message to the **pause** sub-topic of any server topic will prevent that server from accepting any new incoming client connections. | 
 +| resume           | Publishing any message to the **resume** sub-topic of any server topic will un-pause that server, returning to the "ready" state, accepting incoming client connections. |
  
 Each server topic has the following sub-topics for status reporting: Each server topic has the following sub-topics for status reporting:
  
-  * sbbs/+/host/+/server/+/**version** +  * sbbs/+/host/+/server/+/**version** - name, version/revision, and build date/time/tool of server 
-  * sbbs/+/host/+/server/+/**max_clients** - maximum number of concurrent clients supported by this server+  * sbbs/+/host/+/server/+/**state/#** - server state change events 
 +  * sbbs/+/host/+/server/+/**client** - current count of connected clients and maximum number of concurrent clients supported by this server 
 +  * sbbs/+/host/+/server/+/**client/list** - tab-delimited details of all connected clients, one client per line 
 +  * sbbs/+/host/+/server/+/**client/action/#** - client actions (e.g. connect, disconnect)
   * sbbs/+/host/+/server/+/**served** - total clients served since server was started   * sbbs/+/host/+/server/+/**served** - total clients served since server was started
 +  * sbbs/+/host/+/server/+/**highwater** - highest concurrent client count since server was started
   * sbbs/+/host/+/server/+/**error_count** - total errors logged since server was started   * sbbs/+/host/+/server/+/**error_count** - total errors logged since server was started
-  * sbbs/+/host/+/server/+/**client_count** - current count of connected clients 
-  * sbbs/+/host/+/server/+/**client_list** - tab-delimited details of all connected clients, one client per line 
  
 ==== Logs ==== ==== Logs ====
Line 134: Line 165:
 Fields are tab-delimited and begin with a date/time stamp in ISO-8601 format. Fields are tab-delimited and begin with a date/time stamp in ISO-8601 format.
  
 +===== Triggers =====
 +
 +The Terminal Server's //event thread// can be instructed to executed Timed Events or initiate QWKnet call-outs by posting a message to the following topics:
 +  * sbbs/+/**exec** - send the internal code of the timed event to execute (case-insensitive)
 +  * sbbs/+/**call** - send the QWK-ID of the QWKnet node to force a call-out to (case-insensitive)
 ===== See Also ===== ===== See Also =====
   * [[:ref:|ref index]]   * [[:ref:|ref index]]