From 9d976707ac5ef3d7457f8acf172e75f0c3a77b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E5=85=88=E6=A3=AE?= Date: Fri, 3 Jan 2025 16:55:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E5=B7=A5=E5=85=B7=20?= =?UTF-8?q?=E5=86=85=20=E6=96=B0=E5=A2=9EforceBindIP=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/main.css | 4 + package.json | 3 + pages/index.vue | 1 + pages/tool.vue | 168 ++++++++++++++++- pnpm-lock.yaml | 11 ++ src-tauri/Cargo.lock | 159 +++++++++++++++- src-tauri/Cargo.toml | 3 +- src-tauri/capabilities/default.json | 212 +++++++++++----------- src-tauri/easytier/tool/BindIP.dll | Bin 0 -> 17448 bytes src-tauri/easytier/tool/BindIP64.dll | Bin 0 -> 22504 bytes src-tauri/easytier/tool/ForceBindIP.exe | Bin 0 -> 20008 bytes src-tauri/easytier/tool/ForceBindIP64.exe | Bin 0 -> 23080 bytes src-tauri/src/lib.rs | 60 +++++- src-tauri/tauri.conf.json | 4 + stores/index.ts | 13 +- 15 files changed, 521 insertions(+), 117 deletions(-) create mode 100644 src-tauri/easytier/tool/BindIP.dll create mode 100644 src-tauri/easytier/tool/BindIP64.dll create mode 100644 src-tauri/easytier/tool/ForceBindIP.exe create mode 100644 src-tauri/easytier/tool/ForceBindIP64.exe diff --git a/assets/css/main.css b/assets/css/main.css index 213669e..1078c32 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -52,4 +52,8 @@ html.dark body { .el-table { font-size: 12px!important; +} + +.el-select-dropdown__wrap { + max-height: 150px!important; } \ No newline at end of file diff --git a/package.json b/package.json index 79aca5d..c2e7166 100644 --- a/package.json +++ b/package.json @@ -36,5 +36,8 @@ "prettier": "^3.4.1", "prettier-plugin-tailwindcss": "^0.6.9", "vue-clipboard3": "^2.0.0" + }, + "dependencies": { + "@tauri-apps/plugin-dialog": "~2" } } diff --git a/pages/index.vue b/pages/index.vue index 871a9ed..ef75603 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1049,6 +1049,7 @@ mountedShow(); // 不需要await closePrevent(); data.hasNewVersion = await checkNewVersion(); + }); onBeforeUnmount(() => { diff --git a/pages/tool.vue b/pages/tool.vue index a019c20..140211d 100644 --- a/pages/tool.vue +++ b/pages/tool.vue @@ -8,7 +8,7 @@
@@ -23,7 +23,7 @@
- + 方案2
-
+
+
+ + ForceBindIP + +
+
+ + + + + + + +
+
+ + + + 刷新 +
+
+ +
+ + 浏览 + + + 启动 + +
+
+
+
+ +
+
+ + + 方案3 + + + +
+
-
+
@@ -176,6 +263,7 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f2e7f2..992f997 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,10 @@ settings: importers: .: + dependencies: + '@tauri-apps/plugin-dialog': + specifier: ~2 + version: 2.2.0 devDependencies: '@element-plus/icons-vue': specifier: ^2.3.1 @@ -1075,6 +1079,9 @@ packages: '@tauri-apps/plugin-clipboard-manager@2.0.0': resolution: {integrity: sha512-V1sXmbjnwfXt/r48RJMwfUmDMSaP/8/YbH4CLNxt+/sf1eHlIP8PRFdFDQwLN0cNQKu2rqQVbG/Wc/Ps6cDUhw==} + '@tauri-apps/plugin-dialog@2.2.0': + resolution: {integrity: sha512-6bLkYK68zyK31418AK5fNccCdVuRnNpbxquCl8IqgFByOgWFivbiIlvb79wpSXi0O+8k8RCSsIpOquebusRVSg==} + '@tauri-apps/plugin-fs@2.2.0': resolution: {integrity: sha512-+08mApuONKI8/sCNEZ6AR8vf5vI9DXD4YfrQ9NQmhRxYKMLVhRW164vdW5BSLmMpuevftpQ2FVoL9EFkfG9Z+g==} @@ -4985,6 +4992,10 @@ snapshots: dependencies: '@tauri-apps/api': 2.1.1 + '@tauri-apps/plugin-dialog@2.2.0': + dependencies: + '@tauri-apps/api': 2.1.1 + '@tauri-apps/plugin-fs@2.2.0': dependencies: '@tauri-apps/api': 2.1.1 diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 95ed117..b256fb5 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -183,6 +183,27 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "ashpd" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d43c03d9e36dd40cab48435be0b09646da362c278223ca535493877b2c1dee9" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.8.5", + "raw-window-handle", + "serde", + "serde_repr", + "tokio", + "url", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "zbus", +] + [[package]] name = "async-broadcast" version = "0.7.1" @@ -1166,6 +1187,15 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + [[package]] name = "dlopen2" version = "0.7.0" @@ -1189,6 +1219,12 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "dpi" version = "0.1.1" @@ -1240,6 +1276,7 @@ dependencies = [ "tauri-build", "tauri-plugin-cli", "tauri-plugin-clipboard-manager", + "tauri-plugin-dialog", "tauri-plugin-fs", "tauri-plugin-log", "tauri-plugin-shell", @@ -2788,6 +2825,7 @@ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.6.0", "block2", + "dispatch", "libc", "objc2", ] @@ -3248,7 +3286,7 @@ checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", "indexmap 2.6.0", - "quick-xml", + "quick-xml 0.32.0", "serde", "time", ] @@ -3390,6 +3428,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "quick-xml" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.37" @@ -3615,6 +3662,29 @@ dependencies = [ "windows-registry", ] +[[package]] +name = "rfd" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8af382a047821a08aa6bfc09ab0d80ff48d45d8726f7cd8e44891f7cb4a4278e" +dependencies = [ + "ashpd", + "block2", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.48.0", +] + [[package]] name = "ring" version = "0.17.8" @@ -3793,6 +3863,12 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -4524,6 +4600,24 @@ dependencies = [ "thiserror 1.0.64", ] +[[package]] +name = "tauri-plugin-dialog" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b59fd750551b1066744ab956a1cd6b1ea3e1b3763b0b9153ac27a044d596426" +dependencies = [ + "log", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.3", + "url", +] + [[package]] name = "tauri-plugin-fs" version = "2.2.0" @@ -4854,6 +4948,7 @@ dependencies = [ "pin-project-lite", "signal-hook-registry", "socket2", + "tracing", "windows-sys 0.52.0", ] @@ -5324,6 +5419,66 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wayland-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" +dependencies = [ + "bitflags 2.6.0", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" +dependencies = [ + "proc-macro2", + "quick-xml 0.36.2", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.70" @@ -5994,6 +6149,7 @@ dependencies = [ "serde_repr", "sha1", "static_assertions", + "tokio", "tracing", "uds_windows", "windows-sys 0.52.0", @@ -6150,6 +6306,7 @@ dependencies = [ "enumflags2", "serde", "static_assertions", + "url", "zvariant_derive", ] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index bbc17f6..806e9eb 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -42,13 +42,14 @@ tauri-plugin-fs = "2.2.0" tauri-plugin-clipboard-manager = "2.0.2" rand = "0.8.5" tokio = { version = "1.41.1", features = ["process"] } +tauri-plugin-dialog = "2" # prost = "0.13" # prost-types = "0.13" [dependencies.windows] version = "0.58.0" -features = ["Win32_System_TaskScheduler", "Win32_System_Power"] +features = ["Win32_System_TaskScheduler", "Win32_System_Power", "Win32_NetworkManagement_IpHelper", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock"] [target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies] tauri-plugin-cli = "2.2.0" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index f40c43e..3ae5ed3 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -1,104 +1,110 @@ { - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "enables the default permissions", - "windows": [ - "main", - "log", - "member", - "cidr", - "advance", - "tool", - "server" - ], - "permissions": [ - "core:default", - "core:window:allow-minimize", - "core:window:allow-unminimize", - "core:window:allow-hide", - "core:window:allow-close", - "core:window:allow-set-focus", - "core:window:allow-is-visible", - "shell:allow-open", - "core:window:allow-show", - "core:window:allow-create", - "core:window:allow-set-position", - "core:window:allow-destroy", - "core:webview:allow-create-webview-window", - "core:webview:allow-set-webview-size", - "core:webview:allow-set-webview-position", - "core:webview:allow-create-webview", - "core:webview:allow-webview-show", - "core:webview:allow-webview-hide", - "core:webview:allow-webview-close", - "core:tray:allow-get-by-id", - "core:tray:allow-set-icon", - "core:tray:allow-new", - { - "identifier": "shell:allow-spawn", - "allow": [ - { - "args": [ - "run" - ], - "cmd": "$RESOURCE/easytier/tool/WinIPBroadcast", - "name": "WinIPBroadcast" - } - ] - }, - { - "identifier": "shell:allow-execute", - "allow": [ - { - "args": [ - "run" - ], - "cmd": "$RESOURCE/easytier/tool/WinIPBroadcast", - "name": "WinIPBroadcast" - }, - { - "args": true, - "cmd": "$RESOURCE/easytier/tool/nssm", - "name": "nssm" - }, - { - "args": true, - "cmd": "explorer", - "name": "explorer" - }, - { - "args": true, - "cmd": "netsh", - "name": "netsh" - }, - { - "args": true, - "cmd": "ping", - "name": "ping" - } - ] - }, - "fs:default", - "fs:allow-read-dir", - "fs:allow-exists", - "fs:allow-open", - "fs:allow-resource-read", - "fs:allow-resource-read-recursive", - "fs:allow-resource-write", - "fs:allow-resource-write-recursive", - "clipboard-manager:allow-clear", - "clipboard-manager:allow-read-text", - "clipboard-manager:allow-write-text", - - "window-state:default", - "window-state:allow-save-window-state", - "window-state:allow-restore-state", - - - "cli:default", - "cli:allow-cli-matches", - - "log:default", - "log:allow-log" - ] -} \ No newline at end of file + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "enables the default permissions", + "windows": ["main", "log", "member", "cidr", "advance", "tool", "server"], + "permissions": [ + "core:default", + "core:window:allow-minimize", + "core:window:allow-unminimize", + "core:window:allow-hide", + "core:window:allow-close", + "core:window:allow-set-focus", + "core:window:allow-is-visible", + "shell:allow-open", + "core:window:allow-show", + "core:window:allow-create", + "core:window:allow-set-position", + "core:window:allow-destroy", + "core:webview:allow-create-webview-window", + "core:webview:allow-set-webview-size", + "core:webview:allow-set-webview-position", + "core:webview:allow-create-webview", + "core:webview:allow-webview-show", + "core:webview:allow-webview-hide", + "core:webview:allow-webview-close", + "core:tray:allow-get-by-id", + "core:tray:allow-set-icon", + "core:tray:allow-new", + { + "identifier": "shell:allow-spawn", + "allow": [ + { + "args": ["run"], + "cmd": "$RESOURCE/easytier/tool/WinIPBroadcast", + "name": "WinIPBroadcast" + }, + { + "args": true, + "cmd": "$RESOURCE/easytier/tool/ForceBindIP", + "name": "ForceBindIP" + }, + { + "args": true, + "cmd": "$RESOURCE/easytier/tool/ForceBindIP64", + "name": "ForceBindIP64" + } + ] + }, + { + "identifier": "shell:allow-execute", + "allow": [ + { + "args": ["run"], + "cmd": "$RESOURCE/easytier/tool/WinIPBroadcast", + "name": "WinIPBroadcast" + }, + { + "args": true, + "cmd": "$RESOURCE/easytier/tool/ForceBindIP", + "name": "ForceBindIP" + }, + { + "args": true, + "cmd": "$RESOURCE/easytier/tool/ForceBindIP64", + "name": "ForceBindIP64" + }, + { + "args": true, + "cmd": "$RESOURCE/easytier/tool/nssm", + "name": "nssm" + }, + { + "args": true, + "cmd": "explorer", + "name": "explorer" + }, + { + "args": true, + "cmd": "netsh", + "name": "netsh" + }, + { + "args": true, + "cmd": "ping", + "name": "ping" + } + ] + }, + "fs:default", + "fs:allow-read-dir", + "fs:allow-exists", + "fs:allow-open", + "fs:allow-resource-read", + "fs:allow-resource-read-recursive", + "fs:allow-resource-write", + "fs:allow-resource-write-recursive", + "clipboard-manager:allow-clear", + "clipboard-manager:allow-read-text", + "clipboard-manager:allow-write-text", + "window-state:default", + "window-state:allow-save-window-state", + "window-state:allow-restore-state", + "cli:default", + "cli:allow-cli-matches", + "log:default", + "log:allow-log", + "dialog:default", + "dialog:allow-open" + ] +} diff --git a/src-tauri/easytier/tool/BindIP.dll b/src-tauri/easytier/tool/BindIP.dll new file mode 100644 index 0000000000000000000000000000000000000000..5755eb2013de4105838805bb463d06f996a07b3a GIT binary patch literal 17448 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 G6aNQjrV+6K literal 0 HcmV?d00001 diff --git a/src-tauri/easytier/tool/BindIP64.dll b/src-tauri/easytier/tool/BindIP64.dll new file mode 100644 index 0000000000000000000000000000000000000000..3469610fe04eab3d8ba7cf7b0a6e6839f4991f19 GIT binary patch literal 22504 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 literal 0 HcmV?d00001 diff --git a/src-tauri/easytier/tool/ForceBindIP.exe b/src-tauri/easytier/tool/ForceBindIP.exe new file mode 100644 index 0000000000000000000000000000000000000000..14433c57416a053aebbee1e6b69f82bfa89d9ced GIT binary patch literal 20008 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 U_wQRh$0YcTI&-=D8oq%3Uvz^VWB>pF literal 0 HcmV?d00001 diff --git a/src-tauri/easytier/tool/ForceBindIP64.exe b/src-tauri/easytier/tool/ForceBindIP64.exe new file mode 100644 index 0000000000000000000000000000000000000000..66f52c960844806471181e6c372d235457e64c18 GIT binary patch literal 23080 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 iVZ`72`xF&2ZLSOmuDVuqCacq;H}lWD Vec<[String; 2]> { + let mut guids: Vec<[String; 2]> = Vec::new(); + unsafe { + let mut buffer_length: u32 = 0; + let mut result = GetAdaptersAddresses( + AF_UNSPEC.0.into(), + GAA_FLAG_INCLUDE_PREFIX, + Some(ptr::null_mut()), + Some(ptr::null_mut()), + &mut buffer_length, + ); + + if result != 0 { + let mut buffer: Vec = vec![0; buffer_length as usize]; + let adapter_addresses: *mut IP_ADAPTER_ADDRESSES_LH = buffer.as_mut_ptr() as *mut _; + + result = GetAdaptersAddresses( + AF_UNSPEC.0.into(), + GAA_FLAG_INCLUDE_PREFIX, + Some(ptr::null_mut()), + Some(adapter_addresses), + &mut buffer_length, + ); + + if result == 0 { + let mut current_address = adapter_addresses; + + while !current_address.is_null() { + let adapter = &*current_address; + + let guid = adapter.AdapterName.to_string().unwrap(); + let desc = adapter.Description.to_string().unwrap(); + guids.push([guid, desc]); + + current_address = adapter.Next; + } + } else { + log::error!("GetAdaptersAddresses failed with error"); + } + } else { + log::error!("GetAdaptersAddresses failed to retrieve buffer length with error"); + } + } + + return guids; +} fn generate_random_user_agent() -> String { let user_agents = vec![ @@ -664,6 +718,7 @@ pub fn run() { let context = tauri::generate_context!(); tauri::Builder::default() + .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_cli::init()) .plugin( tauri_plugin_window_state::Builder::new() @@ -740,7 +795,8 @@ pub fn run() { spawn_autostart, autostart_is_enabled, prevent_sleep, - allow_sleep + allow_sleep, + get_network_adapter_guids ]) .run(context) .expect("error while running tauri application"); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index e89c3d6..6790746 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -53,6 +53,10 @@ "easytier/icons/", "easytier/config_template.json", "easytier/tool/WinIPBroadcast.exe", + "easytier/tool/ForceBindIP.exe", + "easytier/tool/ForceBindIP64.exe", + "easytier/tool/BindIP.dll", + "easytier/tool/BindIP64.dll", "easytier/tool/MicrosoftEdgeWebview2Setup.exe", "easytier/easytier-cli.exe", "easytier/easytier-core.exe", diff --git a/stores/index.ts b/stores/index.ts index 468d8d1..b45d0e6 100644 --- a/stores/index.ts +++ b/stores/index.ts @@ -57,6 +57,12 @@ const store = defineStore("main", { createConfigInEasytier: false, //在easytier目录生成config.json文件吗 githubFastUrl: "https://ghproxy.cc/", + // forceBindIp配置 + forceBindIpBit: "64", + delayInjectDll: false, + forceBindInput: "", + forceBindFile: "", + winipBcPid: 0, winipBcStart: false }; @@ -117,7 +123,12 @@ const store = defineStore("main", { "configPath", "winIpBcAutoStart", "createConfigInEasytier", - "githubFastUrl" + "githubFastUrl", + + "forceBindIpBit", + "delayInjectDll", + "forceBindInput", + "forceBindFile" ] // // 除了这些,其他都要存下来 // omit: ["winipBcPid", "winipBcStart"]