Skip to content

Commit d35a280

Browse files
authored
Merge pull request #109 from codex-team/sentry-key
support sentry_key provided by Query param
2 parents 8811076 + 61471d5 commit d35a280

File tree

2 files changed

+36
-27
lines changed

2 files changed

+36
-27
lines changed

pkg/server/errorshandler/handler_sentry.go

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,46 @@ func (handler *Handler) HandleSentry(ctx *fasthttp.RequestCtx) {
2020
return
2121
}
2222

23-
// check that X-Sentry-Auth header is available
24-
auth := ctx.Request.Header.Peek("X-Sentry-Auth")
25-
if auth == nil {
26-
log.Warnf("Incoming request without X-Sentry-Auth header")
27-
sendAnswerHTTP(ctx, ResponseMessage{Code: 400, Error: true, Message: "X-Sentry-Auth header is missing"})
28-
return
29-
}
30-
31-
hawkToken, err := getSentryKeyFromAuth(string(auth))
32-
if err != nil {
33-
log.Warnf("Incoming request with invalid X-Sentry-Auth header: %s", err)
34-
sendAnswerHTTP(ctx, ResponseMessage{Code: 400, Error: true, Message: err.Error()})
35-
return
23+
var hawkToken string
24+
var err error
25+
26+
// parse incoming get request params
27+
sentryKey := ctx.QueryArgs().Peek("sentry_key")
28+
if sentryKey == nil {
29+
log.Warnf("Incoming request with deprecated sentry_key parameter")
30+
31+
// check that X-Sentry-Auth header is available
32+
auth := ctx.Request.Header.Peek("X-Sentry-Auth")
33+
if auth == nil {
34+
log.Warnf("Incoming request without X-Sentry-Auth header")
35+
sendAnswerHTTP(ctx, ResponseMessage{Code: 400, Error: true, Message: "X-Sentry-Auth header is missing"})
36+
return
37+
}
38+
39+
hawkToken, err = getSentryKeyFromAuth(string(auth))
40+
if err != nil {
41+
log.Warnf("Incoming request with invalid X-Sentry-Auth header=%s: %s", auth, err)
42+
sendAnswerHTTP(ctx, ResponseMessage{Code: 400, Error: true, Message: err.Error()})
43+
return
44+
}
45+
} else {
46+
hawkToken = string(sentryKey)
3647
}
3748

3849
log.Debugf("Incoming request with hawk integration token: %s", hawkToken)
3950

40-
body := ctx.PostBody()
41-
42-
sentryEnvelopeBody, err := decompressGzipString(body)
43-
if err != nil {
44-
log.Warnf("Failed to decompress gzip body: %s", err)
45-
sendAnswerHTTP(ctx, ResponseMessage{Code: 400, Error: true, Message: "Failed to decompress gzip body"})
46-
return
51+
sentryEnvelopeBody := ctx.PostBody()
52+
53+
// todo: add check of gzip header
54+
if sentryKey == nil {
55+
sentryEnvelopeBody, err = decompressGzipString(sentryEnvelopeBody)
56+
if err != nil {
57+
log.Warnf("Failed to decompress gzip body: %s", err)
58+
sendAnswerHTTP(ctx, ResponseMessage{Code: 400, Error: true, Message: "Failed to decompress gzip body"})
59+
return
60+
}
61+
log.Debugf("Decompressed body: %s", sentryEnvelopeBody)
4762
}
48-
log.Debugf("Decompressed body: %s", sentryEnvelopeBody)
4963

5064
projectId, ok := handler.AccountsMongoDBClient.ValidTokens[hawkToken]
5165
if !ok {

pkg/server/server.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,7 @@ func (s *Server) handler(ctx *fasthttp.RequestCtx) {
137137
case "/release":
138138
s.ReleaseHandler.HandleHTTP(ctx)
139139
case "/api/0/envelope/":
140-
auth := ctx.Request.Header.Peek("X-Sentry-Auth")
141-
if auth != nil {
142-
s.ErrorsHandler.HandleSentry(ctx)
143-
} else {
144-
ctx.Error("X-Sentry-Auth not found", fasthttp.StatusBadRequest)
145-
}
140+
s.ErrorsHandler.HandleSentry(ctx)
146141
default:
147142
ctx.Error("Not found", fasthttp.StatusNotFound)
148143
}

0 commit comments

Comments
 (0)