diff options
Diffstat (limited to 'src/server.rs')
-rw-r--r-- | src/server.rs | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/server.rs b/src/server.rs deleted file mode 100644 index b1fa237..0000000 --- a/src/server.rs +++ /dev/null @@ -1,78 +0,0 @@ -use std::path::PathBuf; - -use anyhow::Error; -use anyhow::Result; -use pidlock::{Pidlock, PidlockState}; -use actix_web::HttpResponse; -use actix_web::Responder; -use actix_web::http::StatusCode; -use actix_web::body::Body; - -use crate::cli::*; -use crate::configuration::Configuration; -use crate::middleware::Middleware; -use crate::types::util::*; - -pub fn mk_lock() -> Pidlock { - pidlock::Pidlock::new("/tmp/distrox_server.pid") -} - -pub fn do_start(cli: &CLI) -> bool { - cli.cmd().map(|cmd| Command::Server == *cmd).unwrap_or(false) -} - -pub fn is_running(server_lock: &Pidlock) -> bool { - PathBuf::from("/tmp/distrox_server.pid").exists() -} - - -pub async fn run_server(config: Configuration, mut server_lock: Pidlock, adr: String) -> Result<()> { - let app = { - let device_name = config.get_device_name(); - let device_key = config.get_device_key(); - - if let (Some(name), Some(key)) = (device_name, device_key) { - let name = IPNSHash::from(name.clone()); - let key = key.clone(); - let api_url = config.get_api_url().clone(); - let api_port = config.get_api_port().clone(); - - Middleware::load(name, key, &api_url, api_port) - } else { - // ask user for name(s) - // boot repository - // load Middleware object - unimplemented!() - } - }?; - - info!("Starting server"); - let _ = server_lock.acquire().map_err(|_| anyhow!("Error while getting the PID lock"))?; - - info!("Got PID lock for server"); - actix_web::HttpServer::new(|| { - actix_web::App::new() - .route("*", actix_web::web::get().to(index)) - }) - .bind(adr.clone()) - .expect(&format!("Could not bind to address {}", adr)) - .run() - .await; - - info!("Server shutdown"); - info!("Releasing PID lock for server"); - server_lock.release().map_err(|_| anyhow!("Error while releasing the PID lock")) -} - -async fn index() -> impl Responder { - debug!("serve index"); - let s = format!("{pre}{style}{index}{post}", - pre = include_str!("../assets/index_pre.html"), - style = include_str!("../assets/style.css"), - index = include_str!("../assets/index.html"), - post = include_str!("../assets/index_post.html"), - ); - - HttpResponse::build(StatusCode::OK).body(Body::from_slice(s.as_bytes())) -} - |