3 unstable releases
0.2.1 | May 18, 2024 |
---|---|
0.2.0 | Sep 17, 2023 |
0.1.0 | Sep 9, 2023 |
#1333 in Network programming
32 downloads per month
Used in unftp
15KB
312 lines
unftp-sbe-rooter
A libunftp wrapper storage back-end that roots a user to a specific home directory. See the docs to get started.
lib.rs
:
A libunftp wrapper storage back-end that roots a user to a specific home directory.
Quick start
Start by implementing the libunftp UserDetail
trait
and then follow that by implementing UserWithRoot
.
use libunftp::auth::UserDetail;
use unftp_sbe_rooter::UserWithRoot;
use std::fmt::Formatter;
use std::path::{Path, PathBuf};
#[derive(Debug, PartialEq, Eq)]
pub struct User {
pub username: String,
pub root: Option<PathBuf>,
}
impl UserDetail for User {
fn account_enabled(&self) -> bool {
true
}
}
impl std::fmt::Display for User {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "User(username: {:?}", self.username,)
}
}
impl UserWithRoot for User {
fn user_root(&self) -> Option<PathBuf> {
self.root.clone()
}
}
// Return type omited for brevity.
fn create_rooted_storage_backend() {
use unftp_sbe_fs::{Filesystem, Meta};
let _backend = Box::new(move || {
unftp_sbe_rooter::RooterVfs::<Filesystem, User, Meta>::new(Filesystem::new("/srv/ftp"))
});
}
Dependencies
~21–32MB
~579K SLoC