use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SMBConfig { pub share_name: String, pub path: String, pub comment: String, pub read_only: bool, pub browseable: bool, pub allow_users: Vec, } impl Default for SMBConfig { fn default() -> Self { SMBConfig { share_name: "markbase".to_string(), path: "/Users/accusys/momentry/var/sftpgo/data".to_string(), comment: "MarkBase File Sharing".to_string(), read_only: false, browseable: true, allow_users: vec!["accusys".to_string()], } } } impl SMBConfig { pub fn new(share_name: String, path: String) -> Self { SMBConfig { share_name, path, comment: "MarkBase File Sharing".to_string(), read_only: false, browseable: true, allow_users: vec!["accusys".to_string()], } } pub fn to_smb_conf(&self) -> String { format!( "[{}]\n path = {}\n comment = {}\n read only = {}\n browseable = {}\n valid users = {}\n", self.share_name, self.path, self.comment, if self.read_only { "yes" } else { "no" }, if self.browseable { "yes" } else { "no" }, self.allow_users.join(", ") ) } }