Merge branch 'main' of github.com:binwiederhier/ntfy into predefined-users
This commit is contained in:
@@ -1002,12 +1002,10 @@ func (s *Server) parsePublishParams(r *http.Request, m *message) (cache bool, fi
|
|||||||
return false, false, "", "", "", false, errHTTPBadRequestPhoneNumberInvalid
|
return false, false, "", "", "", false, errHTTPBadRequestPhoneNumberInvalid
|
||||||
}
|
}
|
||||||
template = templateMode(readParam(r, "x-template", "template", "tpl"))
|
template = templateMode(readParam(r, "x-template", "template", "tpl"))
|
||||||
var messageStr string
|
messageStr := readParam(r, "x-message", "message", "m")
|
||||||
if template.Enabled() && template.Name() == "" {
|
if !template.InlineMode() {
|
||||||
// don't convert "\n" to literal newline for inline templates
|
// Convert "\n" to literal newline everything but inline mode
|
||||||
messageStr = readParam(r, "x-message", "message", "m")
|
messageStr = strings.ReplaceAll(messageStr, "\\n", "\n")
|
||||||
} else {
|
|
||||||
messageStr = strings.ReplaceAll(readParam(r, "x-message", "message", "m"), "\\n", "\n")
|
|
||||||
}
|
}
|
||||||
if messageStr != "" {
|
if messageStr != "" {
|
||||||
m.Message = messageStr
|
m.Message = messageStr
|
||||||
@@ -1135,8 +1133,8 @@ func (s *Server) handleBodyAsTemplatedTextMessage(m *message, template templateM
|
|||||||
return errHTTPEntityTooLargeJSONBody
|
return errHTTPEntityTooLargeJSONBody
|
||||||
}
|
}
|
||||||
peekedBody := strings.TrimSpace(string(body.PeekedBytes))
|
peekedBody := strings.TrimSpace(string(body.PeekedBytes))
|
||||||
if templateName := template.Name(); templateName != "" {
|
if template.FileMode() {
|
||||||
if err := s.renderTemplateFromFile(m, templateName, peekedBody); err != nil {
|
if err := s.renderTemplateFromFile(m, template.FileName(), peekedBody); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -245,19 +245,46 @@ func (q *queryFilter) Pass(msg *message) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// templateMode represents the mode in which templates are used
|
||||||
|
//
|
||||||
|
// It can be
|
||||||
|
// - empty: templating is disabled
|
||||||
|
// - a boolean string (yes/1/true/no/0/false): inline-templating mode
|
||||||
|
// - a filename (e.g. grafana): template mode with a file
|
||||||
type templateMode string
|
type templateMode string
|
||||||
|
|
||||||
|
// Enabled returns true if templating is enabled
|
||||||
func (t templateMode) Enabled() bool {
|
func (t templateMode) Enabled() bool {
|
||||||
return t != ""
|
return t != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t templateMode) Name() string {
|
// InlineMode returns true if inline-templating mode is enabled
|
||||||
if isBoolValue(string(t)) {
|
func (t templateMode) InlineMode() bool {
|
||||||
return ""
|
return t.Enabled() && isBoolValue(string(t))
|
||||||
}
|
|
||||||
return string(t)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FileMode returns true if file-templating mode is enabled
|
||||||
|
func (t templateMode) FileMode() bool {
|
||||||
|
return t.Enabled() && !isBoolValue(string(t))
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileName returns the filename if file-templating mode is enabled, or an empty string otherwise
|
||||||
|
func (t templateMode) FileName() string {
|
||||||
|
if t.FileMode() {
|
||||||
|
return string(t)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// templateFile represents a template file with title and message
|
||||||
|
// It is used for file-based templates, e.g. grafana, influxdb, etc.
|
||||||
|
//
|
||||||
|
// Example YAML:
|
||||||
|
//
|
||||||
|
// title: "Alert: {{ .Title }}"
|
||||||
|
// message: |
|
||||||
|
// This is a {{ .Type }} alert.
|
||||||
|
// It can be multiline.
|
||||||
type templateFile struct {
|
type templateFile struct {
|
||||||
Title *string `yaml:"title"`
|
Title *string `yaml:"title"`
|
||||||
Message *string `yaml:"message"`
|
Message *string `yaml:"message"`
|
||||||
|
|||||||
Reference in New Issue
Block a user