Settings.js: support newlines in default values when using variable substitution

This allows, among other things, to correctly support the configuration of
defaultPadText in Docker via an environment variable.
pull/3851/head
Paul Tiedtke 2020-03-27 06:33:39 +01:00 committed by muxator
parent 3872690715
commit 79406051fa
4 changed files with 11 additions and 2 deletions

View File

@ -69,6 +69,7 @@ Available options:
* `DB_PASS`: the password for the database username * `DB_PASS`: the password for the database username
* `DB_CHARSET`: the character set for the tables (only required for MySQL) * `DB_CHARSET`: the character set for the tables (only required for MySQL)
* `DB_FILENAME`: in case `DB_TYPE` is `DirtyDB`, the database filename. Default: `var/dirty.db` * `DB_FILENAME`: in case `DB_TYPE` is `DirtyDB`, the database filename. Default: `var/dirty.db`
* `DEFAULT_PAD_TEXT`: The default text of a pad
* `ADMIN_PASSWORD`: the password for the `admin` user (leave unspecified if you do not want to create it) * `ADMIN_PASSWORD`: the password for the `admin` user (leave unspecified if you do not want to create it)
* `USER_PASSWORD`: the password for the first user `user` (leave unspecified if you do not want to create it) * `USER_PASSWORD`: the password for the first user `user` (leave unspecified if you do not want to create it)
* `TRUST_PROXY`: set to `true` if you are using a reverse proxy in front of Etherpad (for example: Traefik for SSL termination via Let's Encrypt). This will affect security and correctness of the logs if not done * `TRUST_PROXY`: set to `true` if you are using a reverse proxy in front of Etherpad (for example: Traefik for SSL termination via Let's Encrypt). This will affect security and correctness of the logs if not done

View File

@ -65,6 +65,10 @@
* "password": "${PASSW}" // if PASSW is not defined would result in password === null * "password": "${PASSW}" // if PASSW is not defined would result in password === null
* "password": "${PASSW:}" // if PASSW is not defined would result in password === '' * "password": "${PASSW:}" // if PASSW is not defined would result in password === ''
* *
* 3) if you want to use newlines in the default value of a string parameter,
* use "\n" as usual.
*
* "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
*/ */
{ {
/* /*
@ -159,7 +163,7 @@
/* /*
* The default text of a pad * The default text of a pad
*/ */
"defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n", "defaultPadText" : "${DEFAULT_PAD_TEXT:Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n}",
/* /*
* Default Pad behavior. * Default Pad behavior.

View File

@ -56,6 +56,10 @@
* "password": "${PASSW}" // if PASSW is not defined would result in password === null * "password": "${PASSW}" // if PASSW is not defined would result in password === null
* "password": "${PASSW:}" // if PASSW is not defined would result in password === '' * "password": "${PASSW:}" // if PASSW is not defined would result in password === ''
* *
* 3) if you want to use newlines in the default value of a string parameter,
* use "\n" as usual.
*
* "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
*/ */
{ {
/* /*

View File

@ -474,7 +474,7 @@ function lookupEnvironmentVariables(obj) {
* "${ENV_VAR}" or "${ENV_VAR:default_value}") * "${ENV_VAR}" or "${ENV_VAR:default_value}")
*/ */
// MUXATOR 2019-03-21: we could use named capture groups here once we migrate to nodejs v10 // MUXATOR 2019-03-21: we could use named capture groups here once we migrate to nodejs v10
const match = value.match(/^\$\{([^:]*)(:(.*))?\}$/); const match = value.match(/^\$\{([^:]*)(:((.|\n)*))?\}$/);
if (match === null) { if (match === null) {
// no match: use the value literally, without any substitution // no match: use the value literally, without any substitution