Struct unftp_sbe_restrict::RestrictingVfs
source · pub struct RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User>,
User: UserWithPermissions,
Meta: Metadata + Debug + Sync + Send,{ /* private fields */ }
Expand description
A virtual filesystem that checks if the user has permissions to do its operations before it delegates to another storage back-end.
Implementations§
source§impl<Delegate, User, Meta> RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User>,
User: UserWithPermissions,
Meta: Metadata + Debug + Sync + Send,
impl<Delegate, User, Meta> RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User>,
User: UserWithPermissions,
Meta: Metadata + Debug + Sync + Send,
sourcepub fn new(delegate: Delegate) -> Self
pub fn new(delegate: Delegate) -> Self
Creates a new instance of RestrictingVfs
.
Trait Implementations§
source§impl<Delegate, User, Meta> Debug for RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User> + Debug,
User: UserWithPermissions + Debug,
Meta: Metadata + Debug + Sync + Send + Debug,
impl<Delegate, User, Meta> Debug for RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User> + Debug,
User: UserWithPermissions + Debug,
Meta: Metadata + Debug + Sync + Send + Debug,
source§impl<Delegate, User, Meta> StorageBackend<User> for RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User>,
User: UserWithPermissions,
Meta: Metadata + Debug + Sync + Send,
impl<Delegate, User, Meta> StorageBackend<User> for RestrictingVfs<Delegate, User, Meta>where
Delegate: StorageBackend<User>,
User: UserWithPermissions,
Meta: Metadata + Debug + Sync + Send,
§type Metadata = <Delegate as StorageBackend<User>>::Metadata
type Metadata = <Delegate as StorageBackend<User>>::Metadata
The concrete type of the metadata used by this storage backend.
source§fn name(&self) -> &str
fn name(&self) -> &str
Implement to set the name of the storage back-end. By default it returns the type signature.
source§fn supported_features(&self) -> u32
fn supported_features(&self) -> u32
Tells which optional features are supported by the storage back-end
Return a value with bits set according to the FEATURE_* constants.
source§fn metadata<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<Self::Metadata>> + Send + 'async_trait>>
fn metadata<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<Self::Metadata>> + Send + 'async_trait>>
Returns the
Metadata
for the given file.source§fn md5<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
fn md5<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
Returns the MD5 hash for the given file. Read more
source§fn list<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<Vec<Fileinfo<PathBuf, Self::Metadata>>>> + Send + 'async_trait>>
fn list<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<Vec<Fileinfo<PathBuf, Self::Metadata>>>> + Send + 'async_trait>>
Returns the list of files in the given directory.
source§fn list_fmt<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<Cursor<Vec<u8>>>> + Send + 'async_trait>>
fn list_fmt<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<Cursor<Vec<u8>>>> + Send + 'async_trait>>
Returns some bytes that make up a directory listing that can immediately be sent to the client.
source§fn nlst<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<Cursor<Vec<u8>>, Error>> + Send + 'async_trait>>
fn nlst<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<Cursor<Vec<u8>>, Error>> + Send + 'async_trait>>
Returns some bytes that make up a NLST directory listing (only the basename) that can
immediately be sent to the client.
source§fn get_into<'a, 'life0, 'life1, 'async_trait, P, W>(
&'life0 self,
user: &'life1 User,
path: P,
start_pos: u64,
output: &'a mut W
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
fn get_into<'a, 'life0, 'life1, 'async_trait, P, W>( &'life0 self, user: &'life1 User, path: P, start_pos: u64, output: &'a mut W ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
Gets the content of the given FTP file from offset start_pos file by copying it to the output writer.
The starting position will only be greater than zero if the storage back-end implementation
advertises to support partial reads through the supported_features method i.e. the result
from supported_features yield 1 if a logical and operation is applied with FEATURE_RESTART.
source§fn get<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P,
start_pos: u64
) -> Pin<Box<dyn Future<Output = Result<Box<dyn AsyncRead + Send + Sync + Unpin>>> + Send + 'async_trait>>
fn get<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P, start_pos: u64 ) -> Pin<Box<dyn Future<Output = Result<Box<dyn AsyncRead + Send + Sync + Unpin>>> + Send + 'async_trait>>
Returns the content of the given file from offset start_pos.
The starting position will only be greater than zero if the storage back-end implementation
advertises to support partial reads through the supported_features method i.e. the result
from supported_features yield 1 if a logical and operation is applied with FEATURE_RESTART.
source§fn put<'life0, 'life1, 'async_trait, P, R>(
&'life0 self,
user: &'life1 User,
input: R,
path: P,
start_pos: u64
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
fn put<'life0, 'life1, 'async_trait, P, R>( &'life0 self, user: &'life1 User, input: R, path: P, start_pos: u64 ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
Writes bytes from the given reader to the specified path starting at offset start_pos in the file
source§fn del<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
fn del<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
Deletes the file at the given path.
source§fn mkd<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
fn mkd<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
Creates the given directory.
source§fn rename<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
from: P,
to: P
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
fn rename<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, from: P, to: P ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
Renames the given file to the given new filename.
source§fn rmd<'life0, 'life1, 'async_trait, P>(
&'life0 self,
user: &'life1 User,
path: P
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
fn rmd<'life0, 'life1, 'async_trait, P>( &'life0 self, user: &'life1 User, path: P ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
Deletes the given directory.
Auto Trait Implementations§
impl<Delegate, User, Meta> Freeze for RestrictingVfs<Delegate, User, Meta>where
Delegate: Freeze,
impl<Delegate, User, Meta> RefUnwindSafe for RestrictingVfs<Delegate, User, Meta>
impl<Delegate, User, Meta> Send for RestrictingVfs<Delegate, User, Meta>
impl<Delegate, User, Meta> Sync for RestrictingVfs<Delegate, User, Meta>
impl<Delegate, User, Meta> Unpin for RestrictingVfs<Delegate, User, Meta>
impl<Delegate, User, Meta> UnwindSafe for RestrictingVfs<Delegate, User, Meta>
Blanket Implementations§
source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more