1 unstable release

0.1.2 Jul 22, 2022

#19 in #rcon

MIT license

10KB
187 lines

rcon-rs

Simple implementation of a crate that allows you to work with the RCON protocol

To work with TCP, the TcpStream structure built into the std::net module is used

About RCON

Dependencies

  • bytes for converting types to bytes, for subsequent transmission via tcp
  • rand for generate a random request ID
  • serde for serializing errors
  • thiserror for serializing errors too

Games that support this protocol

  • Minecraft
  • Counter Strike
  • ARK
  • Rust
  • SAMP
  • MTA
  • etc

Example

use rcon::{AuthRequest, RCONClient, RCONConfig, RCONError, RCONRequest};

fn main() -> Result<(), RCONError> {
    // Create new RCON client
    let mut client = RCONClient::new(RCONConfig {
        url: "donkey-engine.host".to_string(),
        // Optional
        read_timeout: Some(13),
        write_timeout: Some(37),
    })?;

    // Auth request to RCON server (SERVERDATA_AUTH)
    let auth_result = client.auth(AuthRequest::new("rcon.password".to_string()))?;
    assert!(auth_result.is_success());

    // Execute command request to RCON server (SERVERDATA_EXECCOMMAND)
    let version = client.execute(RCONRequest::new("seed".to_string()))?;
    assert_eq!(version.body, "Seed: [3257840388504953787]");

    Ok(())
}

Dependencies

~0.8–1.5MB
~30K SLoC