mirror of
https://github.com/clowzed/sero
synced 2024-06-15 21:05:00 +02:00
finished cors. Untested. Not enabled
This commit is contained in:
parent
9be81978cc
commit
f16432cb2a
87
src/main.rs
87
src/main.rs
|
@ -63,50 +63,55 @@ async fn main() {
|
||||||
|
|
||||||
let cloned_state = state.clone();
|
let cloned_state = state.clone();
|
||||||
|
|
||||||
|
let cors_layer = CorsLayer::new()
|
||||||
|
.allow_methods(AllowMethods::any())
|
||||||
|
.allow_headers(AllowHeaders::any())
|
||||||
|
.allow_origin(AllowOrigin::predicate(move |origin, parts| {
|
||||||
|
let cloned_headers = parts.headers.clone();
|
||||||
|
let (tx, rx) = mpsc::channel();
|
||||||
|
|
||||||
|
let cloned_state = cloned_state.clone();
|
||||||
|
let cloned_origin = origin
|
||||||
|
.to_owned()
|
||||||
|
.to_str()
|
||||||
|
.map(|s| s.to_string())
|
||||||
|
.unwrap_or_default();
|
||||||
|
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
let rt = tokio::runtime::Runtime::new().unwrap();
|
||||||
|
rt.block_on(async move {
|
||||||
|
tracing::info!("Starting cors!");
|
||||||
|
let subdomain_model_extractor =
|
||||||
|
SubdomainModel::from_headers(&cloned_headers, &cloned_state)
|
||||||
|
.await
|
||||||
|
.map_err(|cause| {
|
||||||
|
tracing::error!(%cause,
|
||||||
|
"Failed to extract subdomain model from headers for cors!");
|
||||||
|
});
|
||||||
|
if subdomain_model_extractor.is_err() {
|
||||||
|
tx.send(false).ok();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let res = CorsService::check(
|
||||||
|
subdomain_model_extractor.unwrap().0,
|
||||||
|
&cloned_origin,
|
||||||
|
&cloned_state.connection,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.unwrap_or(false);
|
||||||
|
|
||||||
|
tx.send(res).ok();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
rx.recv().unwrap_or(false)
|
||||||
|
}));
|
||||||
|
|
||||||
let mut app = Router::new()
|
let mut app = Router::new()
|
||||||
.nest("/api", api_router)
|
.nest("/api", api_router)
|
||||||
.route("/*path", get(handlers::sites::file))
|
.route("/*path", get(handlers::sites::file))
|
||||||
.route("/", get(handlers::sites::index_redirect))
|
.route("/", get(handlers::sites::index_redirect))
|
||||||
.layer(
|
|
||||||
CorsLayer::new()
|
|
||||||
.allow_methods(AllowMethods::any())
|
|
||||||
.allow_headers(AllowHeaders::any())
|
|
||||||
.allow_origin(AllowOrigin::predicate(move |origin, parts| {let cloned_headers = parts.headers.clone();
|
|
||||||
let (tx, rx) = mpsc::channel();
|
|
||||||
|
|
||||||
let cloned_state = cloned_state.clone();
|
|
||||||
let cloned_origin = origin.to_owned().to_str().map(|s| s.to_string()).unwrap_or_default();
|
|
||||||
|
|
||||||
std::thread::spawn(move || {
|
|
||||||
let rt = tokio::runtime::Runtime::new().unwrap();
|
|
||||||
rt.block_on(async move {
|
|
||||||
tracing::info!("Starting cors!");
|
|
||||||
let subdomain_model_extractor =
|
|
||||||
SubdomainModel::from_headers(&cloned_headers, &cloned_state)
|
|
||||||
.await
|
|
||||||
.map_err(|cause| {
|
|
||||||
tracing::error!(%cause, "Failed to extract subdomain model from headers for cors!");
|
|
||||||
});
|
|
||||||
if subdomain_model_extractor.is_err() {
|
|
||||||
tx.send(false).ok();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let res = CorsService::check(
|
|
||||||
subdomain_model_extractor.unwrap().0,
|
|
||||||
&cloned_origin,
|
|
||||||
&cloned_state.connection,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
.unwrap_or(false);
|
|
||||||
|
|
||||||
tx.send(res).ok();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
rx.recv().unwrap_or(false)
|
|
||||||
}))
|
|
||||||
)
|
|
||||||
.with_state(state.clone());
|
.with_state(state.clone());
|
||||||
|
|
||||||
if config.max_body_limit_size.is_some() {
|
if config.max_body_limit_size.is_some() {
|
||||||
|
|
Loading…
Reference in a new issue