RSend Project - Free Windows Instant Messenger for LAN and WAN

 


RSend Administrator Guide


Content


1. About RSend
2. System requirements and program structure
3. Operation
     3.1. Start the program
     3.2. Send Message
     3.3. Delivery confirmation
     3.4. RSend Logging
     3.5. Online help
     3.6. Multi-language support
     3.7. Command-line utility RSend Alert
     3.8. Using attributes of domain objects (v2.4.8 and higher)
4. Configuration files
5. Deployment in production enviroment
6. Additional information


1. About RSend

RSend is a "client-server" application based on .NET Remoting technology. It is designed for instant messaging between users in domain (LAN and WAN) networks in real time. You can use RSend in a non-domain network with little loss of functionality if users and computers names are unique. Rsend provides high performance and scalability. Average delivery time (through the use of asynchronous multithreading data transfer) to large groups of recipients is 1-3 seconds (depending on the number of recipients, the state of remote computers). RSend provides the ability to select recipients by various criteria: user names, computer names, public (domain) and private groups. RSend is easy to deploy in production enviroment and does not require any support from administrator.

For convenience, RSend has additional features:
       - Built-in filter and search;
       - Quick reply to incoming messages;
       - Confirmation of message delivery;
       - Multi-language support;
       - Command-line utility;
       - Online help, hotkeys.

2. System requirements and program structure

System requirements:

       - Operation system: Microsoft Windows XP, Vista, 7, 8, 2003 - 2012. On computers running Windows XP / 2003 must be installed .NET Framework 3.5. To install it via group policy you can use startup vbs script to install .NET Framework 3.5.1.
       - Exceptions in Windows Firewall on TCP ports used in the program: the default is 5556 for client and 5555 for server.
       - Domain structure of the network. You can use RSend in a non-domain network with little loss of functionality (public groups usage, additional user/computer information from domain)..

Program structure:

RSendServer – provides a user registration, messaging, provides access to public (domain) and private groups, logging:
       - RSend.dll – shared library of functions for the server and the client.
       - RSendServer.exe – server executable.
       - RSendServer.exe.config – server config file.
       - RSend.dat – data file (automatically generated).
       - RSend.log – log file (automatically generated).

RSendClient – installed at the user:
       - RSend.dll – shared library of functions for the server and the client.
       - RSendClient.exe – client executable.
       - RSendClient.exe.config - client config file.
       - Lang.EN.config, Lang.RU.config - language config files.

RSendAlert – client command-line utility:
       - RSend.dll – shared library of functions for the server and the client.
       - RSendAlert.exe – utility file executable.
       - RSendAlert.exe.config - utility config file (file name can be any).

3. Operation

3.1. Start the program

Start RSend Server. Next start RSend Client. When the client starts it performs logon to the server. Logon operation consists of two steps: registration and self-test. To register the client connects to the server using IP address and port specified in the client configuration file

<add key="ipAddressServer" value="127.0.0.1"/>
<add key="portServer" value="5555"/>

and transmits registration information to the server:
       - Client account name (consists of a user name and a computer name);
       - Client IP address;
       - Client port (parameter in the client configuration file)

<add key="portClient" value="5556"/>

The server adds this information with date-time stamp to list of registered clients. After registration the client starts self-test. It works as follows: the server generates a diagnostic message to the client. If within the time interval (parameter in the client configuration file, in milliseconds)

<add key="timeoutSelftest" value="15000"/>

the client does not receive diagnostic message, the server excludes the client from the list of registered clients, and the client goes offline for the time specified by the parameter "timeoutKeepAlive" (see below). Typically, this situation occurs when the client's computer has not an appropriate exception in Firewall. After a certain timeout (parameter in the client configuration file, in milliseconds)

<add key="timeoutKeepAlive" value="90000"/>

client confirms to the server its presence for the next time interval (updates date-time stamp). If the server is unavailable or self-test failed, the client switches to offline for the time interval specified by this parameter. Meanwhile, the icons in the system tray and status bar inform the user that the server is unavailable. Once the server is available, the client will automatically perform logon again and switch to online.

After a certain timeout (parameter in the server configuration file, in milliseconds)

<add key="timeoutKeepAlive" value="210000"/>

the server checks the difference between the current time and the time of client's registration. If the difference is more than this parameter, then the client is excluded from the list of registered clients. Make sure that a value of timeoutKeepAlive on the server must be greater than on the client.
When the user ends his work the client notifies the server and logoff.

Attention. If you change the port number in the client configuration file on which the server is listening to clients make sure that you change it in the server configuration file too.

<channel ref="tcp" port="5555"/>


3.2. Send message

You can select recipients in different ways: by user name, computer name, public (domain) and private groups. In the first two cases, the recipients are displayed in real time - all registered clients on the server.

If you are planning to use domain groups then the administrator have to define these groups in the server configuration file. How it works. The client selects a group(s) and then send request to the server. The server through request to Active Directory selects members of the group (users and/or computers, nested groups) and compares with clients registered on the server RSend. After that, the resulting list is returned to the client.

A work with private groups is the same, except that data of private groups is stored in the file RSend.dat. For more information about working with groups please refer to User Guide.

After selecting recipients the user inputs text and sends message to the server. The server receives information from the client: the sender name, list of recipients, message text and request for delivery confirmation (if applicable) and starts messaging to clients. Server establishes a TCP connection to the client using IP address and port, which gave him the client during registration. To increase the delivery speed each connection starts in the new thread. After a message delivery the thread is released. The total number of threads is limited "maxThread" parameter in the server configuration file.

<add key="maxThread" value="100"/>

The value of this parameter is limited by physical characteristics of the computer and the operating system that is running RSend Server on. For example, using HP G5 server with Windows Server 2003 R2 value of 100 is quite sufficient and in the case of using a workstation you must drop this value to about 25.

If multiple users send messages to large groups of recipients at the same time then an access to the free threads occurs on a competitive basis. If the server can not connect to the recipient's computer (for whatever reason), the server closes the connection by timeout (depending on the type of error and can be from 1 to 45 seconds maximum) and releases the thread. Factors affecting the speed of delivery of the message is the maximum number of simultaneous threads, number of recipients, utilization of client computers, the state of channels. Based on the operating practices, an average time to deliver a message to 400 computers is about 1-2 seconds.

3.3. Delivery confirmation

If the client selects delivery confirmation of the message, in this case an additional parameter is passed to the server. As soon as message delivered to the last recipient the confirmation is sent immediately to the sender. However, sometimes there are cases when the recipient computer is not available suddenly (hanged or lost communication). In this case it is used a special parameter in the server configuration file (in milliseconds) to reduce the waiting time of delivery confirmation.

<add key="confirmationDelay" value="15000"/>

The principle is based on the assumption (from the operating practice) that if the message is not delivered within this time period (confirmationDelay countdown begins immediately after the message is sent to the last recipient in the list) - it will not be delivered.

3.4. RSend logging

RSend.log file is automatically created when you first start RSend Server. All actions that occur on the server are stored in memory and after a certain period of time (parameter "timeoutKeepAlive" in the server configuration file) are written to RSend.log. The same happens when the server is shutdown. Size of the log file (in bites) and its backup mode depend on these parameters in the server configuration file:

<add key="sizeLog" value="10000000"/>
<add key="archiveLog" value="true"/>

When the log's size reaches its limit, the file RSend.log (depending on the value of archiveLog) either is renamed to the name of the archive "Archive-yyyymmdd-RSend.log" and a new empty file is created ("true") or file simply is cleaned of old records ("false"). The presence of log file will help you to control RSend health.

3.5. Online help

You can provide RSend online help to clients (currently only in English and Russian languages). All you need to do is specify in the client configuration file either url to RSend.RU documentation page or path to “User Guide” file's name on the shared resource in your network.

Examples:

<add key="urlHelp" value="http://rsend.ru/userguide.htm"/>
<add key="urlHelp" value="file://\\share\userguide.htm"/>


3.6. Multi-language support

RSend allows to make the program interface in other languages. To do this, you need to prepare a new language file. For example, take English language file - "lang.en.config". Specify values of parameters in a new language, for example Spanish, rename the file to "lang.esp.config" and change parameter "appSettings file" in the client configuration file

<appSettings file="lang.en.config"> ->> <appSettings file="lang.esp.config">
If you have the desire to do RSend available in your native language please write to info@rsend.ru


3.7. Command-line utility RSend Alert

To send message with the use of command-line utility RSend Alert, you must edit the configuration file. Open it in a text editor, for example, Notepad. File encoding - "UTF-8". To specify the recipients you can use users and/or computers names separated by a semicolon (or asterisk * for sending messages to all). Enter your text and save the configuration file with any name, for example, "Test.txt". It will be used as a parameter to run RSend Alert.

Example: RSendAlert.exe Test.txt


3.8. Using the attributes of domain objects (v2.4.8 and higher)

3.8.1. RSend 2.4.8 added the ability to use the attribute "Description" of domain objects "User" and "Computer" instead of "User Name" and "Computer Name" to identify RSend clients (for example, user's full name or other information at the discretion of the administrator). Examples:
Standart mode   Using attributes of domain objects
A similar feature is provided for the attribute "Description" domain object "Group" (instead of the "Group Name") to show in public groups to RSend clients. If the attribute "Description" of the domain object is empty or the parameters "domainGroupDescription" and "domainUserHostDescription" are equal "false", then is used standart mode. To use the attribute "Description" of domain objects set the parameters "domainGroupDescription" and "domainUserHostDescription" equal to "true" in server and client configuration files:

<add key="domainGroupDescription" value="true"/>
<add key="domainUserHostDescription" value="true"/>

3.8.2. RSend v2.4.9 excluded parameters "domainGroupDescription" and "domainUserHostDescription" in the the server and the client configuration files. Instead, added new groups of parameters to add more flexibility of RSend depending on configuration of "Group", "User" and "Computer" objects in the domain.

- Parameters "domainShow(Group, User, Host)Display" define whether to use the attributes of the domain objects "Group", "User" and "Computer" as identifiers of public groups, users, computers in RSend. Default is off ("false"), to active set it equal "true".

<add key="domainShowGroupDisplay" value="true"/>
<add key="domainShowUserDisplay" value="true"/>
<add key="domainShowHostDisplay" value="true"/>

- Parameters "domain(Group, User, Host)SearchAttribute" define the attributes to search for groups, users, computers in the domain. For example, "cn", "name", "sAMAccountName" and others. By default, used the attribute "name".

<add key="domainGroupSearchAttribute" value="name"/>    
<add key="domainUserSearchAttribute" value="name"/>    
<add key="domainHostSearchAttribute" value="name"/>

- Parameters "domain(Group, User, Host)DisplayAttribute" define the attributes to identify public groups, users, computers in RSend. For example, "description", "displayName", "info" and others. By default, used the attribute "description".

<add key="domainGroupDisplayAttribute" value="description"/>
<add key="domainUserDisplayAttribute" value="description"/>
<add key="domainHostDisplayAttribute" value="description"/>

Tip. For proper identification the fields "Description" of domain objects must be unique. It is undesirable to use in the attribute (for example,"Description") parentheses and semicolons "(", ")", ";".


4. Configuration files

4.1. RSendServer.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="maxThread" value="100"/> 
    <add key="timeoutKeepAlive" value="210000"/>
    <add key="confirmationDelay" value="15000"/>
    <add key="sizeLog" value="10000000"/>
    <add key="archiveLog" value="true"/>
    <add key="domainGroups" value="
    Group Name 1;
    Group Name 2;
    Group Name 3;
  "/>
    <add key="domainShowGroupDisplay" value="false"/>
    <add key="domainGroupUserAttribute" value="name"/>
    <add key="domainGroupDisplayAttribute" value="description"/>
    <add key="domainUserAttributes" value="
         Name/User Name; Company/ Company Name; StreetAddress/Street address;"/>
    <add key="domainHostAttributes" value="Name/Computer name;"/>
  </appSettings>
  <system.runtime.remoting>
    <application name="Server">
      <service>
        <wellknown
           mode="Singleton"
           type="Server.ServerObject, Server"
           objectUri="ServerObject.rem"
            />
      </service>
      <channels>
        <channel ref="tcp" port="5555">
          <serverProviders>
            <formatter ref="binary" typeFilterLevel="Full"/>
          </serverProviders>
        </channel>
      </channels>
    </application>
  </system.runtime.remoting>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

4.2. RSendClient.exe.config.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="lang.en.config">
    <add key="ipAddressServer" value="127.0.0.1"/>
    <add key="portServer" value="5555"/>
    <add key="portClient" value="5556"/>
    <add key="timeoutKeepAlive" value="90000"/>
    <add key="selftestWaitTimeout" value="15000"/>
    <add key="notifySound" value="true"/>    
    <add key="domainShowUserDisplay" value="false"/>
    <add key="domainShowHostDisplay" value="false"/>
    <add key="domainUserSearchAttribute" value="name"/>
    <add key="domainHostSearchAttribute" value="name"/>
    <add key="domainUserDisplayAttribute" value="description"/>
    <add key="domainHostDisplayAttribute" value="description"/>
    <add key="urlRSendOnline" value="file://\\Share\userguideru.htm"/>
</appSettings>
<startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0"/>
</startup>
</configuration>

4.3. RSendAlert.exe.config.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
    <add key="ipAddressServer" value="127.0.0.1"/>
    <add key="portServer" value="5555"/>
    <add key="to" value="5User1; User2; Computer3; Computer4;"/>
    <add key="text" value="your message text"/>
</appSettings>
<startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0"/>
</startup>
</configuration>


5. Deployment in production enviroment

Before deploying in a production environment it is recommended to check if your computers meet RSend system requirements. First check if there is the conflict between the ports used by RSend and other products in your network. If necessary, change port numbers in server and client configuration files (see previous subsection 3.1). Second please check if .Net Framework environment (3.5 and higher) is installed on computers with operation system Windows XP. How to install it via GPO you can find at Blog: vbs script to install .NET Framework 3.5.1 (as well as other useful sysadmin scripts).

Set up configuration files of RSend Server and RSend Client.

1. RSendServer configuration is required only if you intend to use domain groups as RSend public groups. To do this, open "RSendServer.exe.config" in a text editor and change the parameter "domainGroups". Start RSend Server.
If you plan to run RSend Server in the background using a scheduled task is recommended to use the following parameters:
       - Run when the computer starts;
       - Run whether user is logged on or not;
       - Enter the name and password of the domain user account if you intend to use domain groups.
       - The user must have access to modify files in the directory RSend Server;
       - Use the check box "Run with highest privileges" if UAC is enabled.
       - Specify the working folder of the program (the directory that will host RSend Server);
2. RsendClient configuration. Open the "RSendClient.exe.config" in a text editor and change IP address of the server.

RSend Client deployment in a domain environment can be done by using Group Policy. If the domain controller is running Windows Server 2008 and above create a new group policy. In Computer Configuration section, set an exception in Windows Firewall on TCP port used by RSend Client, and in the section "Preferences" -> "Files" specify RSend Client files to be copied from a shared network resource to computers. In Computer Configuration (or User Configuration) in the section "Administrative templates" -> "System" -> "Logon" -> "Run these programs at user logon" specify path to run "RSendClient.exe".

If the domain controller is running Windows Server 2003, then to install and run RSend Client you need to create startup script, and use it when writing GPO. Here is an example of Visual Basic script.

Startup.vbs:

On error resume next
Dim WshShell, Fso, DirFrom, DirTo

Set WshShell = CreateObject("WScript.Shell")
Set Fso = CreateObject("Scripting.FileSystemObject")

DirFrom = "\\Share\RSendClient"
DirTo = WshShell.ExpandEnvironmentStrings("%PROGRAMFILES%")&"\RSend"

If Not (Fso.FolderExists(DirTo)) then   
   Fso.CreateFolder(DirTo)
   Fso.GetFolder(DirFrom).Copy DirTo   
   WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\RSend", _
   DirTo & "\RSendClient.exe", "REG_SZ"
End If

Targeting can be accomplished through various means at your discretion: OU, Security Groups, WMI filter, Targeting.

Accommodation of RSend is better to perform in the directory where the user has read-only access, such as Program Files. This will limit a user's access to program settings. Now you ready to go.

6. Additional information

RSend version 2.4.9 has new features:

6.1.1. Excluded parameters "domainGroupDescription" and "domainUserHostDescription" in the the server and the client configuration files. Instead, added new groups of parameters to add more flexibility of RSend depending on configuration of "Group", "User" and "Computer" objects in the domain.
6.1.2. Parameters "domainShow(Group, User, Host)Display" define whether to use the attributes of the domain objects "Group", "User" and "Computer" as identifiers of public groups, users, computers in RSend. Default is off ("false").
6.1.3. Parameters "domain(Group, User, Host)SearchAttribute" define the attributes to search for groups, users, computers in the domain. For example, "cn", "name", "sAMAccountName" and others. By default, used the attribute "name".
6.1.4. Parameters "domain(Group, User, Host)DisplayAttribute" define the attributes to identify public groups, users, computers in RSend. For example, "description", "displayName", "info" and others. By default, used the attribute "description".
6.1.5. Added parameter "supportedRuntime" to the server, the client and the alert configuration files to avoid installation of .Net Framework 3.5 on computers running Windows 8, 8.1, 10, 2012. Similar changes have been made in previous versions RSend.

RSend version 2.4.8 has new features:

6.2.1 Added ability to use the attribute "Description" of domain objects "User", "Computer", "Group" to identify RSend clients and public (domain) groups (set parameters "domainGroupDescription" and "domainUserHostDescription" equal to "true" in the server and the client configuration files.
6.2.2 Some new features to user interface: context menu (hotkey F1) to show additional domain information about user/computer - name, address, phone, mobile (parameters "domainUserAttributes" and "domainHostAttributes"in the server configuration file), context menu (hotkey Ctrl-C) to copy user/computer names from the list of recipients to private groups.
6.2.3 Excluded the parameter "domain" in server configuration file (domain name is determined automatically), and instead of the parameter "ADGroups" is used "domainGroups.

RSend version 2.4.5 has new features:

6.3.1 Added sound notification when a message is received. For this purpose is used the system file "notify.vaw", stored in the directory Windows\Media and the parameter "notifySound" in the client configuration file.
6.3.2 Added display of links (http / https / ftp), email addresses in messages, and launch them on the default browser and email client;

* RSendServer versions are compatible with all previous versions of RSendClient and RSendAlert.

If you have any questions regarding RSend please write to info@rsend.ru. For more information about RSend please refer to User Guide and About project.