Add basic server config
This commit is contained in:
parent
129d23f671
commit
bb31954b22
1
virtweb_backend/Cargo.lock
generated
1
virtweb_backend/Cargo.lock
generated
@ -1856,6 +1856,7 @@ dependencies = [
|
||||
"actix-web",
|
||||
"clap",
|
||||
"env_logger",
|
||||
"futures-util",
|
||||
"lazy_static",
|
||||
"light-openid",
|
||||
"log",
|
||||
|
@ -15,4 +15,5 @@ actix-web = "4"
|
||||
actix-remote-ip = "0.1.0"
|
||||
actix-session = { version = "0.7.2", features = ["cookie-session"] }
|
||||
actix-identity = "0.5.2"
|
||||
serde = { version = "1.0.175", features = ["derive"] }
|
||||
serde = { version = "1.0.175", features = ["derive"] }
|
||||
futures-util = "0.3.28"
|
@ -1,5 +1,20 @@
|
||||
use crate::app_config::AppConfig;
|
||||
use crate::extractors::local_auth_extractor::LocalAuthEnabled;
|
||||
use actix_web::{HttpResponse, Responder};
|
||||
|
||||
pub async fn root_index() -> impl Responder {
|
||||
HttpResponse::Ok().body("Hello world!")
|
||||
}
|
||||
|
||||
#[derive(serde::Serialize)]
|
||||
struct StaticConfig {
|
||||
local_auth_enabled: bool,
|
||||
oidc_auth_enabled: bool,
|
||||
}
|
||||
|
||||
pub async fn static_config(local_auth: LocalAuthEnabled) -> impl Responder {
|
||||
HttpResponse::Ok().json(StaticConfig {
|
||||
local_auth_enabled: *local_auth,
|
||||
oidc_auth_enabled: !AppConfig::get().disable_oidc,
|
||||
})
|
||||
}
|
||||
|
1
virtweb_backend/src/extractors.rs
Normal file
1
virtweb_backend/src/extractors.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod local_auth_extractor;
|
33
virtweb_backend/src/extractors/local_auth_extractor.rs
Normal file
33
virtweb_backend/src/extractors/local_auth_extractor.rs
Normal file
@ -0,0 +1,33 @@
|
||||
use crate::app_config::AppConfig;
|
||||
use actix_web::dev::Payload;
|
||||
use actix_web::{Error, FromRequest, HttpRequest};
|
||||
use futures_util::future::{ready, Ready};
|
||||
use std::ops::Deref;
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||
pub struct LocalAuthEnabled(bool);
|
||||
|
||||
impl Deref for LocalAuthEnabled {
|
||||
type Target = bool;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl FromRequest for LocalAuthEnabled {
|
||||
type Error = Error;
|
||||
type Future = Ready<Result<Self, Error>>;
|
||||
|
||||
fn from_request(req: &HttpRequest, _payload: &mut Payload) -> Self::Future {
|
||||
if AppConfig::get().disable_local_auth {
|
||||
return ready(Ok(Self(false)));
|
||||
}
|
||||
|
||||
let has_disable_local_auth_header = req
|
||||
.headers()
|
||||
.get(&AppConfig::get().disable_auth_header_token)
|
||||
.is_some();
|
||||
return ready(Ok(Self(!has_disable_local_auth_header)));
|
||||
}
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
pub mod app_config;
|
||||
pub mod constants;
|
||||
pub mod controllers;
|
||||
pub mod extractors;
|
||||
|
@ -43,6 +43,10 @@ async fn main() -> std::io::Result<()> {
|
||||
proxy: AppConfig::get().proxy_ip.clone(),
|
||||
}))
|
||||
.route("/", web::get().to(server_controller::root_index))
|
||||
.route(
|
||||
"/api/server/static_config",
|
||||
web::get().to(server_controller::static_config),
|
||||
)
|
||||
})
|
||||
.bind(&AppConfig::get().listen_address)?
|
||||
.run()
|
||||
|
Loading…
Reference in New Issue
Block a user