mirror of
https://gitlab.com/fabinfra/fabaccess/bffh.git
synced 2025-06-11 10:53:19 +02:00
Run rustfmt
This commit is contained in:
@ -5,7 +5,6 @@ use rsasl::property::AuthId;
|
||||
use rsasl::session::{Session, Step};
|
||||
use std::io::Cursor;
|
||||
|
||||
|
||||
use crate::capnp::session::APISession;
|
||||
use crate::session::SessionManager;
|
||||
use api::authenticationsystem_capnp::authentication::{
|
||||
|
@ -2,7 +2,7 @@ use std::fmt::Formatter;
|
||||
use std::net::ToSocketAddrs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use serde::{Serialize, Deserialize};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::config::deser_option;
|
||||
|
||||
@ -14,7 +14,11 @@ use crate::config::deser_option;
|
||||
pub struct Listen {
|
||||
pub address: String,
|
||||
|
||||
#[serde(default, skip_serializing_if = "Option::is_none", deserialize_with = "deser_option")]
|
||||
#[serde(
|
||||
default,
|
||||
skip_serializing_if = "Option::is_none",
|
||||
deserialize_with = "deser_option"
|
||||
)]
|
||||
pub port: Option<u16>,
|
||||
}
|
||||
|
||||
@ -56,4 +60,4 @@ pub struct TlsListen {
|
||||
}
|
||||
|
||||
// The default port in the non-assignable i.e. free-use area
|
||||
pub const DEFAULT_PORT: u16 = 59661;
|
||||
pub const DEFAULT_PORT: u16 = 59661;
|
||||
|
@ -1,13 +1,13 @@
|
||||
use std::net::SocketAddr;
|
||||
pub use api::connection_capnp::bootstrap::Client;
|
||||
use api::connection_capnp::bootstrap;
|
||||
pub use api::connection_capnp::bootstrap::Client;
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use capnp::capability::Promise;
|
||||
use capnp_rpc::pry;
|
||||
use rsasl::mechname::Mechname;
|
||||
use crate::authentication::AuthenticationHandle;
|
||||
use crate::capnp::authenticationsystem::Authentication;
|
||||
use crate::session::SessionManager;
|
||||
use capnp::capability::Promise;
|
||||
use capnp_rpc::pry;
|
||||
use rsasl::mechname::Mechname;
|
||||
|
||||
/// Cap'n Proto API Handler
|
||||
pub struct BootCap {
|
||||
@ -17,7 +17,11 @@ pub struct BootCap {
|
||||
}
|
||||
|
||||
impl BootCap {
|
||||
pub fn new(peer_addr: SocketAddr, authentication: AuthenticationHandle, sessionmanager: SessionManager) -> Self {
|
||||
pub fn new(
|
||||
peer_addr: SocketAddr,
|
||||
authentication: AuthenticationHandle,
|
||||
sessionmanager: SessionManager,
|
||||
) -> Self {
|
||||
tracing::trace!(%peer_addr, "bootstrapping RPC");
|
||||
Self {
|
||||
peer_addr,
|
||||
@ -62,12 +66,14 @@ impl bootstrap::Server for BootCap {
|
||||
tracing::trace!("mechanisms");
|
||||
|
||||
let builder = result.get();
|
||||
let mechs: Vec<_> = self.authentication.list_available_mechs()
|
||||
let mechs: Vec<_> = self
|
||||
.authentication
|
||||
.list_available_mechs()
|
||||
.into_iter()
|
||||
.map(|m| m.as_str())
|
||||
.collect();
|
||||
let mut mechbuilder = builder.init_mechs(mechs.len() as u32);
|
||||
for (i,m) in mechs.iter().enumerate() {
|
||||
for (i, m) in mechs.iter().enumerate() {
|
||||
mechbuilder.set(i as u32, m);
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,11 @@
|
||||
|
||||
use crate::capnp::machine::Machine;
|
||||
use crate::resources::search::ResourcesHandle;
|
||||
use crate::resources::Resource;
|
||||
use crate::session::SessionHandle;
|
||||
use api::machinesystem_capnp::machine_system::{
|
||||
info,
|
||||
};
|
||||
use crate::RESOURCES;
|
||||
use api::machinesystem_capnp::machine_system::info;
|
||||
use capnp::capability::Promise;
|
||||
use capnp_rpc::pry;
|
||||
use crate::capnp::machine::Machine;
|
||||
use crate::RESOURCES;
|
||||
use crate::resources::Resource;
|
||||
use crate::resources::search::ResourcesHandle;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Machines {
|
||||
@ -19,7 +16,10 @@ pub struct Machines {
|
||||
impl Machines {
|
||||
pub fn new(session: SessionHandle) -> Self {
|
||||
// FIXME no unwrap bad
|
||||
Self { session, resources: RESOURCES.get().unwrap().clone() }
|
||||
Self {
|
||||
session,
|
||||
resources: RESOURCES.get().unwrap().clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,7 +29,9 @@ impl info::Server for Machines {
|
||||
_: info::GetMachineListParams,
|
||||
mut result: info::GetMachineListResults,
|
||||
) -> Promise<(), ::capnp::Error> {
|
||||
let machine_list: Vec<(usize, &Resource)> = self.resources.list_all()
|
||||
let machine_list: Vec<(usize, &Resource)> = self
|
||||
.resources
|
||||
.list_all()
|
||||
.into_iter()
|
||||
.filter(|resource| resource.visible(&self.session))
|
||||
.enumerate()
|
||||
|
@ -1,6 +1,5 @@
|
||||
use async_net::TcpListener;
|
||||
|
||||
|
||||
use capnp_rpc::rpc_twoparty_capnp::Side;
|
||||
use capnp_rpc::twoparty::VatNetwork;
|
||||
use capnp_rpc::RpcSystem;
|
||||
@ -69,9 +68,7 @@ impl APIServer {
|
||||
|
||||
listens
|
||||
.into_iter()
|
||||
.map(|a| async move {
|
||||
(async_net::resolve(a.to_tuple()).await, a)
|
||||
})
|
||||
.map(|a| async move { (async_net::resolve(a.to_tuple()).await, a) })
|
||||
.collect::<FuturesUnordered<_>>()
|
||||
.filter_map(|(res, addr)| async move {
|
||||
match res {
|
||||
@ -111,7 +108,13 @@ impl APIServer {
|
||||
tracing::warn!("No usable listen addresses configured for the API server!");
|
||||
}
|
||||
|
||||
Ok(Self::new(executor, sockets, acceptor, sessionmanager, authentication))
|
||||
Ok(Self::new(
|
||||
executor,
|
||||
sockets,
|
||||
acceptor,
|
||||
sessionmanager,
|
||||
authentication,
|
||||
))
|
||||
}
|
||||
|
||||
pub async fn handle_until(self, stop: impl Future) {
|
||||
@ -129,10 +132,11 @@ impl APIServer {
|
||||
} else {
|
||||
tracing::error!(?stream, "failing a TCP connection with no peer addr");
|
||||
}
|
||||
},
|
||||
}
|
||||
Err(e) => tracing::warn!("Failed to accept stream: {}", e),
|
||||
}
|
||||
}).await;
|
||||
})
|
||||
.await;
|
||||
tracing::info!("closing down API handler");
|
||||
}
|
||||
|
||||
@ -153,7 +157,11 @@ impl APIServer {
|
||||
let (rx, tx) = futures_lite::io::split(stream);
|
||||
let vat = VatNetwork::new(rx, tx, Side::Server, Default::default());
|
||||
|
||||
let bootstrap: connection::Client = capnp_rpc::new_client(connection::BootCap::new(peer_addr, self.authentication.clone(), self.sessionmanager.clone()));
|
||||
let bootstrap: connection::Client = capnp_rpc::new_client(connection::BootCap::new(
|
||||
peer_addr,
|
||||
self.authentication.clone(),
|
||||
self.sessionmanager.clone(),
|
||||
));
|
||||
|
||||
if let Err(e) = RpcSystem::new(Box::new(vat), Some(bootstrap.client)).await {
|
||||
tracing::error!("Error during RPC handling: {}", e);
|
||||
|
@ -10,6 +10,4 @@ impl Permissions {
|
||||
}
|
||||
}
|
||||
|
||||
impl PermissionSystem for Permissions {
|
||||
|
||||
}
|
||||
impl PermissionSystem for Permissions {}
|
||||
|
@ -1,12 +1,10 @@
|
||||
use api::authenticationsystem_capnp::response::successful::Builder;
|
||||
use crate::authorization::permissions::Permission;
|
||||
|
||||
use api::authenticationsystem_capnp::response::successful::Builder;
|
||||
|
||||
use crate::capnp::machinesystem::Machines;
|
||||
use crate::capnp::permissionsystem::Permissions;
|
||||
use crate::capnp::user_system::Users;
|
||||
use crate::session::{SessionHandle};
|
||||
|
||||
use crate::session::SessionHandle;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct APISession;
|
||||
@ -39,4 +37,4 @@ impl APISession {
|
||||
b.set_info(capnp_rpc::new_client(Permissions::new(session)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
use crate::authorization::permissions::Permission;
|
||||
use crate::session::SessionHandle;
|
||||
use crate::users::{db, UserRef};
|
||||
use api::general_capnp::optional;
|
||||
use api::user_capnp::user::{self, admin, info, manage};
|
||||
use capnp::capability::Promise;
|
||||
use capnp_rpc::pry;
|
||||
use crate::session::SessionHandle;
|
||||
use api::user_capnp::user::{admin, info, manage, self};
|
||||
use api::general_capnp::optional;
|
||||
use crate::authorization::permissions::Permission;
|
||||
use crate::users::{db, UserRef};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct User {
|
||||
@ -22,7 +22,11 @@ impl User {
|
||||
Self::new(session, user)
|
||||
}
|
||||
|
||||
pub fn build_optional(session: &SessionHandle, user: Option<UserRef>, builder: optional::Builder<user::Owned>) {
|
||||
pub fn build_optional(
|
||||
session: &SessionHandle,
|
||||
user: Option<UserRef>,
|
||||
builder: optional::Builder<user::Owned>,
|
||||
) {
|
||||
if let Some(user) = user.and_then(|u| session.users.get_user(u.get_username())) {
|
||||
let builder = builder.init_just();
|
||||
Self::fill(&session, user, builder);
|
||||
@ -102,12 +106,18 @@ impl admin::Server for User {
|
||||
let rolename = pry!(pry!(pry!(param.get()).get_role()).get_name());
|
||||
|
||||
if let Some(_role) = self.session.roles.get(rolename) {
|
||||
let mut target = self.session.users.get_user(self.user.get_username()).unwrap();
|
||||
let mut target = self
|
||||
.session
|
||||
.users
|
||||
.get_user(self.user.get_username())
|
||||
.unwrap();
|
||||
|
||||
// Only update if needed
|
||||
if !target.userdata.roles.iter().any(|r| r.as_str() == rolename) {
|
||||
target.userdata.roles.push(rolename.to_string());
|
||||
self.session.users.put_user(self.user.get_username(), &target);
|
||||
self.session
|
||||
.users
|
||||
.put_user(self.user.get_username(), &target);
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,22 +131,24 @@ impl admin::Server for User {
|
||||
let rolename = pry!(pry!(pry!(param.get()).get_role()).get_name());
|
||||
|
||||
if let Some(_role) = self.session.roles.get(rolename) {
|
||||
let mut target = self.session.users.get_user(self.user.get_username()).unwrap();
|
||||
let mut target = self
|
||||
.session
|
||||
.users
|
||||
.get_user(self.user.get_username())
|
||||
.unwrap();
|
||||
|
||||
// Only update if needed
|
||||
if target.userdata.roles.iter().any(|r| r.as_str() == rolename) {
|
||||
target.userdata.roles.retain(|r| r.as_str() != rolename);
|
||||
self.session.users.put_user(self.user.get_username(), &target);
|
||||
self.session
|
||||
.users
|
||||
.put_user(self.user.get_username(), &target);
|
||||
}
|
||||
}
|
||||
|
||||
Promise::ok(())
|
||||
}
|
||||
fn pwd(
|
||||
&mut self,
|
||||
_: admin::PwdParams,
|
||||
_: admin::PwdResults,
|
||||
) -> Promise<(), ::capnp::Error> {
|
||||
fn pwd(&mut self, _: admin::PwdParams, _: admin::PwdResults) -> Promise<(), ::capnp::Error> {
|
||||
Promise::err(::capnp::Error::unimplemented(
|
||||
"method not implemented".to_string(),
|
||||
))
|
||||
|
@ -1,15 +1,12 @@
|
||||
use api::usersystem_capnp::user_system::{info, manage, search};
|
||||
use capnp::capability::Promise;
|
||||
use capnp_rpc::pry;
|
||||
use api::usersystem_capnp::user_system::{
|
||||
info, manage, search
|
||||
};
|
||||
|
||||
use crate::capnp::user::User;
|
||||
|
||||
use crate::session::SessionHandle;
|
||||
use crate::users::{db, UserRef};
|
||||
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Users {
|
||||
session: SessionHandle,
|
||||
@ -40,7 +37,8 @@ impl manage::Server for Users {
|
||||
mut result: manage::GetUserListResults,
|
||||
) -> Promise<(), ::capnp::Error> {
|
||||
let userdb = self.session.users.into_inner();
|
||||
let users = pry!(userdb.get_all()
|
||||
let users = pry!(userdb
|
||||
.get_all()
|
||||
.map_err(|e| capnp::Error::failed(format!("UserDB error: {:?}", e))));
|
||||
let mut builder = result.get().init_user_list(users.len() as u32);
|
||||
for (i, (_, user)) in users.into_iter().enumerate() {
|
||||
@ -113,4 +111,4 @@ impl search::Server for Users {
|
||||
User::build_optional(&self.session, Some(userref), result.get());
|
||||
Promise::ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user