mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-18 08:06:59 +00:00
Merge release/hzm into devel
This commit is contained in:
@ -31,7 +31,7 @@ import (
|
|||||||
type storeUserProvider interface {
|
type storeUserProvider interface {
|
||||||
UserID() string
|
UserID() string
|
||||||
GetSpace() (usedSpace, maxSpace uint, err error)
|
GetSpace() (usedSpace, maxSpace uint, err error)
|
||||||
GetMaxUpload() (uint, error)
|
GetMaxUpload() (int64, error)
|
||||||
|
|
||||||
GetAddress(addressID string) (storeAddressProvider, error)
|
GetAddress(addressID string) (storeAddressProvider, error)
|
||||||
|
|
||||||
|
|||||||
@ -33,4 +33,5 @@ type storeUserProvider interface {
|
|||||||
attachedPublicKeyName string,
|
attachedPublicKeyName string,
|
||||||
parentID string) (*pmapi.Message, []*pmapi.Attachment, error)
|
parentID string) (*pmapi.Message, []*pmapi.Attachment, error)
|
||||||
SendMessage(messageID string, req *pmapi.SendMessageReq) error
|
SendMessage(messageID string, req *pmapi.SendMessageReq) error
|
||||||
|
GetMaxUpload() (int64, error)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,9 +20,11 @@
|
|||||||
package smtp
|
package smtp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
"mime"
|
"mime"
|
||||||
"net/mail"
|
"net/mail"
|
||||||
"strings"
|
"strings"
|
||||||
@ -319,6 +321,12 @@ func (su *smtpUser) Send(returnPath string, to []string, messageReader io.Reader
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ok, err := su.isTotalSizeOkay(message, attReaders); err != nil {
|
||||||
|
return err
|
||||||
|
} else if !ok {
|
||||||
|
return errors.New("message is too large")
|
||||||
|
}
|
||||||
|
|
||||||
su.backend.sendRecorder.addMessage(sendRecorderMessageHash)
|
su.backend.sendRecorder.addMessage(sendRecorderMessageHash)
|
||||||
message, atts, err := su.storeUser.CreateDraft(kr, message, attReaders, attachedPublicKey, attachedPublicKeyName, parentID)
|
message, atts, err := su.storeUser.CreateDraft(kr, message, attReaders, attachedPublicKey, attachedPublicKeyName, parentID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -527,3 +535,24 @@ func (su *smtpUser) Logout() error {
|
|||||||
log.Debug("SMTP client logged out user ", su.addressID)
|
log.Debug("SMTP client logged out user ", su.addressID)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (su *smtpUser) isTotalSizeOkay(message *pmapi.Message, attReaders []io.Reader) (bool, error) {
|
||||||
|
maxUpload, err := su.storeUser.GetMaxUpload()
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var attSize int64
|
||||||
|
|
||||||
|
for i := range attReaders {
|
||||||
|
b, err := ioutil.ReadAll(attReaders[i])
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
attSize += int64(len(b))
|
||||||
|
attReaders[i] = bytes.NewBuffer(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
return message.Size+attSize <= maxUpload, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -31,11 +31,11 @@ func (store *Store) GetSpace() (usedSpace, maxSpace uint, err error) {
|
|||||||
return uint(apiUser.UsedSpace), uint(apiUser.MaxSpace), nil
|
return uint(apiUser.UsedSpace), uint(apiUser.MaxSpace), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMaxUpload returns max size of attachment in bytes.
|
// GetMaxUpload returns max size of message + all attachments in bytes.
|
||||||
func (store *Store) GetMaxUpload() (uint, error) {
|
func (store *Store) GetMaxUpload() (int64, error) {
|
||||||
apiUser, err := store.client().CurrentUser()
|
apiUser, err := store.client().CurrentUser()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
return uint(apiUser.MaxUpload), nil
|
return apiUser.MaxUpload, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,23 +2,28 @@
|
|||||||
"users": {
|
"users": {
|
||||||
"user": {
|
"user": {
|
||||||
"ID": "1",
|
"ID": "1",
|
||||||
"Name": "user"
|
"Name": "user",
|
||||||
|
"MaxUpload": 26214400
|
||||||
},
|
},
|
||||||
"user2fa": {
|
"user2fa": {
|
||||||
"ID": "2",
|
"ID": "2",
|
||||||
"Name": "user2fa"
|
"Name": "user2fa",
|
||||||
|
"MaxUpload": 26214400
|
||||||
},
|
},
|
||||||
"userAddressWithCapitalLetter": {
|
"userAddressWithCapitalLetter": {
|
||||||
"ID": "3",
|
"ID": "3",
|
||||||
"Name": "userAddressWithCapitalLetter"
|
"Name": "userAddressWithCapitalLetter",
|
||||||
|
"MaxUpload": 26214400
|
||||||
},
|
},
|
||||||
"userMoreAddresses": {
|
"userMoreAddresses": {
|
||||||
"ID": "4",
|
"ID": "4",
|
||||||
"Name": "userMoreAddresses"
|
"Name": "userMoreAddresses",
|
||||||
|
"MaxUpload": 26214400
|
||||||
},
|
},
|
||||||
"userDisabledPrimaryAddress": {
|
"userDisabledPrimaryAddress": {
|
||||||
"ID": "5",
|
"ID": "5",
|
||||||
"Name": "userDisabledPrimaryAddress"
|
"Name": "userDisabledPrimaryAddress",
|
||||||
|
"MaxUpload": 26214400
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/)
|
|||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
* GODT-928 Reject messages which are too large.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
* Remove dependency on go-apple-mobileconfig.
|
* Remove dependency on go-apple-mobileconfig.
|
||||||
|
|||||||
Reference in New Issue
Block a user