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
Hide 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 @@
...
@@ -32,11 +33,6 @@
#define REDISMODULE_EXPERIMENTAL_API
#define REDISMODULE_EXPERIMENTAL_API
#include "../redismodule.h"
#include "../redismodule.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <strings.h>
#include <pthread.h>
#include <pthread.h>
#include <unistd.h>
#include <unistd.h>
...
@@ -51,7 +47,7 @@ int RevokeCommand_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, in
...
@@ -51,7 +47,7 @@ int RevokeCommand_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, in
REDISMODULE_NOT_USED
(
argc
);
REDISMODULE_NOT_USED
(
argc
);
if
(
global_auth_client_id
)
{
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"
);
return
RedisModule_ReplyWithSimpleString
(
ctx
,
"OK"
);
}
else
{
}
else
{
return
RedisModule_ReplyWithError
(
ctx
,
"Global user currently not used"
);
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
...
@@ -481,7 +481,8 @@ typedef void (*moduleTypeDigestFunc)(struct RedisModuleDigest *digest, void *val
typedef
size_t
(
*
moduleTypeMemUsageFunc
)(
const
void
*
value
);
typedef
size_t
(
*
moduleTypeMemUsageFunc
)(
const
void
*
value
);
typedef
void
(
*
moduleTypeFreeFunc
)(
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
);
typedef
void
(
*
RedisModuleUserChangedFunc
)
(
uint64_t
client_id
,
void
*
privdata
);
...
@@ -803,13 +804,15 @@ typedef struct client {
...
@@ -803,13 +804,15 @@ typedef struct client {
list
*
pubsub_patterns
;
/* patterns a client is interested in (SUBSCRIBE) */
list
*
pubsub_patterns
;
/* patterns a client is interested in (SUBSCRIBE) */
sds
peerid
;
/* Cached peer ID. */
sds
peerid
;
/* Cached peer ID. */
listNode
*
client_list_node
;
/* list node in client list */
listNode
*
client_list_node
;
/* list node in client list */
RedisModuleUserChangedFunc
auth_callback
;
/* Callback to execute when the
RedisModuleUserChangedFunc
auth_callback
;
/* Module callback to execute
* authentication changes */
* when the authenticated user
* changes. */
void
*
auth_callback_privdata
;
/* Private data that is passed when the auth
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
void
*
auth_module
;
/* The module that owns the callback, which is used
* to disconnect the client if the module is
* 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,
/* 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
* invalidation messages for keys fetched by this client will be send to
...
...
tests/modules/auth.c
View file @
67aa527b
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
#include "redismodule.h"
#include "redismodule.h"
// A simple global user
// A simple global user
static
RedisModuleUser
*
global
;
static
RedisModuleUser
*
global
=
NULL
;
static
long
long
client_change_delta
=
0
;
static
long
long
client_change_delta
=
0
;
void
UserChangedCallback
(
uint64_t
client_id
,
void
*
privdata
)
{
void
UserChangedCallback
(
uint64_t
client_id
,
void
*
privdata
)
{
...
@@ -44,6 +44,8 @@ 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
)
{
int
Auth_CreateModuleUser
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
{
REDISMODULE_NOT_USED
(
argv
);
REDISMODULE_NOT_USED
(
argc
);
if
(
global
)
{
if
(
global
)
{
RedisModule_FreeModuleUser
(
global
);
RedisModule_FreeModuleUser
(
global
);
...
@@ -58,6 +60,8 @@ int Auth_CreateModuleUser(RedisModuleCtx *ctx, RedisModuleString **argv, int arg
...
@@ -58,6 +60,8 @@ int Auth_CreateModuleUser(RedisModuleCtx *ctx, RedisModuleString **argv, int arg
}
}
int
Auth_AuthModuleUser
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
{
int
Auth_AuthModuleUser
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
{
REDISMODULE_NOT_USED
(
argv
);
REDISMODULE_NOT_USED
(
argc
);
uint64_t
client_id
;
uint64_t
client_id
;
RedisModule_AuthenticateClientWithUser
(
ctx
,
global
,
UserChangedCallback
,
NULL
,
&
client_id
);
RedisModule_AuthenticateClientWithUser
(
ctx
,
global
,
UserChangedCallback
,
NULL
,
&
client_id
);
...
@@ -82,6 +86,8 @@ int Auth_AuthRealUser(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
...
@@ -82,6 +86,8 @@ int Auth_AuthRealUser(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
}
}
int
Auth_ChangeCount
(
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
;
long
long
result
=
client_change_delta
;
client_change_delta
=
0
;
client_change_delta
=
0
;
return
RedisModule_ReplyWithLongLong
(
ctx
,
result
);
return
RedisModule_ReplyWithLongLong
(
ctx
,
result
);
...
@@ -112,7 +118,5 @@ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
...
@@ -112,7 +118,5 @@ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
Auth_ChangeCount
,
""
,
0
,
0
,
0
)
==
REDISMODULE_ERR
)
Auth_ChangeCount
,
""
,
0
,
0
,
0
)
==
REDISMODULE_ERR
)
return
REDISMODULE_ERR
;
return
REDISMODULE_ERR
;
client_change_delta
=
0
;
return
REDISMODULE_OK
;
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