diff --git a/go.mod b/go.mod index 2d3ca77..2d2e345 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.22.3 require ( github.com/go-redsync/redsync/v4 v4.13.0 github.com/gofiber/fiber/v2 v2.52.4 - github.com/mcstatus-io/mcutil/v3 v3.5.0 + github.com/mcstatus-io/mcutil/v3 v3.6.0 github.com/redis/go-redis/v9 v9.5.1 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index 85f8a2a..699016f 100644 --- a/go.sum +++ b/go.sum @@ -36,10 +36,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mcstatus-io/mcutil/v3 v3.4.0 h1:mYELJ+lP6mWqL+bt2W9JIUMmfSZtrfBogBZ2p3HsCPQ= -github.com/mcstatus-io/mcutil/v3 v3.4.0/go.mod h1:f1hgiUD3WoNmeZdN1AXYASSEO7yPxVEsLCGXnPkK6p4= -github.com/mcstatus-io/mcutil/v3 v3.5.0 h1:RoMFR2hZtJL1JA4rrTSTL8Gp11j6mhLR8yOSU0ICCzs= -github.com/mcstatus-io/mcutil/v3 v3.5.0/go.mod h1:f1hgiUD3WoNmeZdN1AXYASSEO7yPxVEsLCGXnPkK6p4= +github.com/mcstatus-io/mcutil/v3 v3.6.0 h1:IJqIXMtVtz1yUcMKxnrUIcAlChm/OTNAPzyb16TTwLk= +github.com/mcstatus-io/mcutil/v3 v3.6.0/go.mod h1:6Rv4qnejaTezu/feuQ2M4131phQxw0Q4C5h3An/iNxI= github.com/redis/go-redis/v9 v9.5.1 h1:H1X4D3yHPaYrkL5X06Wh6xNVM/pX0Ft4RV0vMGvLBh8= github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= github.com/redis/rueidis v1.0.19 h1:s65oWtotzlIFN8eMPhyYwxlwLR1lUdhza2KtWprKYSo= diff --git a/src/routes.go b/src/routes.go index 765d307..74a6979 100644 --- a/src/routes.go +++ b/src/routes.go @@ -162,43 +162,20 @@ func SendVoteHandler(ctx *fiber.Ctx) error { return ctx.Status(http.StatusBadRequest).SendString(err.Error()) } - switch opts.Version { - case 1: - { - c, cancel := context.WithTimeout(context.Background(), opts.Timeout) + c, cancel := context.WithTimeout(context.Background(), opts.Timeout) - defer cancel() + defer cancel() - if err = mcutil.SendVote(c, opts.Host, opts.Port, options.Vote{ - RequireVersion: 1, - PublicKey: opts.PublicKey, - ServiceName: opts.ServiceName, - Username: opts.Username, - IPAddress: opts.IPAddress, - Timestamp: opts.Timestamp, - Timeout: opts.Timeout, - }); err != nil { - return ctx.Status(http.StatusBadRequest).SendString(err.Error()) - } - } - case 2: - { - c, cancel := context.WithTimeout(context.Background(), opts.Timeout) - - defer cancel() - - if err = mcutil.SendVote(c, opts.Host, opts.Port, options.Vote{ - RequireVersion: 2, - ServiceName: opts.ServiceName, - Username: opts.Username, - Token: opts.Token, - UUID: opts.UUID, - Timestamp: opts.Timestamp, - Timeout: opts.Timeout, - }); err != nil { - return ctx.Status(http.StatusBadRequest).SendString(err.Error()) - } - } + if err = mcutil.SendVote(c, opts.Host, opts.Port, options.Vote{ + Token: opts.Token, + PublicKey: opts.PublicKey, + ServiceName: opts.ServiceName, + Username: opts.Username, + IPAddress: opts.IPAddress, + Timestamp: opts.Timestamp, + Timeout: opts.Timeout, + }); err != nil { + return ctx.Status(http.StatusBadRequest).SendString(err.Error()) } return ctx.Status(http.StatusOK).SendString("The vote was successfully sent to the server") diff --git a/src/util.go b/src/util.go index e26f76d..d37178a 100644 --- a/src/util.go +++ b/src/util.go @@ -29,7 +29,6 @@ var ( // VoteOptions is the options provided as query parameters to the vote route. type VoteOptions struct { - Version int IPAddress string Host string Port uint16 @@ -152,15 +151,6 @@ func ParseAddress(address string, defaultPort uint16) (string, uint16, error) { func GetVoteOptions(ctx *fiber.Ctx) (*VoteOptions, error) { result := VoteOptions{} - // Version - { - result.Version = ctx.QueryInt("version", 2) - - if result.Version < 0 || result.Version > 2 { - return nil, fmt.Errorf("invalid 'version' query parameter: %d", result.Version) - } - } - // Host { result.Host = ctx.Query("host") @@ -203,19 +193,11 @@ func GetVoteOptions(ctx *fiber.Ctx) (*VoteOptions, error) { // Public Key { result.PublicKey = ctx.Query("publickey") - - if result.Version == 1 && len(result.PublicKey) < 1 { - return nil, fmt.Errorf("invalid 'publickey' query parameter: %s", result.PublicKey) - } } // Token { result.Token = ctx.Query("token") - - if result.Version == 2 && len(result.Token) < 1 { - return nil, fmt.Errorf("invalid 'token' query parameter: %s", result.Token) - } } // IP Address @@ -245,6 +227,11 @@ func GetVoteOptions(ctx *fiber.Ctx) (*VoteOptions, error) { result.Timeout = time.Duration(math.Max(float64(time.Second)*ctx.QueryFloat("timeout", 5.0), float64(time.Millisecond*250))) } + // Test token and public key parameters + if len(result.Token) < 1 && len(result.PublicKey) < 1 { + return nil, errors.New("query parameter 'token', 'publickey' or both must have a value, but both were empty") + } + return &result, nil }