Merge pull request #350 from cytopia/redis-password

Redis startup options
This commit is contained in:
cytopia 2018-08-12 00:07:27 +02:00 committed by GitHub
commit 58da41ab85
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 93 additions and 3 deletions

View File

@ -127,8 +127,28 @@ function loadClass($class) {
break; break;
case 'Redis': case 'Redis':
// Check if redis is using a password
$REDIS_ROOT_PASSWORD = '';
$_REDIS_ARGS = loadClass('Helper')->getEnv('REDIS_ARGS');
$_REDIS_PASS = preg_split("/--requirepass\s+/", $_REDIS_ARGS);
if (is_array($_REDIS_PASS) && count($_REDIS_PASS)) {
// In case the option is specified multiple times, use the last effective one.
$_REDIS_PASS = $_REDIS_PASS[count($_REDIS_PASS)-1];
if (strlen($_REDIS_PASS) > 0) {
$REDIS_ROOT_PASSWORD = $_REDIS_PASS;
}
}
loadFile($class, $cnt_dir); loadFile($class, $cnt_dir);
$_LOADED_LIBS[$class] = \devilbox\Redis::getInstance($GLOBALS['REDIS_HOST_NAME']); if ($REDIS_ROOT_PASSWORD == '') {
$_LOADED_LIBS[$class] = \devilbox\Redis::getInstance($GLOBALS['REDIS_HOST_NAME']);
} else {
$_LOADED_LIBS[$class] = \devilbox\Redis::getInstance($GLOBALS['REDIS_HOST_NAME'], array(
'pass' => $REDIS_ROOT_PASSWORD,
));
}
break; break;
case 'Memcd': case 'Memcd':
@ -143,7 +163,7 @@ function loadClass($class) {
// Get optional docker classes // Get optional docker classes
default: default:
// Redis // Unknown class
exit('Class does not exist: '.$class); exit('Class does not exist: '.$class);
} }
return $_LOADED_LIBS[$class]; return $_LOADED_LIBS[$class];

View File

@ -44,6 +44,9 @@ class Redis extends BaseClass implements BaseInterface
$this->setConnectErrno(1); $this->setConnectErrno(1);
//loadClass('Logger')->error($this->_connect_error); //loadClass('Logger')->error($this->_connect_error);
} else { } else {
if (array_key_exists('pass', $data)) {
$redis->auth($data['pass']);
}
$redis->set('devilbox-version', $GLOBALS['DEVILBOX_VERSION'].' ('.$GLOBALS['DEVILBOX_DATE'].')'); $redis->set('devilbox-version', $GLOBALS['DEVILBOX_VERSION'].' ('.$GLOBALS['DEVILBOX_DATE'].')');
$this->_redis = $redis; $this->_redis = $redis;
} }

View File

@ -403,6 +403,11 @@ services:
redis: redis:
image: redis:${REDIS_SERVER:-3.2} image: redis:${REDIS_SERVER:-3.2}
# Apply custom arguments to redis startup
command: redis-server ${REDIS_ARGS:- }
environment:
- REDIS_ARGS=${REDIS_ARGS:- }
ports: ports:
# [local-machine:]local-port:docker-port # [local-machine:]local-port:docker-port
- "${LOCAL_LISTEN_ADDR}${HOST_PORT_REDIS}:6379" - "${LOCAL_LISTEN_ADDR}${HOST_PORT_REDIS}:6379"

View File

@ -96,7 +96,8 @@ rst_epilog = """
linkcheck_ignore = [ linkcheck_ignore = [
r'http(s)?://localhost(/)?.*', r'http(s)?://localhost(/)?.*',
r'http(s)?://127\.0\.0\.1(/)?.*', r'http(s)?://127\.0\.0\.1(/)?.*',
r'http(s)?://.+\.loc$' r'http(s)?://.+\.loc$',
r'http(s)?://.+\.loc/.+$'
] ]
linkcheck_retries = 5 linkcheck_retries = 5
linkcheck_timeout = 60 linkcheck_timeout = 60

View File

@ -1542,6 +1542,47 @@ connect to PostgreSQL and will not be able to display information inside the bun
Keep this variable in sync with the actual PostgreSQL password. Keep this variable in sync with the actual PostgreSQL password.
.. _env_redis:
Redis
-----
REDIS_ARGS
^^^^^^^^^^
This option lets you add extra startup parameters to Redis. This could include adding a password
protection to Redis or increasing its verbosity.
+-------------------------+------------------------------------------+----------------+
| Name | Allowed values | Default value |
+=========================+==========================================+================+
| ``REDIS_ARGS`` | valid ``redis-server`` startup parameter | empty |
+-------------------------+------------------------------------------+----------------+
Example: Adding password protection
"""""""""""""""""""""""""""""""""""
.. code-block:: bash
REDIS_ARGS=--requirepass my-redis-root-password
.. important:: Do not quote the password and do not use spaces inside the password.
Example: Increasing verbosity
"""""""""""""""""""""""""""""
.. code-block:: bash
REDIS_ARGS=--loglevel verbose
Example: Combining options
""""""""""""""""""""""""""
.. code-block:: bash
REDIS_ARGS=--loglevel verbose --requirepass my-redis-root-password
Bind Bind
---- ----

View File

@ -577,6 +577,26 @@ HOST_PORT_PGSQL=5432
HOST_PORT_REDIS=6379 HOST_PORT_REDIS=6379
###
### Custom startup arguments
###
### Apply custom startup arguments to redis
###
### Example: Password protection
### Add password protection to the Redis server by specifying it should
### require a password.
### Note: Do not add quotes or spaces to the password
###
### REDIS_ARGS=--requirepass my-redis-root-password
###
### Example: Verbosity
###
### REDIS_ARGS=--loglevel verbose
###
REDIS_ARGS=
#REDIS_ARGS=--loglevel verbose --requirepass my-redis-root-password
################################################################################ ################################################################################
### ###