diff --git a/.version b/.version index a44d1506..08904098 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.9.9 \ No newline at end of file +2.9.10 diff --git a/README.md b/README.md index 1b586329..eec9a7b7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@



- + @@ -501,6 +501,12 @@ Special thanks to the following contributors:
Josh Byrnes + + + +
bergi9 +
+ diff --git a/backend/internal/certificate.js b/backend/internal/certificate.js index 8a4369bf..401c5604 100644 --- a/backend/internal/certificate.js +++ b/backend/internal/certificate.js @@ -114,7 +114,7 @@ const internalCertificate = { data.owner_user_id = access.token.getUserId(1); if (data.provider === 'letsencrypt') { - data.nice_name = data.domain_names.sort().join(', '); + data.nice_name = data.domain_names.join(', '); } return certificateModel @@ -869,7 +869,7 @@ const internalCertificate = { const credentialsLocation = '/etc/letsencrypt/credentials/credentials-' + certificate.id; const credentialsCmd = 'mkdir -p /etc/letsencrypt/credentials 2> /dev/null; echo \'' + certificate.meta.dns_provider_credentials.replace('\'', '\\\'') + '\' > \'' + credentialsLocation + '\' && chmod 600 \'' + credentialsLocation + '\''; - const prepareCmd = 'pip install ' + dns_plugin.package_name + '==' + dns_plugin.package_version + ' ' + dns_plugin.dependencies; + const prepareCmd = 'pip install ' + dns_plugin.package_name + (dns_plugin.version_requirement || '') + ' ' + dns_plugin.dependencies; // Whether the plugin has a ---credentials argument const hasConfigArg = certificate.meta.dns_provider !== 'route53'; diff --git a/backend/package.json b/backend/package.json index 7d62b83b..d15c1c4f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -25,7 +25,7 @@ "mysql": "^2.18.1", "node-rsa": "^1.0.8", "nodemon": "^2.0.2", - "objection": "^2.1.3", + "objection": "^2.2.16", "path": "^0.12.7", "pg": "^7.12.1", "restler": "^3.4.0", diff --git a/backend/schema/definitions.json b/backend/schema/definitions.json index 9895b87e..4b4f3405 100644 --- a/backend/schema/definitions.json +++ b/backend/schema/definitions.json @@ -153,7 +153,7 @@ "example": "john@example.com", "format": "email", "type": "string", - "minLength": 8, + "minLength": 6, "maxLength": 100 }, "password": { diff --git a/backend/setup.js b/backend/setup.js index 4d614baf..41436c8f 100644 --- a/backend/setup.js +++ b/backend/setup.js @@ -175,7 +175,7 @@ const setupCertbotPlugins = () => { certificates.map(function (certificate) { if (certificate.meta && certificate.meta.dns_challenge === true) { const dns_plugin = dns_plugins[certificate.meta.dns_provider]; - const packages_to_install = `${dns_plugin.package_name}==${dns_plugin.package_version} ${dns_plugin.dependencies}`; + const packages_to_install = `${dns_plugin.package_name}${dns_plugin.version_requirement || ''} ${dns_plugin.dependencies}`; if (plugins.indexOf(packages_to_install) === -1) plugins.push(packages_to_install); diff --git a/backend/yarn.lock b/backend/yarn.lock index 1f8bb674..8442c626 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -77,10 +77,10 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.6: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -2572,12 +2572,12 @@ object.pick@^1.2.0, object.pick@^1.3.0: dependencies: isobject "^3.0.1" -objection@^2.1.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/objection/-/objection-2.2.2.tgz#1a3c9010270e3677940d2bc91aeaeb3c0f103800" - integrity sha512-+1Ap7u9NQRochzDW5/BggUlKi94JfZGTJwQJuNXo8DwmAb8czEirvxcWBcX91/MmQq0BQUJjM4RPSiZhnkkWQw== +objection@^2.2.16: + version "2.2.16" + resolved "https://registry.yarnpkg.com/objection/-/objection-2.2.16.tgz#552ec6d625a7f80d6e204fc63732cbd3fc56f31c" + integrity sha512-sq8erZdxW5ruPUK6tVvwDxyO16U49XAn/BmOm2zaNhNA2phOPCe2/7+R70nDEF1SFrgJOrwDu/PtoxybuJxnjQ== dependencies: - ajv "^6.12.0" + ajv "^6.12.6" db-errors "^0.2.3" on-finished@~2.3.0: diff --git a/docker/rootfs/etc/letsencrypt.ini b/docker/rootfs/etc/letsencrypt.ini index ccb2f0b3..aae53b90 100644 --- a/docker/rootfs/etc/letsencrypt.ini +++ b/docker/rootfs/etc/letsencrypt.ini @@ -3,3 +3,4 @@ non-interactive = True webroot-path = /data/letsencrypt-acme-challenge key-type = ecdsa elliptic-curve = secp384r1 +preferred-chain = ISRG Root X1 diff --git a/docs/package.json b/docs/package.json index a1cec675..ae416aaa 100644 --- a/docs/package.json +++ b/docs/package.json @@ -443,7 +443,7 @@ "normalize-url": "^5.1.0", "npm-run-path": "^4.0.1", "nprogress": "^0.2.0", - "nth-check": "^1.0.2", + "nth-check": "^2.0.1", "num2fraction": "^1.2.2", "number-is-nan": "^2.0.0", "oauth-sign": "^0.9.0", @@ -612,7 +612,7 @@ "serve-index": "^1.9.1", "serve-static": "^1.14.1", "set-blocking": "^2.0.0", - "set-value": "^3.0.2", + "set-value": "^4.0.1", "setimmediate": "^1.0.5", "setprototypeof": "^1.2.0", "sha.js": "^2.4.11", diff --git a/docs/yarn.lock b/docs/yarn.lock index cdac96b2..f3fc8b05 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -1624,9 +1624,9 @@ ansi-regex@^4.1.0: integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^2.2.1: version "2.2.1" @@ -6726,6 +6726,13 @@ nth-check@^1.0.2, nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -7699,9 +7706,9 @@ pretty-time@^1.1.0: integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== prismjs@^1.13.0, prismjs@^1.20.0: - version "1.24.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.24.0.tgz#0409c30068a6c52c89ef7f1089b3ca4de56be2ac" - integrity sha512-SqV5GRsNqnzCL8k5dfAjCNhUrF3pR0A9lTDSCUZeh/LIshheXJEaP0hwLz2t4XHivd2J/v2HR+gRnigzeKe3cQ== + version "1.25.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" + integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== private@^0.1.8: version "0.1.8" @@ -8436,13 +8443,20 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -set-value@^3.0.0, set-value@^3.0.2: +set-value@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.2.tgz#74e8ecd023c33d0f77199d415409a40f21e61b90" integrity sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA== dependencies: is-plain-object "^2.0.4" +set-value@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-4.0.1.tgz#bc23522ade2d52314ec3b5d6fb140f5cd3a88acf" + integrity sha512-ayATicCYPVnlNpFmjq2/VmVwhoCQA9+13j8qWp044fmFE3IFphosPtRM+0CJ5xoIx5Uy52fCcwg3XeH2pHbbPQ== + dependencies: + is-plain-object "^2.0.4" + setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" diff --git a/frontend/js/app/ui/header/main.ejs b/frontend/js/app/ui/header/main.ejs index 5f8a6278..18ed2b6a 100644 --- a/frontend/js/app/ui/header/main.ejs +++ b/frontend/js/app/ui/header/main.ejs @@ -1,5 +1,8 @@

+   <%- i18n('main', 'app') %> diff --git a/frontend/js/app/ui/main.ejs b/frontend/js/app/ui/main.ejs index 7c97cf7d..b62c3acd 100644 --- a/frontend/js/app/ui/main.ejs +++ b/frontend/js/app/ui/main.ejs @@ -1,9 +1,11 @@
- -