From 9f26422592ced7ea50d6e2601ec14981db86312f Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 19 Aug 2020 12:22:32 +0200 Subject: [PATCH] Escape user/network/entity characters in log file path ZNC replaces slashes and backslashes with a dashes. --- logger.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/logger.go b/logger.go index f6a455e..ca2e3b5 100644 --- a/logger.go +++ b/logger.go @@ -28,14 +28,15 @@ func newMessageLogger(network *network, entity string) *messageLogger { } } +var escapeFilename = strings.NewReplacer("/", "-", "\\", "-") + func logPath(network *network, entity string, t time.Time) string { user := network.user srv := user.srv - // TODO: handle/forbid network/entity names with illegal path characters year, month, day := t.Date() filename := fmt.Sprintf("%04d-%02d-%02d.log", year, month, day) - return filepath.Join(srv.LogPath, user.Username, network.GetName(), entity, filename) + return filepath.Join(srv.LogPath, escapeFilename.Replace(user.Username), escapeFilename.Replace(network.GetName()), escapeFilename.Replace(entity), filename) } func (ml *messageLogger) Append(msg *irc.Message) error {