From 2f67f82a64f4eabfbe758655099f48d8afa07fc3 Mon Sep 17 00:00:00 2001 From: "Carpenter, Adam (CORP)" Date: Tue, 12 Oct 2021 14:07:10 -0400 Subject: feat: init upload --- angelsharkd/src/main.rs | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 angelsharkd/src/main.rs (limited to 'angelsharkd/src/main.rs') diff --git a/angelsharkd/src/main.rs b/angelsharkd/src/main.rs new file mode 100644 index 0000000..22e4161 --- /dev/null +++ b/angelsharkd/src/main.rs @@ -0,0 +1,59 @@ +use crate::config::Config; +use anyhow::{Context, Result}; +use log::{debug, error, info, LevelFilter}; +use tokio::{signal, task}; +use warp::{hyper::Method, Filter}; + +mod config; +mod routes; + +#[tokio::main] +async fn main() -> Result<()> { + // Init config. + let config = Config::init().with_context(|| "Failed to initialize config.")?; + + // Init logging. + env_logger::Builder::new() + .filter( + None, + if config.debug_mode { + LevelFilter::Debug + } else { + LevelFilter::Info + }, + ) + .init(); + + if config.debug_mode { + debug!("**** DEBUGGING MODE ENABLED ****"); + } + + let routes = routes::index() + .or(routes::ossi(&config)) + .with(if config.debug_mode { + warp::cors() + .allow_any_origin() + .allow_methods(&[Method::GET, Method::POST]) + } else { + warp::cors() + .allow_origin(config.origin.as_str()) + .allow_methods(&[Method::GET, Method::POST]) + }) + .with(warp::log("angelsharkd")); + + // Create server with shutdown signal. + let (addr, server) = warp::serve(routes).bind_with_graceful_shutdown(config.bind_addr, async { + signal::ctrl_c() + .await + .expect("Failed to install CTRL+C signal handler."); + }); + + // Run server to completion. + info!("Starting server on {} ...", addr); + if let Err(e) = task::spawn(server).await { + error!("Server died unexpectedly: {}", e.to_string()); + } + info!("Stopping server..."); + + Ok(()) +} -- cgit v1.2.3