You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.2 KiB
Rust

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//! Flash Send 应用入口
//! 跨平台局域网文件传输与聊天应用
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use flash_send_lib::{
database::Database,
tls::CertificateManager,
utils::{AppConfig, configure_firewall},
AppState,
get_handlers,
};
use std::path::PathBuf;
use tauri::Manager;
fn main() {
// 初始化日志
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
.format_timestamp_millis()
.init();
log::info!("Starting Flash Send application");
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
.plugin(tauri_plugin_shell::init())
.setup(|app| {
let app_data_dir = app
.path()
.app_data_dir()
.unwrap_or_else(|_| PathBuf::from("."));
log::info!("App data directory: {:?}", app_data_dir);
// 初始化应用状态
AppState::init(app_data_dir.clone())
.expect("Failed to initialize app state");
// 初始化数据库
Database::init(app_data_dir.clone())
.expect("Failed to initialize database");
// 获取本机 IP 并初始化 TLS 证书
let config = AppConfig::get();
let ip_addresses = local_ip_address::local_ip()
.map(|ip| vec![ip.to_string()])
.unwrap_or_default();
CertificateManager::init(&app_data_dir, &config.device_id, ip_addresses)
.expect("Failed to initialize TLS certificate");
// 配置防火墙规则Windows
configure_firewall(
"Flash Send",
config.udp_port,
config.ws_port,
config.http_port,
);
log::info!("Application initialized successfully");
log::info!("Device ID: {}", config.device_id);
log::info!("Device Name: {}", config.device_name);
Ok(())
})
.invoke_handler(get_handlers())
.run(tauri::generate_context!())
.expect("Error while running Flash Send application");
}