mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-11 17:29:44 +00:00
207 lines
9.6 KiB
Rust
207 lines
9.6 KiB
Rust
use commands::discovery::Peers;
|
|
use model::extension::Extension;
|
|
use models::FileTransferState;
|
|
use openssl::{
|
|
pkey::{Private, Public},
|
|
rsa::Rsa,
|
|
};
|
|
use tauri::{
|
|
plugin::{Builder, TauriPlugin},
|
|
Manager, Runtime,
|
|
};
|
|
pub mod commands;
|
|
pub mod constants;
|
|
pub mod model;
|
|
pub mod server;
|
|
pub mod setup;
|
|
pub mod syscmds;
|
|
pub mod utils;
|
|
pub use db;
|
|
use std::{collections::HashMap, sync::Mutex};
|
|
use utils::path::get_kunkun_db_path;
|
|
|
|
#[cfg(mobile)]
|
|
mod mobile;
|
|
|
|
// mod commands;
|
|
mod error;
|
|
mod models;
|
|
|
|
pub use error::{Error, Result};
|
|
|
|
#[cfg(mobile)]
|
|
use mobile::Jarvis;
|
|
|
|
pub struct JarvisState {
|
|
pub window_label_ext_map: Mutex<HashMap<String, Extension>>,
|
|
// the pair of RSA keys are newly generated everytime the app is started and store only in memory, used for encryption and signing
|
|
pub rsa_private_key: Rsa<Private>,
|
|
pub rsa_public_key: Rsa<Public>,
|
|
}
|
|
|
|
impl JarvisState {
|
|
pub fn new() -> Self {
|
|
let private_key =
|
|
crypto::RsaCrypto::generate_rsa().expect("Failed to generate RSA key pair");
|
|
let public_key: Rsa<Public> = crypto::RsaCrypto::private_key_to_public_key(&private_key);
|
|
Self {
|
|
window_label_ext_map: Mutex::new(HashMap::new()),
|
|
rsa_private_key: private_key,
|
|
rsa_public_key: public_key,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Initializes the plugin.
|
|
pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
|
Builder::new("jarvis")
|
|
.invoke_handler(tauri::generate_handler![
|
|
/* ------------------------------ dev commands ------------------------------ */
|
|
commands::dev::open_devtools,
|
|
commands::dev::close_devtools,
|
|
commands::dev::is_devtools_open,
|
|
commands::dev::toggle_devtools,
|
|
commands::dev::app_is_dev,
|
|
/* ------------------------------ path commands ----------------------------- */
|
|
commands::path::get_default_extensions_dir,
|
|
commands::path::get_default_extensions_storage_dir,
|
|
/* ----------------------------- system commands ---------------------------- */
|
|
commands::system::open_trash,
|
|
commands::system::empty_trash,
|
|
commands::system::shutdown,
|
|
commands::system::reboot,
|
|
commands::system::sleep,
|
|
commands::system::toggle_system_appearance,
|
|
commands::system::show_desktop,
|
|
commands::system::quit_all_apps,
|
|
commands::system::sleep_displays,
|
|
commands::system::set_volume,
|
|
commands::system::turn_volume_up,
|
|
commands::system::turn_volume_down,
|
|
commands::system::toggle_stage_manager,
|
|
commands::system::toggle_bluetooth,
|
|
commands::system::toggle_hidden_files,
|
|
commands::system::eject_all_disks,
|
|
commands::system::logout_user,
|
|
commands::system::toggle_mute,
|
|
commands::system::mute,
|
|
commands::system::unmute,
|
|
commands::system::hide_all_apps_except_frontmost,
|
|
commands::system::get_frontmost_app,
|
|
commands::system::get_selected_files_in_file_explorer,
|
|
commands::system::get_selected_text,
|
|
/* ------------------------------ applications ------------------------------ */
|
|
commands::apps::get_applications,
|
|
commands::apps::refresh_applications_list,
|
|
commands::apps::refresh_applications_list_in_bg,
|
|
/* ------------------------------- extensions ------------------------------- */
|
|
// commands::extension::load_manifest,
|
|
// commands::extension::load_all_extensions,
|
|
/* ---------------------------------- utils --------------------------------- */
|
|
commands::fs::path_exists,
|
|
/* -------------------------------- security -------------------------------- */
|
|
#[cfg(target_os = "macos")]
|
|
commands::security::verify_auth,
|
|
#[cfg(target_os = "macos")]
|
|
commands::security::request_screen_capture_access,
|
|
#[cfg(target_os = "macos")]
|
|
commands::security::check_screen_capture_access,
|
|
/* --------------------------------- server --------------------------------- */
|
|
commands::server::start_server,
|
|
commands::server::stop_server,
|
|
commands::server::restart_server,
|
|
commands::server::server_is_running,
|
|
commands::server::get_server_port,
|
|
/* ----------------------------------- fs ----------------------------------- */
|
|
commands::fs::decompress_tarball,
|
|
commands::fs::compress_tarball,
|
|
commands::fs::unzip,
|
|
/* ------------------------------- file search ------------------------------ */
|
|
commands::file_search::file_search,
|
|
/* ------------------------------- extensions ------------------------------- */
|
|
commands::extension::is_window_label_registered,
|
|
commands::extension::register_extension_window,
|
|
commands::extension::unregister_extension_window,
|
|
commands::extension::register_extension_spawned_process,
|
|
commands::extension::unregister_extension_spawned_process,
|
|
commands::extension::get_ext_label_map,
|
|
commands::extension::spawn_extension_file_server,
|
|
/* ---------------------- extension storage API wrapper --------------------- */
|
|
// commands::storage::ext_store_wrapper_set,
|
|
// commands::storage::ext_store_wrapper_get,
|
|
// commands::storage::ext_store_wrapper_has,
|
|
// commands::storage::ext_store_wrapper_delete,
|
|
// commands::storage::ext_store_wrapper_clear,
|
|
// commands::storage::ext_store_wrapper_reset,
|
|
// commands::storage::ext_store_wrapper_keys,
|
|
// commands::storage::ext_store_wrapper_values,
|
|
// commands::storage::ext_store_wrapper_entries,
|
|
// commands::storage::ext_store_wrapper_length,
|
|
// commands::storage::ext_store_wrapper_load,
|
|
// commands::storage::ext_store_wrapper_save,
|
|
/* -------------------------------- database -------------------------------- */
|
|
commands::db::create_extension,
|
|
commands::db::get_all_extensions,
|
|
commands::db::get_unique_extension_by_identifier,
|
|
commands::db::get_unique_extension_by_path,
|
|
commands::db::get_all_extensions_by_identifier,
|
|
commands::db::delete_extension_by_path,
|
|
commands::db::delete_extension_by_ext_id,
|
|
commands::db::create_command,
|
|
commands::db::get_command_by_id,
|
|
commands::db::get_commands_by_ext_id,
|
|
commands::db::delete_command_by_id,
|
|
commands::db::update_command_by_id,
|
|
commands::db::create_extension_data,
|
|
commands::db::get_extension_data_by_id,
|
|
commands::db::search_extension_data,
|
|
commands::db::delete_extension_data_by_id,
|
|
commands::db::update_extension_data_by_id,
|
|
/* -------------------------------- Clipboard ------------------------------- */
|
|
commands::clipboard::get_history,
|
|
commands::clipboard::add_to_history,
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Utils */
|
|
/* -------------------------------------------------------------------------- */
|
|
commands::utils::plist_to_json,
|
|
/* -------------------------------------------------------------------------- */
|
|
/* MDNS */
|
|
/* -------------------------------------------------------------------------- */
|
|
commands::discovery::get_peers,
|
|
/* -------------------------------------------------------------------------- */
|
|
/* File Transfer */
|
|
/* -------------------------------------------------------------------------- */
|
|
// commands::server::get_files_to_send,
|
|
commands::file_transfer::get_file_transfer_bucket_keys,
|
|
commands::file_transfer::get_file_transfer_bucket_by_key,
|
|
commands::file_transfer::local_net_send_file,
|
|
commands::file_transfer::download_files,
|
|
commands::file_transfer::file_transfer_preview_bucket,
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Window */
|
|
/* -------------------------------------------------------------------------- */
|
|
commands::window::set_transparent_titlebar,
|
|
])
|
|
.setup(move |app, api| {
|
|
utils::setup::setup_app_path(app);
|
|
utils::setup::setup_extension_storage(app);
|
|
|
|
// manage state so it is accessible by the commands
|
|
app.manage(JarvisState::new());
|
|
app.manage(FileTransferState::default());
|
|
app.manage(commands::apps::ApplicationsState::default());
|
|
println!("Jarvis Plugin Initialized");
|
|
app.manage(Peers::default());
|
|
|
|
// let jarvis_db = utils::db::get_db(db_path, db_key)?;
|
|
// let ext = jarvis_db
|
|
// .get_unique_extension_by_identifier(constants::KUNKUN_CLIPBOARD_EXT_IDENTIFIER)?;
|
|
// app.manage(model::clipboard_history::ClipboardHistory::new(
|
|
// jarvis_db,
|
|
// ext.unwrap().ext_id,
|
|
// ));
|
|
Ok(())
|
|
})
|
|
.build()
|
|
}
|