Use Windows username in SDK client
ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s

This commit is contained in:
DuProcess
2026-07-16 20:41:32 -04:00
parent 8fae0d8bf9
commit b6d8c83fc9
+41 -1
View File
@@ -159,7 +159,7 @@ impl DoshClientBuilder {
.clone()
.or_else(|| host_config.user.clone())
.or_else(|| user_from_destination(&raw_server))
.or_else(|| std::env::var("USER").ok())
.or_else(local_username)
.unwrap_or_else(|| "unknown".to_string());
let udp_host = self
.udp_host
@@ -410,6 +410,17 @@ fn user_from_destination(destination: &str) -> Option<String> {
.filter(|user| !user.is_empty())
}
fn local_username() -> Option<String> {
local_username_from_env(|name| std::env::var(name).ok())
}
fn local_username_from_env(mut get: impl FnMut(&str) -> Option<String>) -> Option<String> {
["USER", "USERNAME"]
.into_iter()
.filter_map(|name| get(name))
.find(|value| !value.is_empty())
}
fn default_sdk_session() -> String {
let millis = SystemTime::now()
.duration_since(UNIX_EPOCH)
@@ -432,6 +443,35 @@ mod tests {
assert_eq!(destination_host("example.com:2222"), "example.com");
}
#[test]
fn local_username_uses_unix_or_windows_environment_names() {
assert_eq!(
local_username_from_env(|name| match name {
"USER" => Some("palav".to_string()),
_ => None,
})
.as_deref(),
Some("palav")
);
assert_eq!(
local_username_from_env(|name| match name {
"USERNAME" => Some("palav-win".to_string()),
_ => None,
})
.as_deref(),
Some("palav-win")
);
assert_eq!(
local_username_from_env(|name| match name {
"USER" => Some(String::new()),
"USERNAME" => Some("palav-win".to_string()),
_ => None,
})
.as_deref(),
Some("palav-win")
);
}
#[test]
fn default_identity_paths_are_expanded() {
assert!(