move main.rs functionality to lib.rs

This commit is contained in:
Jacob Lifshay 2024-04-08 14:47:33 -07:00
parent 7527459446
commit 8b76a51434
Signed by: programmerjake
SSH key fingerprint: SHA256:B1iRVvUJkvd7upMIiMqn6OyxvD2SgJkAH3ZnUOj6z+c
2 changed files with 54 additions and 51 deletions

53
src/lib.rs Normal file
View file

@ -0,0 +1,53 @@
use crate::cli::{Listen, ListenFdSocket, ListenFdSockets};
use actix_session::{storage::CookieSessionStore, SessionMiddleware};
use actix_web::{cookie::Key, web, App, HttpServer};
use clap::Parser;
use listenfd::ListenFd;
mod app;
mod cli;
mod client;
mod config;
pub async fn main() -> eyre::Result<()> {
env_logger::init();
let mut listenfd = ListenFd::from_env();
color_eyre::install()?;
let mut args = cli::CLI::parse();
args.resolve(&mut listenfd).await?;
log::info!("retrieved config from auth servers");
let config = web::Data::new(args.config);
let cookie_session_key = Key::generate();
let mut server = HttpServer::new(move || {
let cookie_session =
SessionMiddleware::builder(CookieSessionStore::default(), cookie_session_key.clone())
.cookie_name("session".into())
.build();
App::new()
.wrap(cookie_session)
.app_data(config.clone())
.configure(app::all_services)
});
let Listen {
listen_tcp,
listen_unix,
listen_fd,
} = &mut args.listen;
for sock in listen_tcp.iter() {
server = server.bind_auto_h2c(sock)?;
}
for sock in listen_unix.iter() {
server = server.bind_uds(sock)?;
}
if let Some(ListenFdSockets(sockets)) = listen_fd {
for sock in sockets.drain(..) {
server = match sock {
ListenFdSocket::Tcp(sock) => server.listen_auto_h2c(sock)?,
ListenFdSocket::Unix(sock) => server.listen_uds(sock)?,
};
}
}
log::info!("started server");
server.run().await?;
Ok(())
}

View file

@ -1,54 +1,4 @@
use crate::cli::{Listen, ListenFdSocket, ListenFdSockets};
use actix_session::{storage::CookieSessionStore, SessionMiddleware};
use actix_web::{cookie::Key, web, App, HttpServer};
use clap::Parser;
use listenfd::ListenFd;
mod app;
mod cli;
mod client;
mod config;
#[tokio::main]
async fn main() -> eyre::Result<()> {
env_logger::init();
let mut listenfd = ListenFd::from_env();
color_eyre::install()?;
let mut args = cli::CLI::parse();
args.resolve(&mut listenfd).await?;
log::info!("retrieved config from auth servers");
let config = web::Data::new(args.config);
let cookie_session_key = Key::generate();
let mut server = HttpServer::new(move || {
let cookie_session =
SessionMiddleware::builder(CookieSessionStore::default(), cookie_session_key.clone())
.cookie_name("session".into())
.build();
App::new()
.wrap(cookie_session)
.app_data(config.clone())
.configure(app::all_services)
});
let Listen {
listen_tcp,
listen_unix,
listen_fd,
} = &mut args.listen;
for sock in listen_tcp.iter() {
server = server.bind_auto_h2c(sock)?;
}
for sock in listen_unix.iter() {
server = server.bind_uds(sock)?;
}
if let Some(ListenFdSockets(sockets)) = listen_fd {
for sock in sockets.drain(..) {
server = match sock {
ListenFdSocket::Tcp(sock) => server.listen_auto_h2c(sock)?,
ListenFdSocket::Unix(sock) => server.listen_uds(sock)?,
};
}
}
log::info!("started server");
server.run().await?;
Ok(())
subscribe_list::main().await
}