RCON
Eco RCON Protocol
The Eco RCON Protocol is a TCP based communication protocol loosely based on the Source RCON Protocol standard. It allows admin commands to be issued to the server via a "remote console". The most common use of RCON is to allow server owners to control their game servers without being in game for easy administration or automated processes.
Using Eco RCON
By default, Eco's RCON implementation listens on TCP port 3002. This setting can be changed inside the Network plugin configuration options as well as the IP/host address the RCON server binds to. To use RCON a valid password must be set inside the Network plugin configuration. Servers without a valid password will reject all incoming authentication requests.
Establishing a Connection
To establish a TCP connection to an Eco RCON server you need to know the server's configured RCON port and the server's configured password and connect via a standard TCP client. Once connected you must authenticate your selves by sending a SERVERDATA_AUTH packet. Failure to do so will result in no response. If your authentication request was successful you should receive back a SERVERDATA_AUTH_RESPONSE packet with a matching id of the authentication request packet. Receiving an packet id of -1 means the authentication request has failed. An authentication request can fail if the password is incorrect, misconfigured, or if there is already an active RCON client connection.
Packet Structure
Basic Packet Structure
All Eco RCON packets payloads follow this basic structure and are sent over a TCP socket
Field | Type | Value |
---|---|---|
Size | 32-bit little-endian Signed Integer | Varies, see below. |
ID | 32-bit little-endian Signed Integer | Varies, see below. |
Type | 32-bit little-endian Signed Integer | Varies, see below. |
Body | Null-terminated ASCII String | Varies, see below. |
Empty String | Null-terminated ASCII String | 0x00 |
Packet Size
The RCON packet size field is represented by a 32-bit little endian integer, It represents the total length of the request in bytes. Note that the packet size field itself is not included when determining the size of the packet, so the value of this field is always 4 less than the packet's actual length. The minimum possible value for packet size is 14.
Size | Containing |
---|---|
4 Bytes | ID Field |
4 Bytes | Type Field |
At least 1 Byte | Packet body (potentially empty) |
1 Bytes | Empty string terminator |
Packet ID
The packet id field is a 32-bit little endian integer which is specified by the requesting client for each request. Its value can be any positive integer. When the server responds to a client request it will send back the same packet id it received for that command request allowing you match the original request to the server response.
Packet Type
The packet type field is represented by a 32-bit little endian integer. It the intended purpose of the packet.
Value | String Descriptor |
---|---|
3 | SERVERDATA_AUTH |
2 | SERVERDATA_AUTH_RESPONSE |
2 | SERVERDATA_EXECCOMMAND |
0 | SERVERDATA_RESPONSE_VALUE |
Packet Body
The packet body field is a null-terminated ASCII encoded string. The contents of the packet body vary by the executed request.