Skip to content

Commit

Permalink
Merge branch 'main' of github.com:germanoeich/nirn-proxy into main
Browse files Browse the repository at this point in the history
  • Loading branch information
rxdn committed Apr 9, 2024
2 parents 7404319 + 14c6fa3 commit b56d6b3
Showing 4 changed files with 37 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/artifacts.yml
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ jobs:
goarch: ["386", amd64, arm]
steps:
- uses: actions/checkout@v2
- uses: wangyoucao577/go-release-action@v1.33
- uses: wangyoucao577/go-release-action@v1.49
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
goos: ${{ matrix.goos }}
9 changes: 0 additions & 9 deletions .github/workflows/docker-publish-tags.yml
Original file line number Diff line number Diff line change
@@ -34,15 +34,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2

# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@1e95c1de343b5b0c23352d6417ee3e48d5bcd422
with:
cosign-release: 'v1.4.0'


# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf
34 changes: 34 additions & 0 deletions lib/bucketpath.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package lib

import (
"encoding/base64"
"strings"
"time"
"unicode/utf8"
@@ -107,6 +108,11 @@ func GetOptimisticBucketPath(url string, method string) string {
currMajor = MajorInvites
case MajorGuilds:
fallthrough
case MajorInteractions:
if numParts == 4 && parts[3] == "callback" {
return "/" + MajorInteractions + "/" + parts[1] + "/!/callback"
}
fallthrough
case MajorWebhooks:
fallthrough
default:
@@ -149,6 +155,34 @@ func GetOptimisticBucketPath(url string, method string) string {
break
}

// Strip webhook tokens, or extract interaction ID
if len(part) >= 64 {
// aW50ZXJhY3Rpb246 is base64 for "interaction:"
if !strings.HasPrefix(part, "aW50ZXJhY3Rpb246") {
bucket.WriteString("/!")
continue
}

var interactionId string

// fix padding
if i := len(part) % 4; i != 0 {
part += strings.Repeat("=", 4-i)
}

decodedPart, err := base64.StdEncoding.DecodeString(part)
if err != nil {
interactionId = "Unknown"
} else {
interactionId = strings.Split(string(decodedPart), ":")[1]
}

bucket.WriteByte('/')
bucket.WriteString(interactionId)
continue
}


// Strip webhook tokens and interaction tokens
if (currMajor == MajorWebhooks || currMajor == MajorInteractions) && len(part) >= 64 {
bucket.WriteString("/!")
2 changes: 2 additions & 0 deletions lib/bucketpath_test.go
Original file line number Diff line number Diff line change
@@ -27,6 +27,8 @@ func TestPaths(t *testing.T) {
{"/api/v9/invites/dyno", "GET", "/invites/!"},
// Interactions major
{"/api/v9/interactions/203039963636301824/aW50ZXJhY3Rpb246ODg3NTU5MDA01AY4NTUxNDU0OnZwS3QycDhvREk2aVF3U1BqN2prcXBkRmNqNlp4VEhGRjZvSVlXSGh4WG4yb3l6Z3B6NTBPNVc3OHphV05OULLMOHBMa2RTZmVKd3lzVDA2b2h3OTUxaFJ4QlN0dkxXallPcmhnSHNJb0tSV0M5ZzY1NkN4VGRvemFOSHY4b05c/callback", "GET", "/interactions/203039963636301824/!/callback"},
// Interaction followup webhooks
{"/api/v10/webhooks/203039963636301824/aW50ZXJhY3Rpb246MTEwMzA0OTQyMDkzMDU2ODMyMjpOZUllWHdNU2J4RXBFMHVYRjBpU0pHMDdEb3BhM3ZlYklBODlMUmtlUXlRbzlpZzYyTnpLU0dqdWlyVlBvZnBSUlJHbUJHYlJ0N29MbE9KQUJVTFk4bTR4UzFtZEpEeXJyY0hBUERmTEhKVE9wRkNzU1FFWUkwTnlpWFY2WHdrRg/messages/@original", "POST", "/webhooks/203039963636301824/1103049420930568322/messages/@original"},
// No known major
{"/api/v9/invalid/203039963636301824", "GET", "/invalid/203039963636301824"},
{"/api/v9/invalid/203039963636301824/route/203039963636301824", "GET", "/invalid/203039963636301824/route/!"},

0 comments on commit b56d6b3

Please sign in to comment.