diff options
Diffstat (limited to 'src/cmd/server.rs')
-rw-r--r-- | src/cmd/server.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/server.rs b/src/cmd/server.rs index bc9b985..6e98fe5 100644 --- a/src/cmd/server.rs +++ b/src/cmd/server.rs @@ -5,6 +5,16 @@ use std::io::Read as _; pub struct Config { #[serde(default)] server: crate::config::Server, + + #[serde( + rename = "oauth", + deserialize_with = "crate::config::oauth_configs", + default + )] + oauth_configs: std::collections::HashMap< + crate::protocol::AuthType, + crate::oauth::Config, + >, } impl crate::config::Config for Config { @@ -24,6 +34,7 @@ impl crate::config::Config for Config { self.server.read_timeout, tls_identity_file, self.server.allowed_login_methods.clone(), + self.oauth_configs.clone(), )? } else { create_server( @@ -31,6 +42,7 @@ impl crate::config::Config for Config { self.server.buffer_size, self.server.read_timeout, self.server.allowed_login_methods.clone(), + self.oauth_configs.clone(), )? }; tokio::run(futures::future::lazy(move || { @@ -66,6 +78,10 @@ fn create_server( allowed_login_methods: std::collections::HashSet< crate::protocol::AuthType, >, + oauth_configs: std::collections::HashMap< + crate::protocol::AuthType, + crate::oauth::Config, + >, ) -> Result<( Box<dyn futures::future::Future<Item = (), Error = Error> + Send>, Box<dyn futures::future::Future<Item = (), Error = Error> + Send>, @@ -86,6 +102,7 @@ fn create_server( read_timeout, sock_r, allowed_login_methods, + oauth_configs, ); Ok((Box::new(acceptor), Box::new(server))) } @@ -98,6 +115,10 @@ fn create_server_tls( allowed_login_methods: std::collections::HashSet< crate::protocol::AuthType, >, + oauth_configs: std::collections::HashMap< + crate::protocol::AuthType, + crate::oauth::Config, + >, ) -> Result<( Box<dyn futures::future::Future<Item = (), Error = Error> + Send>, Box<dyn futures::future::Future<Item = (), Error = Error> + Send>, @@ -134,6 +155,7 @@ fn create_server_tls( read_timeout, sock_r, allowed_login_methods, + oauth_configs, ); Ok((Box::new(acceptor), Box::new(server))) } |