From dc17ac7b2b1e10797771349b4d7707a3d47f47d9 Mon Sep 17 00:00:00 2001 From: jkoberg Date: Wed, 28 Jun 2023 16:53:00 +0200 Subject: [PATCH] allow disabling sses Signed-off-by: jkoberg --- services/userlog/pkg/config/config.go | 2 ++ services/userlog/pkg/service/service.go | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/services/userlog/pkg/config/config.go b/services/userlog/pkg/config/config.go index 609eefe7b1..237fb0e3cc 100644 --- a/services/userlog/pkg/config/config.go +++ b/services/userlog/pkg/config/config.go @@ -28,6 +28,8 @@ type Config struct { Events Events `yaml:"events"` Persistence Persistence `yaml:"persistence"` + DisableSSE bool `yaml:"disable_sse" env:"USERLOG_DISABLE_SSE" desc:"Disables server-sent events. Clients will no longer be able to connect to the sse endpoint."` + Context context.Context `yaml:"-"` } diff --git a/services/userlog/pkg/service/service.go b/services/userlog/pkg/service/service.go index 717e8c77c1..1c105bccd0 100644 --- a/services/userlog/pkg/service/service.go +++ b/services/userlog/pkg/service/service.go @@ -68,10 +68,13 @@ func NewUserlogService(opts ...Option) (*UserlogService, error) { historyClient: o.HistoryClient, gatewaySelector: o.GatewaySelector, valueClient: o.ValueClient, - sse: sse.New(), registeredEvents: make(map[string]events.Unmarshaller), } + if !ul.cfg.DisableSSE { + ul.sse = sse.New() + } + for _, e := range o.RegisteredEvents { typ := reflect.TypeOf(e) ul.registeredEvents[typ.String()] = e @@ -79,8 +82,11 @@ func NewUserlogService(opts ...Option) (*UserlogService, error) { ul.m.Route("/ocs/v2.php/apps/notifications/api/v1/notifications", func(r chi.Router) { r.Get("/", ul.HandleGetEvents) - r.Get("/sse", ul.HandleSSE) r.Delete("/", ul.HandleDeleteEvents) + + if !ul.cfg.DisableSSE { + r.Get("/sse", ul.HandleSSE) + } }) go ul.MemorizeEvents(ch) @@ -230,8 +236,10 @@ func (ul *UserlogService) DeleteEvents(userid string, evids []string) error { } func (ul *UserlogService) addEventToUser(userid string, event events.Event) error { - if err := ul.sendSSE(userid, event); err != nil { - ul.log.Error().Err(err).Str("userid", userid).Str("eventid", event.ID).Msg("cannot create sse event") + if !ul.cfg.DisableSSE { + if err := ul.sendSSE(userid, event); err != nil { + ul.log.Error().Err(err).Str("userid", userid).Str("eventid", event.ID).Msg("cannot create sse event") + } } return ul.alterUserEventList(userid, func(ids []string) []string { return append(ids, event.ID)