Revert "temp commit"

This reverts commit 2e03ca19f6.
This commit is contained in:
chenbaiyu
2022-01-13 16:07:18 +08:00
parent 1995f9fa4e
commit e51e5ac4b1
9 changed files with 119 additions and 356 deletions

View File

@@ -43,9 +43,6 @@ protobuf-codegen-pure = "3.0.0-alpha.2"
[target.'cfg(target_os = "windows")'.dependencies]
winapi = { version = "0.3", features = ["winuser"] }
[target.'cfg(target_os = "macos")'.dependencies]
fs_extra = "1.2.0"
[dev-dependencies]
toml = "0.5"
serde_json = "1.0"

View File

@@ -11,7 +11,6 @@ use std::{
sync::{Arc, Mutex, RwLock},
time::SystemTime,
};
use std::borrow::Borrow;
pub const APP_NAME: &str = "RustDesk";
pub const RENDEZVOUS_TIMEOUT: u64 = 12_000;
@@ -70,8 +69,7 @@ pub struct Config {
#[serde(default)]
salt: String,
#[serde(default)]
key_pair: (Vec<u8>, Vec<u8>),
// sk, pk
key_pair: (Vec<u8>, Vec<u8>), // sk, pk
#[serde(default)]
key_confirmed: bool,
#[serde(default)]
@@ -92,8 +90,7 @@ pub struct Socks5Server {
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct Config2 {
#[serde(default)]
remote_id: String,
// latest used one
remote_id: String, // latest used one
#[serde(default)]
size: Size,
#[serde(default)]
@@ -122,8 +119,7 @@ pub struct PeerConfig {
#[serde(default)]
pub size_pf: Size,
#[serde(default)]
pub view_style: String,
// original (default), scale
pub view_style: String, // original (default), scale
#[serde(default)]
pub image_quality: String,
#[serde(default)]
@@ -163,28 +159,28 @@ pub struct PeerInfoSerde {
fn patch(path: PathBuf) -> PathBuf {
if let Some(_tmp) = path.to_str() {
#[cfg(windows)]
return _tmp
return _tmp
.replace(
"system32\\config\\systemprofile",
"ServiceProfiles\\LocalService",
)
.into();
#[cfg(target_os = "macos")]
return _tmp.replace("Application Support", "Preferences").into();
return _tmp.replace("Application Support", "Preferences").into();
#[cfg(target_os = "linux")]
{
if _tmp == "/root" {
if let Ok(output) = std::process::Command::new("whoami").output() {
let user = String::from_utf8_lossy(&output.stdout)
.to_string()
.trim()
.to_owned();
if user != "root" {
return format!("/home/{}", user).into();
}
{
if _tmp == "/root" {
if let Ok(output) = std::process::Command::new("whoami").output() {
let user = String::from_utf8_lossy(&output.stdout)
.to_string()
.trim()
.to_owned();
if user != "root" {
return format!("/home/{}", user).into();
}
}
}
}
}
path
}
@@ -194,11 +190,6 @@ impl Config2 {
Config::load_::<Config2>("2")
}
fn reload(&mut self) {
let new_config = Config2::load();
*self = new_config;
}
fn store(&self) {
Config::store_(self, "2");
}
@@ -238,11 +229,6 @@ impl Config {
Config::store_(self, "");
}
fn reload(&mut self) {
let new_config = Config::load();
*self = new_config;
}
pub fn file() -> PathBuf {
Self::file_("")
}
@@ -276,7 +262,7 @@ impl Config {
pub fn get_home() -> PathBuf {
#[cfg(any(target_os = "android", target_os = "ios"))]
return Self::path("");
return Self::path("");
if let Some(path) = dirs_next::home_dir() {
patch(path)
} else if let Ok(path) = std::env::current_dir() {
@@ -286,17 +272,17 @@ impl Config {
}
}
pub fn path<P: AsRef<Path>>(p: P) -> PathBuf {
fn path<P: AsRef<Path>>(p: P) -> PathBuf {
#[cfg(any(target_os = "android", target_os = "ios"))]
{
let mut path: PathBuf = APP_DIR.read().unwrap().clone().into();
path.push(p);
return path;
}
{
let mut path: PathBuf = APP_DIR.read().unwrap().clone().into();
path.push(p);
return path;
}
#[cfg(not(target_os = "macos"))]
let org = "";
let org = "";
#[cfg(target_os = "macos")]
let org = ORG;
let org = ORG;
// /var/root for root
if let Some(project) = ProjectDirs::from("", org, APP_NAME) {
let mut path = patch(project.config_dir().to_path_buf());
@@ -309,19 +295,19 @@ impl Config {
#[allow(unreachable_code)]
pub fn log_path() -> PathBuf {
#[cfg(target_os = "macos")]
{
if let Some(path) = dirs_next::home_dir().as_mut() {
path.push(format!("Library/Logs/{}", APP_NAME));
return path.clone();
}
{
if let Some(path) = dirs_next::home_dir().as_mut() {
path.push(format!("Library/Logs/{}", APP_NAME));
return path.clone();
}
}
#[cfg(target_os = "linux")]
{
let mut path = Self::get_home();
path.push(format!(".local/share/logs/{}", APP_NAME));
std::fs::create_dir_all(&path).ok();
return path;
}
{
let mut path = Self::get_home();
path.push(format!(".local/share/logs/{}", APP_NAME));
std::fs::create_dir_all(&path).ok();
return path;
}
if let Some(path) = Self::path("").parent() {
let mut path: PathBuf = path.into();
path.push("log");
@@ -332,21 +318,21 @@ impl Config {
pub fn ipc_path(postfix: &str) -> String {
#[cfg(windows)]
{
// \\ServerName\pipe\PipeName
// where ServerName is either the name of a remote computer or a period, to specify the local computer.
// https://docs.microsoft.com/en-us/windows/win32/ipc/pipe-names
format!("\\\\.\\pipe\\{}\\query{}", APP_NAME, postfix)
}
{
// \\ServerName\pipe\PipeName
// where ServerName is either the name of a remote computer or a period, to specify the local computer.
// https://docs.microsoft.com/en-us/windows/win32/ipc/pipe-names
format!("\\\\.\\pipe\\{}\\query{}", APP_NAME, postfix)
}
#[cfg(not(windows))]
{
use std::os::unix::fs::PermissionsExt;
let mut path: PathBuf = format!("/tmp/{}", APP_NAME).into();
fs::create_dir(&path).ok();
fs::set_permissions(&path, fs::Permissions::from_mode(0o0777)).ok();
path.push(format!("ipc{}", postfix));
path.to_str().unwrap_or("").to_owned()
}
{
use std::os::unix::fs::PermissionsExt;
let mut path: PathBuf = format!("/tmp/{}", APP_NAME).into();
fs::create_dir(&path).ok();
fs::set_permissions(&path, fs::Permissions::from_mode(0o0777)).ok();
path.push(format!("ipc{}", postfix));
path.to_str().unwrap_or("").to_owned()
}
}
pub fn icon_path() -> PathBuf {
@@ -460,7 +446,7 @@ impl Config {
fn get_auto_id() -> Option<String> {
#[cfg(any(target_os = "android", target_os = "ios"))]
return None;
return None;
let mut id = 0u32;
#[cfg(not(any(target_os = "android", target_os = "ios")))]
if let Ok(Some(ma)) = mac_address::get_mac_address() {
@@ -673,45 +659,6 @@ impl Config {
Some(_) => NetworkType::ProxySocks,
}
}
pub fn copy_and_reload_config_dir<P: AsRef<Path>>(
target_username: String,
from: P,
) -> Result<bool, fs_extra::error::Error> {
let to = Self::path("");
let to_parent = to.parent().unwrap();
let mut options = fs_extra::dir::CopyOptions::new();
options.overwrite = true;
options.copy_inside = true;
let mut f = from.as_ref();
return match fs_extra::dir::copy(f, to_parent, &options) {
Ok(count) => {
if count > 0 {
log::info!("{}",target_username);
log::info!("{}",f.to_str().unwrap().to_string());
log::info!("{}",to.to_str().unwrap().to_string());
std::process::Command::new("chown")
.arg("-R")
.arg(target_username)
.arg(to.to_str().unwrap().to_string())
.spawn();
CONFIG.write().unwrap().reload();
CONFIG2.write().unwrap().reload();
}
Ok(count > 0)
}
Err(e) => {
log::error!("config copy failed: {}", e);
Err(e)
}
};
}
}
const PEERS: &str = "peers";
@@ -810,7 +757,6 @@ impl Fav {
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_serialize() {
let cfg: Config = Default::default();