check if brand logo is a valid resource

This commit is contained in:
blek 2023-11-04 14:26:59 +10:00
parent 8aaae66677
commit 33af28da8a
Signed by: blek
GPG Key ID: 14546221E3595D0C
3 changed files with 24 additions and 6 deletions

View File

@ -93,3 +93,14 @@ upload=false
# Whether curlapi is enabled
# curl {url}/curlapi/help for more info
curlapi=true
# Resources section
# Define your resources like this:
# [resources."org.name.logo"]
# Make sure that this path exists within the fileD filesystem
# path="/some/place"
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
# mime="image/webp"

View File

@ -19,6 +19,10 @@ impl ResourceCollection {
}
Ok(())
}
pub fn get<T: Into<String>>(self: &Self, key: T) -> Option<&Resource> {
self.0.get(&key.into())
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]

View File

@ -148,11 +148,14 @@ impl FilesPolicy {
}
impl Branding {
fn validate(self: &Self) -> Result<(), String> {
if let Some(logo_path) = self.custom_logo.clone() {
let logo_path = Path::new(&logo_path);
if ! logo_path.is_file() {
return Err("Config parameter branding.custom_logo is not a file. It must be a valid path that should be accessible from fileD's filesystem".into())
fn validate(self: &Self, conf: &Config) -> Result<(), String> {
if let Some(logo_id) = self.custom_logo.clone() {
if let Some(ref resources) = conf.resources {
if resources.get(&logo_id).is_none() {
return Err(format!("Brand logo is set to a non existant resource ({logo_id})"));
}
} else {
return Err("Brand logo specified but no resources found".into())
}
}
Ok(())
@ -177,11 +180,11 @@ impl Config {
pub fn validate(self: &Self) -> Result<(), String> {
self.files.validate()?;
self.brand.validate()?;
self.api .validate()?;
if let Some(resources) = self.resources.clone() {
resources.validate()?;
}
self.brand.validate(self)?;
Ok(())
}