make cors work with multi-domains

This commit is contained in:
BlockListed 2023-09-09 11:16:24 +02:00
parent 0d7e678c2e
commit 5462b97c26
No known key found for this signature in database
GPG Key ID: 2D204777C477B588

View File

@ -17,7 +17,7 @@ use tokio::{
time::{sleep, Duration}, time::{sleep, Duration},
}; };
use crate::CONFIG; use crate::{CONFIG, config::extract_url_host};
pub struct AppHeaders(); pub struct AppHeaders();
@ -129,9 +129,19 @@ impl Cors {
// If a match exists, return it. Otherwise, return None. // If a match exists, return it. Otherwise, return None.
fn get_allowed_origin(headers: &HeaderMap<'_>) -> Option<String> { fn get_allowed_origin(headers: &HeaderMap<'_>) -> Option<String> {
let origin = Cors::get_header(headers, "Origin"); let origin = Cors::get_header(headers, "Origin");
let domain_origin = CONFIG.domain_origin();
let domain_origin_opt = CONFIG.domain_origin(&extract_url_host(&origin));
let safari_extension_origin = "file://"; let safari_extension_origin = "file://";
if origin == domain_origin || origin == safari_extension_origin {
let found_origin = {
if let Some(domain_origin) = domain_origin_opt {
origin == domain_origin
} else {
false
}
};
if found_origin || origin == safari_extension_origin {
Some(origin) Some(origin)
} else { } else {
None None