refactor: support proxy option

This commit is contained in:
jeasonnow
2024-07-30 16:54:36 +08:00
parent a631e117ca
commit 5752996f89
7 changed files with 17 additions and 3 deletions

1
bin/cli.ts vendored
View File

@@ -33,6 +33,7 @@ program
.option('--multi-arch', 'Only for Mac, supports both Intel and M1', DEFAULT.multiArch) .option('--multi-arch', 'Only for Mac, supports both Intel and M1', DEFAULT.multiArch)
.option('--inject [injects...]', 'Injection of .js or .css Files', DEFAULT.inject) .option('--inject [injects...]', 'Injection of .js or .css Files', DEFAULT.inject)
.option('--debug', 'Debug build and more output', DEFAULT.debug) .option('--debug', 'Debug build and more output', DEFAULT.debug)
.option('--proxy-url', "Proxy URL", DEFAULT.proxyUrl)
.addOption(new Option('--user-agent <string>', 'Custom user agent').default(DEFAULT.userAgent).hideHelp()) .addOption(new Option('--user-agent <string>', 'Custom user agent').default(DEFAULT.userAgent).hideHelp())
.addOption( .addOption(
new Option('--targets <string>', 'Only for Linux, option "deb" or "appimage"').default(DEFAULT.targets).hideHelp(), new Option('--targets <string>', 'Only for Linux, option "deb" or "appimage"').default(DEFAULT.targets).hideHelp(),

1
bin/defaults.ts vendored
View File

@@ -16,6 +16,7 @@ export const DEFAULT_PAKE_OPTIONS: PakeCliOptions = {
targets: 'deb', targets: 'deb',
useLocalFile: false, useLocalFile: false,
systemTrayIcon: '', systemTrayIcon: '',
proxyUrl: "",
debug: false, debug: false,
inject: [], inject: [],
safeDomain: [], safeDomain: [],

View File

@@ -24,6 +24,7 @@ export async function mergeConfig(url: string, options: PakeAppOptions, tauriCon
name, name,
resizable = true, resizable = true,
inject, inject,
proxyUrl,
} = options; } = options;
const { platform } = process; const { platform } = process;
@@ -189,6 +190,8 @@ export async function mergeConfig(url: string, options: PakeAppOptions, tauriCon
await fsExtra.writeFile(injectFilePath, ''); await fsExtra.writeFile(injectFilePath, '');
} }
tauriConf.pake.proxy_url = proxyUrl || "";
// Save config file. // Save config file.
const platformConfigPaths: PlatformMap = { const platformConfigPaths: PlatformMap = {
win32: 'tauri.windows.conf.json', win32: 'tauri.windows.conf.json',

3
bin/types.ts vendored
View File

@@ -59,6 +59,9 @@ export interface PakeCliOptions {
/* the domain that can use ipc or tauri javascript sdk */ /* the domain that can use ipc or tauri javascript sdk */
safeDomain: string[]; safeDomain: string[];
// Proxy
proxyUrl: string;
} }
export interface PakeAppOptions extends PakeCliOptions { export interface PakeAppOptions extends PakeCliOptions {

View File

@@ -21,7 +21,7 @@ tauri-build = { version = "2.0.0-beta", features = [] }
[dependencies] [dependencies]
serde_json = "1.0.116" serde_json = "1.0.116"
serde = { version = "1.0.200", features = ["derive"] } serde = { version = "1.0.200", features = ["derive"] }
tauri = { version = "2.0.0-beta.25", features = ["tray-icon", "image-ico", "image-png"] } tauri = { version = "2.0.0-beta.25", features = ["tray-icon", "image-ico", "image-png", "macos-proxy"] }
tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }
tauri-plugin-oauth = { git = "https://github.com/FabianLars/tauri-plugin-oauth", branch = "v2" } tauri-plugin-oauth = { git = "https://github.com/FabianLars/tauri-plugin-oauth", branch = "v2" }
tauri-plugin-clipboard-manager = "2.1.0-beta.6" tauri-plugin-clipboard-manager = "2.1.0-beta.6"

View File

@@ -52,6 +52,7 @@ pub struct PakeConfig {
pub user_agent: UserAgent, pub user_agent: UserAgent,
pub system_tray: FunctionON, pub system_tray: FunctionON,
pub system_tray_path: String, pub system_tray_path: String,
pub proxy_url: String
} }
impl PakeConfig { impl PakeConfig {

View File

@@ -1,6 +1,6 @@
use crate::app::config::PakeConfig; use crate::app::config::PakeConfig;
use std::path::PathBuf; use std::{path::PathBuf, str::FromStr};
use tauri::{App, WebviewUrl, WebviewWindow, WebviewWindowBuilder}; use tauri::{App, Url, WebviewUrl, WebviewWindow, WebviewWindowBuilder};
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
use tauri::TitleBarStyle; use tauri::TitleBarStyle;
@@ -40,6 +40,11 @@ pub fn get_window(app: &mut App, config: &PakeConfig, _data_dir: PathBuf) -> Web
//This is necessary to allow for file injection by external developers for customization purposes. //This is necessary to allow for file injection by external developers for customization purposes.
.initialization_script(include_str!("../inject/custom.js")); .initialization_script(include_str!("../inject/custom.js"));
if config.proxy_url != "" {
println!("{}", &config.proxy_url);
window_builder = window_builder.proxy_url(Url::from_str(&config.proxy_url.as_str()).unwrap());
}
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
{ {
let title_bar_style = if window_config.hide_title_bar { let title_bar_style = if window_config.hide_title_bar {