Update futriix-server/src/main.rs
This commit is contained in:
parent
0a4ef07891
commit
40255fce93
@ -4,47 +4,18 @@ use server::*;
|
|||||||
use std::fs;
|
use std::fs;
|
||||||
use toml::Value;
|
use toml::Value;
|
||||||
use simplelog::*;
|
use simplelog::*;
|
||||||
use clap::Parser;
|
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
|
||||||
#[command(author, version, about, long_about = None)]
|
|
||||||
struct Args {
|
|
||||||
/// Port to listen on
|
|
||||||
#[arg(short, long, default_value_t = 8080)]
|
|
||||||
port: u16,
|
|
||||||
|
|
||||||
/// Replication peer address
|
|
||||||
#[arg(long)]
|
|
||||||
replication_peer: Option<String>,
|
|
||||||
|
|
||||||
/// Config file path
|
|
||||||
#[arg(short, long, default_value = "futriix.config.toml")]
|
|
||||||
config: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let args = Args::parse();
|
// Чтение конфигурации
|
||||||
|
let config_content = fs::read_to_string("futriix.config.toml")?;
|
||||||
// Read config
|
let config: Value = toml::from_str(&config_content)?;
|
||||||
let config_content = fs::read_to_string(&args.config)?;
|
|
||||||
let mut config: Value = toml::from_str(&config_content)?;
|
|
||||||
|
|
||||||
// Override config with command line args
|
|
||||||
if let Some(peer) = args.replication_peer {
|
|
||||||
config["replication"]["enabled"] = Value::Boolean(true);
|
|
||||||
if let Some(peers) = config["replication"]["peer_nodes"].as_array_mut() {
|
|
||||||
peers.push(Value::String(peer));
|
|
||||||
} else {
|
|
||||||
config["replication"]["peer_nodes"] = Value::Array(vec![Value::String(peer)]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let ip = config["server"]["ip"].as_str().unwrap_or("127.0.0.1");
|
let ip = config["server"]["ip"].as_str().unwrap_or("127.0.0.1");
|
||||||
let port = args.port;
|
let port = config["server"]["port"].as_integer().unwrap_or(8080) as u16;
|
||||||
let log_path = config["server"]["log_path"].as_str().unwrap_or("futriix.log");
|
let log_path = config["server"]["log_path"].as_str().unwrap_or("futriix.log");
|
||||||
|
|
||||||
// Initialize logger
|
// Инициализация логгера
|
||||||
let log_file = fs::File::create(log_path)?;
|
let log_file = fs::File::create(log_path)?;
|
||||||
CombinedLogger::init(vec![
|
CombinedLogger::init(vec![
|
||||||
TermLogger::new(
|
TermLogger::new(
|
||||||
@ -60,7 +31,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
),
|
),
|
||||||
])?;
|
])?;
|
||||||
|
|
||||||
// Start server
|
// Запуск сервера
|
||||||
let server = FutriixServer::new(&config);
|
let server = FutriixServer::new(&config);
|
||||||
let addr = format!("{}:{}", ip, port);
|
let addr = format!("{}:{}", ip, port);
|
||||||
server.run(&addr).await?;
|
server.run(&addr).await?;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user