Start Matrix client authentication

This commit is contained in:
2025-11-05 16:30:06 +01:00
parent a44327ddb0
commit 3dab9f41d2
13 changed files with 2960 additions and 10 deletions

View File

@@ -8,8 +8,10 @@ use actix_web::middleware::Logger;
use actix_web::{App, HttpServer, web};
use matrixgw_backend::app_config::AppConfig;
use matrixgw_backend::constants;
use matrixgw_backend::controllers::{auth_controller, server_controller};
use matrixgw_backend::controllers::{auth_controller, matrix_link_controller, server_controller};
use matrixgw_backend::matrix_connection::matrix_manager::MatrixManagerActor;
use matrixgw_backend::users::User;
use ractor::Actor;
#[tokio::main]
async fn main() -> std::io::Result<()> {
@@ -29,12 +31,22 @@ async fn main() -> std::io::Result<()> {
.expect("Failed to create auto-login account!");
}
// Create matrix clients manager actor
let (manager_actor, manager_actor_handle) = Actor::spawn(
Some("matrix-clients-manager".to_string()),
MatrixManagerActor,
(),
)
.await
.expect("Failed to start Matrix manager actor!");
log::info!(
"Starting to listen on {} for {}",
AppConfig::get().listen_address,
AppConfig::get().website_origin
);
let manager_actor_clone = manager_actor.clone();
HttpServer::new(move || {
let session_mw = SessionMiddleware::builder(redis_store.clone(), secret_key.clone())
.cookie_name("matrixgw-session".to_string())
@@ -53,6 +65,7 @@ async fn main() -> std::io::Result<()> {
.wrap(Logger::default())
.wrap(session_mw)
.wrap(cors)
.app_data(web::Data::new(manager_actor_clone.clone()))
.app_data(web::Data::new(RemoteIPConfig {
proxy: AppConfig::get().proxy_ip.clone(),
}))
@@ -76,9 +89,20 @@ async fn main() -> std::io::Result<()> {
"/api/auth/sign_out",
web::get().to(auth_controller::sign_out),
)
// Matrix link controller
.route(
"/api/matrix_link/start_auth",
web::post().to(matrix_link_controller::start_auth),
)
})
.workers(4)
.bind(&AppConfig::get().listen_address)?
.run()
.await
.await?;
// Terminate manager actor
manager_actor.stop(None);
manager_actor_handle.await?;
Ok(())
}