feat: enable customize guard duration
This commit is contained in:
parent
e38dcd85ac
commit
4ff625f23b
@ -31,6 +31,9 @@ pub struct VergeConfig {
|
|||||||
|
|
||||||
/// set system proxy bypass
|
/// set system proxy bypass
|
||||||
pub system_proxy_bypass: Option<String>,
|
pub system_proxy_bypass: Option<String>,
|
||||||
|
|
||||||
|
/// proxy guard duration
|
||||||
|
pub proxy_guard_duration: Option<u64>,
|
||||||
}
|
}
|
||||||
|
|
||||||
static VERGE_CONFIG: &str = "verge.yaml";
|
static VERGE_CONFIG: &str = "verge.yaml";
|
||||||
@ -105,7 +108,7 @@ impl Verge {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// launchs the system proxy guard
|
// launchs the system proxy guard
|
||||||
Verge::guard_proxy(10, self.guard_state.clone());
|
Verge::guard_proxy(self.guard_state.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// reset the sysproxy
|
/// reset the sysproxy
|
||||||
@ -248,10 +251,13 @@ impl Verge {
|
|||||||
if patch.enable_proxy_guard.is_some() {
|
if patch.enable_proxy_guard.is_some() {
|
||||||
self.config.enable_proxy_guard = patch.enable_proxy_guard;
|
self.config.enable_proxy_guard = patch.enable_proxy_guard;
|
||||||
}
|
}
|
||||||
|
if patch.proxy_guard_duration.is_some() {
|
||||||
|
self.config.proxy_guard_duration = patch.proxy_guard_duration;
|
||||||
|
}
|
||||||
|
|
||||||
// relaunch the guard
|
// relaunch the guard
|
||||||
if patch.enable_system_proxy.is_some() || patch.enable_proxy_guard.is_some() {
|
if patch.enable_system_proxy.is_some() || patch.enable_proxy_guard.is_some() {
|
||||||
Verge::guard_proxy(10, self.guard_state.clone());
|
Verge::guard_proxy(self.guard_state.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
self.config.save_file()
|
self.config.save_file()
|
||||||
@ -261,7 +267,7 @@ impl Verge {
|
|||||||
impl Verge {
|
impl Verge {
|
||||||
/// launch a system proxy guard
|
/// launch a system proxy guard
|
||||||
/// read config from file directly
|
/// read config from file directly
|
||||||
pub fn guard_proxy(wait_secs: u64, guard_state: Arc<Mutex<bool>>) {
|
pub fn guard_proxy(guard_state: Arc<Mutex<bool>>) {
|
||||||
use tokio::time::{sleep, Duration};
|
use tokio::time::{sleep, Duration};
|
||||||
|
|
||||||
tauri::async_runtime::spawn(async move {
|
tauri::async_runtime::spawn(async move {
|
||||||
@ -273,6 +279,9 @@ impl Verge {
|
|||||||
*state = true;
|
*state = true;
|
||||||
std::mem::drop(state);
|
std::mem::drop(state);
|
||||||
|
|
||||||
|
// default duration is 10s
|
||||||
|
let mut wait_secs = 10u64;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
sleep(Duration::from_secs(wait_secs)).await;
|
sleep(Duration::from_secs(wait_secs)).await;
|
||||||
|
|
||||||
@ -282,6 +291,10 @@ impl Verge {
|
|||||||
|
|
||||||
let enable_proxy = verge.config.enable_system_proxy.unwrap_or(false);
|
let enable_proxy = verge.config.enable_system_proxy.unwrap_or(false);
|
||||||
let enable_guard = verge.config.enable_proxy_guard.unwrap_or(false);
|
let enable_guard = verge.config.enable_proxy_guard.unwrap_or(false);
|
||||||
|
let guard_duration = verge.config.proxy_guard_duration.unwrap_or(10);
|
||||||
|
|
||||||
|
// update duration
|
||||||
|
wait_secs = guard_duration;
|
||||||
|
|
||||||
// stop loop
|
// stop loop
|
||||||
if !enable_guard || !enable_proxy {
|
if !enable_guard || !enable_proxy {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user