diff --git a/server/server.go b/server/server.go index 771d430d..f0bbf42d 100644 --- a/server/server.go +++ b/server/server.go @@ -293,7 +293,7 @@ func (s *Server) Run() error { errChan <- s.httpServer.ListenAndServe() }() if s.config.ListenHTTPS != "" { - s.httpsServer = &http.Server{Addr: s.config.ListenHTTP, Handler: mux} + s.httpsServer = &http.Server{Addr: s.config.ListenHTTPS, Handler: mux} go func() { errChan <- s.httpsServer.ListenAndServeTLS(s.config.CertFile, s.config.KeyFile) }() @@ -479,7 +479,8 @@ func (s *Server) handlePublish(w http.ResponseWriter, r *http.Request, v *visito return err } m := newDefaultMessage(t.ID, "") - if !body.LimitReached && utf8.Valid(body.PeakedBytes) { + filename := readParam(r, "x-filename", "filename", "file", "f") + if filename == "" && !body.LimitReached && utf8.Valid(body.PeakedBytes) { m.Message = strings.TrimSpace(string(body.PeakedBytes)) } else if s.config.AttachmentCacheDir != "" { if err := s.writeAttachment(r, v, m, body); err != nil { diff --git a/util/util.go b/util/util.go index b806fd05..887443bf 100644 --- a/util/util.go +++ b/util/util.go @@ -18,10 +18,10 @@ const ( ) var ( - random = rand.New(rand.NewSource(time.Now().UnixNano())) - randomMutex = sync.Mutex{} - sizeStrRegex = regexp.MustCompile(`(?i)^(\d+)([gmkb])?$`) - + random = rand.New(rand.NewSource(time.Now().UnixNano())) + randomMutex = sync.Mutex{} + sizeStrRegex = regexp.MustCompile(`(?i)^(\d+)([gmkb])?$`) + extRegex = regexp.MustCompile(`^\.[-_A-Za-z0-9]+$`) errInvalidPriority = errors.New("invalid priority") ) @@ -175,7 +175,7 @@ func ExtensionByType(contentType string) string { return ".jpg" default: exts, err := mime.ExtensionsByType(contentType) - if err == nil && len(exts) > 0 { + if err == nil && len(exts) > 0 && extRegex.MatchString(exts[0]) { return exts[0] } return ".bin"