fix prefix; test attachments; add maxsize
This commit is contained in:
@@ -12,7 +12,7 @@ An Email to Matrix bridge
|
||||
- [x] Matrix bot
|
||||
- [x] Configuration in room's account data
|
||||
- [x] Receive emails to matrix rooms
|
||||
- [x] Receive attachments (untested)
|
||||
- [x] Receive attachments
|
||||
- [ ] Map email threads to matrix threads
|
||||
|
||||
### Send
|
||||
@@ -40,6 +40,7 @@ env vars
|
||||
* **POSTMOOGLE_LOGLEVEL** - log level
|
||||
* **POSTMOOGLE_DB_DSN** - database connection string
|
||||
* **POSTMOOGLE_DB_DIALECT** - database dialect (postgres, sqlite3)
|
||||
* **POSTMOOGLE_MAXSIZE** - max email size (including attachments) in megabytes
|
||||
|
||||
You can find default values in [config/defaults.go](config/defaults.go)
|
||||
|
||||
|
||||
@@ -33,6 +33,11 @@ func (b *Bot) parseCommand(message string) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
index := strings.LastIndex(message, b.prefix)
|
||||
if index == -1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
message = strings.TrimSpace(strings.Replace(message, b.prefix, "", 1))
|
||||
return strings.Split(message, " ")
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ func main() {
|
||||
defer recovery()
|
||||
|
||||
go startBot()
|
||||
if err := smtp.Start(cfg.Domain, cfg.Port, cfg.LogLevel, mxb); err != nil {
|
||||
if err := smtp.Start(cfg.Domain, cfg.Port, cfg.LogLevel, cfg.MaxSize, mxb); err != nil {
|
||||
//nolint:gocritic
|
||||
log.Fatal("SMTP server crashed: %v", err)
|
||||
}
|
||||
|
||||
@@ -13,9 +13,11 @@ func New() *Config {
|
||||
Homeserver: env.String("homeserver", defaultConfig.Homeserver),
|
||||
Login: env.String("login", defaultConfig.Login),
|
||||
Password: env.String("password", defaultConfig.Password),
|
||||
Prefix: env.String("prefix", defaultConfig.Prefix),
|
||||
Domain: env.String("domain", defaultConfig.Domain),
|
||||
Port: env.String("port", defaultConfig.Port),
|
||||
NoEncryption: env.Bool("noencryption"),
|
||||
MaxSize: env.Int("maxsize", defaultConfig.MaxSize),
|
||||
Sentry: Sentry{
|
||||
DSN: env.String("sentry.dsn", defaultConfig.Sentry.DSN),
|
||||
SampleRate: env.Int("sentry.rate", defaultConfig.Sentry.SampleRate),
|
||||
|
||||
@@ -5,6 +5,7 @@ var defaultConfig = &Config{
|
||||
Domain: "localhost",
|
||||
Port: "25",
|
||||
Prefix: "!pm",
|
||||
MaxSize: 1024,
|
||||
DB: DB{
|
||||
DSN: "local.db",
|
||||
Dialect: "sqlite3",
|
||||
|
||||
@@ -18,6 +18,8 @@ type Config struct {
|
||||
NoEncryption bool
|
||||
// Prefix for commands
|
||||
Prefix string
|
||||
// MaxSize of an email (including attachments)
|
||||
MaxSize int
|
||||
|
||||
// DB config
|
||||
DB DB
|
||||
|
||||
@@ -33,7 +33,7 @@ func (b *backend) AnonymousLogin(state *smtp.ConnectionState) (smtp.Session, err
|
||||
return b.newSession(), nil
|
||||
}
|
||||
|
||||
func Start(domain, port, loglevel string, client Client) error {
|
||||
func Start(domain, port, loglevel string, maxSize int, client Client) error {
|
||||
log := logger.New("smtp.", loglevel)
|
||||
be := &backend{
|
||||
log: log,
|
||||
@@ -46,7 +46,7 @@ func Start(domain, port, loglevel string, client Client) error {
|
||||
s.AuthDisabled = true
|
||||
s.ReadTimeout = 10 * time.Second
|
||||
s.WriteTimeout = 10 * time.Second
|
||||
s.MaxMessageBytes = 128 * 1024
|
||||
s.MaxMessageBytes = maxSize * 1024 * 1024
|
||||
if log.GetLevel() == "DEBUG" || log.GetLevel() == "TRACE" {
|
||||
s.Debug = os.Stdout
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user