2023-04-27 10:53:28 -04:00
|
|
|
//! Main module of the application
|
|
|
|
//!
|
|
|
|
//! This module contains the main function which handles the logging of the application to the
|
|
|
|
//! stdout and handles the command line arguments provided and launches the `websurfx` server.
|
|
|
|
|
2023-04-30 11:16:08 -04:00
|
|
|
use std::net::TcpListener;
|
2023-04-24 06:12:44 -04:00
|
|
|
|
2023-04-30 11:16:08 -04:00
|
|
|
use websurfx::{config_parser::parser::Config, run};
|
2023-04-24 06:12:44 -04:00
|
|
|
|
2023-04-27 10:53:28 -04:00
|
|
|
/// The function that launches the main server and registers all the routes of the website.
|
|
|
|
///
|
|
|
|
/// # Error
|
|
|
|
///
|
|
|
|
/// Returns an error if the port is being used by something else on the system and is not
|
|
|
|
/// available for being used for other applications.
|
2023-04-22 07:35:07 -04:00
|
|
|
#[actix_web::main]
|
|
|
|
async fn main() -> std::io::Result<()> {
|
2023-04-30 11:16:08 -04:00
|
|
|
// Initialize the parsed config file.
|
|
|
|
let config = Config::parse().unwrap();
|
2023-04-24 06:12:44 -04:00
|
|
|
|
2023-04-25 09:30:04 -04:00
|
|
|
// Initializing logging middleware with level set to default or info.
|
2023-05-29 14:13:07 -04:00
|
|
|
if config.logging || config.debug {
|
2023-05-27 12:50:20 -04:00
|
|
|
use env_logger::Env;
|
|
|
|
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
|
|
|
|
}
|
2023-04-25 06:57:18 -04:00
|
|
|
|
2023-04-30 11:16:08 -04:00
|
|
|
log::info!("started server on port {}", config.port);
|
2023-04-24 06:12:44 -04:00
|
|
|
|
2023-04-30 11:16:08 -04:00
|
|
|
let listener = TcpListener::bind((config.binding_ip_addr.clone(), config.port))?;
|
2023-04-22 07:35:07 -04:00
|
|
|
|
2023-04-30 11:16:08 -04:00
|
|
|
run(listener, config)?.await
|
2023-04-22 07:35:07 -04:00
|
|
|
}
|