Fix admin rename payload and harden RustDesk ID sync

This commit is contained in:
Esdras Renan 2025-11-26 21:00:08 -03:00
parent bd1bd4bef1
commit f7ad7f6a17
4 changed files with 146 additions and 6 deletions

View file

@ -207,26 +207,64 @@ pub fn ensure_rustdesk(
}
};
let mut final_id = reported_id.clone();
if let Some(expected) = custom_id.as_ref() {
if expected != &reported_id {
log_event(&format!(
"ID retornado difere do determinístico ({expected}) -> aplicando {reported_id}"
"ID retornado difere do determinístico ({expected}) -> reaplicando ID determinístico"
));
let reapplied = match set_custom_id(&exe_path, expected) {
Ok(_) => {
match query_id_with_retries(&exe_path, 3) {
Ok(rechecked) => {
if &rechecked == expected {
log_event(&format!("ID determinístico aplicado com sucesso: {rechecked}"));
final_id = rechecked;
true
} else {
log_event(&format!(
"ID ainda difere após reaplicação (esperado {expected}, reportado {rechecked}); forçando persistência do determinístico nos perfis"
));
false
}
}
Err(error) => {
log_event(&format!(
"Falha ao consultar ID após reaplicação: {error}; forçando persistência do determinístico nos perfis"
));
false
}
}
}
Err(error) => {
log_event(&format!(
"Falha ao reaplicar ID determinístico ({expected}): {error}; persistindo determinístico nos perfis mesmo assim"
));
false
}
};
if !reapplied {
final_id = expected.clone();
}
}
}
ensure_remote_id_files(&reported_id);
ensure_remote_id_files(&final_id);
let version = query_version(&exe_path).ok().or(installed_version);
let result = RustdeskProvisioningResult {
id: reported_id.clone(),
id: final_id.clone(),
password: password.clone(),
installed_version: version.clone(),
updated: freshly_installed,
last_provisioned_at: Utc::now().timestamp_millis(),
};
log_event(&format!("Provisionamento concluído. ID final: {reported_id}. Versão: {:?}", version));
log_event(&format!("Provisionamento concluído. ID final: {final_id}. Versão: {:?}", version));
Ok(result)
}