Managed to load server configuration from WebUI
This commit is contained in:
		@@ -10,7 +10,7 @@ pub struct AppConfig {
 | 
			
		||||
    pub listen_address: String,
 | 
			
		||||
 | 
			
		||||
    /// Website main origin
 | 
			
		||||
    #[clap(short, long, env, default_value = "http://localhost:3000")]
 | 
			
		||||
    #[clap(short, long, env, default_value = "http://localhost:5173")]
 | 
			
		||||
    pub website_origin: String,
 | 
			
		||||
 | 
			
		||||
    /// Proxy IP, might end with a star "*"
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ use std::fmt::{Display, Formatter};
 | 
			
		||||
use std::io::ErrorKind;
 | 
			
		||||
 | 
			
		||||
pub mod auth_controller;
 | 
			
		||||
pub mod server_controller;
 | 
			
		||||
 | 
			
		||||
/// Custom error to ease controller writing
 | 
			
		||||
#[derive(Debug)]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								remote_backend/src/controllers/server_controller.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								remote_backend/src/controllers/server_controller.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
use crate::app_config::AppConfig;
 | 
			
		||||
use crate::controllers::HttpResult;
 | 
			
		||||
use crate::extractors::auth_extractor::AuthExtractor;
 | 
			
		||||
use actix_web::HttpResponse;
 | 
			
		||||
 | 
			
		||||
#[derive(serde::Serialize)]
 | 
			
		||||
struct ServerConfig {
 | 
			
		||||
    authenticated: bool,
 | 
			
		||||
    disable_auth: bool,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub async fn config(auth: AuthExtractor) -> HttpResult {
 | 
			
		||||
    Ok(HttpResponse::Ok().json(ServerConfig {
 | 
			
		||||
        authenticated: auth.is_authenticated(),
 | 
			
		||||
        disable_auth: AppConfig::get().unsecure_disable_login,
 | 
			
		||||
    }))
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
use actix_cors::Cors;
 | 
			
		||||
use actix_identity::config::LogoutBehaviour;
 | 
			
		||||
use actix_identity::IdentityMiddleware;
 | 
			
		||||
use actix_remote_ip::RemoteIPConfig;
 | 
			
		||||
@@ -9,9 +10,9 @@ use actix_web::web::Data;
 | 
			
		||||
use actix_web::{web, App, HttpServer};
 | 
			
		||||
use light_openid::basic_state_manager::BasicStateManager;
 | 
			
		||||
use remote_backend::app_config::AppConfig;
 | 
			
		||||
use remote_backend::controllers::auth_controller;
 | 
			
		||||
use remote_backend::constants;
 | 
			
		||||
use remote_backend::controllers::{auth_controller, server_controller};
 | 
			
		||||
use remote_backend::middlewares::auth_middleware::AuthChecker;
 | 
			
		||||
use remote_backend::{constants, virtweb_client};
 | 
			
		||||
use std::time::Duration;
 | 
			
		||||
 | 
			
		||||
#[actix_web::main]
 | 
			
		||||
@@ -40,15 +41,28 @@ async fn main() -> std::io::Result<()> {
 | 
			
		||||
            .login_deadline(Some(Duration::from_secs(constants::MAX_SESSION_DURATION)))
 | 
			
		||||
            .build();
 | 
			
		||||
 | 
			
		||||
        let cors = Cors::default()
 | 
			
		||||
            .allowed_origin(&AppConfig::get().website_origin)
 | 
			
		||||
            .allowed_methods(vec!["GET", "POST", "PUT", "PATCH", "DELETE"])
 | 
			
		||||
            .allowed_header("X-Auth-Token")
 | 
			
		||||
            .allow_any_header()
 | 
			
		||||
            .supports_credentials()
 | 
			
		||||
            .max_age(3600);
 | 
			
		||||
 | 
			
		||||
        App::new()
 | 
			
		||||
            .wrap(Logger::default())
 | 
			
		||||
            .wrap(AuthChecker)
 | 
			
		||||
            .wrap(identity_middleware)
 | 
			
		||||
            .wrap(session_mw)
 | 
			
		||||
            .wrap(cors)
 | 
			
		||||
            .app_data(state_manager.clone())
 | 
			
		||||
            .app_data(Data::new(RemoteIPConfig {
 | 
			
		||||
                proxy: AppConfig::get().proxy_ip.clone(),
 | 
			
		||||
            }))
 | 
			
		||||
            .route(
 | 
			
		||||
                "/api/server/config",
 | 
			
		||||
                web::get().to(server_controller::config),
 | 
			
		||||
            )
 | 
			
		||||
            .route(
 | 
			
		||||
                "/api/auth/start_oidc",
 | 
			
		||||
                web::get().to(auth_controller::start_oidc),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user