====== Instant Message ======

The Synchronet Instant Message module is used to provide a real-time inter-BBS instant message feature for participating systems.

This module is normally invoked from the [[chat_sec|"Chat" menu]] or from the [[:module:PrivateMsg]] module with the 'I' key.

===== Install =====
==== Chat Menu ====
If you're using the default ''[[chat_sec]]'' menu module, you should already have it installed on that menu (the ''I'' command key).

==== Global Hotkey ====
To get access to instant-message module from virtually //anywhere// within the BBS (e.g. using Ctrl-P), install the (new) [[:module:PrivateMsg]] module in SCFG->System->Loadable Modules->Private Msg (the default, ''privatemsg'', should be all you need):
  Private: (T)elegram, (M)essage, (C)hat, (I)nterBBS, or (Q)uit:

==== Logon Event ====
To display a list of currently active users (on other inter-BBS instant message capable systems) during user-logon, add an external program to [[util:SCFG]]->External Programs->Online Programs->Main (or your section of choice)->Available Online Programs... and configure as follows:

<file>
Name                       Synchronet IMSG List
Internal Code              SBBSIMSG
Command Line               ?sbbsimsg -l
Multiple Concurrent Users  Yes
Execute on Event           Logon, Only
Pause After Execution      Yes
BBS Drop File Type         None
</file>

All other settings can be left with their default values (No/None/blank).

 
===== History =====

History of this module/feature:

==== Original (2001) ====
  * Queried systems using Finger (TCP port 79)
  * Sent message using SMTP-SOML (TCP port 25)

==== Rev 1.11 (2002) ====
  * Queried system using both TCP and UDP-Finger (port 79)
  * Still sent messages using SMTP-SOML

==== Rev 1.22 (2007) ====
  * Queried using SYSTAT/ActiveUser protocol (TCP & UDP port 11) in addition to Finger (TCP and UDP port 79)
  * If send via SMTP failed, used MSP protocol (TCP port 18)

==== Rev 1.25 (2009) ====
Removed Finger (both TCP and UDP support), SYSTAT-TCP and SMTP support, so it now *only*:
  * Queries using SYSTAT/ActiveUser protocol over UDP port 11
  * Sends messages using MSP (TCP port 18)

So, while **originally** the requirements for systems to participate in the instant-message network were:
  * Synchronet SMTP Server listening on TCP port 25
  * fingerservice.js listing on TCP port 79

**Now**, the requirements are:
  * activeuserservice.js (or fingerservice.js) listening on UDP port 11
  * mspservice.js listening on TCP port 18

===== List File =====

The heart of the instant message module is the ''[[dir:ctrl]]/sbbsimsg.lst'' file.

This file is generated daily on [[bbs:Vertrauen]] and distributed via FTP as [[ftp://vert.synchro.net/sbbsimsg.lst]].

The GETIMLST timed event (configured in [[util:SCFG]]->External Programs->Timed Events) is normally used to pull the list file from Vertrauen via FTP, usually daily.

The List File is generated daily on Vertrauen through the use of the ''[[module:sbbslist]].js'' module's ''imsglist'' command-line option. This sbbslist option parses the Synchronet BBS List and finds listed-systems that meet the minimum requirements to be included in the instant-message list and re-generates the ''sbbsimsg.lst'' file.

==== Requirements ====
Since Vertrauen uses its [[http://synchro.net/sbbslist.html|Synchronet BBS List]] as the source of BBSes which may be instant-message capable, the first requirement is that a system is listed in this database.

To have your system listed, either:
  - login to Vertrauen and create your BBS entry or, 
  - preferably, run the [[sbbslist]] module on your own BBS and have it synchronized with Vertrauen and the rest of DOVE-Net or FidoNet via the ''SYNCDATA'' networked message area

The following services **must** also be reachable via the public-Internet for a system to be listed in the Instant Message module List File (''sbbsimsg.lst''):
  - SYSTAT/ActiveUser service (using the [[service:Finger]] service) on UDP port 11
  - MSP service (using the [[service:MSP]] service) on TCP port 18

This is normally accomplished by adding the following services to a BBS's ''[[dir:ctrl]]/[[config:services.ini]]'' file:

<file ini>
[ActiveUser-UDP]
Port=11
MaxClients=10
Options=UDP | NO_HOST_LOOKUP
Command=fingerservice.js -u
</file>

<file ini>
[MSP]
Port=18
MaxClients=10
Command=mspservice.js
</file>

You can use [[http://cvs.synchro.net/scanmyports.ssjs|this page]] to help determine if the required services are publicly-reachable on your system.

Once a system is listed in the Synchronet BBS List on Vertrauen and the required services are confirmed publicly-reachable on the Internet, that system should appear in the shared ''sbbsimsg.lst'' file within 24 hours.

===== See Also =====
  * [[:config:services.ini]]
  * [[:module:sbbslist]]
  * [[:module:|Modules]]
  * [[:service:finger|Finger Service]]
  * [[:service:msp|MSP Service]]
  * [[:service:|Services]]

{{tag>tcpip services javascript chat sbbslist instant-messaging nodelist ecweb}}
