config.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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 = 512
  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. SMTPAddr string
  45. SMTPUser string
  46. SMTPPass string
  47. SMTPFrom string
  48. MessageLimit int
  49. MinDelay time.Duration
  50. MaxDelay time.Duration
  51. GlobalTopicLimit int
  52. VisitorRequestLimitBurst int
  53. VisitorRequestLimitReplenish time.Duration
  54. VisitorEmailLimitBurst int
  55. VisitorEmailLimitReplenish time.Duration
  56. VisitorSubscriptionLimit int
  57. BehindProxy bool
  58. }
  59. // NewConfig instantiates a default new server config
  60. func NewConfig() *Config {
  61. return &Config{
  62. BaseURL: "",
  63. ListenHTTP: DefaultListenHTTP,
  64. ListenHTTPS: "",
  65. KeyFile: "",
  66. CertFile: "",
  67. FirebaseKeyFile: "",
  68. CacheFile: "",
  69. CacheDuration: DefaultCacheDuration,
  70. KeepaliveInterval: DefaultKeepaliveInterval,
  71. ManagerInterval: DefaultManagerInterval,
  72. MessageLimit: DefaultMessageLimit,
  73. MinDelay: DefaultMinDelay,
  74. MaxDelay: DefaultMaxDelay,
  75. AtSenderInterval: DefaultAtSenderInterval,
  76. FirebaseKeepaliveInterval: DefaultFirebaseKeepaliveInterval,
  77. GlobalTopicLimit: DefaultGlobalTopicLimit,
  78. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  79. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  80. VisitorEmailLimitBurst: DefaultVisitorEmailLimitBurst,
  81. VisitorEmailLimitReplenish: DefaultVisitorEmailLimitReplenish,
  82. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  83. BehindProxy: false,
  84. }
  85. }