From ac04a032ad5eaa0b503f4440ab98a6cfe941f041 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 6 May 2024 22:02:13 +0800 Subject: [PATCH] more for custom client of linux --- src/platform/linux_desktop_manager.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/platform/linux_desktop_manager.rs b/src/platform/linux_desktop_manager.rs index 78f4c8663..0acb089f1 100644 --- a/src/platform/linux_desktop_manager.rs +++ b/src/platform/linux_desktop_manager.rs @@ -246,7 +246,7 @@ impl DesktopManager { fn try_start_x_session(&mut self, username: &str, password: &str) -> ResultType<()> { match get_user_by_name(username) { Some(userinfo) => { - let mut client = pam::Client::with_password(pam_get_service_name())?; + let mut client = pam::Client::with_password(&pam_get_service_name())?; client .conversation_mut() .set_credentials(username, password); @@ -379,7 +379,7 @@ impl DesktopManager { password: String, envs: HashMap<&str, String>, ) -> ResultType<()> { - let mut client = pam::Client::with_password(pam_get_service_name())?; + let mut client = pam::Client::with_password(&pam_get_service_name())?; client .conversation_mut() .set_credentials(&username, &password); @@ -668,6 +668,8 @@ impl DesktopManager { ) -> ResultType { let xorg = Self::get_xorg(); log::info!("Use xorg: {}", &xorg); + let app_name = crate::get_app_name().to_lowercase(); + let conf = format!("/etc/{app_name}/xorg.conf"); match Command::new(xorg) .envs(envs) .uid(uid) @@ -680,10 +682,8 @@ impl DesktopManager { "RANDR", "+extension", "RENDER", - //"-logfile", - //"/tmp/RustDesk_xorg.log", "-config", - "/etc/rustdesk/xorg.conf", + conf.as_ref(), "-auth", xauth, display, @@ -702,7 +702,8 @@ impl DesktopManager { gid: u32, envs: &HashMap<&str, String>, ) -> ResultType { - match Command::new("/etc/rustdesk/startwm.sh") + let app_name = crate::get_app_name().to_lowercase(); + match Command::new(&format!("/etc/{app_name}/startwm.sh")) .envs(envs) .uid(uid) .gid(gid) @@ -729,10 +730,11 @@ impl DesktopManager { } } -fn pam_get_service_name() -> &'static str { - if Path::new("/etc/pam.d/rustdesk").is_file() { - "rustdesk" +fn pam_get_service_name() -> String { + let app_name = crate::get_app_name().to_lowercase(); + if Path::new(&format!("/etc/pam.d/{app_name}")).is_file() { + app_name } else { - "gdm" + "gdm".to_owned() } }