From 0cab69da7194658d32b807466c614a1094f2cbdd Mon Sep 17 00:00:00 2001 From: tomoron Date: Thu, 28 May 2026 15:31:07 +0200 Subject: [PATCH] maybe scrapped Server/ServerList --- src/lib.rs | 6 ++++ src/main.rs | 59 +++++++++++++++++++++++++++++++++--- src/server/mod.rs | 6 ++++ src/server/server.rs | 48 +++++++++++++++++++++++++++++ src/server/status.rs | 7 +++++ src/serverList/mod.rs | 2 ++ src/serverList/serverList.rs | 17 +++++++++++ 7 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 src/lib.rs create mode 100644 src/server/mod.rs create mode 100644 src/server/server.rs create mode 100644 src/server/status.rs create mode 100644 src/serverList/mod.rs create mode 100644 src/serverList/serverList.rs diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..1c00d5e --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,6 @@ +use bollard::Docker; +use std::sync::LazyLock; + +pub static mut DOCKER: LazyLock = LazyLock::new(|| Docker::connect_with_local_defaults().expect("Failed to connect to the docker socket") ); + +pub static mut DB_CONN: LazyLock< diff --git a/src/main.rs b/src/main.rs index 44db682..03a9b1c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,62 @@ -use tokio::net::TcpListener; +//use tokio::net::TcpListener; use std::io; -mod minecraft; -use minecraft::process_mc_socket; +//mod minecraft; +//use minecraft::process_mc_socket; + +//mod rpc; +//use rpc::process_rpc_socket; +// + + + +pub mod server; +use async_std::sync::{Mutex, Arc}; +use server::Server; +use server::ServerStatus; + +mod serverList; -mod rpc; -use rpc::process_rpc_socket; #[tokio::main(flavor = "current_thread")] async fn main() -> io::Result<()> { + Ok(()) + /* + println!("{:?}", docker); + let options = ListImagesOptionsBuilder::default() + .all(true) + .build(); + let images = &docker.list_images(Some(options)).await.unwrap(); + println!("\n\nimages : {:?}", images); + + let options = ListContainersOptionsBuilder::default() + .all(true) + .build(); + + let containers = docker.list_containers(Some(options)).await.unwrap(); + println!("\n\ncontainers : {:?}", containers); + + let options = CreateContainerOptionsBuilder::default() + .name("rust-created-container") + .build(); + + let config = ContainerCreateBody { + image: Some("hello-world".to_string()), +// cmd: Some(vc pec!["/hello".to_string()]), + ..Default::default() + }; + + let container = docker.create_container(Some(options), config).await.unwrap(); + + let start_res = docker.start_container("rust-created-container", None).await; +*/ +// let docker_conn = bollard::Docker::connect_with_local_defaults().expect("Failed to connect to the docker socket"); +// *crate::server::DOCKER.lock().unwrap() = Some(docker_conn); +// let srv = Server { container_name: "something".to_string(), server_name: "potato".to_string(), server_id: 1, status: ServerStatus::Running }; +// srv.start(); +// +// Ok(()) + /* let mc_listener = TcpListener::bind("0.0.0.0:25565").await?; let rpc_listener = TcpListener::bind("0.0.0.0:8080").await?; @@ -31,4 +79,5 @@ async fn main() -> io::Result<()> { } } } + */ } diff --git a/src/server/mod.rs b/src/server/mod.rs new file mode 100644 index 0000000..f7750e7 --- /dev/null +++ b/src/server/mod.rs @@ -0,0 +1,6 @@ +mod server; +pub use server::Server; + +mod status; +pub use status::ServerStatus; + diff --git a/src/server/server.rs b/src/server/server.rs new file mode 100644 index 0000000..40498d0 --- /dev/null +++ b/src/server/server.rs @@ -0,0 +1,48 @@ +use bollard::{ + query_parameters::{ + ListImagesOptionsBuilder, + ListContainersOptionsBuilder, + CreateContainerOptionsBuilder + }, + models::{ + ContainerCreateBody + }, + Docker +}; + +use crate::server::ServerStatus; + +#[derive(Debug, Clone)] +pub struct Server { + pub container_name: String, + pub server_name: String, + pub server_id: u64, + + pub status: ServerStatus, + pub docker: Docker +} + +impl Server { + pub async fn new(name: String, id: u64) -> Self { + let docker = Docker::connect_with_local_defaults().expect("Failed to connect to the docker socket"); + Self { + + container_name: "idk".to_string(), + server_name: name, + server_id: id, + + status: ServerStatus::Stopped, + docker + } + + } + + pub async fn start(&self) -> Result<(), String> { + let options = ListImagesOptionsBuilder::default() + .all(true) + .build(); + let images = self.docker.list_images(Some(options)).await.unwrap(); + println!("\n\nimages : {:?}", images); + Ok(()) + } +} diff --git a/src/server/status.rs b/src/server/status.rs new file mode 100644 index 0000000..fc447d2 --- /dev/null +++ b/src/server/status.rs @@ -0,0 +1,7 @@ +#[derive(Debug, Clone)] +pub enum ServerStatus { + Running, + Starting, + Stopped, + Archived +} diff --git a/src/serverList/mod.rs b/src/serverList/mod.rs new file mode 100644 index 0000000..2937894 --- /dev/null +++ b/src/serverList/mod.rs @@ -0,0 +1,2 @@ +mod serverList; +pub use serverList::*; diff --git a/src/serverList/serverList.rs b/src/serverList/serverList.rs new file mode 100644 index 0000000..e3fa858 --- /dev/null +++ b/src/serverList/serverList.rs @@ -0,0 +1,17 @@ +use crate::server::Server; +use async_std::sync::{Mutex, Arc}; +use std::sync::LazyLock; + +use std::collections::HashMap; + +pub static SERVER_LIST: LazyLock>>>> = LazyLock::new(|| Mutex::new(HashMap::new())); + +pub async fn get(id: u64) -> Option>> { + let server_list = SERVER_LIST.lock().await; + match server_list.get(&id) { + Some(found) => { Some(found.clone()) }, + None => { None } + } +} + +// (*SERVER_LIST.lock().await).push(Arc::new(Mutex::new(Server::new("test".to_string(), 1u64).await)));