diff --git a/CHANGELOG.md b/CHANGELOG.md index 5281d5b..8371a80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ Notable changes to Mailpit will be documented in this file. +## [v1.10.1] + +### Chore +- Use NextReader() instead of ReadMessage() for websocket reading ([#207](https://github.com/axllent/mailpit/issues/207)) + +### Fix +- Prevent JavaScript error if message is missing `From` header ([#209](https://github.com/axllent/mailpit/issues/209)) + +### Libs +- Update node modules +- Update Go modules + +### Swagger +- Revert BinaryResponse type to string + + ## [v1.10.0] ### Feature diff --git a/go.mod b/go.mod index 918a625..aaf72e8 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,12 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/axllent/semver v0.0.1 github.com/disintegration/imaging v1.6.2 - github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 + github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd github.com/google/uuid v1.4.0 github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.1 github.com/jhillyerd/enmime v1.0.1 - github.com/klauspost/compress v1.17.2 + github.com/klauspost/compress v1.17.3 github.com/leporo/sqlf v1.4.0 github.com/mhale/smtpd v0.8.0 github.com/reiver/go-telnet v0.0.0-20180421082511-9ff0b2ab096e @@ -60,7 +60,7 @@ require ( lukechampine.com/uint128 v1.3.0 // indirect modernc.org/cc/v3 v3.41.0 // indirect modernc.org/ccgo/v3 v3.16.15 // indirect - modernc.org/libc v1.32.0 // indirect + modernc.org/libc v1.34.5 // indirect modernc.org/mathutil v1.6.0 // indirect modernc.org/memory v1.7.2 // indirect modernc.org/opt v0.1.3 // indirect diff --git a/go.sum b/go.sum index eafa39b..3986015 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,8 @@ github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f h1:3BSP1Tbs2djlpprl7wCLuiqMaUh5SJkkzI2gDs+FgLs= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386 h1:EcQR3gusLHN46TAD+G+EbaaqJArt5vHhNpXAa12PQf4= -github.com/gomarkdown/markdown v0.0.0-20230922112808-5421fefb8386/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd h1:PppHBegd3uPZ3Y/Iax/2mlCFJm1w4Qf/zP1MdW4ju2o= +github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= @@ -72,8 +72,8 @@ github.com/jhillyerd/enmime v1.0.1 h1:y6RyqIgBOI2hIinOXIzmeB+ITRVls0zTJIm5GwgXnj github.com/jhillyerd/enmime v1.0.1/go.mod h1:LMMbm6oTlzWHghPavqHtOrP/NosVv3l42CUrZjn03/Q= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= -github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= @@ -218,8 +218,8 @@ modernc.org/ccgo/v3 v3.16.15 h1:KbDR3ZAVU+wiLyMESPtbtE/Add4elztFyfsWoNTgxS0= modernc.org/ccgo/v3 v3.16.15/go.mod h1:yT7B+/E2m43tmMOT51GMoM98/MtHIcQQSleGnddkUNI= modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= -modernc.org/libc v1.32.0 h1:yXatHTrACp3WaKNRCoZwUK7qj5V8ep1XyY0ka4oYcNc= -modernc.org/libc v1.32.0/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE= +modernc.org/libc v1.34.5 h1:0g1YIjseVKpicGiVo49J4HkbLNjwi3nwpE3aE6FS2Zw= +modernc.org/libc v1.34.5/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE= modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= diff --git a/package-lock.json b/package-lock.json index d376b9c..2806f9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -416,9 +416,9 @@ } }, "node_modules/@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", "engines": { "node": ">=14" } @@ -858,11 +858,11 @@ } }, "node_modules/@types/ramda": { - "version": "0.29.8", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.8.tgz", - "integrity": "sha512-CmEF76RSSj4NkgFnuQ4ZK3xeq8wMnE9zQH7sr54Yy/a61WbE1qIzWYVfd7XupLbTJY9jCjgEPbv6fqMlsW8Mvw==", + "version": "0.29.9", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.9.tgz", + "integrity": "sha512-X3yEG6tQCWBcUAql+RPC/O1Hm9BSU+MXu2wJnCETuAgUlrEDwTA1kIOdEEE4YXDtf0zfQLHa9CCE7WYp9kqPIQ==", "dependencies": { - "types-ramda": "^0.29.5" + "types-ramda": "^0.29.6" } }, "node_modules/@types/tinycon": { @@ -1007,9 +1007,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -1831,9 +1831,9 @@ "optional": true }, "node_modules/modern-screenshot": { - "version": "4.4.33", - "resolved": "https://registry.npmjs.org/modern-screenshot/-/modern-screenshot-4.4.33.tgz", - "integrity": "sha512-uxxD4PdbIitXFlcNbO6kpRuxssfN+rJDfr8Pk2/eOx1dFz+LcaYDfbfeq7UxKuhsOVeN1tj996wEY3yJYwhnaQ==" + "version": "4.4.34", + "resolved": "https://registry.npmjs.org/modern-screenshot/-/modern-screenshot-4.4.34.tgz", + "integrity": "sha512-w4cA+1UrXMTXk/XZS7avf2XR6CoSnjJO1SbWUulIOFXmrNmVUc6BZA+KODchIB8YmIPUn7m2lhsy/Lm7UScPow==" }, "node_modules/moment": { "version": "2.29.4", @@ -2483,9 +2483,9 @@ } }, "node_modules/types-ramda": { - "version": "0.29.5", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.5.tgz", - "integrity": "sha512-u+bAYXHDPJR+amB0qMrMU/NXRB2PG8QqpO2v6j7yK/0mPZhlaaZj++ynYjnVpkPEpCkZEGxNpWY3X7qyLCGE3w==", + "version": "0.29.6", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.6.tgz", + "integrity": "sha512-VJoOk1uYNh9ZguGd3eZvqkdhD4hTGtnjRBUx5Zc0U9ftmnCgiWcSj/lsahzKunbiwRje1MxxNkEy1UdcXRCpYw==", "dependencies": { "ts-toolbelt": "^9.6.0" } diff --git a/server/apiv1/swagger.go b/server/apiv1/swagger.go index b5ed980..dc15baf 100644 --- a/server/apiv1/swagger.go +++ b/server/apiv1/swagger.go @@ -1,7 +1,5 @@ package apiv1 -import "os" - // These structs are for the purpose of defining swagger HTTP responses // Application information @@ -148,10 +146,7 @@ type linkCheckParams struct { // Binary data response inherits the attachment's content type // swagger:response BinaryResponse -type binaryResponse struct { - // in: body - File os.File -} +type binaryResponse string // Plain text response // swagger:response TextResponse @@ -161,7 +156,7 @@ type textResponse string // swagger:response HTMLResponse type htmlResponse string -// Error response +// HTTP error response will return with a >= 400 response code // swagger:response ErrorResponse type errorResponse string diff --git a/server/ui-src/components/message/Message.vue b/server/ui-src/components/message/Message.vue index 57616f4..eb2c67a 100644 --- a/server/ui-src/components/message/Message.vue +++ b/server/ui-src/components/message/Message.vue @@ -293,7 +293,8 @@ export default { - + Return-Path < diff --git a/server/ui-src/components/message/Release.vue b/server/ui-src/components/message/Release.vue index 9491a27..12a9043 100644 --- a/server/ui-src/components/message/Release.vue +++ b/server/ui-src/components/message/Release.vue @@ -89,7 +89,7 @@ export default {
+ :value="message.From ? message.From.Address : ''">
diff --git a/server/ui-src/views/MessageView.vue b/server/ui-src/views/MessageView.vue index 6bf72c7..f19c7bd 100644 --- a/server/ui-src/views/MessageView.vue +++ b/server/ui-src/views/MessageView.vue @@ -341,6 +341,6 @@ export default { - + diff --git a/server/ui/api/v1/swagger.json b/server/ui/api/v1/swagger.json index 29c18da..5f4526d 100644 --- a/server/ui/api/v1/swagger.json +++ b/server/ui/api/v1/swagger.json @@ -809,11 +809,6 @@ "x-go-name": "deleteMessagesRequestBody", "x-go-package": "github.com/axllent/mailpit/server/apiv1" }, - "File": { - "type": "object", - "title": "File represents an open file descriptor.", - "x-go-package": "os" - }, "HTMLCheckResponse": { "description": "Response represents the HTML check response struct", "type": "object", @@ -1387,11 +1382,11 @@ "BinaryResponse": { "description": "Binary data response inherits the attachment's content type", "schema": { - "$ref": "#/definitions/File" + "type": "string" } }, "ErrorResponse": { - "description": "Error response", + "description": "HTTP error response will return with a \u003e= 400 response code", "schema": { "type": "string" } diff --git a/server/websockets/client.go b/server/websockets/client.go index efbc634..ddefa1f 100644 --- a/server/websockets/client.go +++ b/server/websockets/client.go @@ -60,7 +60,7 @@ func (c *Client) readPump() { }() for { - _, _, err := c.conn.ReadMessage() + _, _, err := c.conn.NextReader() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { logger.Log().Errorf("[websocket] error: %v", err)