Remote Control Server: Live Mode

Unlike Remote Server's "Telnet Mode", the "Live Mode" is primarily intended to be used by programs (especially HControl), although it is possible to use this mode by a telnet connection, too.

Starting "Live Mode"

Each connection to RC server starts in "Telnet Mode". After authentication is done with AUTH command, the protocol can be switched to "Live Mode" by sending a LIVE ON command. If this command is successful, a final 200 response is sent and from now on the connection is in "Live Mode".

If LIVE ON command is given with ENCRYPT parameter, the 200 response contains a session key, which is used to encrypt all the data, that is transferred in Live Mode. The session key starts after first "<" character and ends before next ">" character (i. e. not including "<" and ">" characters).

Please note, that this encryption doesn't make the connection "secure". The only purpose of this encryption is to avoid presenting the data directly in plain text, so that no one will see it accidentally (e. g. with a network monitor).

Message Transfer Format

Each message (optionally encrypted) is transmitted as a single "line", i. e. data not containing any CR and LF characters and with sequence CR + LF as "end of line" marker:

TransferEncoding( Encryption( <Message> ) ) CR LF

<Message>

The message itself is of variable length and can contain any characters (8 bit). Its format is described below in next section.

Encryption( ... )

Optional encryption in LIVE ON ENCRYPT mode is done with Blowfish algorithm in CBC mode. The key used for encryption is build by HMAC-MD5 with the transmitted session key as data and user's password as key. All in all very obscure ..., see the sources for details.

TransferEncoding( ... )

As characters CR and LF are used as "end of line" markers, they always have to be encoded for transmission. Although not mandatory, the characters NUL and TAB are encoded as well.

The encoded characters are replaced by a "^" followed by character's value plus 64. The quote character itself has always to be doubled, i. e.:

CR has to be replaced by "^M"
LF has to be replaced by "^J"
"^" has to be replaced by "^^"
NUL should be replaced by "^@"
TAB should be replaced by "^I"

Message Format

Each "Live Message" is identified by a numerical identifier and can have optional data:

<LTYPE> [ SP <LDATA> ]

<LTYPE>

Four hex digits representing a 16 bit unsigned integer. Smaller numbers have to be filled up with leadings zeros.

<LDATA>

This part contains additional data, e. g. information's data, request's parameters or reply's data. Please note, that the SP character (space, ASCII-32) between <LTYPE> and <LDATA> is mandatory if any <LDATA> is given.

Live Message Types

As said above, each message is identified by a unique number, a 16 bit unsigned integer. The upper 4 bits of this number are used as a type marker:

LMINF = $1000

Message numbers of form "1???" (hex) are Information Messages, which are sent from the server to all currently connected clients whenever something meaningful happened.

Please note, that such Information Messages can arrive at any time, i. e. even between a request was sent and while waiting for request's reply.

LMREQ = $2000

Message numbers of form "2???" (hex) are Request Messages, which are sent from a client to the server in order to start an action or to retrieve information.

LMREP = $4000

Message numbers of form "4???" (hex) are Reply Messages, which are sent from the server to the client as an answer for a previous "Request Message".

Note: Requests are handled in "first-in-first-out" sequence, so if multiple requests are sent without waiting for their replies, the replies will arrive in the same sequence.

LMXXX = $8000

Message numbers of form "8???" (hex) are Special Messages. They are either used internally (and are never transmitted) or only have a special meaning.

Information Messages ($1xxx)

LMINF_LOCALSERVER_STATES = LMINF or $020

This message is sent, whenever the state of a local server has changed, i. e. if a local server has been started or stopped. When restarting a local server, only the final state is reported, i. e. no intermediate states.

The data sent with this message is exactly the same as for a LMREQ_LOCALSERVER_CONTROL request with parameters "*" (all servers) and "3" (is server active?), i. e. one line for each server, either containing "1" (active) or "0" (not active).

Data Inf.: Result list: 4( ("0"/"1") CRLF )
LMINF_LOCALSERVER_CLIENTS = LMINF or $021

This message is sent, whenever a client connected to or disconnected from a local server.

The data sent with the message contains the list of currently connected clients and is the same as the reply of a LMREQ_LOCALSERVER_CLIENTS request.

Note: This info is not sent immediately but together with periodical counter list info.

Data Req.: -
Data Rep.: Result list: *( <srv> TAB <uid> TAB <tid> TAB <ip> TAB <user> CRLF )
LMINF_COUNTERS_LIST = LMINF or $030

This message is sent periodically, but only if any counter value has changed since the last message was sent.
The data sent with the message contains all available counters, each identified by a name of two characters:

     'ta'   Number of active tasks
     'jo'   Number of entries in news job list
     'no'   Number of news messages waiting for being posted
     'mo'   Number of mail messages waiting for being sent
     'ni'   Total number of new news messages (=nl+nh+nk)
     'nl'   Number of new news messages: loaded
     'nh'   Number of new news messages: not loaded (history)
     'nk'   Number of new news messages: not loaded (scorefile)
     'mi'   Number of new mail messages
     'bi'   Number of bytes received
     'bo'   Number of bytes sent
     'by'   Total number of bytes transferred (=bi+bo)
Data Inf.: List: *( <id> "=" <value> CRLF )
LMINF_TASKS_LIST = LMINF or $040

This message is sent, whenever a task was started or has finished.

The data sent with the message contains the list of currently active tasks and is the same as the reply of a LMREQ_TASKS_LIST request.

Note: This info is not sent immediately but together with periodical counter list info.

Data Inf.: List: *( <uid> TAB <tid> TAB <type> TAB <desc> TAB <class> TAB <state> CRLF )
LMINF_LOGFILE_ADD = LMINF or $050

This message is sent, whenever a new line has been added to the log file.

The data sent with the message starts with Hamster's internal logfile ID, which describes the type of the line. This ID is always transmitted in hex with 4 digits - possible IDs are:

   LOGID_ERROR  = $8000;   // Errors
   LOGID_WARN   = $4000;   // Warnings
   LOGID_SYSTEM = $0800;   // System messages
   LOGID_INFO   = $0080;   // Information
   LOGID_DETAIL = $0040;   // Details
   LOGID_DEBUG  = $0008;   // Debug
   LOGID_STATUS = $0004;   // Current state
   LOGID_FULL   = $0001;   // Full log with all data sent to or received by HService
Data Inf.: Logfile lines: *( <logid> "=" <logline> CRLF )

Request Messages ($2xxx)

Application Settings

LMREQ_APP_SETTING_GET = LMREQ or $000

Returns the list of Application Settings.

Data Req.: -
Data Rep.: List: *( <id> "=" <value> CRLF )
LMREQ_APP_SETTING_SET = LMREQ or $001

Changes Application Settings (only given ones, others remain unchanged).

Data Req.: Changes: *( <id> "=" <value> CRLF )
Data Rep.: -

Hamster Settings

LMREQ_HAM_SETTING_GET = LMREQ or $010

Returns the list of Hamster Settings.

Data Req.: -
Data Rep.: List: *( <id> "=" <value> CRLF )
LMREQ_HAM_SETTING_SET = LMREQ or $011

Changes Hamster Settings (only given ones, others remain unchanged).

Data Req.: Changes: *( <id> "=" <value> CRLF )
Data Rep.: -

Local Servers

LMREQ_LOCALSERVER_CONTROL = LMREQ or $020

Requests an action for or a status info of a local server.

First parameter selects the server, for which an action/info is requested:

	'0'	NNTP
	'1'	POP3
	'2'	SMTP
	'3'	RC
	'*'	All of these servers

Second parameter selects the action/info, that is requested:

	'0'	Stop server (-> 1=success, 0=failed)
	'1'	Start server (-> 1=success, 0=failed)
	'2'	Restart server (-> 1=success, 0=failed)
	'3'	Is server active? (-> 1=yes, 0=no)
	'4'	Number of clients currently connected

If a single server is selected, the reply will contain just the result (case A below).

If all servers were selected by "*", the reply will contain 4 lines, i. e. one for each server (case B).

A very special case is stopping or restarting the RC server, as this will terminate the connection to it as well. In this case, only a final, empty reply is sent before the server(s) are actually stopped (case C). The server(s) will be stopped about 1 second after the final reply was sent and the connection was closed.

Data Req., case A: ("0"/"1"/"2"/"3") CRLF <control>
Data Rep., case A: Result code: <result>
Data Req., case B: "*" CRLF <control>
Data Rep., case B: Result list: 4( <result> CRLF )
Data Req., case C: ("3"/"*") CRLF ("0"/"2")
Data Rep., case C: -
LMREQ_LOCALSERVER_CLIENTS = LMREQ or $021

Returns the list of clients, which are currently connected to the local servers.

Each line returned will contain info about one client:

<srv> Server type (0=NNTP, 1=POP3, 2=SMTP, 3=RC)

<uid> Unique identifier of the client

<tid> Internal thread ID of the client (=Windows Thread ID)

<ip> IP address and port number

<user> Username (empty, if not identified yet)

Data Req.: -
Data Rep.: Result list: *( <srv> TAB <uid> TAB <tid> TAB <ip> TAB <user> CRLF )

Counters

LMREQ_COUNTERS_LIST = LMREQ or $030

Returns current counter values.

Data Req.: -
Data Rep.: Same as with LMINF_COUNTERS_LIST: *( <id> "=" <value> CRLF )
LMREQ_COUNTERS_RESET = LMREQ or $031

Resets all counters to zero.

Data Req.: -
Data Rep.: -

Tasks

LMREQ_TASKS_LIST = LMREQ or $040

Returns the list of currently active tasks.

Each line returned will contain info about one task:

<uid> Unique identifier of the task

<tid> Internal thread ID of the task (=Windows Thread ID)

<type> Type of task (0=maintenance, 1=transfer, 2=script)

<desc> Description of task

<class> Hamster's internal class name of task

<state> Info on what task is currently doing.

Data Req.: -
Data Rep.: *( <uid> TAB <tid> TAB <type> TAB <desc> TAB <class> TAB <state> CRLF )
LMREQ_TASKS_STOPALL = LMREQ or $041

Stops all active tasks.
If a type identifier is given (0=maintenance, 1=transfer, 2=script), only tasks of this type are stopped.

Note: Request just triggers stopping and then returns immediately.

Data Req.: [ <type> ]
Data Rep.: -
LMREQ_TASKS_STOPBYID = LMREQ or $042

Stops the given task.

Note: Request just triggers stopping and then returns immediately.

Data Req.: Task's unique ID: <uid>
Data Rep.: -

Log File

LMREQ_LOGFILE_LIST = LMREQ or $050

Returns the end of current log file.

Data Req.: Size in KB (default 8): [ <requested size in KB> ]
Data Rep.: Lines: *( <log line> CRLF )
LMREQ_LOGFILE_ROTATE = LMREQ or $051

Starts a new log file.

Data Req.: -
Data Rep.: -
LMREQ_LOGFILE_LISTERRORS = LMREQ or $052

Returns the last 100 logfile lines with errors and warnings.

Data Req.: -
Data Rep.: Lines: *( <log line> CRLF )
LMREQ_LOGFILE_FIND = LMREQ or $053

Return logfile lines that contain the given text or match the given regular expression in a given date range.

Data Req.: <pattern> CRLF <0=text, 1=regex> CRLF <days ago from> CRLF <days ago until> CRLF <max. no. of lines>
Data Rep.: Lines: *( <log line> CRLF )

Newsgroups

LMREQ_GROUPS_LIST = LMREQ or $100

Returns the list of newsgroups.
If <selection> is given, only groups of given types are returned:

	1	Hamster's internal groups
	2	Local groups (except 1 and 3)
	3	Group that was pulled but isn't any more
	4	Group that is currently pulled

Example: Selection '123' returns all groups not currently pulled.

Data Req.: Selection: [ <selection> ]
Data Rep.: List: *( <newsgroup> CRLF )
LMREQ_GROUPS_ADD = LMREQ or $101

Adds a new newsgroup.

Data Req.: Group: <newsgroup>
Data Rep.: -
LMREQ_GROUPS_DELETE = LMREQ or $102

Deletes the given newsgroup.

Data Req.: Group: <newsgroup>
Data Rep.: -
LMREQ_GROUPS_SETTING_GET = LMREQ or $103

Returns the list of Group Settings.

Data Req.: <newsgroup>
Data Rep.: List: *( <id> "=" <value> CRLF )
LMREQ_GROUPS_SETTING_SET = LMREQ or $104

Changes Group Settings (only given ones, others remain unchanged).

Data Req.: Changes: <newsgroup> CRLF *( <id> "=" <value> CRLF )
Data Rep.: -

News Pulls

LMREQ_PULLS_LIST = LMREQ or $120

Returns the list of news pulls.

Data Req.: -
Data Rep.: List: *( <newsgroup> TAB <newsserver> CRLF )
LMREQ_PULLS_ADD = LMREQ or $121

Adds a new news pull.

Data Req.: Pull: <newsgroup> TAB <newsserver>
Data Rep.: -
LMREQ_PULLS_DELETE = LMREQ or $122

Deletes the given news pull.

Data Req.: Pull: <newsgroup> TAB <newsserver>
Data Rep.: -
LMREQ_PULLS_SETTING_GET = LMREQ or $123

Returns the list of Pull Settings.

Data Req.: <newsgroup> TAB <newsserver>
Data Rep.: List: *( <id> "=" <value> CRLF )
LMREQ_PULLS_SETTING_SET = LMREQ or $124

Changes Pull Settings (only given ones, others remain unchanged).

Data Req.: Changes: <newsgroup> TAB <newsserver> CRLF *( <id> "=" <value> CRLF )
Data Rep.: -

Remote Servers

LMREQ_SRVNNTP_LIST = LMREQ or $140
LMREQ_SRVPOP3_LIST = LMREQ or $160
LMREQ_SRVSMTP_LIST = LMREQ or $180

Returns the list of remote NNTP/POP3/SMTP servers.

Data Req.: -
Data Rep.: Server list: *( <domain> [ "/" <alias> ] "," <port> )
LMREQ_SRVNNTP_ADD = LMREQ or $141
LMREQ_SRVPOP3_ADD = LMREQ or $161
LMREQ_SRVSMTP_ADD = LMREQ or $181

Adds a new remote NNTP/POP3/SMTP server.

If no <port> is given here, the default port number for server's type will be used.

Data Req.: Server identifier: <domain> [ "/" <alias> ] [ "," <port> ]
Data Rep.: -
LMREQ_SRVNNTP_DEL = LMREQ or $142
LMREQ_SRVPOP3_DEL = LMREQ or $162
LMREQ_SRVSMTP_DEL = LMREQ or $182

Deletes the given remote NNTP/POP3/SMTP server.

Data Req.: Server identifier: <domain> [ "/" <alias> ] "," <port>
Data Rep.: -
LMREQ_SRVNNTP_SETTING_GET = LMREQ or $143
LMREQ_SRVPOP3_SETTING_GET = LMREQ or $163
LMREQ_SRVSMTP_SETTING_GET = LMREQ or $183

Returns the list of Server Settings.

Data Req.: <server>
Data Rep.: List: *( <id> "=" <value> CRLF )
LMREQ_SRVNNTP_SETTING_SET = LMREQ or $144
LMREQ_SRVPOP3_SETTING_SET = LMREQ or $164
LMREQ_SRVSMTP_SETTING_SET = LMREQ or $184

Changes Server Settings (only given ones, others remain unchanged).

Data Req.: Changes: <server> CRLF *( <id> "=" <value> CRLF )
Data Rep.: -

Scripts

LMREQ_SCRIPT_DIR = LMREQ or $200

Returns the list of available scripts.

The format of returned <filetime> is always "YYYY-MM-DD HH:NN:SS".

Data Req.: -
Data Rep.: Script list: *( <filetime> TAB <filesize> TAB <filename> )
LMREQ_SCRIPT_GET = LMREQ or $201

Returns the selected script.

Data Req.: Script: <script's filename>
Data Rep.: Script text: *( <script line> CRLF )
LMREQ_SCRIPT_PUT = LMREQ or $202

Saves the given script.

Data Req.: Script: <script's filename> CRLF *( <script line> CRLF )
Data Rep.: -
LMREQ_SCRIPT_DELETE = LMREQ or $203

Deletes the given script.

Data Req.: Script: <script's filename>
Data Rep.: -
LMREQ_SCRIPT_START = LMREQ or $204

Starts the given script and returns immediately.

If multiple <start parameters> are given, they have to be separated by TABs (ASCII-9).

The <uid> value returned is the unique task number of the started script (see LMREQ_TASKS functions for details).

Data Req.: Start info: <script's filename> [ CRLF <start parameters> ]
Data Rep.: Started as: <uid>

Configuration Files

LMREQ_PASSWORD_LIST = LMREQ or $300

Returns a list of passwords (RAS and multi-purpose ones).
Each password has an <identifier>, which is the name of the RAS connection for RAS passwords and $1, $2, $3 etc. for the multi-purpose passwords.

The <description> is "RAS: connection-name" for RAS connections and "$number: username" for multi-purpose passwords.

Marker <set> is "1", if a password is set and stored, and "0", if password is not set.

Data Req.: -
Data Rep.: Password list: *( <identifier> TAB <description> TAB <set> )
LMREQ_PASSWORD_GET = LMREQ or $301

Returns info for specific password.

Data Req.: Identifier: <identifier>
Data Rep.: Password info: *( <identifier> TAB <username> TAB <set> )
LMREQ_PASSWORD_SET = LMREQ or $302

Sets/clears username and password.

Data Req.: -
Data Rep.: New setting: *( <identifier> TAB <new username> TAB <new password> )
LMREQ_ACCOUNTS_LIST = LMREQ or $320

Returns a list of all accounts.

Data Req.: -
Data Rep.: Account list: *( <username> TAB <user id> TAB <full name> CRLF )
LMREQ_ACCOUNTS_ADD = LMREQ or $321

Adds a new account, optionally initializing it with the properties of an existing account (IDs >= 10 only).

Data Req.: Account: <new username> [ CRLF <template username> ]
Data Rep.: -
LMREQ_ACCOUNTS_DEL = LMREQ or $322

Deletes an account.

Data Req.: Account: <username>
Data Rep.: -
LMREQ_ACCOUNTS_GET = LMREQ or $323

Gets all properties of an account. The properties are returned as a list of "id=value" pairs. Valid ID numbers are:

   apUsername        = 1;
   apPassword        = 2;
   apFullname        = 3;
   apUniqueID        = 4;
   apIpRestriction   = 5;
   apNewsPost        = 10;
   apNewsRead        = 11;
   apNewsNewNews     = 12;
   apNewsAutoSub     = 13;
   apNewsXHSearch    = 14; // (removed)
   apNewsPeer        = 15;
   apMailbox         = 20;
   apMailSend        = 21;
   apMailAddress     = 22;
   apMailFwdAccount  = 23;
   apMailFwdAddress  = 24;
   apMailFwdMailList = 25;
   apMailFwdKeepCopy = 26;
   apRemoteControl   = 30;

Note: Instead of the real password, only a marker is returned: "1"=set, "0"=none.

Data Req.: Account: <username>
Data Rep.: Properties: *( <id> "=" <value> CRLF )
LMREQ_ACCOUNTS_SET = LMREQ or $324

Sets properties of an account (only given ones, others remain unchanged).

Note: Unlike with LMREQ_ACCOUNTS_GET, the real/new password has to be given here, if ID 1 (apPassword) is contained in the list.

Data Req.: Account and properties: <username> CRLF *( <id> "=" <value> CRLF )
Data Rep.: -
LMREQ_RCPROFILES_LIST = LMREQ or $340

Returns list of RC profiles.

Data Req.: -
Data Rep.: Available profiles: *( <profile number> TAB <profile description> CRLF )

 

LMREQ_MAILLISTS_LIST = LMREQ or $360

Returns list of mail lists.

Data Req.: -
Data Rep.: Available mail lists: *( <listname> CRLF )
LMREQ_MAILLISTS_DEL = LMREQ or $362

Deletes a mail list.

Data Req.: Name of list: <listname>
Data Rep.: -
LMREQ_MAILLISTS_GET = LMREQ or $363

Gets all lines of mail list file (<listname>.hml).

See "Reference: Mail List Files" for details.

Data Req.: Name of list: <listname>
Data Rep.: Lines: *( <line> CRLF )
LMREQ_MAILLISTS_SET = LMREQ or $364

Sets all lines of mail list file (<listname>.hml).

See "Reference: Mail List Files" for details.

Data Req.: Name and lines: <listname> CRLF *( <line> CRLF )
Data Rep.: -

 

LMREQ_USERTASKS_LIST = LMREQ or $380

Returns list of available User Task names.

Data Req.: -
Data Rep.: Available User Tasks: *( <name> CRLF )
LMREQ_USERTASKS_DEL = LMREQ or $382

Deletes a User Task.

Data Req.: Name of task to delete: <name>
Data Rep.: -
LMREQ_USERTASKS_GET = LMREQ or $383

Gets all lines of User Task definition file (<name>.hut).

Data Req.: Name: <name>
Data Rep.: Lines: *( <line> CRLF )
LMREQ_USERTASKS_SET = LMREQ or $384

Sets all lines of User Task definition file (<listname>.hml).

Data Req.: Name and lines: <name> CRLF *( <line> CRLF )
Data Rep.: -

 

LMREQ_FILE_GET = LMREQ or $3F0

Returns content of the given file.

Supported filenames are:

Data Req.: File: <filename>
Data Rep.: Content: *( <line> CRLF )
LMREQ_FILE_SET = LMREQ or $3F1

Overwrites content of given file.

Data Req.: File and new content: <filename> CRLF *( <line> CRLF )
Data Rep.: -
LMREQ_REPORTS_LIST = LMREQ or $400

Returns a list of currently available reports (*.htm files in reports directory), that can be loaded by LMREQ_FILE_GET.

Data Req.: -
Data Rep.: Content: *( <filename> CRLF )

Run Tasks

LMREQ_RUN_PURGE = LMREQ or $500

Starts "purge", i. e. deleting of old data.

<bits> is any combination of the following "bits":

  HAM_PURGEOPT_DONEWS     = 1   // articles
  HAM_PURGEOPT_DOHISTORY  = 2   // news history
  HAM_PURGEOPT_DOKILLS    = 4   // killfile log
  HAM_PURGEOPT_DOMHISTORY = 8   // mail history

To purge all values, a value of 15 (=1+2+4+8) has to be used.

If <bits> contains 1 and <group> is given, only this single group is purged.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: <bits> [ CRLF <group> ]
Data Rep.: <uid>
LMREQ_RUN_REBUILDHISTORY = LMREQ or $501

Starts rebuilding of news history.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: -
Data Rep.: <uid>
LMREQ_RUN_REBUILDLISTS = LMREQ or $502

Starts rebuilding of the global list of newsgroups, that are available on any of the remote NNTP servers.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: -
Data Rep.: <uid>
LMREQ_RUN_STATISTICS = LMREQ or $503

Starts generating the statistics.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: -
Data Rep.: <uid>
LMREQ_RUN_AUTOUNSUBSCRIBE = LMREQ or $504

Starts checking and deleting of groups, that are not read any more by any client.
The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: -
Data Rep.: <uid>
LMREQ_RUN_REPORTS = LMREQ or $505

Starts creation of Hamster Reports.
The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: -
Data Rep.: <uid>
LMREQ_RUN_RASDIAL = LMREQ or $520

Dial the RAS connection named <name> with given username <user> and password <pass>.

Note: <user> can be one of the multi purpose passwords ($<number>).

Data Req.: <name> [ CRLF <user> [ CRLF <pass> ] ]
Data Rep.: -
LMREQ_RUN_RASHANGUP = LMREQ or $521

Hangup current RAS connection.

Data Req.: -
Data Rep.: -
LMREQ_RUN_FETCHMAIL = LMREQ or $540

Starts POP3 transfer (fetching mails) for the given server.

Parameters are the same as with script command HamFetchMail.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: <srv> CRLF <user> CRLF <pass> CRLF <destuser> CRLF <filtsect> CRLF <leave>
Data Rep.: <uid>
LMREQ_RUN_SENDMAIL = LMREQ or $550

Starts SMTP transfer (sending mails) for the given server.

Parameters are the same as with script command HamSendMailAuth.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: <srv> CRLF <user> CRLF <pass> CRLF <fromsel> CRLF <tosel>
Data Rep.: <uid>
LMREQ_RUN_SENDMAILMX = LMREQ or $551

Starts SMTP transfer (sending mails) in MX mode.

See "Reference: File SmtpRouter.hst" for additional info on this MX mode.

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: -
Data Rep.: <uid>
LMREQ_RUN_NEWSJOBS = LMREQ or $560

Adds post and pull jobs for the given server and starts transfer thread(s) for it.

The list of <uid> values returned are the unique task numbers of the started tasks.

Data Req.: <server>
Data Rep.: <uid> *( TAB <uid> )
LMREQ_RUN_USERTASK = LMREQ or $570

Starts a single "User Task".

The <uid> value returned is the unique task number of the started task (see LMREQ_TASKS_...).

Data Req.: <name>
Data Rep.: <uid>

Reply Messages ($4xxx)

LMREP_OK = LMREP or $000

Request successful.

Data Rep.: See "Data Rep." of request message.
LMREP_FAILED = LMREP or $100

Request failed - no details.

Data Rep.: Empty.
LMREP_UNKNOWN_ITEM = LMREP or $101

The requested item (server name, group name, file name etc.) is unknown.

Data Rep.: Empty.
LMREP_EXCEPTION = LMREP or $200

An exception happened while handling the request.

Data Rep.: Error text
LMREP_UNKNOWN_MESSAGE = LMREP or $201

The request number sent is unknown.

Data Rep.: Error text

Special Messages ($8xxx)

LMXXX_HC_GUI_LOG = LMXXX or $100

Used internally by HControl to inject its own messages into logfile view.

Data: Text
LMXXX_RC_LIVE_OFF = LMXXX or $888

Forces RC server to terminate the current "Live" connection and to return to "Telnet Mode".

Data: Ignored.

[www.elbiah.de Hamster Playground Documentation]