下载模块 Init

This commit is contained in:
zhongluofeng
2026-07-20 18:28:34 +08:00
parent e84958e0fc
commit 548b022426
37 changed files with 4795 additions and 65 deletions
File diff suppressed because it is too large Load Diff
+54 -3
View File
@@ -1,9 +1,18 @@
use tauri::Manager;
mod aria2_manager;
mod logger;
mod mihomo_manager;
mod process_manager;
use aria2_manager::{
Aria2Manager, downloader_add_uri, downloader_change_global_option, downloader_check_kernel_update,
downloader_get_active, downloader_get_global_stat, downloader_get_rpc_info, downloader_get_settings,
downloader_get_status, downloader_get_stopped, downloader_get_waiting, downloader_install_kernel,
downloader_kernel_info, downloader_open_dir, downloader_open_url, downloader_pause, downloader_remove, downloader_restart, downloader_save_settings,
downloader_start, downloader_status, downloader_stop, downloader_unpause, downloader_update_kernel,
downloader_version,
};
use logger::{
clear_logs, get_log_info, get_logs, log_message, LogManager,
};
@@ -28,9 +37,12 @@ fn greet(name: &str) -> String {
fn quit_app(
state: tauri::State<'_, ProcessManager>,
mihomo: tauri::State<'_, MihomoManager>,
aria2: tauri::State<'_, Aria2Manager>,
) {
// 退出前清理系统代理,避免遗留导致网络问题
mihomo.cleanup_on_exit();
// 退出前让 aria2 优雅关闭(保存 session
aria2.cleanup_on_exit();
// 停止所有子进程
state.stop_all();
std::process::exit(0);
@@ -41,6 +53,7 @@ pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_autostart::Builder::new().build())
.plugin(tauri_plugin_opener::init())
.plugin(tauri_plugin_dialog::init())
.manage(ProcessManager::new())
.invoke_handler(tauri::generate_handler![
greet,
@@ -77,7 +90,31 @@ pub fn run() {
proxy_activate_profile,
proxy_set_system_proxy,
proxy_clear_system_proxy,
proxy_get_system_proxy
proxy_get_system_proxy,
downloader_get_settings,
downloader_save_settings,
downloader_kernel_info,
downloader_check_kernel_update,
downloader_update_kernel,
downloader_install_kernel,
downloader_status,
downloader_start,
downloader_stop,
downloader_restart,
downloader_version,
downloader_get_global_stat,
downloader_get_active,
downloader_get_waiting,
downloader_get_stopped,
downloader_get_status,
downloader_add_uri,
downloader_pause,
downloader_unpause,
downloader_remove,
downloader_change_global_option,
downloader_get_rpc_info,
downloader_open_dir,
downloader_open_url
])
.setup(|app| {
// 初始化日志系统,日志目录: {app_data_dir}/logs/
@@ -93,9 +130,13 @@ pub fn run() {
.path()
.app_data_dir()
.unwrap_or_else(|_| std::path::PathBuf::from("."));
let mihomo = MihomoManager::new(app_data_dir);
let mihomo = MihomoManager::new(app_data_dir.clone());
app.manage(mihomo);
// 初始化 Aria2Manager,数据目录: {app_data_dir}/downloader/
let aria2 = Aria2Manager::new(app_data_dir);
app.manage(aria2);
let open = tauri::menu::MenuItem::with_id(app, "open", "设置", true, None::<&str>)?;
let quit = tauri::menu::MenuItem::with_id(app, "quit", "退出", true, None::<&str>)?;
let menu = tauri::menu::Menu::with_items(app, &[&open, &quit])?;
@@ -112,10 +153,13 @@ pub fn run() {
}
}
"quit" => {
// 退出前清理系统代理 + 停止所有子进程
// 退出前清理系统代理 + 优雅关闭 aria2 + 停止所有子进程
if let Some(mihomo) = app.try_state::<MihomoManager>() {
mihomo.cleanup_on_exit();
}
if let Some(aria2) = app.try_state::<Aria2Manager>() {
aria2.cleanup_on_exit();
}
if let Some(pm) = app.try_state::<ProcessManager>() {
pm.stop_all();
}
@@ -148,6 +192,13 @@ pub fn run() {
}
}
// 应用启动时自动启动 aria2(如果用户在设置中开启了自动启动)
if let Some(aria2) = app.try_state::<Aria2Manager>() {
if let Some(pm) = app.try_state::<ProcessManager>() {
aria2.auto_start_on_launch(app.handle(), &pm);
}
}
Ok(())
})
.on_window_event(|window, event| {