mirror of
https://git.proxmox.com/git/proxmox
synced 2025-10-04 21:51:29 +00:00
rest-server: add custom handlebars escape fn
Add a custom handlebars escape function. It's nearly identical to the default `html_escape` fn [0], but it does not escape the '='. This is needed to support base64 encoded values. [0]: https://docs.rs/handlebars/latest/handlebars/fn.html_escape.html Signed-off-by: Gabriel Goller <g.goller@proxmox.com> [ TL: use full width for comment ] Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
072ca695f5
commit
34e307461b
@ -62,7 +62,7 @@ impl ApiConfig {
|
|||||||
privileged_addr: None,
|
privileged_addr: None,
|
||||||
|
|
||||||
#[cfg(feature = "templates")]
|
#[cfg(feature = "templates")]
|
||||||
templates: Default::default(),
|
templates: templates::Templates::with_escape_fn(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,6 +335,31 @@ mod templates {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Templates {
|
impl Templates {
|
||||||
|
pub fn with_escape_fn() -> Templates {
|
||||||
|
let mut registry = Handlebars::new();
|
||||||
|
// This is the same as the default `html_escape` fn in handlebars, **but** it does not
|
||||||
|
// escape the '='. This is to preserve base64 values.
|
||||||
|
registry.register_escape_fn(|value| {
|
||||||
|
let mut output = String::new();
|
||||||
|
for c in value.chars() {
|
||||||
|
match c {
|
||||||
|
'<' => output.push_str("<"),
|
||||||
|
'>' => output.push_str(">"),
|
||||||
|
'"' => output.push_str("""),
|
||||||
|
'&' => output.push_str("&"),
|
||||||
|
'\'' => output.push_str("'"),
|
||||||
|
'`' => output.push_str("`"),
|
||||||
|
_ => output.push(c),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output
|
||||||
|
});
|
||||||
|
Self {
|
||||||
|
templates: RwLock::new(registry),
|
||||||
|
template_files: RwLock::new(HashMap::new()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn register<P>(&self, name: &str, path: P) -> Result<(), Error>
|
pub fn register<P>(&self, name: &str, path: P) -> Result<(), Error>
|
||||||
where
|
where
|
||||||
P: Into<PathBuf>,
|
P: Into<PathBuf>,
|
||||||
|
Loading…
Reference in New Issue
Block a user