config.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 = 30 * time.Second
  10. DefaultManagerInterval = time.Minute
  11. DefaultAtSenderInterval = 10 * time.Second
  12. DefaultMinDelay = 10 * time.Second
  13. DefaultMaxDelay = 3 * 24 * time.Hour
  14. DefaultMessageLimit = 4096
  15. DefaultFirebaseKeepaliveInterval = time.Hour
  16. )
  17. // Defines all the limits
  18. // - global topic limit: max number of topics overall
  19. // - per visitor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
  20. // - per visitor email limit: max number of emails (here: 16 email bucket, replenished at a rate of one per hour)
  21. // - per visitor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
  22. const (
  23. DefaultGlobalTopicLimit = 5000
  24. DefaultVisitorRequestLimitBurst = 60
  25. DefaultVisitorRequestLimitReplenish = 10 * time.Second
  26. DefaultVisitorEmailLimitBurst = 16
  27. DefaultVisitorEmailLimitReplenish = time.Hour
  28. DefaultVisitorSubscriptionLimit = 30
  29. )
  30. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  31. type Config struct {
  32. BaseURL string
  33. ListenHTTP string
  34. ListenHTTPS string
  35. KeyFile string
  36. CertFile string
  37. FirebaseKeyFile string
  38. CacheFile string
  39. CacheDuration time.Duration
  40. KeepaliveInterval time.Duration
  41. ManagerInterval time.Duration
  42. AtSenderInterval time.Duration
  43. FirebaseKeepaliveInterval time.Duration
  44. SMTPSenderAddr string
  45. SMTPSenderUser string
  46. SMTPSenderPass string
  47. SMTPSenderFrom string
  48. SMTPServerListen string
  49. SMTPServerDomain string
  50. SMTPServerAddrPrefix string
  51. MessageLimit int
  52. MinDelay time.Duration
  53. MaxDelay time.Duration
  54. GlobalTopicLimit int
  55. VisitorRequestLimitBurst int
  56. VisitorRequestLimitReplenish time.Duration
  57. VisitorEmailLimitBurst int
  58. VisitorEmailLimitReplenish time.Duration
  59. VisitorSubscriptionLimit int
  60. BehindProxy bool
  61. }
  62. // NewConfig instantiates a default new server config
  63. func NewConfig() *Config {
  64. return &Config{
  65. BaseURL: "",
  66. ListenHTTP: DefaultListenHTTP,
  67. ListenHTTPS: "",
  68. KeyFile: "",
  69. CertFile: "",
  70. FirebaseKeyFile: "",
  71. CacheFile: "",
  72. CacheDuration: DefaultCacheDuration,
  73. KeepaliveInterval: DefaultKeepaliveInterval,
  74. ManagerInterval: DefaultManagerInterval,
  75. MessageLimit: DefaultMessageLimit,
  76. MinDelay: DefaultMinDelay,
  77. MaxDelay: DefaultMaxDelay,
  78. AtSenderInterval: DefaultAtSenderInterval,
  79. FirebaseKeepaliveInterval: DefaultFirebaseKeepaliveInterval,
  80. GlobalTopicLimit: DefaultGlobalTopicLimit,
  81. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  82. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  83. VisitorEmailLimitBurst: DefaultVisitorEmailLimitBurst,
  84. VisitorEmailLimitReplenish: DefaultVisitorEmailLimitReplenish,
  85. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  86. BehindProxy: false,
  87. }
  88. }