51 lines
1.6 KiB
Rust
51 lines
1.6 KiB
Rust
/*
|
|
* Yggdrasil: Minecraft authentication server
|
|
* Copyright (C) 2023 0xf8.dev@proton.me
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#![feature(fs_try_exists)]
|
|
|
|
use anyhow::Result;
|
|
use ftlog::{debug, error, info, log, trace, warn};
|
|
use tokio::spawn;
|
|
|
|
use crate::config::Config;
|
|
use crate::server::start_server;
|
|
|
|
mod database;
|
|
mod server;
|
|
mod config;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
// Build logger
|
|
let time_format = time::format_description::parse_owned::<1>("[[[year]-[month]-[day] [hour]:[minute]:[second]]")?;
|
|
|
|
ftlog::builder()
|
|
.time_format(time_format)
|
|
.bounded(100_000, false)
|
|
.try_init()
|
|
.expect("Failed to initialize logger");
|
|
|
|
// Load config
|
|
let config = Config::load()?;
|
|
info!("Config location: {}", config.location.display());
|
|
|
|
// Start server
|
|
info!("Starting yggdrasil server!");
|
|
|
|
let server_thread = spawn(start_server(config.to_owned()));
|
|
server_thread.await??;
|
|
|
|
info!("Server stopped!");
|
|
|
|
// Cleanup
|
|
Ok(ftlog::logger().flush())
|
|
}
|