/
vol4oks
/
LANIPTracker
Обзор
Документация
Войти
/
vol4oks
/
LANIPTracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.rs
91 строка
2 KB
Vol4ok
version = "0.1.1"
03 июл 2025, 21:16
03 июл 2025, 21:16
949338a
Код
Авторство
О чём код?
/* TODO: подумать о переходе на sqlite TODO: придумать как реализовать массовое редактирование ip TODO: добавить поиск TODO: добавить окно с первым запуском и создание базы данных TODO: добавить ping ip TODO: ограничить окличество ip на одну страницу (10) */ use std::sync::Arc; use tokio::sync::Mutex; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; mod subnet; use subnet::Subnet; mod handlers; mod static_serv; static SAFE_FILE: &str = "state"; #[tokio::main] async fn main() { tracing_subscriber::registry() .with( tracing_subscriber::EnvFilter::try_from_default_env() .unwrap_or_else(|_| format!("{}=debug", env!("CARGO_CRATE_NAME")).into()), ) .with(tracing_subscriber::fmt::layer()) .init(); let state = AppState::new(); let app = handlers::app(state).await; let listener = tokio::net::TcpListener::bind("127.0.0.1:3000") .await .unwrap(); tracing::debug!("listening on {}", listener.local_addr().unwrap()); axum::serve(listener, app).await.unwrap(); } #[derive(Clone, Debug)] enum Data { Data(Subnet), None, } #[derive(Clone, Debug)] struct AppState { configured: bool, data: Data, } impl AppState { fn new() -> Arc<Mutex<AppState>> { let mut configured = false; let data = match Subnet::read_from_file(SAFE_FILE) { Ok(f) => { configured = true; Data::Data(f) } Err(err) => { tracing::info!("Failed to read state.json: {}", err); Data::None } }; tracing::debug!("configured: {:?}", configured); Arc::new(Mutex::new(AppState { configured, data: data, })) } fn get_subnet(&mut self) -> Result<&mut Subnet, &'static str> { match &mut self.data { Data::Data(data) => { if !self.configured { tracing::debug!( "No subnet configured, please configure it in the settings page" ); return Err("No subnet configured"); } Ok(data) } Data::None => Err("No subnet configured"), } } }