introduce gui based on tauri (#52)

This commit is contained in:
Sijie.Sun
2024-04-14 23:29:34 +08:00
committed by GitHub
parent 50e14798d6
commit 0ddcda1b31
42 changed files with 9824 additions and 1336 deletions

View File

@@ -9,6 +9,7 @@ use serde::{Deserialize, Serialize};
#[auto_impl::auto_impl(Box, &)]
pub trait ConfigLoader: Send + Sync {
fn get_id(&self) -> uuid::Uuid;
fn set_id(&self, id: uuid::Uuid);
fn get_inst_name(&self) -> String;
fn set_inst_name(&self, name: String);
@@ -111,7 +112,7 @@ pub struct Flags {
struct Config {
netns: Option<String>,
instance_name: Option<String>,
instance_id: Option<String>,
instance_id: Option<uuid::Uuid>,
ipv4: Option<String>,
network_identity: Option<NetworkIdentity>,
listeners: Option<Vec<url::Url>>,
@@ -246,21 +247,17 @@ impl ConfigLoader for TomlConfigLoader {
let mut locked_config = self.config.lock().unwrap();
if locked_config.instance_id.is_none() {
let id = uuid::Uuid::new_v4();
locked_config.instance_id = Some(id.to_string());
locked_config.instance_id = Some(id);
id
} else {
uuid::Uuid::parse_str(locked_config.instance_id.as_ref().unwrap())
.with_context(|| {
format!(
"failed to parse instance id as uuid: {}, you can use this id: {}",
locked_config.instance_id.as_ref().unwrap(),
uuid::Uuid::new_v4()
)
})
.unwrap()
locked_config.instance_id.as_ref().unwrap().clone()
}
}
fn set_id(&self, id: uuid::Uuid) {
self.config.lock().unwrap().instance_id = Some(id);
}
fn get_network_identity(&self) -> NetworkIdentity {
self.config
.lock()

View File

@@ -13,7 +13,7 @@ use super::{
pub type NetworkIdentity = crate::common::config::NetworkIdentity;
#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
pub enum GlobalCtxEvent {
TunDeviceReady(String),

View File

@@ -1,6 +1,8 @@
use serde::{Deserialize, Serialize};
use crate::rpc::cli::{NatType, PeerInfo, Route};
#[derive(Debug)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PeerRoutePair {
pub route: Route,
pub peer: Option<PeerInfo>,