Files
One-KVM/src/extensions/software_windows.rs
mofeng-git 3f970ee834 feat(extensions): 使用 EasyFrp 替换 gostc
将扩展配置、接口和设置页切换为 EasyFrp,支持按行填写多个客户端连接 URL,通过 easyfrpc control 启动并校验协议与密钥路径。

旧 gostc 配置不自动启用 EasyFrp,升级后需重新配置;启动日志不再输出命令参数,避免暴露连接信息。

完整 Docker 镜像包含 easyfrpc、easytier-core、easytier-cli 和 frpc,通过独立下载脚本及版本锁定文件校验下载摘要和二进制架构。
2026-10-18 18:09:59 +08:00

49 lines
1.2 KiB
Rust

use std::path::PathBuf;
use super::ExtensionId;
pub fn default_binary_path(id: ExtensionId) -> &'static str {
match id {
ExtensionId::Ttyd => "ttyd.win32.exe",
ExtensionId::Easyfrp => "easyfrpc.exe",
ExtensionId::Easytier => "easytier-core.exe",
ExtensionId::Frpc => "frpc.exe",
}
}
pub fn binary_path(id: ExtensionId) -> PathBuf {
if id == ExtensionId::Ttyd {
if let Some(path) = env_path("ONE_KVM_TTYD_PATH") {
return path;
}
}
find_in_app_dir(default_binary_path(id))
.unwrap_or_else(|| PathBuf::from(default_binary_path(id)))
}
pub fn default_ttyd_shell() -> &'static str {
"cmd"
}
fn env_path(name: &str) -> Option<PathBuf> {
std::env::var(name)
.ok()
.map(|path| path.trim().to_string())
.filter(|path| !path.is_empty())
.map(PathBuf::from)
}
fn find_in_app_dir(binary_name: &str) -> Option<PathBuf> {
if let Ok(exe_path) = std::env::current_exe() {
if let Some(exe_dir) = exe_path.parent() {
let bundled = exe_dir.join(binary_name);
if bundled.exists() {
return Some(bundled);
}
}
}
None
}