mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-09-13 02:54:26 +08:00
feat: 为 EasyTier 添加完整 TOML 配置支持
- 新增快速配置与完整配置模式,兼容旧版配置 - 统一扩展配置校验及受保护临时文件生命周期 - 支持通过 easytier-core -c 加载 TOML 配置 - 复用前端配置模式编辑组件并更新中英文文案与类型 - 补充配置校验、启动参数、文件权限及清理测试
This commit is contained in:
@@ -103,11 +103,25 @@ impl Default for GostcConfig {
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum EasytierConfigMode {
|
||||
Quick,
|
||||
Full,
|
||||
}
|
||||
|
||||
impl Default for EasytierConfigMode {
|
||||
fn default() -> Self {
|
||||
Self::Quick
|
||||
}
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||
#[serde(default)]
|
||||
#[derive(Default)]
|
||||
pub struct EasytierConfig {
|
||||
pub enabled: bool,
|
||||
pub config_mode: EasytierConfigMode,
|
||||
pub network_name: String,
|
||||
#[serde(skip_serializing_if = "String::is_empty")]
|
||||
pub network_secret: String,
|
||||
@@ -115,6 +129,8 @@ pub struct EasytierConfig {
|
||||
pub peer_urls: Vec<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub virtual_ip: Option<String>,
|
||||
#[serde(skip_serializing_if = "String::is_empty")]
|
||||
pub custom_toml: String,
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
@@ -260,3 +276,26 @@ pub struct ExtensionLogs {
|
||||
pub id: ExtensionId,
|
||||
pub logs: Vec<String>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{EasytierConfig, EasytierConfigMode};
|
||||
|
||||
#[test]
|
||||
fn legacy_easytier_config_defaults_to_quick_mode() {
|
||||
let config: EasytierConfig = serde_json::from_str(
|
||||
r#"{
|
||||
"enabled": true,
|
||||
"network_name": "legacy-network",
|
||||
"network_secret": "secret",
|
||||
"peer_urls": ["tcp://example.com:11010"],
|
||||
"virtual_ip": "10.10.10.2/24"
|
||||
}"#,
|
||||
)
|
||||
.expect("legacy EasyTier config should deserialize");
|
||||
|
||||
assert_eq!(config.config_mode, EasytierConfigMode::Quick);
|
||||
assert!(config.custom_toml.is_empty());
|
||||
assert_eq!(config.network_name, "legacy-network");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user