diff --git a/internal/glance/config-fields.go b/internal/glance/config-fields.go index e2ece3f..cd244e5 100644 --- a/internal/glance/config-fields.go +++ b/internal/glance/config-fields.go @@ -3,6 +3,7 @@ package glance import ( "crypto/tls" "fmt" + "html/template" "net/http" "net/url" "regexp" @@ -115,7 +116,7 @@ func (d *durationField) UnmarshalYAML(node *yaml.Node) error { } type customIconField struct { - URL string + URL template.URL IsFlatIcon bool // TODO: along with whether the icon is flat, we also need to know // whether the icon is black or white by default in order to properly @@ -127,13 +128,13 @@ func newCustomIconField(value string) customIconField { prefix, icon, found := strings.Cut(value, ":") if !found { - field.URL = value + field.URL = template.URL(value) return field } switch prefix { case "si": - field.URL = "https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/" + icon + ".svg" + field.URL = template.URL("https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/" + icon + ".svg") field.IsFlatIcon = true case "di", "sh": // syntax: di:[.svg|.png] @@ -152,12 +153,12 @@ func newCustomIconField(value string) customIconField { } if prefix == "di" { - field.URL = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/" + ext + "/" + basename + "." + ext + field.URL = template.URL("https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/" + ext + "/" + basename + "." + ext) } else { - field.URL = "https://cdn.jsdelivr.net/gh/selfhst/icons/" + ext + "/" + basename + "." + ext + field.URL = template.URL("https://cdn.jsdelivr.net/gh/selfhst/icons/" + ext + "/" + basename + "." + ext) } default: - field.URL = value + field.URL = template.URL(value) } return field diff --git a/internal/glance/templates/bookmarks.html b/internal/glance/templates/bookmarks.html index 1db21c0..1952cdb 100644 --- a/internal/glance/templates/bookmarks.html +++ b/internal/glance/templates/bookmarks.html @@ -13,7 +13,7 @@
{{- if ne "" .Icon.URL }}
- +
{{- end }} {{ .Title }}