Run cargo fmt
This commit is contained in:
parent
3589b0fa4b
commit
e950931c5f
4 changed files with 33 additions and 38 deletions
|
@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||||
use std::task::{Context, Poll};
|
use std::task::{Context, Poll};
|
||||||
|
|
||||||
use boitalettres::errors::Error as BalError;
|
use boitalettres::errors::Error as BalError;
|
||||||
use boitalettres::proto::{Request,Response};
|
use boitalettres::proto::{Request, Response};
|
||||||
use futures::future::BoxFuture;
|
use futures::future::BoxFuture;
|
||||||
use tower::Service;
|
use tower::Service;
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ pub struct Connection {
|
||||||
pub mailstore: Arc<Mailstore>,
|
pub mailstore: Arc<Mailstore>,
|
||||||
}
|
}
|
||||||
impl Connection {
|
impl Connection {
|
||||||
pub fn new(mailstore: Arc<Mailstore>) -> Self {
|
pub fn new(mailstore: Arc<Mailstore>) -> Self {
|
||||||
Self { mailstore }
|
Self { mailstore }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl Service<Request> for Connection {
|
impl Service<Request> for Connection {
|
||||||
type Response = Response;
|
type Response = Response;
|
||||||
|
@ -43,18 +43,17 @@ impl Service<Request> for Connection {
|
||||||
)?
|
)?
|
||||||
.with_body(body)
|
.with_body(body)
|
||||||
}
|
}
|
||||||
CommandBody::Login {
|
CommandBody::Login { username, password } => {
|
||||||
username,
|
|
||||||
password,
|
|
||||||
} => {
|
|
||||||
let (u, p) = match (String::try_from(username), String::try_from(password)) {
|
let (u, p) = match (String::try_from(username), String::try_from(password)) {
|
||||||
(Ok(u), Ok(p)) => (u, p),
|
(Ok(u), Ok(p)) => (u, p),
|
||||||
_ => { return Response::bad("Invalid characters") }
|
_ => return Response::bad("Invalid characters"),
|
||||||
};
|
};
|
||||||
|
|
||||||
tracing::debug!(user = %u, "command.login");
|
tracing::debug!(user = %u, "command.login");
|
||||||
let creds = match mailstore.login_provider.login(&u, &p).await {
|
let creds = match mailstore.login_provider.login(&u, &p).await {
|
||||||
Err(_) => { return Response::no("[AUTHENTICATIONFAILED] Authentication failed.") }
|
Err(_) => {
|
||||||
|
return Response::no("[AUTHENTICATIONFAILED] Authentication failed.")
|
||||||
|
}
|
||||||
Ok(c) => c,
|
Ok(c) => c,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -67,5 +66,3 @@ impl Service<Request> for Connection {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,12 @@ use crate::connection::Connection;
|
||||||
use crate::mailstore::Mailstore;
|
use crate::mailstore::Mailstore;
|
||||||
|
|
||||||
pub struct Instance {
|
pub struct Instance {
|
||||||
pub mailstore: Arc<Mailstore>
|
pub mailstore: Arc<Mailstore>,
|
||||||
}
|
}
|
||||||
impl Instance {
|
impl Instance {
|
||||||
pub fn new(mailstore: Arc<Mailstore>) -> Self {
|
pub fn new(mailstore: Arc<Mailstore>) -> Self {
|
||||||
Self { mailstore }
|
Self { mailstore }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl<'a> Service<&'a AddrStream> for Instance {
|
impl<'a> Service<&'a AddrStream> for Instance {
|
||||||
type Response = Connection;
|
type Response = Connection;
|
||||||
|
@ -29,10 +29,6 @@ impl<'a> Service<&'a AddrStream> for Instance {
|
||||||
fn call(&mut self, addr: &'a AddrStream) -> Self::Future {
|
fn call(&mut self, addr: &'a AddrStream) -> Self::Future {
|
||||||
tracing::info!(remote_addr = %addr.remote_addr, local_addr = %addr.local_addr, "accept");
|
tracing::info!(remote_addr = %addr.remote_addr, local_addr = %addr.local_addr, "accept");
|
||||||
let ms = self.mailstore.clone();
|
let ms = self.mailstore.clone();
|
||||||
Box::pin(async {
|
Box::pin(async { Ok(Connection::new(ms)) })
|
||||||
Ok(Connection::new(ms))
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,16 +19,15 @@ impl Mailstore {
|
||||||
name: config.aws_region,
|
name: config.aws_region,
|
||||||
endpoint: config.k2v_endpoint,
|
endpoint: config.k2v_endpoint,
|
||||||
};
|
};
|
||||||
let login_provider: Box<dyn LoginProvider + Send + Sync> = match (config.login_static, config.login_ldap)
|
let login_provider: Box<dyn LoginProvider + Send + Sync> =
|
||||||
{
|
match (config.login_static, config.login_ldap) {
|
||||||
(Some(st), None) => Box::new(StaticLoginProvider::new(st, k2v_region, s3_region)?),
|
(Some(st), None) => Box::new(StaticLoginProvider::new(st, k2v_region, s3_region)?),
|
||||||
(None, Some(ld)) => Box::new(LdapLoginProvider::new(ld, k2v_region, s3_region)?),
|
(None, Some(ld)) => Box::new(LdapLoginProvider::new(ld, k2v_region, s3_region)?),
|
||||||
(Some(_), Some(_)) => bail!("A single login provider must be set up in config file"),
|
(Some(_), Some(_)) => {
|
||||||
(None, None) => bail!("No login provider is set up in config file"),
|
bail!("A single login provider must be set up in config file")
|
||||||
};
|
}
|
||||||
|
(None, None) => bail!("No login provider is set up in config file"),
|
||||||
|
};
|
||||||
Ok(Arc::new(Self { login_provider }))
|
Ok(Arc::new(Self { login_provider }))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ use anyhow::Result;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use crate::config::*;
|
use crate::config::*;
|
||||||
use crate::mailstore;
|
|
||||||
use crate::instance;
|
use crate::instance;
|
||||||
|
use crate::mailstore;
|
||||||
|
|
||||||
use boitalettres::server::accept::addr::AddrIncoming;
|
use boitalettres::server::accept::addr::AddrIncoming;
|
||||||
use boitalettres::server::Server as ImapServer;
|
use boitalettres::server::Server as ImapServer;
|
||||||
|
@ -14,7 +14,7 @@ pub struct Server {
|
||||||
}
|
}
|
||||||
impl Server {
|
impl Server {
|
||||||
pub async fn new(config: Config) -> Result<Self> {
|
pub async fn new(config: Config) -> Result<Self> {
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
incoming: AddrIncoming::new("127.0.0.1:4567").await?,
|
incoming: AddrIncoming::new("127.0.0.1:4567").await?,
|
||||||
mailstore: mailstore::Mailstore::new(config)?,
|
mailstore: mailstore::Mailstore::new(config)?,
|
||||||
})
|
})
|
||||||
|
@ -23,15 +23,18 @@ impl Server {
|
||||||
pub async fn run(self: Self) -> Result<()> {
|
pub async fn run(self: Self) -> Result<()> {
|
||||||
tracing::info!("Starting server on {:#}", self.incoming.local_addr);
|
tracing::info!("Starting server on {:#}", self.incoming.local_addr);
|
||||||
|
|
||||||
|
let creds = self
|
||||||
let creds = self.mailstore.login_provider.login("quentin", "poupou").await?;
|
.mailstore
|
||||||
|
.login_provider
|
||||||
|
.login("quentin", "poupou")
|
||||||
|
.await?;
|
||||||
//let mut mailbox = Mailbox::new(&creds, "TestMailbox".to_string()).await?;
|
//let mut mailbox = Mailbox::new(&creds, "TestMailbox".to_string()).await?;
|
||||||
//mailbox.test().await?;
|
//mailbox.test().await?;
|
||||||
|
|
||||||
let server = ImapServer::new(self.incoming).serve(instance::Instance::new(self.mailstore.clone()));
|
let server =
|
||||||
|
ImapServer::new(self.incoming).serve(instance::Instance::new(self.mailstore.clone()));
|
||||||
let _ = server.await?;
|
let _ = server.await?;
|
||||||
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue