summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalvatore Sanfilippo <antirez@gmail.com>2018-12-07 11:30:07 +0100
committerGitHub <noreply@github.com>2018-12-07 11:30:07 +0100
commit9f87ef93993b386c22ea673c8f2f1f298f0d8bc9 (patch)
tree089d574a0d9d48797b2b280137f1ac2c8a88edb4
parent75c181ee2b91a456ec5a3ac46e1d9f2ad06fe706 (diff)
parentf24ad5d83140eee04bd1cda8ee19bced0de26c11 (diff)
downloadredis-9f87ef93993b386c22ea673c8f2f1f298f0d8bc9.tar.gz
Merge pull request #5460 from krallin/env-password
cli: pass auth through REDISCLI_AUTH
-rw-r--r--src/redis-cli.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/redis-cli.c b/src/redis-cli.c
index c85358144..0ae96f564 100644
--- a/src/redis-cli.c
+++ b/src/redis-cli.c
@@ -67,6 +67,7 @@
#define REDIS_CLI_HISTFILE_DEFAULT ".rediscli_history"
#define REDIS_CLI_RCFILE_ENV "REDISCLI_RCFILE"
#define REDIS_CLI_RCFILE_DEFAULT ".redisclirc"
+#define REDIS_CLI_AUTH_ENV "REDISCLI_AUTH"
#define CLUSTER_MANAGER_SLOTS 16384
#define CLUSTER_MANAGER_MIGRATE_TIMEOUT 60000
@@ -1419,6 +1420,14 @@ static int parseOptions(int argc, char **argv) {
return i;
}
+static void parseEnv() {
+ /* Set auth from env, but do not overwrite CLI arguments if passed */
+ char *auth = getenv(REDIS_CLI_AUTH_ENV);
+ if (auth != NULL && config.auth == NULL) {
+ config.auth = auth;
+ }
+}
+
static sds readArgFromStdin(void) {
char buf[1024];
sds arg = sdsempty();
@@ -1446,6 +1455,9 @@ static void usage(void) {
" -p <port> Server port (default: 6379).\n"
" -s <socket> Server socket (overrides hostname and port).\n"
" -a <password> Password to use when connecting to the server.\n"
+" You can also use the " REDIS_CLI_AUTH_ENV " environment\n"
+" variable to pass this password more safely\n"
+" (if both are used, this argument takes predecence).\n"
" -u <uri> Server URI.\n"
" -r <repeat> Execute specified command N times.\n"
" -i <interval> When -r is used, waits <interval> seconds per command.\n"
@@ -6781,6 +6793,8 @@ int main(int argc, char **argv) {
argc -= firstarg;
argv += firstarg;
+ parseEnv();
+
/* Cluster Manager mode */
if (CLUSTER_MANAGER_MODE()) {
clusterManagerCommandProc *proc = validateClusterManagerCommand();