encrypted msg + online reporting + refactor

This commit is contained in:
JMARyA 2025-04-30 09:35:21 +02:00
parent 125d50530d
commit a567214f58
19 changed files with 318 additions and 304 deletions

42
src/sheepd_core/mqtt.rs Normal file
View file

@ -0,0 +1,42 @@
use owl::Serialize;
use rumqttc::AsyncClient;
use sage::PersonaIdentity;
// Client MQTT
pub async fn handle_mqtt(topic: String, data: Vec<u8>) {
//println!("got real raw: {}", String::from_utf8_lossy(&data));
let pk = (
String::new(),
crate::AGENT.get().unwrap().server_sign.clone(),
);
let pk = pk.sign_key().unwrap();
let payload = crate::IDENTITY.get().unwrap().decrypt(&data, &pk).unwrap();
println!(
"got payload {}",
String::from_utf8(payload.payload).unwrap()
);
}
pub async fn send_back<T: Serialize>(client: &AsyncClient, topic: &str, request: T) {
let data = serde_json::to_string(&request).unwrap();
let pk = crate::AGENT.get().unwrap();
let pk = (pk.server_age.clone(), String::new());
let rec = pk.enc_key().unwrap();
let machine_id = std::fs::read_to_string("/etc/machine-id")
.unwrap()
.trim()
.to_string();
let payload = crate::IDENTITY
.get()
.unwrap()
.encrypt(data.as_bytes(), &rec);
let topic = format!("{machine_id}/{topic}");
log::info!("Publish to {machine_id}{topic}");
client
.publish(topic, rumqttc::QoS::AtMostOnce, true, payload)
.await
.unwrap();
}