archive server

This commit is contained in:
2026-06-12 18:27:55 +02:00
parent 6aa0ab473d
commit 97f3e4c139
11 changed files with 138 additions and 14 deletions

View File

@ -1,13 +1,10 @@
use crate::minecraft::client::client::Client;
use crate::{dockermgr::start_server, minecraft::client::client::Client};
use diesel::result::Error::NotFound;
use json::object;
use crate::minecraft::varint::varint_write;
use std::collections::VecDeque;
use crate::{ dockermgr };
impl Client {
pub async fn login_intent_handle(&mut self, mut _packet: &mut VecDeque<u8>, _packet_id: i32) -> Result<(),String> {
@ -30,7 +27,8 @@ impl Client {
Err(e) => { return Err(format!("db fetch error : {}", e)); }
};
dockermgr::start_server(&self.docker, &self.db_pool, &server.name).await?;
start_server(&self.docker, &self.db_pool, &server.name).await?;
Ok(())
}

View File

@ -1,7 +1,7 @@
use bollard::Docker;
use chrono::{TimeDelta, Utc};
use crate::{ DbPool, dockermgr, models::{self, Servers}, schema, status::ServerStatus };
use crate::{ DbPool, cli::archive::archive_server, dockermgr, models::{self, Servers}, schema, status::ServerStatus };
use async_std::task;
@ -45,6 +45,7 @@ pub async fn server_manager_loop(pool: DbPool, docker: Docker)
for srv in a_servers {
let time_diff = Utc::now().naive_utc() - srv.last_login.unwrap();
should_stop(&docker, &pool, &time_diff, &srv).await;
should_archive(&docker, &pool, &time_diff, &srv).await;
check_still_online(&docker, &pool, &srv).await;
}
task::sleep(Duration::from_secs(30)).await;
@ -61,6 +62,16 @@ async fn should_stop(docker: &Docker, pool: &DbPool, diff: &TimeDelta, srv: &Ser
}
}
async fn should_archive(_docker: &Docker, pool: &DbPool, diff: &TimeDelta, srv: &Servers) {
if srv.status != ServerStatus::Stopped { return ; }
if diff.num_days() >= 30 {
println!("last login time exceedd, archiving {}", srv.name);
let _ = archive_server(srv, pool);
println!("{} archived", srv.name);
}
}
async fn check_still_online(docker: &Docker, pool: &DbPool, srv: &Servers) {
use schema::servers::dsl::*;