]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add username to the REDIS auth command
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 18 Oct 2022 13:31:34 +0000 (09:31 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 18 Oct 2022 13:32:15 +0000 (09:32 -0400)
src/lib/redis/base.h
src/lib/redis/cluster.c

index e743ca8f6882bab87df41aced0630daf9de684e4..7ed51d24a3715d86823bf5b0ad8d8460b43d23b4 100644 (file)
@@ -106,6 +106,7 @@ typedef struct {
        uint16_t                port;           //!< of Redis daemon.
        uint32_t                database;       //!< number on Redis server.
 
+       char const              *username;      //!< for acls.
        char const              *password;      //!< to authenticate to Redis.
 
        uint8_t                 max_nodes;      //!< Maximum number of cluster nodes to connect to.
@@ -126,6 +127,7 @@ typedef struct {
        { FR_CONF_OFFSET("server", FR_TYPE_STRING | FR_TYPE_REQUIRED | FR_TYPE_MULTI, fr_redis_conf_t, hostname) }, \
        { FR_CONF_OFFSET("port", FR_TYPE_UINT16, fr_redis_conf_t, port), .dflt = "6379" }, \
        { FR_CONF_OFFSET("database", FR_TYPE_UINT32, fr_redis_conf_t, database), .dflt = "0" }, \
+       { FR_CONF_OFFSET("username", FR_TYPE_STRING, fr_redis_conf_t, username) }, \
        { FR_CONF_OFFSET("password", FR_TYPE_STRING | FR_TYPE_SECRET, fr_redis_conf_t, password) }, \
        { FR_CONF_OFFSET("max_nodes", FR_TYPE_UINT8, fr_redis_conf_t, max_nodes), .dflt = "20" }, \
        { FR_CONF_OFFSET("max_alt", FR_TYPE_UINT32, fr_redis_conf_t, max_alt), .dflt = "3" }, \
index c715d2bb149b38be0c932bd7b685c5d56f2e191c..86ca4b793238079315bda9bbff4d7929cfae2e1f 100644 (file)
@@ -1472,8 +1472,17 @@ void *fr_redis_cluster_conn_create(TALLOC_CTX *ctx, void *instance, fr_time_delt
        }
 
        if (node->cluster->conf->password) {
-               DEBUG3("%s - [%i] Executing: AUTH %s", log_prefix, node->id, node->cluster->conf->password);
-               reply = redisCommand(handle, "AUTH %s", node->cluster->conf->password);
+               if (node->cluster->conf->username) {
+                       DEBUG3("%s - [%i] Executing: AUTH %s %s", log_prefix, node->id,
+                              node->cluster->conf->username,
+                              node->cluster->conf->password);
+                       reply = redisCommand(handle, "AUTH %s %s",
+                                            node->cluster->conf->username,
+                                            node->cluster->conf->password);
+               } else {
+                       DEBUG3("%s - [%i] Executing: AUTH %s", log_prefix, node->id, node->cluster->conf->password);
+                       reply = redisCommand(handle, "AUTH %s", node->cluster->conf->password);
+               }
                if (!reply) {
                        ERROR("%s - [%i] Failed authenticating: %s", log_prefix, node->id, handle->errstr);
                error: