1
0
mirror of https://github.com/drakkan/sftpgo.git synced 2025-11-29 22:08:10 +02:00

web: log an error if loading a required template fails

We used template.Must that panics if an error happen but the error is
visible only if sftpgo is started in an interactive way

Fixes #82
This commit is contained in:
Nicola Murino
2020-03-02 09:34:13 +01:00
parent 833b702b90
commit 3ffddcba92
2 changed files with 17 additions and 4 deletions

View File

@@ -98,10 +98,10 @@ func loadTemplates(templatesPath string) {
filepath.Join(templatesPath, templateBase), filepath.Join(templatesPath, templateBase),
filepath.Join(templatesPath, templateMessage), filepath.Join(templatesPath, templateMessage),
} }
usersTmpl := template.Must(template.ParseFiles(usersPaths...)) usersTmpl := utils.LoadTemplate(template.ParseFiles(usersPaths...))
userTmpl := template.Must(template.ParseFiles(userPaths...)) userTmpl := utils.LoadTemplate(template.ParseFiles(userPaths...))
connectionsTmpl := template.Must(template.ParseFiles(connectionsPaths...)) connectionsTmpl := utils.LoadTemplate(template.ParseFiles(connectionsPaths...))
messageTmpl := template.Must(template.ParseFiles(messagePath...)) messageTmpl := utils.LoadTemplate(template.ParseFiles(messagePath...))
templates[templateUsers] = usersTmpl templates[templateUsers] = usersTmpl
templates[templateUser] = userTmpl templates[templateUser] = userTmpl

View File

@@ -13,6 +13,7 @@ import (
"encoding/pem" "encoding/pem"
"errors" "errors"
"fmt" "fmt"
"html/template"
"io" "io"
"io/ioutil" "io/ioutil"
"net" "net"
@@ -22,6 +23,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/drakkan/sftpgo/logger"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
) )
@@ -275,3 +277,14 @@ func CleanSFTPPath(p string) string {
} }
return path.Clean(sftpPath) return path.Clean(sftpPath)
} }
// LoadTemplate wraps a call to a function returning (*Template, error)
// it is just like template.Must but it writes a log before exiting
func LoadTemplate(t *template.Template, err error) *template.Template {
if err != nil {
logger.ErrorToConsole("error loading required template: %v", err)
logger.Error(logSender, "", "error loading required template: %v", err)
panic(err)
}
return t
}