use base64::prelude::*; const COMMANDS: &[&str] = &[ "open_devtools", "close_devtools", "is_devtools_open", "toggle_devtools", "app_is_dev", "open_trash", "empty_trash", "shutdown", "reboot", "sleep", "toggle_system_appearance", "show_desktop", "quit_all_apps", "sleep_displays", "set_volume", "turn_volume_up", "turn_volume_down", "toggle_stage_manager", "toggle_bluetooth", "toggle_hidden_files", "eject_all_disks", "logout_user", "toggle_mute", "mute", "unmute", "hide_all_apps_except_frontmost", "get_selected_files_in_file_explorer", "run_apple_script", "run_powershell", "get_applications", "refresh_applications_list", "refresh_applications_list_in_bg", // "load_manifest", // "load_all_extensions", "path_exists", "start_server", "stop_server", "restart_server", "set_dev_extension_folder", "set_extension_folder", "get_extension_folder", "get_dev_extension_folder", "server_is_running", /* -------------------------------------------------------------------------- */ /* FS */ /* -------------------------------------------------------------------------- */ "decompress_tarball", "compress_tarball", "unzip", "copy_dir_all", /* -------------------------------------------------------------------------- */ /* File Search */ /* -------------------------------------------------------------------------- */ "file_search", /* -------------------------------------------------------------------------- */ /* Path */ /* -------------------------------------------------------------------------- */ "get_default_extensions_dir", "get_default_extensions_storage_dir", "is_window_label_registered", "register_extension_window", "register_extension_spawned_process", "unregister_extension_spawned_process", "unregister_extension_window", "spawn_extension_file_server", "get_ext_label_map", // "ext_store_wrapper_set", // "ext_store_wrapper_get", // "ext_store_wrapper_has", // "ext_store_wrapper_delete", // "ext_store_wrapper_clear", // "ext_store_wrapper_reset", // "ext_store_wrapper_keys", // "ext_store_wrapper_values", // "ext_store_wrapper_entries", // "ext_store_wrapper_length", // "ext_store_wrapper_load", // "ext_store_wrapper_save", "get_server_port", /* ----------------------------- sqlite database ---------------------------- */ // "create_extension", // "get_all_extensions", // "get_unique_extension_by_identifier", // "get_unique_extension_by_path", // "get_all_extensions_by_identifier", // "delete_extension_by_path", // "delete_extension_by_ext_id", // "create_command", // "get_command_by_id", // "get_commands_by_ext_id", // "delete_command_by_id", // "update_command_by_id", // "create_extension_data", // "get_extension_data_by_id", // "search_extension_data", // "delete_extension_data_by_id", // "update_extension_data_by_id", "select", "execute", /* -------------------------------- Clipboard ------------------------------- */ "add_to_history", "get_history", /* -------------------------------------------------------------------------- */ /* Utils */ /* -------------------------------------------------------------------------- */ "plist_to_json", /* -------------------------------------------------------------------------- */ /* Security */ /* -------------------------------------------------------------------------- */ "verify_auth", "request_screen_capture_access", "check_screen_capture_access", /* -------------------------------------------------------------------------- */ /* MDNS */ /* -------------------------------------------------------------------------- */ "get_peers", /* -------------------------------------------------------------------------- */ /* File Transfer */ /* -------------------------------------------------------------------------- */ "get_file_transfer_bucket_keys", "get_file_transfer_bucket_by_key", "local_net_send_file", "download_files", "file_transfer_preview_bucket", /* -------------------------------------------------------------------------- */ /* Window */ /* -------------------------------------------------------------------------- */ "set_transparent_titlebar", ]; fn main() { // SSL Cert let cert_pem = match std::env::var("CERT_PEM") { Ok(cert) => cert.into_bytes(), Err(_) => include_bytes!("./self_signed_certs/cert.pem").to_vec(), }; let key_pem = match std::env::var("KEY_PEM") { Ok(key) => key.into_bytes(), Err(_) => include_bytes!("./self_signed_certs/key.pem").to_vec(), }; println!( "cargo:rustc-env=BASE64_CERT_PEM={}", BASE64_STANDARD.encode(cert_pem) ); println!( "cargo:rustc-env=BASE64_KEY_PEM={}", BASE64_STANDARD.encode(key_pem) ); // GRPC let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap()); tonic_build::configure() .file_descriptor_set_path(out_dir.join("kk_grpc.bin")) .compile( &[ "../../grpc/protos/file-transfer.proto", "../../grpc/protos/kunkun.proto", ], &["../../grpc/protos"], ) .expect("Failed to compile protos"); // Server Public Key let raw_server_public_key = include_bytes!("./keys/server_public_key.pem").to_vec(); println!( "cargo:rustc-env=BASE64_SERVER_PUBLIC_KEY={}", BASE64_STANDARD.encode(raw_server_public_key) ); println!( "cargo:rustc-env=KUNKUN_PUBLISH={}", std::env::var("KUNKUN_PUBLISH").unwrap_or("false".to_string()) ); tauri_plugin::Builder::new(COMMANDS) .android_path("android") .ios_path("ios") .build(); }