added docker image update option

This commit is contained in:
2025-09-23 23:27:13 +02:00
parent 755617c86f
commit 83cb815e76
5 changed files with 96 additions and 32 deletions

View File

@@ -1,3 +1,6 @@
use crate::serverclientmessage::handle_server_message;
use std::time::Duration;
use crate::hardware::HardwareInfo;
@@ -7,6 +10,8 @@ use reqwest::{Client, StatusCode};
use std::error::Error;
use tokio::time::sleep;
pub async fn register_with_server(
base_url: &str,
) -> Result<(i32, String), Box<dyn Error + Send + Sync>> {
@@ -154,7 +159,7 @@ pub async fn send_metrics(
Ok(())
}
pub async fn listening_to_server(base_url: &str) -> Result<(), Box<dyn Error + Send + Sync>>{
pub async fn listening_to_server(docker: &Docker, base_url: &str) -> Result<(), Box<dyn Error + Send + Sync>>{
let url = format!("{}/api/message", base_url);
loop {
// Replace with your server endpoint
@@ -163,7 +168,7 @@ pub async fn listening_to_server(base_url: &str) -> Result<(), Box<dyn Error + S
if let Ok(resp) = resp {
if let Ok(msg) = resp.json::<ServerMessage>().await {
handle_message(msg).await;
handle_server_message(docker, msg).await;
} else {
eprintln!("Failed to parse message");
}
@@ -174,31 +179,4 @@ pub async fn listening_to_server(base_url: &str) -> Result<(), Box<dyn Error + S
// Poll every 5 seconds (or use WebSocket for real-time)
sleep(Duration::from_secs(5)).await;
}
}
fn parse_message(raw: &str) -> ServerMessage {
match raw {
"restart" => ServerMessage::Restart,
msg if msg.starts_with("log:") => ServerMessage::Log(msg[4..].to_string()),
msg if msg.starts_with("update:") => ServerMessage::Update(msg[7..].to_string()),
_ => ServerMessage::Unknown,
}
}
fn handle_message(msg: ServerMessage) {
match msg {
ServerMessage::Restart => restart_container(),
ServerMessage::Update(ver) => update_client(&ver),
ServerMessage::Unknown => eprintln!("Unknown message"),
}
}
fn restart_container() {
println!("Restarting...");
std::process::exit(1); // let Docker restart it
}
fn update_client(version: &str) {
println!("Updating to version {}", version);
}
}