ntfy/server/config.go

100 lines
4.0 KiB
Go
Raw Normal View History

2021-12-19 04:02:36 +01:00
package server
2021-10-24 04:49:50 +02:00
import (
"time"
)
// Defines default config settings
const (
2021-12-14 04:30:28 +01:00
DefaultListenHTTP = ":80"
DefaultCacheDuration = 12 * time.Hour
DefaultKeepaliveInterval = 55 * time.Second // Not too frequently to save battery (Android read timeout is 77s!)
2021-12-14 04:30:28 +01:00
DefaultManagerInterval = time.Minute
DefaultAtSenderInterval = 10 * time.Second
DefaultMinDelay = 10 * time.Second
DefaultMaxDelay = 3 * 24 * time.Hour
2021-12-31 16:12:53 +01:00
DefaultMessageLimit = 4096
2022-01-02 23:56:12 +01:00
DefaultAttachmentSizeLimit = 5 * 1024 * 1024
DefaultFirebaseKeepaliveInterval = 3 * time.Hour // Not too frequently to save battery
2021-10-24 04:49:50 +02:00
)
2021-11-01 21:39:40 +01:00
// Defines all the limits
// - global topic limit: max number of topics overall
2021-12-18 20:43:27 +01:00
// - per visitor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
2021-12-24 00:03:04 +01:00
// - per visitor email limit: max number of emails (here: 16 email bucket, replenished at a rate of one per hour)
2021-12-18 20:43:27 +01:00
// - per visitor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
const (
DefaultGlobalTopicLimit = 5000
DefaultVisitorRequestLimitBurst = 60
DefaultVisitorRequestLimitReplenish = 10 * time.Second
2021-12-24 00:03:04 +01:00
DefaultVisitorEmailLimitBurst = 16
DefaultVisitorEmailLimitReplenish = time.Hour
DefaultVisitorSubscriptionLimit = 30
)
// Config is the main config struct for the application. Use New to instantiate a default config struct.
type Config struct {
2021-12-25 00:13:09 +01:00
BaseURL string
ListenHTTP string
2021-12-07 16:38:58 +01:00
ListenHTTPS string
KeyFile string
CertFile string
FirebaseKeyFile string
CacheFile string
CacheDuration time.Duration
2022-01-02 23:56:12 +01:00
AttachmentCacheDir string
AttachmentSizeLimit int64
KeepaliveInterval time.Duration
ManagerInterval time.Duration
AtSenderInterval time.Duration
2021-12-14 04:30:28 +01:00
FirebaseKeepaliveInterval time.Duration
2021-12-27 16:39:28 +01:00
SMTPSenderAddr string
SMTPSenderUser string
SMTPSenderPass string
SMTPSenderFrom string
SMTPServerListen string
SMTPServerDomain string
SMTPServerAddrPrefix string
2021-12-11 04:57:01 +01:00
MessageLimit int
MinDelay time.Duration
MaxDelay time.Duration
2022-01-02 23:56:12 +01:00
TotalTopicLimit int
TotalAttachmentSizeLimit int64
VisitorRequestLimitBurst int
VisitorRequestLimitReplenish time.Duration
2021-12-24 00:03:04 +01:00
VisitorEmailLimitBurst int
VisitorEmailLimitReplenish time.Duration
VisitorSubscriptionLimit int
BehindProxy bool
}
// NewConfig instantiates a default new server config
2021-12-22 14:17:50 +01:00
func NewConfig() *Config {
return &Config{
2021-12-25 00:13:09 +01:00
BaseURL: "",
2021-12-22 14:17:50 +01:00
ListenHTTP: DefaultListenHTTP,
2021-12-07 16:38:58 +01:00
ListenHTTPS: "",
KeyFile: "",
CertFile: "",
FirebaseKeyFile: "",
CacheFile: "",
CacheDuration: DefaultCacheDuration,
2022-01-02 23:56:12 +01:00
AttachmentCacheDir: "",
AttachmentSizeLimit: DefaultAttachmentSizeLimit,
KeepaliveInterval: DefaultKeepaliveInterval,
ManagerInterval: DefaultManagerInterval,
2021-12-11 04:57:01 +01:00
MessageLimit: DefaultMessageLimit,
MinDelay: DefaultMinDelay,
MaxDelay: DefaultMaxDelay,
AtSenderInterval: DefaultAtSenderInterval,
2021-12-14 04:30:28 +01:00
FirebaseKeepaliveInterval: DefaultFirebaseKeepaliveInterval,
2022-01-02 23:56:12 +01:00
TotalTopicLimit: DefaultGlobalTopicLimit,
VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
2021-12-24 00:03:04 +01:00
VisitorEmailLimitBurst: DefaultVisitorEmailLimitBurst,
VisitorEmailLimitReplenish: DefaultVisitorEmailLimitReplenish,
VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
BehindProxy: false,
}
}