1
0

config.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package server
  2. import (
  3. "time"
  4. )
  5. // Defines default config settings
  6. const (
  7. DefaultListenHTTP = ":80"
  8. DefaultCacheDuration = 12 * time.Hour
  9. DefaultKeepaliveInterval = 55 * time.Second // Not too frequently to save battery (Android read timeout is 77s!)
  10. DefaultManagerInterval = time.Minute
  11. DefaultAtSenderInterval = 10 * time.Second
  12. DefaultMinDelay = 10 * time.Second
  13. DefaultMaxDelay = 3 * 24 * time.Hour
  14. DefaultMessageLimit = 4096
  15. DefaultAttachmentSizeLimit = 5 * 1024 * 1024
  16. DefaultAttachmentExpiryDuration = 3 * time.Hour
  17. DefaultFirebaseKeepaliveInterval = 3 * time.Hour // Not too frequently to save battery
  18. )
  19. // Defines all the limits
  20. // - total topic limit: max number of topics overall
  21. // - per visitor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
  22. // - per visitor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
  23. // - per visitor email limit: max number of emails (here: 16 email bucket, replenished at a rate of one per hour)
  24. // - per visitor attachment size limit:
  25. const (
  26. DefaultTotalTopicLimit = 5000
  27. DefaultVisitorSubscriptionLimit = 30
  28. DefaultVisitorRequestLimitBurst = 60
  29. DefaultVisitorRequestLimitReplenish = 10 * time.Second
  30. DefaultVisitorEmailLimitBurst = 16
  31. DefaultVisitorEmailLimitReplenish = time.Hour
  32. DefaultVisitorAttachmentBytesLimitBurst = 50 * 1024 * 1024
  33. DefaultVisitorAttachmentBytesLimitReplenish = time.Hour
  34. )
  35. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  36. type Config struct {
  37. BaseURL string
  38. ListenHTTP string
  39. ListenHTTPS string
  40. KeyFile string
  41. CertFile string
  42. FirebaseKeyFile string
  43. CacheFile string
  44. CacheDuration time.Duration
  45. AttachmentCacheDir string
  46. AttachmentSizeLimit int64
  47. AttachmentExpiryDuration time.Duration
  48. KeepaliveInterval time.Duration
  49. ManagerInterval time.Duration
  50. AtSenderInterval time.Duration
  51. FirebaseKeepaliveInterval time.Duration
  52. SMTPSenderAddr string
  53. SMTPSenderUser string
  54. SMTPSenderPass string
  55. SMTPSenderFrom string
  56. SMTPServerListen string
  57. SMTPServerDomain string
  58. SMTPServerAddrPrefix string
  59. MessageLimit int
  60. MinDelay time.Duration
  61. MaxDelay time.Duration
  62. TotalTopicLimit int
  63. TotalAttachmentSizeLimit int64
  64. VisitorSubscriptionLimit int
  65. VisitorRequestLimitBurst int
  66. VisitorRequestLimitReplenish time.Duration
  67. VisitorEmailLimitBurst int
  68. VisitorEmailLimitReplenish time.Duration
  69. VisitorAttachmentBytesLimitBurst int64
  70. VisitorAttachmentBytesLimitReplenish time.Duration
  71. BehindProxy bool
  72. }
  73. // NewConfig instantiates a default new server config
  74. func NewConfig() *Config {
  75. return &Config{
  76. BaseURL: "",
  77. ListenHTTP: DefaultListenHTTP,
  78. ListenHTTPS: "",
  79. KeyFile: "",
  80. CertFile: "",
  81. FirebaseKeyFile: "",
  82. CacheFile: "",
  83. CacheDuration: DefaultCacheDuration,
  84. AttachmentCacheDir: "",
  85. AttachmentSizeLimit: DefaultAttachmentSizeLimit,
  86. AttachmentExpiryDuration: DefaultAttachmentExpiryDuration,
  87. KeepaliveInterval: DefaultKeepaliveInterval,
  88. ManagerInterval: DefaultManagerInterval,
  89. MessageLimit: DefaultMessageLimit,
  90. MinDelay: DefaultMinDelay,
  91. MaxDelay: DefaultMaxDelay,
  92. AtSenderInterval: DefaultAtSenderInterval,
  93. FirebaseKeepaliveInterval: DefaultFirebaseKeepaliveInterval,
  94. TotalTopicLimit: DefaultTotalTopicLimit,
  95. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  96. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  97. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  98. VisitorEmailLimitBurst: DefaultVisitorEmailLimitBurst,
  99. VisitorEmailLimitReplenish: DefaultVisitorEmailLimitReplenish,
  100. VisitorAttachmentBytesLimitBurst: DefaultVisitorAttachmentBytesLimitBurst,
  101. VisitorAttachmentBytesLimitReplenish: DefaultVisitorAttachmentBytesLimitReplenish,
  102. BehindProxy: false,
  103. }
  104. }