fix config sync when uninstall service
This commit is contained in:
parent
896b233f87
commit
22a5399588
@ -1119,13 +1119,25 @@ pub fn run_me_with(secs: u32) {
|
|||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn switch_service(stop: bool) -> String {
|
||||||
|
let home = std::env::var("HOME").unwrap_or_default();
|
||||||
|
Config::set_option("stop-service".into(), if stop { "Y" } else { "" }.into());
|
||||||
|
if home != "/root" && !Config::get().is_empty() {
|
||||||
|
format!("cp -f {home}/.config/rustdesk/RustDesk.toml /root/.config/rustdesk/; cp -f {home}/.config/rustdesk/RustDesk2.toml /root/.config/rustdesk/;")
|
||||||
|
} else {
|
||||||
|
"".to_owned()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn uninstall_service(show_new_window: bool) -> bool {
|
pub fn uninstall_service(show_new_window: bool) -> bool {
|
||||||
if !has_cmd("systemctl") {
|
if !has_cmd("systemctl") {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
log::info!("Uninstalling service...");
|
log::info!("Uninstalling service...");
|
||||||
Config::set_option("stop-service".into(), "Y".into());
|
let cp = switch_service(true);
|
||||||
if !run_cmds_pkexec("systemctl disable rustdesk; systemctl stop rustdesk") {
|
if !run_cmds_pkexec(&format!(
|
||||||
|
"{cp} systemctl disable rustdesk; systemctl stop rustdesk"
|
||||||
|
)) {
|
||||||
Config::set_option("stop-service".into(), "".into());
|
Config::set_option("stop-service".into(), "".into());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1140,13 +1152,7 @@ pub fn install_service() -> bool {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
log::info!("Installing service...");
|
log::info!("Installing service...");
|
||||||
let home = std::env::var("HOME").unwrap_or_default();
|
let cp = switch_service(false);
|
||||||
let cp = if home != "/root" && !Config::get().is_empty() {
|
|
||||||
format!("cp -f {home}/.config/rustdesk/RustDesk.toml /root/.config/rustdesk/; cp -f {home}/.config/rustdesk/RustDesk2.toml /root/.config/rustdesk/;")
|
|
||||||
} else {
|
|
||||||
"".to_owned()
|
|
||||||
};
|
|
||||||
Config::set_option("stop-service".into(), "".into());
|
|
||||||
if !run_cmds_pkexec(&format!(
|
if !run_cmds_pkexec(&format!(
|
||||||
"{cp}systemctl enable rustdesk; systemctl start rustdesk"
|
"{cp}systemctl enable rustdesk; systemctl start rustdesk"
|
||||||
)) {
|
)) {
|
||||||
|
@ -62,6 +62,9 @@ pub mod video_service;
|
|||||||
pub type Childs = Arc<Mutex<Vec<std::process::Child>>>;
|
pub type Childs = Arc<Mutex<Vec<std::process::Child>>>;
|
||||||
type ConnMap = HashMap<i32, ConnInner>;
|
type ConnMap = HashMap<i32, ConnInner>;
|
||||||
|
|
||||||
|
#[cfg(any(target_os = "macos", target_os = "linux"))]
|
||||||
|
const CONFIG_SYNC_INTERVAL_SECS: f32 = 0.3;
|
||||||
|
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
pub static ref CHILD_PROCESS: Childs = Default::default();
|
pub static ref CHILD_PROCESS: Childs = Default::default();
|
||||||
pub static ref CONN_COUNT: Arc<Mutex<usize>> = Default::default();
|
pub static ref CONN_COUNT: Arc<Mutex<usize>> = Default::default();
|
||||||
@ -477,7 +480,7 @@ async fn sync_and_watch_config_dir() {
|
|||||||
log::debug!("#tries of ipc service connection: {}", tries);
|
log::debug!("#tries of ipc service connection: {}", tries);
|
||||||
use hbb_common::sleep;
|
use hbb_common::sleep;
|
||||||
for i in 1..=tries {
|
for i in 1..=tries {
|
||||||
sleep(i as f32 * 0.3).await;
|
sleep(i as f32 * CONFIG_SYNC_INTERVAL_SECS).await;
|
||||||
match crate::ipc::connect(1000, "_service").await {
|
match crate::ipc::connect(1000, "_service").await {
|
||||||
Ok(mut conn) => {
|
Ok(mut conn) => {
|
||||||
if !synced {
|
if !synced {
|
||||||
@ -508,7 +511,7 @@ async fn sync_and_watch_config_dir() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
sleep(0.3).await;
|
sleep(CONFIG_SYNC_INTERVAL_SECS).await;
|
||||||
let cfg = (Config::get(), Config2::get());
|
let cfg = (Config::get(), Config2::get());
|
||||||
if cfg != cfg0 {
|
if cfg != cfg0 {
|
||||||
log::info!("config updated, sync to root");
|
log::info!("config updated, sync to root");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user