Dinh Long Nguyen e1c8d98bf2
Backend Architecture Refactoring (#6094) (#6162)
* add llamacpp plugin

* Refactor llamacpp plugin

* add utils plugin

* remove utils folder

* add hardware implementation

* add utils folder + move utils function

* organize cargo files

* refactor utils src

* refactor util

* apply fmt

* fmt

* Update gguf + reformat

* add permission for gguf commands

* fix cargo test windows

* revert yarn lock

* remove cargo.lock for hardware plugin

* ignore cargo.lock file

* Fix hardware invoke + refactor hardware + refactor tests, constants

* use api wrapper in extension to invoke hardware call + api wrapper build integration

* add newline at EOF (per Akarshan)

* add vi mock for getSystemInfo
2025-08-15 08:59:01 +07:00

51 lines
1.4 KiB
Rust

/// Checks if header name is a CORS-related header
pub fn is_cors_header(header_name: &str) -> bool {
let header_lower = header_name.to_lowercase();
header_lower.starts_with("access-control-")
}
/// Validates if host is in trusted hosts list
pub fn is_valid_host(host: &str, trusted_hosts: &[Vec<String>]) -> bool {
if host.is_empty() {
return false;
}
let host_without_port = if host.starts_with('[') {
host.split(']')
.next()
.unwrap_or(host)
.trim_start_matches('[')
} else {
host.split(':').next().unwrap_or(host)
};
let default_valid_hosts = ["localhost", "127.0.0.1", "0.0.0.0"];
if default_valid_hosts
.iter()
.any(|&valid| host_without_port.to_lowercase() == valid.to_lowercase())
{
return true;
}
trusted_hosts.iter().flatten().any(|valid| {
let host_lower = host.to_lowercase();
let valid_lower = valid.to_lowercase();
if host_lower == valid_lower {
return true;
}
let valid_without_port = if valid.starts_with('[') {
valid
.split(']')
.next()
.unwrap_or(valid)
.trim_start_matches('[')
} else {
valid.split(':').next().unwrap_or(valid)
};
host_without_port.to_lowercase() == valid_without_port.to_lowercase()
})
}