diff --git a/gameserver/src/lib.rs b/gameserver/src/lib.rs new file mode 100644 index 0000000..bd52bd3 --- /dev/null +++ b/gameserver/src/lib.rs @@ -0,0 +1,12 @@ +#![feature(let_chains)] +use anyhow::Result; + +mod net; +mod util; + +use net::gateway::Gateway; + +pub async fn start_gameserver() -> Result<()> { + let mut gateway = Gateway::new("0.0.0.0", 23301).await?; + Box::pin(gateway.listen()).await +} diff --git a/gameserver/src/logging.rs b/gameserver/src/logging.rs deleted file mode 100644 index 1bfb6cc..0000000 --- a/gameserver/src/logging.rs +++ /dev/null @@ -1,29 +0,0 @@ -#[macro_export] -macro_rules! log_error { - ($e:expr) => { - if let Err(e) = $e { - tracing::error!(error.message = %format!("{}", &e), "{:?}", e); - } - }; - ($context:expr, $e:expr $(,)?) => { - if let Err(e) = $e { - let e = format!("{:?}", ::anyhow::anyhow!(e).context($context)); - tracing::error!(error.message = %format!("{}", &e), "{:?}", e); - } - }; - ($ok_context:expr, $err_context:expr, $e:expr $(,)?) => { - if let Err(e) = $e { - let e = format!("{:?}", ::anyhow::anyhow!(e).context($err_context)); - tracing::error!(error.message = %format!("{}", &e), "{:?}", e); - } else { - tracing::info!($ok_context); - } - }; -} - -pub fn init_tracing() { - #[cfg(target_os = "windows")] - ansi_term::enable_ansi_support().unwrap(); - - env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); -} diff --git a/gameserver/src/main.rs b/gameserver/src/main.rs index e3f4753..af2db0e 100644 --- a/gameserver/src/main.rs +++ b/gameserver/src/main.rs @@ -1,16 +1,14 @@ -#![feature(let_chains)] use anyhow::Result; -mod logging; -mod net; -mod util; +pub fn init_tracing() { + #[cfg(target_os = "windows")] + ansi_term::enable_ansi_support().unwrap(); -use logging::init_tracing; -use net::gateway::Gateway; + env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); +} #[tokio::main] async fn main() -> Result<()> { init_tracing(); - let mut gateway = Gateway::new("0.0.0.0", 23301).await?; - Box::pin(gateway.listen()).await + gameserver::start_gameserver().await } diff --git a/sdkserver/src/lib.rs b/sdkserver/src/lib.rs new file mode 100644 index 0000000..1fe687a --- /dev/null +++ b/sdkserver/src/lib.rs @@ -0,0 +1,60 @@ +use anyhow::Result; +use axum::Router; +use axum::http::Method; +use axum::http::header::CONTENT_TYPE; +use axum::routing::{get, post}; +use services::{auth, dispatch, errors, sr_tools}; +use tower_http::cors::{Any, CorsLayer}; +use tracing::Level; + +mod config; +mod services; + +const PORT: u16 = 21000; + +pub async fn start_sdkserver() -> Result<()> { + let span = tracing::span!(Level::DEBUG, "main"); + let _ = span.enter(); + + let router = Router::new() + .route( + dispatch::QUERY_DISPATCH_ENDPOINT, + get(dispatch::query_dispatch), + ) + .route( + dispatch::QUERY_GATEWAY_ENDPOINT, + get(dispatch::query_gateway), + ) + .route(auth::RISKY_API_CHECK_ENDPOINT, post(auth::risky_api_check)) + .route( + auth::LOGIN_WITH_PASSWORD_ENDPOINT, + post(auth::login_with_password), + ) + .route( + auth::LOGIN_WITH_SESSION_TOKEN_ENDPOINT, + post(auth::login_with_session_token), + ) + .route( + auth::GRANTER_LOGIN_VERIFICATION_ENDPOINT, + post(auth::granter_login_verification), + ) + .route( + sr_tools::SRTOOLS_UPLOAD_ENDPOINT, + post(sr_tools::sr_tool_save), + ) + .layer( + CorsLayer::new() + .allow_origin(Any) + .allow_methods([Method::GET, Method::POST, Method::PATCH, Method::DELETE]) + .allow_headers([CONTENT_TYPE]), + ) + .fallback(errors::not_found); + + let addr = format!("0.0.0.0:{PORT}"); + let server = axum_server::bind(addr.parse()?); + + tracing::info!("sdkserver is listening at {addr}"); + server.serve(router.into_make_service()).await?; + + Ok(()) +} diff --git a/sdkserver/src/logging.rs b/sdkserver/src/logging.rs deleted file mode 100644 index 1bfb6cc..0000000 --- a/sdkserver/src/logging.rs +++ /dev/null @@ -1,29 +0,0 @@ -#[macro_export] -macro_rules! log_error { - ($e:expr) => { - if let Err(e) = $e { - tracing::error!(error.message = %format!("{}", &e), "{:?}", e); - } - }; - ($context:expr, $e:expr $(,)?) => { - if let Err(e) = $e { - let e = format!("{:?}", ::anyhow::anyhow!(e).context($context)); - tracing::error!(error.message = %format!("{}", &e), "{:?}", e); - } - }; - ($ok_context:expr, $err_context:expr, $e:expr $(,)?) => { - if let Err(e) = $e { - let e = format!("{:?}", ::anyhow::anyhow!(e).context($err_context)); - tracing::error!(error.message = %format!("{}", &e), "{:?}", e); - } else { - tracing::info!($ok_context); - } - }; -} - -pub fn init_tracing() { - #[cfg(target_os = "windows")] - ansi_term::enable_ansi_support().unwrap(); - - env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); -} diff --git a/sdkserver/src/main.rs b/sdkserver/src/main.rs index 4c064f3..9547f53 100644 --- a/sdkserver/src/main.rs +++ b/sdkserver/src/main.rs @@ -1,65 +1,14 @@ use anyhow::Result; -use axum::Router; -use axum::http::Method; -use axum::http::header::CONTENT_TYPE; -use axum::routing::{get, post}; -use logging::init_tracing; -use services::{auth, dispatch, errors, sr_tools}; -use tower_http::cors::{Any, CorsLayer}; -use tracing::Level; -mod config; -mod logging; -mod services; +pub fn init_tracing() { + #[cfg(target_os = "windows")] + ansi_term::enable_ansi_support().unwrap(); -const PORT: u16 = 21000; + env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); +} #[tokio::main] async fn main() -> Result<()> { init_tracing(); - - let span = tracing::span!(Level::DEBUG, "main"); - let _ = span.enter(); - - let router = Router::new() - .route( - dispatch::QUERY_DISPATCH_ENDPOINT, - get(dispatch::query_dispatch), - ) - .route( - dispatch::QUERY_GATEWAY_ENDPOINT, - get(dispatch::query_gateway), - ) - .route(auth::RISKY_API_CHECK_ENDPOINT, post(auth::risky_api_check)) - .route( - auth::LOGIN_WITH_PASSWORD_ENDPOINT, - post(auth::login_with_password), - ) - .route( - auth::LOGIN_WITH_SESSION_TOKEN_ENDPOINT, - post(auth::login_with_session_token), - ) - .route( - auth::GRANTER_LOGIN_VERIFICATION_ENDPOINT, - post(auth::granter_login_verification), - ) - .route( - sr_tools::SRTOOLS_UPLOAD_ENDPOINT, - post(sr_tools::sr_tool_save), - ) - .layer( - CorsLayer::new() - .allow_origin(Any) - .allow_methods([Method::GET, Method::POST, Method::PATCH, Method::DELETE]) - .allow_headers([CONTENT_TYPE]), - ) - .fallback(errors::not_found); - - let addr = format!("0.0.0.0:{PORT}"); - let server = axum_server::bind(addr.parse()?); - - tracing::info!("sdkserver is listening at {addr}"); - server.serve(router.into_make_service()).await?; - - Ok(()) + sdkserver::start_sdkserver().await }