Skip to content

Commit

Permalink
#1: Disallow to query invalid Mojang usernames
Browse files Browse the repository at this point in the history
  • Loading branch information
erickskrauch committed Apr 20, 2019
1 parent b1e18d0 commit 96af45b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
12 changes: 12 additions & 0 deletions api/mojang/queue/queue.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package queue

import (
"regexp"
"strings"
"sync"
"time"
Expand All @@ -15,6 +16,9 @@ var forever = func() bool {
return true
}

// https://help.mojang.com/customer/portal/articles/928638
var allowedUsernamesRegex = regexp.MustCompile(`^[\w_]{3,16}$`)

type JobsQueue struct {
Storage Storage

Expand All @@ -31,6 +35,14 @@ func (ctx *JobsQueue) GetTexturesForUsername(username string) chan *mojang.Signe
})

responseChan := make(chan *mojang.SignedTexturesResponse)
if !allowedUsernamesRegex.MatchString(username) {
go func() {
responseChan <- nil
close(responseChan)
}()

return responseChan
}

cachedResult := ctx.Storage.Get(username)
if cachedResult != nil {
Expand Down
8 changes: 7 additions & 1 deletion api/mojang/queue/queue_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package queue
import (
"crypto/rand"
"encoding/base64"
"strings"
"time"

"github.com/elyby/chrly/api/mojang"
Expand Down Expand Up @@ -251,6 +252,11 @@ func (suite *QueueTestSuite) TestHandle429ResponseWhenRequestingUsersTextures()
suite.Assert().Nil(<-resultChan)
}

func (suite *QueueTestSuite) TestReceiveTexturesForNotAllowedMojangUsername() {
resultChan := suite.Queue.GetTexturesForUsername("Not allowed")
suite.Assert().Nil(<-resultChan)
}

func TestJobsQueueSuite(t *testing.T) {
suite.Run(t, new(QueueTestSuite))
}
Expand All @@ -259,7 +265,7 @@ func TestJobsQueueSuite(t *testing.T) {
func randStr(len int) string {
buff := make([]byte, len)
_, _ = rand.Read(buff)
str := base64.StdEncoding.EncodeToString(buff)
str := strings.ReplaceAll(base64.URLEncoding.EncodeToString(buff), "-", "_")

// Base 64 can be longer than len
return str[:len]
Expand Down

0 comments on commit 96af45b

Please sign in to comment.