4 releases
Uses new Rust 2024
| 0.1.3 | Apr 25, 2025 |
|---|---|
| 0.1.2 | May 18, 2024 |
| 0.1.1 | Sep 17, 2023 |
| 0.1.0 | Sep 13, 2023 |
#1638 in Network programming
Used in unftp
23KB
225 lines
A libunftp wrapper storage back-end that restricts FTP operations and in so doing provide some form of authorization.
Quick start
Start by implementing the libunftp UserDetail trait
and then follow that by implementing UserWithPermissions.
Finally call the RestrictingVfs::new() method.
use libunftp::auth::UserDetail;
use unftp_sbe_restrict::{UserWithPermissions, VfsOperations};
use std::fmt::Formatter;
#[derive(Debug, PartialEq, Eq)]
pub struct User {
pub username: String,
// e.g. this can be something like
// `VfsOperations::all() - VfsOperations::PUT - VfsOperations::DEL`
pub permissions: VfsOperations,
}
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 UserWithPermissions for User {
fn permissions(&self) -> VfsOperations {
self.permissions
}
}
// Return type omited for brevity.
fn create_restricted_storage_backend() {
use unftp_sbe_fs::{Filesystem, Meta};
let _backend = Box::new(move || {
unftp_sbe_restrict::RestrictingVfs::<Filesystem, User, Meta>::new(Filesystem::new("/srv/ftp"))
});
}
unftp-sbe-restrict
A libunftp wrapper storage back-end that restricts FTP operations and in so doing provide some form of authorization. See the docs to get started.
Dependencies
~23–52MB
~1M SLoC