mirror of
https://gitlab.com/fabinfra/fabaccess/bffh.git
synced 2024-11-13 02:37:58 +01:00
Fixes all those unused import warnings
This commit is contained in:
parent
fbc661f478
commit
26f1de1907
@ -1,14 +1,12 @@
|
|||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::task::{Poll, Context};
|
use std::task::{Poll, Context};
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::Mutex;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
|
||||||
use smol::Executor;
|
use futures::{future::BoxFuture, Stream};
|
||||||
|
|
||||||
use futures::{future::BoxFuture, Stream, StreamExt};
|
|
||||||
use futures::channel::mpsc;
|
use futures::channel::mpsc;
|
||||||
use futures_signals::signal::{Signal, MutableSignalCloned, MutableSignal, Mutable};
|
use futures_signals::signal::Signal;
|
||||||
|
|
||||||
use crate::db::machine::MachineState;
|
use crate::db::machine::MachineState;
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use slog::Logger;
|
|
||||||
|
|
||||||
use capnp::capability::{Params, Results, Promise};
|
use capnp::capability::{Params, Results, Promise};
|
||||||
|
|
||||||
use crate::schema::connection_capnp;
|
use crate::schema::connection_capnp;
|
||||||
@ -9,8 +7,6 @@ use crate::connection::Session;
|
|||||||
|
|
||||||
use crate::db::Databases;
|
use crate::db::Databases;
|
||||||
|
|
||||||
use crate::builtin;
|
|
||||||
|
|
||||||
use crate::network::Network;
|
use crate::network::Network;
|
||||||
|
|
||||||
pub mod auth;
|
pub mod auth;
|
||||||
|
@ -5,8 +5,6 @@
|
|||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use slog::Logger;
|
|
||||||
|
|
||||||
use rsasl::{
|
use rsasl::{
|
||||||
SASL,
|
SASL,
|
||||||
Property,
|
Property,
|
||||||
@ -21,9 +19,6 @@ use serde::{Serialize, Deserialize};
|
|||||||
|
|
||||||
use capnp::capability::{Params, Results, Promise};
|
use capnp::capability::{Params, Results, Promise};
|
||||||
|
|
||||||
use crate::error::Result;
|
|
||||||
use crate::config::Settings;
|
|
||||||
|
|
||||||
use crate::api::Session;
|
use crate::api::Session;
|
||||||
|
|
||||||
pub use crate::schema::auth_capnp;
|
pub use crate::schema::auth_capnp;
|
||||||
|
@ -7,7 +7,6 @@ use crate::schema::api_capnp::machines;
|
|||||||
use crate::connection::Session;
|
use crate::connection::Session;
|
||||||
|
|
||||||
use crate::db::Databases;
|
use crate::db::Databases;
|
||||||
use crate::db::machine::uuid_from_api;
|
|
||||||
|
|
||||||
use crate::network::Network;
|
use crate::network::Network;
|
||||||
|
|
||||||
|
@ -1,12 +1,5 @@
|
|||||||
use std::collections::HashMap;
|
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use crate::db::access::{
|
use crate::db::access::Permission;
|
||||||
Permission,
|
|
||||||
PermissionBuf,
|
|
||||||
PermRule,
|
|
||||||
RoleIdentifier,
|
|
||||||
Role,
|
|
||||||
};
|
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref AUTH_PERM: &'static Permission = Permission::new("bffh.auth");
|
static ref AUTH_PERM: &'static Permission = Permission::new("bffh.auth");
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
use std::str::FromStr;
|
use std::path::Path;
|
||||||
use std::path::{Path, PathBuf};
|
|
||||||
use std::io::Read;
|
|
||||||
use std::fs;
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Serialize, Deserialize};
|
||||||
|
@ -6,8 +6,7 @@ use slog::Logger;
|
|||||||
|
|
||||||
use smol::net::TcpStream;
|
use smol::net::TcpStream;
|
||||||
|
|
||||||
use crate::error::{Error, Result};
|
use crate::error::Result;
|
||||||
use crate::api::auth;
|
|
||||||
use crate::api::Bootstrap;
|
use crate::api::Bootstrap;
|
||||||
|
|
||||||
use capnp_rpc::{twoparty, rpc_twoparty_capnp};
|
use capnp_rpc::{twoparty, rpc_twoparty_capnp};
|
||||||
@ -17,7 +16,6 @@ use crate::schema::connection_capnp;
|
|||||||
use crate::db::Databases;
|
use crate::db::Databases;
|
||||||
use crate::db::access::{AccessControl, Permission};
|
use crate::db::access::{AccessControl, Permission};
|
||||||
use crate::db::user::User;
|
use crate::db::user::User;
|
||||||
use crate::builtin;
|
|
||||||
use crate::network::Network;
|
use crate::network::Network;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -5,7 +5,7 @@ use std::str::FromStr;
|
|||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
use crate::config::Settings;
|
use crate::config::Config;
|
||||||
|
|
||||||
/// (Hashed) password database
|
/// (Hashed) password database
|
||||||
pub mod pass;
|
pub mod pass;
|
||||||
@ -34,7 +34,7 @@ pub struct Databases {
|
|||||||
const LMDB_MAX_DB: u32 = 16;
|
const LMDB_MAX_DB: u32 = 16;
|
||||||
|
|
||||||
impl Databases {
|
impl Databases {
|
||||||
pub fn new(log: &Logger, config: &Settings) -> Result<Self> {
|
pub fn new(log: &Logger, config: &Config) -> Result<Self> {
|
||||||
|
|
||||||
// Initialize the LMDB environment. This blocks until the mmap() finishes
|
// Initialize the LMDB environment. This blocks until the mmap() finishes
|
||||||
info!(log, "LMDB env");
|
info!(log, "LMDB env");
|
||||||
|
@ -2,29 +2,15 @@
|
|||||||
//!
|
//!
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::Path;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::Write;
|
|
||||||
use std::sync::Arc;
|
|
||||||
use std::iter::FromIterator;
|
use std::iter::FromIterator;
|
||||||
use std::convert::{TryFrom, Into};
|
use std::convert::{TryFrom, Into};
|
||||||
|
|
||||||
use flexbuffers;
|
use serde::{Serialize, Deserialize};
|
||||||
use serde::{
|
|
||||||
Serialize,
|
|
||||||
Serializer,
|
|
||||||
|
|
||||||
Deserialize,
|
|
||||||
Deserializer,
|
|
||||||
};
|
|
||||||
|
|
||||||
use slog::Logger;
|
|
||||||
use lmdb::{Environment, Transaction, RwTransaction, Cursor};
|
|
||||||
|
|
||||||
use crate::config::Settings;
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
|
|
||||||
pub mod internal;
|
pub mod internal;
|
||||||
@ -77,7 +63,7 @@ impl fmt::Debug for AccessControl {
|
|||||||
pub trait RoleDB {
|
pub trait RoleDB {
|
||||||
fn get_type_name(&self) -> &'static str;
|
fn get_type_name(&self) -> &'static str;
|
||||||
|
|
||||||
fn get_role(&self, roleID: &RoleIdentifier) -> Result<Option<Role>>;
|
fn get_role(&self, role_id: &RoleIdentifier) -> Result<Option<Role>>;
|
||||||
|
|
||||||
/// Check if a given user has the given permission
|
/// Check if a given user has the given permission
|
||||||
///
|
///
|
||||||
@ -95,8 +81,8 @@ pub trait RoleDB {
|
|||||||
fn check_roles(&self, roles: &[RoleIdentifier], perm: &Permission) -> Result<bool> {
|
fn check_roles(&self, roles: &[RoleIdentifier], perm: &Permission) -> Result<bool> {
|
||||||
// Tally all roles. Makes dependent roles easier
|
// Tally all roles. Makes dependent roles easier
|
||||||
let mut roleset = HashMap::new();
|
let mut roleset = HashMap::new();
|
||||||
for roleID in roles {
|
for role_id in roles {
|
||||||
self.tally_role(&mut roleset, roleID)?;
|
self.tally_role(&mut roleset, role_id)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iter all unique role->permissions we've found and early return on match.
|
// Iter all unique role->permissions we've found and early return on match.
|
||||||
@ -115,16 +101,16 @@ pub trait RoleDB {
|
|||||||
///
|
///
|
||||||
/// A Default implementation exists which adapter may overwrite with more efficient
|
/// A Default implementation exists which adapter may overwrite with more efficient
|
||||||
/// implementations.
|
/// implementations.
|
||||||
fn tally_role(&self, roles: &mut HashMap<RoleIdentifier, Role>, roleID: &RoleIdentifier) -> Result<()> {
|
fn tally_role(&self, roles: &mut HashMap<RoleIdentifier, Role>, role_id: &RoleIdentifier) -> Result<()> {
|
||||||
if let Some(role) = self.get_role(roleID)? {
|
if let Some(role) = self.get_role(role_id)? {
|
||||||
// Only check and tally parents of a role at the role itself if it's the first time we
|
// Only check and tally parents of a role at the role itself if it's the first time we
|
||||||
// see it
|
// see it
|
||||||
if !roles.contains_key(&roleID) {
|
if !roles.contains_key(&role_id) {
|
||||||
for parent in role.parents.iter() {
|
for parent in role.parents.iter() {
|
||||||
self.tally_role(roles, parent)?;
|
self.tally_role(roles, parent)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
roles.insert(roleID.clone(), role);
|
roles.insert(role_id.clone(), role);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,23 +1,18 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use std::convert::TryInto;
|
use std::path::Path;
|
||||||
|
|
||||||
use std::path::{Path, PathBuf};
|
|
||||||
use std::fs;
|
|
||||||
use std::io::Write;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use flexbuffers;
|
use flexbuffers;
|
||||||
use serde::{Serialize, Deserialize};
|
|
||||||
|
|
||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
use lmdb::{Environment, Transaction, RwTransaction, Cursor, Iter};
|
use lmdb::{Environment, Transaction, RwTransaction, Cursor};
|
||||||
|
|
||||||
use crate::config::Settings;
|
use crate::config::Settings;
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
|
|
||||||
use crate::db::access::{Permission, Role, RoleIdentifier, RoleDB};
|
use crate::db::access::{Permission, Role, RoleIdentifier, RoleDB};
|
||||||
use crate::db::user::{User, UserData};
|
use crate::db::user::UserData;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Internal {
|
pub struct Internal {
|
||||||
@ -39,9 +34,9 @@ impl Internal {
|
|||||||
debug!(self.log, "Checking user {:?} for permission {:?}", user, perm.as_ref());
|
debug!(self.log, "Checking user {:?} for permission {:?}", user, perm.as_ref());
|
||||||
// Tally all roles. Makes dependent roles easier
|
// Tally all roles. Makes dependent roles easier
|
||||||
let mut roles = HashMap::new();
|
let mut roles = HashMap::new();
|
||||||
for roleID in user.roles.iter() {
|
for role_id in user.roles.iter() {
|
||||||
debug!(self.log, "Tallying role {} for its parents", roleID);
|
debug!(self.log, "Tallying role {} for its parents", role_id);
|
||||||
self._tally_role(txn, &mut roles, roleID)?;
|
self._tally_role(txn, &mut roles, role_id)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iter all unique role->permissions we've found and early return on match.
|
// Iter all unique role->permissions we've found and early return on match.
|
||||||
@ -62,26 +57,26 @@ impl Internal {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn _tally_role<T: Transaction>(&self, txn: &T, roles: &mut HashMap<RoleIdentifier, Role>, roleID: &RoleIdentifier) -> Result<()> {
|
fn _tally_role<T: Transaction>(&self, txn: &T, roles: &mut HashMap<RoleIdentifier, Role>, role_id: &RoleIdentifier) -> Result<()> {
|
||||||
if let Some(role) = self._get_role(txn, roleID)? {
|
if let Some(role) = self._get_role(txn, role_id)? {
|
||||||
// Only check and tally parents of a role at the role itself if it's the first time we
|
// Only check and tally parents of a role at the role itself if it's the first time we
|
||||||
// see it
|
// see it
|
||||||
if !roles.contains_key(&roleID) {
|
if !roles.contains_key(&role_id) {
|
||||||
for parent in role.parents.iter() {
|
for parent in role.parents.iter() {
|
||||||
self._tally_role(txn, roles, parent)?;
|
self._tally_role(txn, roles, parent)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
roles.insert(roleID.clone(), role);
|
roles.insert(role_id.clone(), role);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
info!(self.log, "Did not find role {} while trying to tally", roleID);
|
info!(self.log, "Did not find role {} while trying to tally", role_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _get_role<'txn, T: Transaction>(&self, txn: &'txn T, roleID: &RoleIdentifier) -> Result<Option<Role>> {
|
pub fn _get_role<'txn, T: Transaction>(&self, txn: &'txn T, role_id: &RoleIdentifier) -> Result<Option<Role>> {
|
||||||
let string = format!("{}", roleID);
|
let string = format!("{}", role_id);
|
||||||
match txn.get(self.roledb, &string.as_bytes()) {
|
match txn.get(self.roledb, &string.as_bytes()) {
|
||||||
Ok(bytes) => {
|
Ok(bytes) => {
|
||||||
Ok(Some(flexbuffers::from_slice(bytes)?))
|
Ok(Some(flexbuffers::from_slice(bytes)?))
|
||||||
@ -91,9 +86,9 @@ impl Internal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn put_role(&self, txn: &mut RwTransaction, roleID: &RoleIdentifier, role: Role) -> Result<()> {
|
fn put_role(&self, txn: &mut RwTransaction, role_id: &RoleIdentifier, role: Role) -> Result<()> {
|
||||||
let bytes = flexbuffers::to_vec(role)?;
|
let bytes = flexbuffers::to_vec(role)?;
|
||||||
let string = format!("{}", roleID);
|
let string = format!("{}", role_id);
|
||||||
txn.put(self.roledb, &string.as_bytes(), &bytes, lmdb::WriteFlags::empty())?;
|
txn.put(self.roledb, &string.as_bytes(), &bytes, lmdb::WriteFlags::empty())?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -154,14 +149,14 @@ impl RoleDB for Internal {
|
|||||||
self._check(&txn, user, &perm)
|
self._check(&txn, user, &perm)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_role(&self, roleID: &RoleIdentifier) -> Result<Option<Role>> {
|
fn get_role(&self, role_id: &RoleIdentifier) -> Result<Option<Role>> {
|
||||||
let txn = self.env.begin_ro_txn()?;
|
let txn = self.env.begin_ro_txn()?;
|
||||||
self._get_role(&txn, roleID)
|
self._get_role(&txn, role_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tally_role(&self, roles: &mut HashMap<RoleIdentifier, Role>, roleID: &RoleIdentifier) -> Result<()> {
|
fn tally_role(&self, roles: &mut HashMap<RoleIdentifier, Role>, role_id: &RoleIdentifier) -> Result<()> {
|
||||||
let txn = self.env.begin_ro_txn()?;
|
let txn = self.env.begin_ro_txn()?;
|
||||||
self._tally_role(&txn, roles, roleID)
|
self._tally_role(&txn, roles, role_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,34 +1,14 @@
|
|||||||
use std::str::FromStr;
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::fs;
|
|
||||||
use std::fs::File;
|
|
||||||
use std::io::{Read, Write};
|
|
||||||
use std::path::{Path, PathBuf};
|
|
||||||
|
|
||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
|
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Serialize, Deserialize};
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use smol::lock::RwLock;
|
|
||||||
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
use crate::config::Settings;
|
use crate::config::Settings;
|
||||||
use crate::db::access;
|
|
||||||
|
|
||||||
use capnp::Error;
|
|
||||||
|
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use lmdb::{Transaction, RwTransaction, Cursor};
|
|
||||||
|
|
||||||
use smol::channel::{Receiver, Sender};
|
|
||||||
|
|
||||||
use futures::{Future, Stream, StreamExt};
|
|
||||||
use futures_signals::signal::*;
|
|
||||||
|
|
||||||
use crate::machine::MachineDescription;
|
|
||||||
|
|
||||||
use crate::db::user::UserId;
|
use crate::db::user::UserId;
|
||||||
|
|
||||||
pub mod internal;
|
pub mod internal;
|
||||||
|
@ -1,21 +1,10 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::fs;
|
|
||||||
use std::io::Write;
|
|
||||||
use std::str::FromStr;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use lmdb::{Environment, Transaction, RwTransaction, Cursor};
|
use lmdb::{Environment, Transaction, RwTransaction, Cursor};
|
||||||
|
|
||||||
use futures::{Future, Stream, StreamExt};
|
|
||||||
use futures::stream;
|
|
||||||
use futures::future::Ready;
|
|
||||||
use futures::stream::Iter;
|
|
||||||
|
|
||||||
use super::{MachineIdentifier, MachineState};
|
use super::{MachineIdentifier, MachineState};
|
||||||
use crate::machine::MachineDescription;
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
@ -4,8 +4,7 @@ use std::fs;
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use argon2;
|
use argon2;
|
||||||
use lmdb::{Environment, Transaction, RwTransaction, Cursor};
|
use lmdb::{Environment, Transaction, RwTransaction};
|
||||||
use rand::prelude::*;
|
|
||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
use lmdb::{Environment, Transaction, RwTransaction, Cursor};
|
use lmdb::{Environment, Cursor, Transaction, RwTransaction};
|
||||||
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
|
|
||||||
|
@ -3,17 +3,14 @@ use std::task::{Poll, Context};
|
|||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use smol::{Task, Timer};
|
use smol::Timer;
|
||||||
|
|
||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
|
|
||||||
use paho_mqtt::AsyncClient;
|
use paho_mqtt::AsyncClient;
|
||||||
|
|
||||||
use futures::FutureExt;
|
|
||||||
use futures::future::BoxFuture;
|
use futures::future::BoxFuture;
|
||||||
|
|
||||||
use genawaiter::{sync::{Gen, GenBoxed, Co}, GeneratorState};
|
|
||||||
|
|
||||||
use futures_signals::signal::{Signal, Mutable, MutableSignalCloned};
|
use futures_signals::signal::{Signal, Mutable, MutableSignalCloned};
|
||||||
use crate::machine::{Machine, ReturnToken};
|
use crate::machine::{Machine, ReturnToken};
|
||||||
use crate::db::machine::MachineState;
|
use crate::db::machine::MachineState;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
use slog::{Drain, Logger};
|
use slog::{Drain, Logger};
|
||||||
use slog_async;
|
use slog_async;
|
||||||
use slog_term::{TermDecorator, FullFormat};
|
use slog_term::{TermDecorator, FullFormat};
|
||||||
use crate::config::Settings;
|
|
||||||
|
|
||||||
pub fn init() -> Logger {
|
pub fn init() -> Logger {
|
||||||
let decorator = TermDecorator::new().build();
|
let decorator = TermDecorator::new().build();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::Deref;
|
||||||
use std::iter::FromIterator;
|
use std::iter::FromIterator;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use futures_util::lock::Mutex;
|
use futures_util::lock::Mutex;
|
||||||
@ -18,12 +18,10 @@ use futures_signals::signal::Signal;
|
|||||||
use futures_signals::signal::SignalExt;
|
use futures_signals::signal::SignalExt;
|
||||||
use futures_signals::signal::{Mutable, ReadOnlyMutable};
|
use futures_signals::signal::{Mutable, ReadOnlyMutable};
|
||||||
|
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use crate::error::{Result, Error};
|
use crate::error::{Result, Error};
|
||||||
|
|
||||||
use crate::db::access;
|
use crate::db::access;
|
||||||
use crate::db::machine::{MachineIdentifier, Status, MachineState};
|
use crate::db::machine::{MachineIdentifier, MachineState};
|
||||||
use crate::db::user::{User, UserData};
|
use crate::db::user::{User, UserData};
|
||||||
|
|
||||||
use crate::network::MachineMap;
|
use crate::network::MachineMap;
|
||||||
|
@ -24,12 +24,6 @@ mod initiator;
|
|||||||
|
|
||||||
use clap::{App, Arg};
|
use clap::{App, Arg};
|
||||||
|
|
||||||
use futures::prelude::*;
|
|
||||||
use futures::executor::{LocalPool, ThreadPool};
|
|
||||||
use futures::compat::Stream01CompatExt;
|
|
||||||
use futures::join;
|
|
||||||
use futures::task::LocalSpawn;
|
|
||||||
|
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
@ -37,9 +31,6 @@ use std::str::FromStr;
|
|||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use lmdb::Transaction;
|
|
||||||
use smol::net::TcpListener;
|
|
||||||
|
|
||||||
use smol::Executor;
|
use smol::Executor;
|
||||||
|
|
||||||
use error::Error;
|
use error::Error;
|
||||||
|
@ -5,13 +5,5 @@
|
|||||||
//! Additionally, FFI modules to other languages (Python/Lua/...) make the most sense in here as
|
//! Additionally, FFI modules to other languages (Python/Lua/...) make the most sense in here as
|
||||||
//! well.
|
//! well.
|
||||||
|
|
||||||
use slog::Logger;
|
|
||||||
|
|
||||||
mod shelly;
|
mod shelly;
|
||||||
pub use shelly::Shelly;
|
pub use shelly::Shelly;
|
||||||
|
|
||||||
use futures::prelude::*;
|
|
||||||
use futures::task::Spawn;
|
|
||||||
|
|
||||||
use crate::config::Settings;
|
|
||||||
use crate::error::Result;
|
|
||||||
|
@ -1,17 +1,9 @@
|
|||||||
use slog::Logger;
|
use slog::Logger;
|
||||||
|
|
||||||
use crate::config::Settings;
|
|
||||||
use crate::error::Result;
|
|
||||||
use crate::db::machine::Status;
|
use crate::db::machine::Status;
|
||||||
|
|
||||||
use std::pin::Pin;
|
|
||||||
use futures::prelude::*;
|
use futures::prelude::*;
|
||||||
use futures::channel::mpsc;
|
|
||||||
use futures::future::BoxFuture;
|
use futures::future::BoxFuture;
|
||||||
use futures::ready;
|
|
||||||
use futures::task::{Poll, Context, Waker, Spawn, FutureObj};
|
|
||||||
use futures::StreamExt;
|
|
||||||
use futures_signals::signal::Signal;
|
|
||||||
|
|
||||||
use crate::actor::Actuator;
|
use crate::actor::Actuator;
|
||||||
use crate::db::machine::MachineState;
|
use crate::db::machine::MachineState;
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use std::sync::{Arc, Mutex, MutexGuard, TryLockResult};
|
use std::sync::Mutex;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use smol::Executor;
|
|
||||||
|
|
||||||
use futures::channel::mpsc;
|
use futures::channel::mpsc;
|
||||||
use futures_signals::signal::{Signal, MutableSignalCloned, Mutable};
|
use futures_signals::signal::Mutable;
|
||||||
|
|
||||||
use crate::machine::Machine;
|
use crate::machine::Machine;
|
||||||
use crate::actor::{Actor, ActorSignal};
|
use crate::actor::ActorSignal;
|
||||||
use crate::initiator::Initiator;
|
|
||||||
use crate::db::machine::MachineState;
|
|
||||||
|
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
|
|
||||||
|
@ -9,18 +9,9 @@ use smol::net::TcpListener;
|
|||||||
use smol::net::unix::UnixStream;
|
use smol::net::unix::UnixStream;
|
||||||
use smol::LocalExecutor;
|
use smol::LocalExecutor;
|
||||||
|
|
||||||
use clap::{App, Arg};
|
|
||||||
|
|
||||||
use futures::prelude::*;
|
use futures::prelude::*;
|
||||||
use futures::executor::{LocalPool, ThreadPool};
|
|
||||||
use futures::compat::Stream01CompatExt;
|
|
||||||
use futures::join;
|
|
||||||
use futures::task::LocalSpawn;
|
|
||||||
|
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::Write;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::str::FromStr;
|
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user