Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
67aa527b
Commit
67aa527b
authored
Dec 17, 2019
by
Madelyn Olson
Browse files
Added some documentation and fixed a test
parent
034dcf18
Changes
3
Show whitespace changes
Inline
Side-by-side
src/modules/helloacl.c
View file @
67aa527b
/* ACL API example - An example of performing custom password authentication
/* ACL API example - An example for performing custom synchronous and
* asynchronous password authentication.
*
* -----------------------------------------------------------------------------
*
...
...
@@ -32,11 +33,6 @@
#define REDISMODULE_EXPERIMENTAL_API
#include "../redismodule.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <strings.h>
#include <pthread.h>
#include <unistd.h>
...
...
@@ -51,7 +47,7 @@ int RevokeCommand_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, in
REDISMODULE_NOT_USED
(
argc
);
if
(
global_auth_client_id
)
{
RedisModule_D
isconnect
Client
(
ctx
,
global_auth_client_id
);
RedisModule_D
eauthenticateAndClose
Client
(
ctx
,
global_auth_client_id
);
return
RedisModule_ReplyWithSimpleString
(
ctx
,
"OK"
);
}
else
{
return
RedisModule_ReplyWithError
(
ctx
,
"Global user currently not used"
);
...
...
src/server.h
View file @
67aa527b
...
...
@@ -481,7 +481,8 @@ typedef void (*moduleTypeDigestFunc)(struct RedisModuleDigest *digest, void *val
typedef
size_t
(
*
moduleTypeMemUsageFunc
)(
const
void
*
value
);
typedef
void
(
*
moduleTypeFreeFunc
)(
void
*
value
);
/* TODO */
/* A callback that is called when the client authentication changes. This
* needs to be exposed since you can't cast a function pointer to (void *) */
typedef
void
(
*
RedisModuleUserChangedFunc
)
(
uint64_t
client_id
,
void
*
privdata
);
...
...
@@ -803,13 +804,15 @@ typedef struct client {
list
*
pubsub_patterns
;
/* patterns a client is interested in (SUBSCRIBE) */
sds
peerid
;
/* Cached peer ID. */
listNode
*
client_list_node
;
/* list node in client list */
RedisModuleUserChangedFunc
auth_callback
;
/* Callback to execute when the
* authentication changes */
RedisModuleUserChangedFunc
auth_callback
;
/* Module callback to execute
* when the authenticated user
* changes. */
void
*
auth_callback_privdata
;
/* Private data that is passed when the auth
* callback is executed */
* changed callback is executed. Opaque for
* Redis Core. */
void
*
auth_module
;
/* The module that owns the callback, which is used
* to disconnect the client if the module is
* unloaded
to allow
for cleanup. */
* unloaded for cleanup.
Opaque for Redis Core.
*/
/* If this client is in tracking mode and this field is non zero,
* invalidation messages for keys fetched by this client will be send to
...
...
tests/modules/auth.c
View file @
67aa527b
...
...
@@ -34,7 +34,7 @@
#include "redismodule.h"
// A simple global user
static
RedisModuleUser
*
global
;
static
RedisModuleUser
*
global
=
NULL
;
static
long
long
client_change_delta
=
0
;
void
UserChangedCallback
(
uint64_t
client_id
,
void
*
privdata
)
{
...
...
@@ -44,6 +44,8 @@ void UserChangedCallback(uint64_t client_id, void *privdata) {
}
int
Auth_CreateModuleUser
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
{
REDISMODULE_NOT_USED
(
argv
);
REDISMODULE_NOT_USED
(
argc
);
if
(
global
)
{
RedisModule_FreeModuleUser
(
global
);
...
...
@@ -58,6 +60,8 @@ int Auth_CreateModuleUser(RedisModuleCtx *ctx, RedisModuleString **argv, int arg
}
int
Auth_AuthModuleUser
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
{
REDISMODULE_NOT_USED
(
argv
);
REDISMODULE_NOT_USED
(
argc
);
uint64_t
client_id
;
RedisModule_AuthenticateClientWithUser
(
ctx
,
global
,
UserChangedCallback
,
NULL
,
&
client_id
);
...
...
@@ -82,6 +86,8 @@ int Auth_AuthRealUser(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
}
int
Auth_ChangeCount
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
{
REDISMODULE_NOT_USED
(
argv
);
REDISMODULE_NOT_USED
(
argc
);
long
long
result
=
client_change_delta
;
client_change_delta
=
0
;
return
RedisModule_ReplyWithLongLong
(
ctx
,
result
);
...
...
@@ -112,7 +118,5 @@ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
Auth_ChangeCount
,
""
,
0
,
0
,
0
)
==
REDISMODULE_ERR
)
return
REDISMODULE_ERR
;
client_change_delta
=
0
;
return
REDISMODULE_OK
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment