ACL LOG: implement LOG RESET.

This commit is contained in:
antirez 2020-01-29 18:51:04 +01:00
parent 6671032faf
commit 30a466ba38

View File

@ -95,6 +95,7 @@ struct ACLUserFlag {
void ACLResetSubcommandsForCommand(user *u, unsigned long id); void ACLResetSubcommandsForCommand(user *u, unsigned long id);
void ACLResetSubcommands(user *u); void ACLResetSubcommands(user *u);
void ACLAddAllowedSubcommand(user *u, unsigned long id, const char *sub); void ACLAddAllowedSubcommand(user *u, unsigned long id, const char *sub);
void ACLFreeLogEntry(void *le);
/* The length of the string representation of a hashed password. */ /* The length of the string representation of a hashed password. */
#define HASH_PASSWORD_LEN SHA256_BLOCK_SIZE*2 #define HASH_PASSWORD_LEN SHA256_BLOCK_SIZE*2
@ -1493,7 +1494,8 @@ int ACLLogMatchEntry(ACLLogEntry *a, ACLLogEntry *b) {
} }
/* Release an ACL log entry. */ /* Release an ACL log entry. */
void ACLFreeLogEntry(ACLLogEntry *le) { void ACLFreeLogEntry(void *leptr) {
ACLLogEntry *le = leptr;
sdsfree(le->object); sdsfree(le->object);
sdsfree(le->username); sdsfree(le->username);
sdsfree(le->cinfo); sdsfree(le->cinfo);
@ -1774,7 +1776,9 @@ void aclCommand(client *c) {
* the "RESET" command in order to flush the old entires. */ * the "RESET" command in order to flush the old entires. */
if (c->argc == 3) { if (c->argc == 3) {
if (!strcasecmp(c->argv[2]->ptr,"reset")) { if (!strcasecmp(c->argv[2]->ptr,"reset")) {
/* TODO: reset the log. */ listSetFreeMethod(ACLLog,ACLFreeLogEntry);
listEmpty(ACLLog);
listSetFreeMethod(ACLLog,NULL);
addReply(c,shared.ok); addReply(c,shared.ok);
return; return;
} else if (getLongFromObjectOrReply(c,c->argv[2],&count,NULL) } else if (getLongFromObjectOrReply(c,c->argv[2],&count,NULL)