forked from Silverfish/proton-bridge
GODT-1376: Add first userID to sentry scope.
This commit is contained in:
@ -189,6 +189,8 @@ func New( // nolint[funlen]
|
|||||||
|
|
||||||
cm := pmapi.New(cfg)
|
cm := pmapi.New(cfg)
|
||||||
|
|
||||||
|
sentryReporter.SetClientFromManager(cm)
|
||||||
|
|
||||||
cm.AddConnectionObserver(pmapi.NewConnectionObserver(
|
cm.AddConnectionObserver(pmapi.NewConnectionObserver(
|
||||||
func() { listener.Emit(events.InternetOffEvent, "") },
|
func() { listener.Emit(events.InternetOffEvent, "") },
|
||||||
func() { listener.Emit(events.InternetOnEvent, "") },
|
func() { listener.Emit(events.InternetOnEvent, "") },
|
||||||
|
|||||||
@ -20,11 +20,13 @@ package sentry
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ProtonMail/proton-bridge/internal/constants"
|
"github.com/ProtonMail/proton-bridge/internal/constants"
|
||||||
|
"github.com/ProtonMail/proton-bridge/pkg/pmapi"
|
||||||
"github.com/getsentry/sentry-go"
|
"github.com/getsentry/sentry-go"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
@ -42,7 +44,13 @@ func init() { //nolint[noinit, gochecknoinits]
|
|||||||
|
|
||||||
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
||||||
scope.SetFingerprint([]string{"{{ default }}"})
|
scope.SetFingerprint([]string{"{{ default }}"})
|
||||||
|
scope.SetTag("UserID", "not-defined")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
sentry.Logger = log.New(
|
||||||
|
logrus.WithField("pkg", "sentry-go").WriterLevel(logrus.WarnLevel),
|
||||||
|
"", 0,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Reporter struct {
|
type Reporter struct {
|
||||||
@ -111,7 +119,6 @@ func (r *Reporter) scopedReport(context map[string]interface{}, doReport func())
|
|||||||
"Client": r.appName,
|
"Client": r.appName,
|
||||||
"Version": r.appVersion,
|
"Version": r.appVersion,
|
||||||
"UserAgent": r.userAgent.String(),
|
"UserAgent": r.userAgent.String(),
|
||||||
"UserID": "",
|
|
||||||
"HostArch": r.hostArch,
|
"HostArch": r.hostArch,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,3 +189,6 @@ func isFunctionFilteredOut(function string) bool {
|
|||||||
func Flush(maxWaiTime time.Duration) {
|
func Flush(maxWaiTime time.Duration) {
|
||||||
sentry.Flush(maxWaiTime)
|
sentry.Flush(maxWaiTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Reporter) SetClientFromManager(cm pmapi.Manager) {
|
||||||
|
}
|
||||||
|
|||||||
@ -82,4 +82,5 @@ type AuthRefreshHandler func(*AuthRefresh)
|
|||||||
type clientManager interface {
|
type clientManager interface {
|
||||||
r(context.Context) *resty.Request
|
r(context.Context) *resty.Request
|
||||||
authRefresh(context.Context, string, string) (*AuthRefresh, error)
|
authRefresh(context.Context, string, string) (*AuthRefresh, error)
|
||||||
|
setSentryUserID(userID string)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/getsentry/sentry-go"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -35,8 +36,9 @@ type manager struct {
|
|||||||
connectionObservers []ConnectionObserver
|
connectionObservers []ConnectionObserver
|
||||||
proxyDialer *ProxyTLSDialer
|
proxyDialer *ProxyTLSDialer
|
||||||
|
|
||||||
pingMutex *sync.RWMutex
|
pingMutex *sync.RWMutex
|
||||||
isPinging bool
|
isPinging bool
|
||||||
|
setSentryUserIDOnce sync.Once
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(cfg Config) Manager {
|
func New(cfg Config) Manager {
|
||||||
@ -45,11 +47,12 @@ func New(cfg Config) Manager {
|
|||||||
|
|
||||||
func newManager(cfg Config) *manager {
|
func newManager(cfg Config) *manager {
|
||||||
m := &manager{
|
m := &manager{
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
rc: resty.New().EnableTrace(),
|
rc: resty.New().EnableTrace(),
|
||||||
locker: &sync.Mutex{},
|
locker: &sync.Mutex{},
|
||||||
pingMutex: &sync.RWMutex{},
|
pingMutex: &sync.RWMutex{},
|
||||||
isPinging: false,
|
isPinging: false,
|
||||||
|
setSentryUserIDOnce: sync.Once{},
|
||||||
}
|
}
|
||||||
|
|
||||||
proxyDialer, transport := newProxyDialerAndTransport(cfg)
|
proxyDialer, transport := newProxyDialerAndTransport(cfg)
|
||||||
@ -158,3 +161,11 @@ func (m *manager) handleRequestFailure(req *resty.Request, err error) {
|
|||||||
|
|
||||||
go m.pingUntilSuccess()
|
go m.pingUntilSuccess()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *manager) setSentryUserID(userID string) {
|
||||||
|
m.setSentryUserIDOnce.Do(func() {
|
||||||
|
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
||||||
|
scope.SetTag("UserID", userID)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -21,7 +21,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/ProtonMail/gopenpgp/v2/crypto"
|
"github.com/ProtonMail/gopenpgp/v2/crypto"
|
||||||
"github.com/getsentry/sentry-go"
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
@ -126,7 +125,7 @@ func (c *client) UpdateUser(ctx context.Context) (*User, error) {
|
|||||||
|
|
||||||
c.user = user
|
c.user = user
|
||||||
c.addresses = addresses
|
c.addresses = addresses
|
||||||
sentry.ConfigureScope(func(scope *sentry.Scope) { scope.SetUser(sentry.User{ID: user.ID}) })
|
c.manager.setSentryUserID(user.ID)
|
||||||
|
|
||||||
return user, err
|
return user, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user