diff --git a/cmd_connection.go b/cmd_connection.go index 12b6ad49..9cc922f8 100644 --- a/cmd_connection.go +++ b/cmd_connection.go @@ -55,6 +55,9 @@ func (m *Miniredis) cmdEcho(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } msg := r.Args[0] out.WriteString(msg) return nil @@ -66,6 +69,10 @@ func (m *Miniredis) cmdSelect(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + id, err := strconv.Atoi(r.Args[0]) if err != nil { id = 0 diff --git a/cmd_generic.go b/cmd_generic.go index 4de57f7e..c5319269 100644 --- a/cmd_generic.go +++ b/cmd_generic.go @@ -42,6 +42,10 @@ func makeCmdExpire(m *Miniredis, cmd string) func(*redeo.Responder, *redeo.Reque setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] value := r.Args[1] i, err := strconv.Atoi(value) @@ -72,6 +76,9 @@ func (m *Miniredis) cmdTTL(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -99,6 +106,9 @@ func (m *Miniredis) cmdPTTL(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -122,6 +132,13 @@ func (m *Miniredis) cmdPTTL(out *redeo.Responder, r *redeo.Request) error { // PERSIST func (m *Miniredis) cmdPersist(out *redeo.Responder, r *redeo.Request) error { + if len(r.Args) != 1 { + setDirty(r.Client()) + return r.WrongNumberOfArgs() + } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -147,6 +164,9 @@ func (m *Miniredis) cmdPersist(out *redeo.Responder, r *redeo.Request) error { // DEL func (m *Miniredis) cmdDel(out *redeo.Responder, r *redeo.Request) error { + if !m.handleAuth(r.Client(), out) { + return nil + } return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -168,6 +188,9 @@ func (m *Miniredis) cmdType(out *redeo.Responder, r *redeo.Request) error { out.WriteErrorString("usage error") return nil } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -190,6 +213,9 @@ func (m *Miniredis) cmdExists(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -210,6 +236,9 @@ func (m *Miniredis) cmdMove(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] targetDB, err := strconv.Atoi(r.Args[1]) @@ -239,6 +268,9 @@ func (m *Miniredis) cmdKeys(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -259,6 +291,9 @@ func (m *Miniredis) cmdRandomkey(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -284,6 +319,9 @@ func (m *Miniredis) cmdRename(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } from := r.Args[0] to := r.Args[1] @@ -307,6 +345,9 @@ func (m *Miniredis) cmdRenamenx(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } from := r.Args[0] to := r.Args[1] @@ -335,6 +376,9 @@ func (m *Miniredis) cmdScan(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } cursor, err := strconv.Atoi(r.Args[0]) if err != nil { diff --git a/cmd_hash.go b/cmd_hash.go index be9e1020..5b2282ed 100644 --- a/cmd_hash.go +++ b/cmd_hash.go @@ -33,9 +33,15 @@ func (m *Miniredis) cmdHset(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } - key := r.Args[0] - field := r.Args[1] - value := r.Args[2] + if !m.handleAuth(r.Client(), out) { + return nil + } + + var ( + key = r.Args[0] + field = r.Args[1] + value = r.Args[2] + ) return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -59,9 +65,15 @@ func (m *Miniredis) cmdHsetnx(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } - key := r.Args[0] - field := r.Args[1] - value := r.Args[2] + if !m.handleAuth(r.Client(), out) { + return nil + } + + var ( + key = r.Args[0] + field = r.Args[1] + value = r.Args[2] + ) return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -92,6 +104,10 @@ func (m *Miniredis) cmdHmset(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] args := r.Args[1:] if len(args)%2 != 0 { @@ -125,6 +141,10 @@ func (m *Miniredis) cmdHget(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] field := r.Args[1] @@ -155,6 +175,10 @@ func (m *Miniredis) cmdHdel(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] fields := r.Args[1:] @@ -196,6 +220,10 @@ func (m *Miniredis) cmdHexists(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] field := r.Args[1] @@ -226,6 +254,10 @@ func (m *Miniredis) cmdHgetall(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -255,6 +287,10 @@ func (m *Miniredis) cmdHkeys(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -283,6 +319,10 @@ func (m *Miniredis) cmdHvals(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -311,6 +351,10 @@ func (m *Miniredis) cmdHlen(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -336,6 +380,10 @@ func (m *Miniredis) cmdHmget(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -369,9 +417,15 @@ func (m *Miniredis) cmdHincrby(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } - key := r.Args[0] - field := r.Args[1] - delta, err := strconv.Atoi(r.Args[2]) + if !m.handleAuth(r.Client(), out) { + return nil + } + + var ( + key = r.Args[0] + field = r.Args[1] + delta, err = strconv.Atoi(r.Args[2]) + ) if err != nil { setDirty(r.Client()) out.WriteErrorString(msgInvalidInt) @@ -401,9 +455,15 @@ func (m *Miniredis) cmdHincrbyfloat(out *redeo.Responder, r *redeo.Request) erro setDirty(r.Client()) return r.WrongNumberOfArgs() } - key := r.Args[0] - field := r.Args[1] - delta, err := strconv.ParseFloat(r.Args[2], 64) + if !m.handleAuth(r.Client(), out) { + return nil + } + + var ( + key = r.Args[0] + field = r.Args[1] + delta, err = strconv.ParseFloat(r.Args[2], 64) + ) if err != nil { setDirty(r.Client()) out.WriteErrorString(msgInvalidFloat) @@ -433,6 +493,9 @@ func (m *Miniredis) cmdHscan(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] cursor, err := strconv.Atoi(r.Args[1]) diff --git a/cmd_list.go b/cmd_list.go index 2be9949a..a38b6d2a 100644 --- a/cmd_list.go +++ b/cmd_list.go @@ -36,6 +36,9 @@ func (m *Miniredis) cmdLindex(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] offset, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -76,6 +79,9 @@ func (m *Miniredis) cmdLinsert(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] where := 0 switch strings.ToLower(r.Args[1]) { @@ -135,6 +141,9 @@ func (m *Miniredis) cmdLlen(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -161,6 +170,9 @@ func (m *Miniredis) cmdLpop(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -187,6 +199,9 @@ func (m *Miniredis) cmdLpush(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] args := r.Args[1:] @@ -212,6 +227,9 @@ func (m *Miniredis) cmdLpushx(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] value := r.Args[1] @@ -238,6 +256,9 @@ func (m *Miniredis) cmdLrange(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] start, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -280,6 +301,9 @@ func (m *Miniredis) cmdLrem(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] count, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -340,6 +364,9 @@ func (m *Miniredis) cmdLset(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] index, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -382,6 +409,9 @@ func (m *Miniredis) cmdLtrim(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] start, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -423,6 +453,9 @@ func (m *Miniredis) cmdRpop(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -448,6 +481,9 @@ func (m *Miniredis) cmdRpoplpush(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } src := r.Args[0] dst := r.Args[1] @@ -474,6 +510,9 @@ func (m *Miniredis) cmdRpush(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] args := r.Args[1:] @@ -499,6 +538,9 @@ func (m *Miniredis) cmdRpushx(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] value := r.Args[1] diff --git a/cmd_set.go b/cmd_set.go index e1d6c51e..15ec9fb3 100644 --- a/cmd_set.go +++ b/cmd_set.go @@ -35,6 +35,9 @@ func (m *Miniredis) cmdSadd(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] elems := r.Args[1:] @@ -58,6 +61,9 @@ func (m *Miniredis) cmdScard(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -85,6 +91,9 @@ func (m *Miniredis) cmdSdiff(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } keys := r.Args @@ -110,6 +119,9 @@ func (m *Miniredis) cmdSdiffstore(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } dest := r.Args[0] keys := r.Args[1:] @@ -135,6 +147,9 @@ func (m *Miniredis) cmdSinter(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } keys := r.Args @@ -160,6 +175,9 @@ func (m *Miniredis) cmdSinterstore(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } dest := r.Args[0] keys := r.Args[1:] @@ -185,6 +203,9 @@ func (m *Miniredis) cmdSismember(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] value := r.Args[1] @@ -216,6 +237,9 @@ func (m *Miniredis) cmdSmembers(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -247,6 +271,9 @@ func (m *Miniredis) cmdSmove(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } src := r.Args[0] dst := r.Args[1] @@ -286,6 +313,9 @@ func (m *Miniredis) cmdSpop(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -320,6 +350,9 @@ func (m *Miniredis) cmdSrandmember(out *redeo.Responder, r *redeo.Request) error out.WriteErrorString(msgSyntaxError) return nil } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] count := 0 @@ -382,6 +415,9 @@ func (m *Miniredis) cmdSrem(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] fields := r.Args[1:] @@ -409,6 +445,9 @@ func (m *Miniredis) cmdSunion(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } keys := r.Args @@ -434,6 +473,9 @@ func (m *Miniredis) cmdSunionstore(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } dest := r.Args[0] keys := r.Args[1:] @@ -459,6 +501,9 @@ func (m *Miniredis) cmdSscan(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] cursor, err := strconv.Atoi(r.Args[1]) diff --git a/cmd_sorted_set.go b/cmd_sorted_set.go index a3d42bd4..4230d57c 100644 --- a/cmd_sorted_set.go +++ b/cmd_sorted_set.go @@ -45,6 +45,9 @@ func (m *Miniredis) cmdZadd(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] args := r.Args[1:] @@ -90,6 +93,9 @@ func (m *Miniredis) cmdZcard(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -116,6 +122,9 @@ func (m *Miniredis) cmdZcount(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] min, minIncl, err := parseFloatRange(r.Args[1]) @@ -156,6 +165,9 @@ func (m *Miniredis) cmdZincrby(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] delta, err := strconv.ParseFloat(r.Args[1], 64) @@ -184,6 +196,9 @@ func (m *Miniredis) cmdZinterstore(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } destination := r.Args[0] numKeys, err := strconv.Atoi(r.Args[1]) @@ -308,6 +323,9 @@ func (m *Miniredis) cmdZlexcount(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] min, minIncl, err := parseLexrange(r.Args[1]) @@ -351,6 +369,9 @@ func (m *Miniredis) makeCmdZrange(cmd string, reverse bool) redeo.HandlerFunc { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] start, err := strconv.Atoi(r.Args[1]) @@ -419,6 +440,9 @@ func (m *Miniredis) cmdZrangebylex(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] min, minIncl, err := parseLexrange(r.Args[1]) @@ -518,6 +542,9 @@ func (m *Miniredis) makeCmdZrangebyscore(cmd string, reverse bool) redeo.Handler setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] min, minIncl, err := parseFloatRange(r.Args[1]) @@ -636,6 +663,9 @@ func (m *Miniredis) makeCmdZrank(cmd string, reverse bool) redeo.HandlerFunc { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] member := r.Args[1] @@ -673,6 +703,9 @@ func (m *Miniredis) cmdZrem(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] members := r.Args[1:] @@ -706,6 +739,9 @@ func (m *Miniredis) cmdZremrangebylex(out *redeo.Responder, r *redeo.Request) er setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] min, minIncl, err := parseLexrange(r.Args[1]) @@ -752,6 +788,9 @@ func (m *Miniredis) cmdZremrangebyrank(out *redeo.Responder, r *redeo.Request) e setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] start, err := strconv.Atoi(r.Args[1]) @@ -795,6 +834,9 @@ func (m *Miniredis) cmdZremrangebyscore(out *redeo.Responder, r *redeo.Request) setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] min, minIncl, err := parseFloatRange(r.Args[1]) @@ -839,6 +881,9 @@ func (m *Miniredis) cmdZscore(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] member := r.Args[1] @@ -1003,6 +1048,9 @@ func (m *Miniredis) cmdZunionstore(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } destination := r.Args[0] numKeys, err := strconv.Atoi(r.Args[1]) @@ -1118,6 +1166,9 @@ func (m *Miniredis) cmdZscan(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] cursor, err := strconv.Atoi(r.Args[1]) diff --git a/cmd_string.go b/cmd_string.go index d352d2a4..68fbfc77 100644 --- a/cmd_string.go +++ b/cmd_string.go @@ -38,16 +38,20 @@ func commandsString(m *Miniredis, srv *redeo.Server) { // SET func (m *Miniredis) cmdSet(out *redeo.Responder, r *redeo.Request) error { - if !m.handleAuth(r.Client(), out) { - return nil - } if len(r.Args) < 2 { setDirty(r.Client()) return r.WrongNumberOfArgs() } - nx := false // set iff not exists - xx := false // set iff exists - expire := 0 // For seconds and milliseconds. + if !m.handleAuth(r.Client(), out) { + return nil + } + + var ( + nx = false // set iff not exists + xx = false // set iff exists + expire = 0 // For seconds and milliseconds. + ) + key := r.Args[0] value := r.Args[1] r.Args = r.Args[2:] @@ -115,6 +119,9 @@ func (m *Miniredis) cmdSetex(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] ttl, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -140,6 +147,9 @@ func (m *Miniredis) cmdPsetex(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] ttl, err := strconv.Atoi(r.Args[1]) if err != nil { @@ -165,6 +175,9 @@ func (m *Miniredis) cmdSetnx(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] value := r.Args[1] @@ -187,6 +200,9 @@ func (m *Miniredis) cmdMset(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } if len(r.Args)%2 != 0 { setDirty(r.Client()) // non-default error message @@ -214,6 +230,9 @@ func (m *Miniredis) cmdMsetnx(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } if len(r.Args)%2 != 0 { setDirty(r.Client()) // non-default error message (yes, with 'MSET'). @@ -249,13 +268,13 @@ func (m *Miniredis) cmdMsetnx(out *redeo.Responder, r *redeo.Request) error { // GET func (m *Miniredis) cmdGet(out *redeo.Responder, r *redeo.Request) error { - if !m.handleAuth(r.Client(), out) { - return nil - } if len(r.Args) != 1 { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -280,6 +299,9 @@ func (m *Miniredis) cmdGetset(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] value := r.Args[1] @@ -311,6 +333,9 @@ func (m *Miniredis) cmdMget(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -338,6 +363,9 @@ func (m *Miniredis) cmdIncr(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -363,6 +391,9 @@ func (m *Miniredis) cmdIncrby(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] delta, err := strconv.Atoi(r.Args[1]) @@ -396,6 +427,9 @@ func (m *Miniredis) cmdIncrbyfloat(out *redeo.Responder, r *redeo.Request) error setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] delta, err := strconv.ParseFloat(r.Args[1], 64) @@ -429,6 +463,9 @@ func (m *Miniredis) cmdDecr(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { db := m.db(ctx.selectedDB) @@ -454,6 +491,9 @@ func (m *Miniredis) cmdDecrby(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] delta, err := strconv.Atoi(r.Args[1]) @@ -487,6 +527,9 @@ func (m *Miniredis) cmdStrlen(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] @@ -508,6 +551,9 @@ func (m *Miniredis) cmdAppend(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] value := r.Args[1] @@ -533,6 +579,9 @@ func (m *Miniredis) cmdGetrange(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] start, err := strconv.Atoi(r.Args[1]) @@ -567,6 +616,9 @@ func (m *Miniredis) cmdSetrange(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] pos, err := strconv.Atoi(r.Args[1]) @@ -607,11 +659,16 @@ func (m *Miniredis) cmdBitcount(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } - key := r.Args[0] - useRange := false - start, end := 0, 0 - args := r.Args[1:] + var ( + key = r.Args[0] + useRange = false + start, end = 0, 0 + args = r.Args[1:] + ) if len(args) >= 2 { useRange = true var err error @@ -663,10 +720,15 @@ func (m *Miniredis) cmdBitop(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } - op := strings.ToUpper(r.Args[0]) - target := r.Args[1] - input := r.Args[2:] + var ( + op = strings.ToUpper(r.Args[0]) + target = r.Args[1] + input = r.Args[2:] + ) // 'op' is tested when the transaction is executed. return withTx(m, out, r, func(out *redeo.Responder, ctx *connCtx) { @@ -734,6 +796,9 @@ func (m *Miniredis) cmdBitpos(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] bit, err := strconv.Atoi(r.Args[1]) @@ -812,6 +877,9 @@ func (m *Miniredis) cmdGetbit(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] bit, err := strconv.Atoi(r.Args[1]) @@ -850,6 +918,9 @@ func (m *Miniredis) cmdSetbit(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } key := r.Args[0] bit, err := strconv.Atoi(r.Args[1]) diff --git a/cmd_transactions.go b/cmd_transactions.go index fdf911e8..bf1a517b 100644 --- a/cmd_transactions.go +++ b/cmd_transactions.go @@ -20,6 +20,10 @@ func (m *Miniredis) cmdMulti(out *redeo.Responder, r *redeo.Request) error { if len(r.Args) != 0 { return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } + ctx := getCtx(r.Client()) if inTx(ctx) { @@ -38,6 +42,9 @@ func (m *Miniredis) cmdExec(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } ctx := getCtx(r.Client()) @@ -78,6 +85,9 @@ func (m *Miniredis) cmdDiscard(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } ctx := getCtx(r.Client()) if !inTx(ctx) { @@ -95,6 +105,9 @@ func (m *Miniredis) cmdWatch(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } ctx := getCtx(r.Client()) if inTx(ctx) { @@ -118,6 +131,9 @@ func (m *Miniredis) cmdUnwatch(out *redeo.Responder, r *redeo.Request) error { setDirty(r.Client()) return r.WrongNumberOfArgs() } + if !m.handleAuth(r.Client(), out) { + return nil + } // Doesn't matter if UNWATCH is in a TX or not. Looks like a Redis bug to me. unwatch(getCtx(r.Client()))