Ich bin grad aus Langeweile (und weil ich wieder ins ArmA-Modding einsteigen will) dabei, das BattlEye RCon-Protokoll in Rust zu implementieren. Hauptgrund ist eigentlich, dass ich BEC ziemlich kacke finde. Ziel ist es, dass ich spaeter bercon-rs in eine library umwandel und anschliessend eine Applikation drum herum schreibe, die Sachen wie eine whitelist einfach ermoeglicht. Das ganze wird dann auch ein Web-Frontend haben, damit sowas auch leicht administrierbar ist.
SourceCode: GitHub - Rukenshia/bercon-rs: rust tool implementing BERcon
Bisher kann man sich schon einloggen und Befehle senden / empfangen:
erzeugt folgenden output:
SourceCode: GitHub - Rukenshia/bercon-rs: rust tool implementing BERcon
Bisher kann man sich schon einloggen und Befehle senden / empfangen:
Code:
crossbeam::scope(|scope| {
{
let client = client.clone();
scope.spawn(move || { client.start("bla", tx).unwrap(); });
}
scope.spawn(move || {
loop {
match rx.recv().unwrap() {
RemotePacket::Login(success) => {
if success {
println!("successfully logged in.");
client.send(BECommand::Players).unwrap();
}
},
RemotePacket::Command(ref seq, ref data) => println!("received command response (seq# {}): {}", seq, data),
RemotePacket::Log(_, ref data) => println!("[LOG] {}", data),
_ => println!("PACKET RECEIVED")
};
}
})
});
erzeugt folgenden output:
S:\arma\bercon>cargo run
Compiling bercon v0.1.0 (file:///S:/arma/bercon)
Finished debug [unoptimized + debuginfo] target(s) in 1.91 secs
Running `target\debug\bercon.exe`
successfully logged in.
received command response (seq# 0): Players on server:
[#] [IP Address]:[Port] [Ping] [GUID] [Name]
--------------------------------------------------
(0 players in total)
[LOG] RCon admin #0 (127.0.0.1:23308) logged in