1 unstable release
0.1.2 | Jul 22, 2022 |
---|
#19 in #rcon
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