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();
|
||||
}
|
||||
|
||||
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 {
|
||||
if !has_cmd("systemctl") {
|
||||
return false;
|
||||
}
|
||||
log::info!("Uninstalling service...");
|
||||
Config::set_option("stop-service".into(), "Y".into());
|
||||
if !run_cmds_pkexec("systemctl disable rustdesk; systemctl stop rustdesk") {
|
||||
let cp = switch_service(true);
|
||||
if !run_cmds_pkexec(&format!(
|
||||
"{cp} systemctl disable rustdesk; systemctl stop rustdesk"
|
||||
)) {
|
||||
Config::set_option("stop-service".into(), "".into());
|
||||
return true;
|
||||
}
|
||||
@ -1140,13 +1152,7 @@ pub fn install_service() -> bool {
|
||||
return false;
|
||||
}
|
||||
log::info!("Installing service...");
|
||||
let home = std::env::var("HOME").unwrap_or_default();
|
||||
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());
|
||||
let cp = switch_service(false);
|
||||
if !run_cmds_pkexec(&format!(
|
||||
"{cp}systemctl enable rustdesk; systemctl start rustdesk"
|
||||
)) {
|
||||
|
@ -62,6 +62,9 @@ pub mod video_service;
|
||||
pub type Childs = Arc<Mutex<Vec<std::process::Child>>>;
|
||||
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! {
|
||||
pub static ref CHILD_PROCESS: Childs = 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);
|
||||
use hbb_common::sleep;
|
||||
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 {
|
||||
Ok(mut conn) => {
|
||||
if !synced {
|
||||
@ -508,7 +511,7 @@ async fn sync_and_watch_config_dir() {
|
||||
}
|
||||
|
||||
loop {
|
||||
sleep(0.3).await;
|
||||
sleep(CONFIG_SYNC_INTERVAL_SECS).await;
|
||||
let cfg = (Config::get(), Config2::get());
|
||||
if cfg != cfg0 {
|
||||
log::info!("config updated, sync to root");
|
||||
|
Loading…
x
Reference in New Issue
Block a user