unftp_sbe_fs/
ext.rs

1use crate::Filesystem;
2use libunftp::auth::DefaultUser;
3use libunftp::{Server, ServerBuilder};
4use std::path::PathBuf;
5
6/// Extension trait purely for construction convenience.
7pub trait ServerExt {
8    /// Create a new `Server` with the given filesystem root.
9    ///
10    /// # Example
11    ///
12    /// ```rust
13    /// use libunftp::Server;
14    /// use unftp_sbe_fs::ServerExt;
15    ///
16    /// let server = Server::with_fs("/srv/ftp");
17    /// ```
18    fn with_fs<P: Into<PathBuf> + Send + 'static>(path: P) -> ServerBuilder<Filesystem, DefaultUser> {
19        let p = path.into();
20        libunftp::ServerBuilder::new(Box::new(move || {
21            let p = &p.clone();
22            match Filesystem::new(p) {
23                Ok(fs) => fs,
24                Err(e) => panic!("Cannot open file system root {}: {}", p.display(), e),
25            }
26        }))
27    }
28}
29
30impl ServerExt for Server<Filesystem, DefaultUser> {}