server

package
v1.31.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2023 License: Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultListenHTTP                           = ":80"
	DefaultCacheDuration                        = 12 * time.Hour
	DefaultKeepaliveInterval                    = 45 * time.Second // Not too frequently to save battery (Android read timeout used to be 77s!)
	DefaultManagerInterval                      = time.Minute
	DefaultDelayedSenderInterval                = 10 * time.Second
	DefaultMinDelay                             = 10 * time.Second
	DefaultMaxDelay                             = 3 * 24 * time.Hour
	DefaultFirebaseKeepaliveInterval            = 3 * time.Hour    // ~control topic (Android), not too frequently to save battery
	DefaultFirebasePollInterval                 = 20 * time.Minute // ~poll topic (iOS), max. 2-3 times per hour (see docs)
	DefaultFirebaseQuotaExceededPenaltyDuration = 10 * time.Minute // Time that over-users are locked out of Firebase if it returns "quota exceeded"
)

Defines default config settings (excluding limits, see below)

View Source
const (
	DefaultMessageLengthLimit       = 4096 // Bytes
	DefaultTotalTopicLimit          = 15000
	DefaultAttachmentTotalSizeLimit = int64(5 * 1024 * 1024 * 1024) // 5 GB
	DefaultAttachmentFileSizeLimit  = int64(15 * 1024 * 1024)       // 15 MB
	DefaultAttachmentExpiryDuration = 3 * time.Hour
)

Defines all global and per-visitor limits - message size limit: the max number of bytes for a message - total topic limit: max number of topics overall - various attachment limits

View Source
const (
	DefaultVisitorSubscriptionLimit             = 30
	DefaultVisitorRequestLimitBurst             = 60
	DefaultVisitorRequestLimitReplenish         = 5 * time.Second
	DefaultVisitorEmailLimitBurst               = 16
	DefaultVisitorEmailLimitReplenish           = time.Hour
	DefaultVisitorAttachmentTotalSizeLimit      = 100 * 1024 * 1024 // 100 MB
	DefaultVisitorAttachmentDailyBandwidthLimit = 500 * 1024 * 1024 // 500 MB
)

Defines all per-visitor limits - per visitor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP - per visitor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 5 seconds) - per visitor email limit: max number of emails (here: 16 email bucket, replenished at a rate of one per hour) - per visitor attachment size limit: total per-visitor attachment size in bytes to be stored on the server - per visitor attachment daily bandwidth limit: number of bytes that can be transferred to/from the server

Variables

This section is empty.

Functions

This section is empty.

Types

type Config added in v1.8.0

type Config struct {
	BaseURL                              string
	ListenHTTP                           string
	ListenHTTPS                          string
	ListenUnix                           string
	ListenUnixMode                       fs.FileMode
	KeyFile                              string
	CertFile                             string
	FirebaseKeyFile                      string
	CacheFile                            string
	CacheDuration                        time.Duration
	CacheStartupQueries                  string
	CacheBatchSize                       int
	CacheBatchTimeout                    time.Duration
	AuthFile                             string
	AuthDefaultRead                      bool
	AuthDefaultWrite                     bool
	AttachmentCacheDir                   string
	AttachmentTotalSizeLimit             int64
	AttachmentFileSizeLimit              int64
	AttachmentExpiryDuration             time.Duration
	KeepaliveInterval                    time.Duration
	ManagerInterval                      time.Duration
	WebRootIsApp                         bool
	DelayedSenderInterval                time.Duration
	FirebaseKeepaliveInterval            time.Duration
	FirebasePollInterval                 time.Duration
	FirebaseQuotaExceededPenaltyDuration time.Duration
	UpstreamBaseURL                      string
	SMTPSenderAddr                       string
	SMTPSenderUser                       string
	SMTPSenderPass                       string
	SMTPSenderFrom                       string
	SMTPServerListen                     string
	SMTPServerDomain                     string
	SMTPServerAddrPrefix                 string
	MessageLimit                         int
	MinDelay                             time.Duration
	MaxDelay                             time.Duration
	TotalTopicLimit                      int
	TotalAttachmentSizeLimit             int64
	VisitorSubscriptionLimit             int
	VisitorAttachmentTotalSizeLimit      int64
	VisitorAttachmentDailyBandwidthLimit int
	VisitorRequestLimitBurst             int
	VisitorRequestLimitReplenish         time.Duration
	VisitorRequestExemptIPAddrs          []netip.Prefix
	VisitorEmailLimitBurst               int
	VisitorEmailLimitReplenish           time.Duration
	BehindProxy                          bool
	EnableWeb                            bool
	Version                              string // injected by App
}

Config is the main config struct for the application. Use New to instantiate a default config struct.

func NewConfig added in v1.8.0

func NewConfig() *Config

NewConfig instantiates a default new server config

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server is the main server, providing the UI and API for ntfy

func New

func New(conf *Config) (*Server, error)

New instantiates a new Server. It creates the cache and adds a Firebase subscriber (if configured).

func (*Server) Run

func (s *Server) Run() error

Run executes the main server. It listens on HTTP (+ HTTPS, if configured), and starts a manager go routine to print stats and prune messages.

func (*Server) Stop added in v1.8.0

func (s *Server) Stop()

Stop stops HTTP (+HTTPS) server and all managers

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL