mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-07-12 20:59:38 +00:00
Compare commits
91 Commits
eb2d759fd8
...
v2.12.6
Author | SHA1 | Date | |
---|---|---|---|
356eaa0691 | |||
54d463ac36 | |||
a23dc24021 | |||
4f9df893c8 | |||
304b38e82b | |||
1b0929ade6 | |||
ddbafb62a6 | |||
9a0383bc73 | |||
307cb94e84 | |||
63ae924fbc | |||
1710a263c0 | |||
1357774f21 | |||
5f54490d86 | |||
c97b8a339d | |||
ed1d90ee7f | |||
70894e55b8 | |||
817021a43d | |||
36e3449a56 | |||
db9f25638f | |||
ddd3355d95 | |||
aade8b42fc | |||
3735f3c11d | |||
b84762b5b9 | |||
953faeac15 | |||
c58f3f3ec9 | |||
0ee4d04d5f | |||
94f6756250 | |||
27e3f73854 | |||
d98f4b43dc | |||
ff3116a626 | |||
7047750b04 | |||
0792fc0768 | |||
9758c12ca3 | |||
ccd69c8867 | |||
23fd1fec6c | |||
6f04543744 | |||
cbb1fe44ca | |||
4c23f22d5b | |||
af5d3eccd6 | |||
a87283b030 | |||
97dbbdd60f | |||
ec81f2489a | |||
d0ec8e89aa | |||
9a96fbb5f4 | |||
a573450bb8 | |||
60a25ffbd5 | |||
7d2369b380 | |||
64f00e8dba | |||
c99143f548 | |||
cc4ee6919a | |||
8a69c65b40 | |||
95ee5ca958 | |||
40f22d30c4 | |||
30dfa9e3de | |||
b873499feb | |||
ef69be2036 | |||
7580e65dd4 | |||
f11dc5d7c1 | |||
77061a7bd6 | |||
b6afc19135 | |||
09ba400d09 | |||
0291cfc270 | |||
34267e0af9 | |||
f327c1e825 | |||
6f539979ec | |||
3d8079a137 | |||
6d6d83c0d0 | |||
100a4888d0 | |||
34a46bd733 | |||
7f8adc7e50 | |||
98d118cb74 | |||
4fb93542c3 | |||
4fe305520a | |||
76be31cf76 | |||
55dadb2004 | |||
d9cdb3dc2c | |||
0cab720f23 | |||
f5879dff6c | |||
5e66d677f1 | |||
18830f81b0 | |||
341ac65587 | |||
078baa255a | |||
bf9d9bd43b | |||
a394b25e61 | |||
1c47fc2ba4 | |||
312e2ab80c | |||
d147ccd88d | |||
03fd292c61 | |||
b09147eca8 | |||
c5a319cb20 | |||
2cee211fb0 |
15
Jenkinsfile
vendored
15
Jenkinsfile
vendored
@ -241,12 +241,17 @@ pipeline {
|
|||||||
}
|
}
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
npmGithubPrComment("""Docker Image for build ${BUILD_NUMBER} is available on
|
npmGithubPrComment("""Docker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/nginxproxymanager/${IMAGE}-dev):
|
||||||
[DockerHub](https://cloud.docker.com/repository/docker/nginxproxymanager/${IMAGE}-dev)
|
```
|
||||||
as `nginxproxymanager/${IMAGE}-dev:${BRANCH_LOWER}`
|
nginxproxymanager/${IMAGE}-dev:${BRANCH_LOWER}
|
||||||
|
```
|
||||||
|
|
||||||
**Note:** ensure you backup your NPM instance before testing this image! Especially if there are database changes
|
> [!NOTE]
|
||||||
**Note:** this is a different docker image namespace than the official image
|
> Ensure you backup your NPM instance before testing this image! Especially if there are database changes.
|
||||||
|
> This is a different docker image namespace than the official image.
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Changes and additions to DNS Providers require verification by at least 2 members of the community!
|
||||||
""", true)
|
""", true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://nginxproxymanager.com/github.png">
|
<img src="https://nginxproxymanager.com/github.png">
|
||||||
<br><br>
|
<br><br>
|
||||||
<img src="https://img.shields.io/badge/version-2.12.3-green.svg?style=for-the-badge">
|
<img src="https://img.shields.io/badge/version-2.12.6-green.svg?style=for-the-badge">
|
||||||
<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
|
<a href="https://hub.docker.com/repository/docker/jc21/nginx-proxy-manager">
|
||||||
<img src="https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge">
|
<img src="https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge">
|
||||||
</a>
|
</a>
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
const schema = require('./schema');
|
const schema = require('./schema');
|
||||||
const logger = require('./logger').global;
|
const logger = require('./logger').global;
|
||||||
|
|
||||||
|
const IP_RANGES_FETCH_ENABLED = process.env.IP_RANGES_FETCH_ENABLED !== 'false';
|
||||||
|
|
||||||
async function appStart () {
|
async function appStart () {
|
||||||
const migrate = require('./migrate');
|
const migrate = require('./migrate');
|
||||||
const setup = require('./setup');
|
const setup = require('./setup');
|
||||||
@ -13,7 +15,16 @@ async function appStart () {
|
|||||||
return migrate.latest()
|
return migrate.latest()
|
||||||
.then(setup)
|
.then(setup)
|
||||||
.then(schema.getCompiledSchema)
|
.then(schema.getCompiledSchema)
|
||||||
.then(internalIpRanges.fetch)
|
.then(() => {
|
||||||
|
if (IP_RANGES_FETCH_ENABLED) {
|
||||||
|
logger.info('IP Ranges fetch is enabled');
|
||||||
|
return internalIpRanges.fetch().catch((err) => {
|
||||||
|
logger.error('IP Ranges fetch failed, continuing anyway:', err.message);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
logger.info('IP Ranges fetch is disabled by environment variable');
|
||||||
|
}
|
||||||
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
internalCertificate.initTimer();
|
internalCertificate.initTimer();
|
||||||
internalIpRanges.initTimer();
|
internalIpRanges.initTimer();
|
||||||
|
@ -576,7 +576,6 @@ const internalCertificate = {
|
|||||||
return internalCertificate.create(access, {
|
return internalCertificate.create(access, {
|
||||||
provider: 'letsencrypt',
|
provider: 'letsencrypt',
|
||||||
domain_names: data.domain_names,
|
domain_names: data.domain_names,
|
||||||
ssl_key_type: data.ssl_key_type,
|
|
||||||
meta: data.meta
|
meta: data.meta
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -839,7 +838,6 @@ const internalCertificate = {
|
|||||||
|
|
||||||
const cmd = `${certbotCommand} certonly ` +
|
const cmd = `${certbotCommand} certonly ` +
|
||||||
`--config '${letsencryptConfig}' ` +
|
`--config '${letsencryptConfig}' ` +
|
||||||
`--key-type '${certificate.ssl_key_type}' ` +
|
|
||||||
'--work-dir "/tmp/letsencrypt-lib" ' +
|
'--work-dir "/tmp/letsencrypt-lib" ' +
|
||||||
'--logs-dir "/tmp/letsencrypt-log" ' +
|
'--logs-dir "/tmp/letsencrypt-log" ' +
|
||||||
`--cert-name "npm-${certificate.id}" ` +
|
`--cert-name "npm-${certificate.id}" ` +
|
||||||
@ -881,7 +879,6 @@ const internalCertificate = {
|
|||||||
|
|
||||||
let mainCmd = certbotCommand + ' certonly ' +
|
let mainCmd = certbotCommand + ' certonly ' +
|
||||||
`--config '${letsencryptConfig}' ` +
|
`--config '${letsencryptConfig}' ` +
|
||||||
`--key-type '${certificate.ssl_key_type}' ` +
|
|
||||||
'--work-dir "/tmp/letsencrypt-lib" ' +
|
'--work-dir "/tmp/letsencrypt-lib" ' +
|
||||||
'--logs-dir "/tmp/letsencrypt-log" ' +
|
'--logs-dir "/tmp/letsencrypt-log" ' +
|
||||||
`--cert-name 'npm-${certificate.id}' ` +
|
`--cert-name 'npm-${certificate.id}' ` +
|
||||||
@ -978,7 +975,6 @@ const internalCertificate = {
|
|||||||
|
|
||||||
const cmd = certbotCommand + ' renew --force-renewal ' +
|
const cmd = certbotCommand + ' renew --force-renewal ' +
|
||||||
`--config '${letsencryptConfig}' ` +
|
`--config '${letsencryptConfig}' ` +
|
||||||
`--key-type '${certificate.ssl_key_type}' ` +
|
|
||||||
'--work-dir "/tmp/letsencrypt-lib" ' +
|
'--work-dir "/tmp/letsencrypt-lib" ' +
|
||||||
'--logs-dir "/tmp/letsencrypt-log" ' +
|
'--logs-dir "/tmp/letsencrypt-log" ' +
|
||||||
`--cert-name 'npm-${certificate.id}' ` +
|
`--cert-name 'npm-${certificate.id}' ` +
|
||||||
@ -1012,7 +1008,6 @@ const internalCertificate = {
|
|||||||
|
|
||||||
let mainCmd = certbotCommand + ' renew --force-renewal ' +
|
let mainCmd = certbotCommand + ' renew --force-renewal ' +
|
||||||
`--config "${letsencryptConfig}" ` +
|
`--config "${letsencryptConfig}" ` +
|
||||||
`--key-type '${certificate.ssl_key_type}' ` +
|
|
||||||
'--work-dir "/tmp/letsencrypt-lib" ' +
|
'--work-dir "/tmp/letsencrypt-lib" ' +
|
||||||
'--logs-dir "/tmp/letsencrypt-log" ' +
|
'--logs-dir "/tmp/letsencrypt-log" ' +
|
||||||
`--cert-name 'npm-${certificate.id}' ` +
|
`--cert-name 'npm-${certificate.id}' ` +
|
||||||
@ -1046,7 +1041,6 @@ const internalCertificate = {
|
|||||||
|
|
||||||
const mainCmd = certbotCommand + ' revoke ' +
|
const mainCmd = certbotCommand + ' revoke ' +
|
||||||
`--config '${letsencryptConfig}' ` +
|
`--config '${letsencryptConfig}' ` +
|
||||||
`--key-type '${certificate.ssl_key_type}' ` +
|
|
||||||
'--work-dir "/tmp/letsencrypt-lib" ' +
|
'--work-dir "/tmp/letsencrypt-lib" ' +
|
||||||
'--logs-dir "/tmp/letsencrypt-log" ' +
|
'--logs-dir "/tmp/letsencrypt-log" ' +
|
||||||
`--cert-path '/etc/letsencrypt/live/npm-${certificate.id}/fullchain.pem' ` +
|
`--cert-path '/etc/letsencrypt/live/npm-${certificate.id}/fullchain.pem' ` +
|
||||||
|
@ -229,32 +229,8 @@ const internalHost = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Internal use only, checks to see if the there is another default server record
|
|
||||||
*
|
|
||||||
* @param {String} hostname
|
|
||||||
* @param {String} [ignore_type] 'proxy', 'redirection', 'dead'
|
|
||||||
* @param {Integer} [ignore_id] Must be supplied if type was also supplied
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
checkDefaultServerNotExist: function (hostname) {
|
|
||||||
let promises = proxyHostModel
|
|
||||||
.query()
|
|
||||||
.where('default_server', true)
|
|
||||||
.andWhere('domain_names', 'not like', '%' + hostname + '%');
|
|
||||||
|
|
||||||
|
|
||||||
return Promise.resolve(promises)
|
|
||||||
.then((promises_results) => {
|
|
||||||
if (promises_results.length > 0){
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = internalHost;
|
module.exports = internalHost;
|
||||||
|
@ -44,22 +44,6 @@ const internalProxyHost = {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.then(() => {
|
|
||||||
// Get a list of the domain names and check each of them against default records
|
|
||||||
if (data.default_server){
|
|
||||||
if (data.domain_names.length > 1) {
|
|
||||||
throw new error.ValidationError('Default server cant be set for multiple domain!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return internalHost
|
|
||||||
.checkDefaultServerNotExist(data.domain_names[0])
|
|
||||||
.then((result) => {
|
|
||||||
if (!result){
|
|
||||||
throw new error.ValidationError('One default server already exists');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(() => {
|
.then(() => {
|
||||||
// At this point the domains should have been checked
|
// At this point the domains should have been checked
|
||||||
data.owner_user_id = access.token.getUserId(1);
|
data.owner_user_id = access.token.getUserId(1);
|
||||||
@ -157,22 +141,6 @@ const internalProxyHost = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.then(() => {
|
|
||||||
// Get a list of the domain names and check each of them against default records
|
|
||||||
if (data.default_server){
|
|
||||||
if (data.domain_names.length > 1) {
|
|
||||||
throw new error.ValidationError('Default server cant be set for multiple domain!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return internalHost
|
|
||||||
.checkDefaultServerNotExist(data.domain_names[0])
|
|
||||||
.then((result) => {
|
|
||||||
if (!result){
|
|
||||||
throw new error.ValidationError('One default server already exists');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return internalProxyHost.get(access, {id: data.id});
|
return internalProxyHost.get(access, {id: data.id});
|
||||||
})
|
})
|
||||||
@ -185,7 +153,6 @@ const internalProxyHost = {
|
|||||||
if (create_certificate) {
|
if (create_certificate) {
|
||||||
return internalCertificate.createQuickCertificate(access, {
|
return internalCertificate.createQuickCertificate(access, {
|
||||||
domain_names: data.domain_names || row.domain_names,
|
domain_names: data.domain_names || row.domain_names,
|
||||||
ssl_key_type: data.ssl_key_type || row.ssl_key_type,
|
|
||||||
meta: _.assign({}, row.meta, data.meta)
|
meta: _.assign({}, row.meta, data.meta)
|
||||||
})
|
})
|
||||||
.then((cert) => {
|
.then((cert) => {
|
||||||
|
@ -369,7 +369,7 @@ const internalStream = {
|
|||||||
.where('is_deleted', 0)
|
.where('is_deleted', 0)
|
||||||
.groupBy('id')
|
.groupBy('id')
|
||||||
.allowGraph('[owner,certificate]')
|
.allowGraph('[owner,certificate]')
|
||||||
.orderByRaw('CAST(incoming_port AS INTEGER) ASC');
|
.orderBy('incoming_port', 'ASC');
|
||||||
|
|
||||||
if (access_data.permission_visibility !== 'all') {
|
if (access_data.permission_visibility !== 'all') {
|
||||||
query.andWhere('owner_user_id', access.token.getUserId(1));
|
query.andWhere('owner_user_id', access.token.getUserId(1));
|
||||||
|
@ -11,7 +11,7 @@ const certbot = {
|
|||||||
/**
|
/**
|
||||||
* @param {array} pluginKeys
|
* @param {array} pluginKeys
|
||||||
*/
|
*/
|
||||||
installPlugins: async function (pluginKeys) {
|
installPlugins: async (pluginKeys) => {
|
||||||
let hasErrors = false;
|
let hasErrors = false;
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -21,7 +21,7 @@ const certbot = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
batchflow(pluginKeys).sequential()
|
batchflow(pluginKeys).sequential()
|
||||||
.each((i, pluginKey, next) => {
|
.each((_i, pluginKey, next) => {
|
||||||
certbot.installPlugin(pluginKey)
|
certbot.installPlugin(pluginKey)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
next();
|
next();
|
||||||
@ -51,7 +51,7 @@ const certbot = {
|
|||||||
* @param {string} pluginKey
|
* @param {string} pluginKey
|
||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
installPlugin: async function (pluginKey) {
|
installPlugin: async (pluginKey) => {
|
||||||
if (typeof dnsPlugins[pluginKey] === 'undefined') {
|
if (typeof dnsPlugins[pluginKey] === 'undefined') {
|
||||||
// throw Error(`Certbot plugin ${pluginKey} not found`);
|
// throw Error(`Certbot plugin ${pluginKey} not found`);
|
||||||
throw new error.ItemNotFoundError(pluginKey);
|
throw new error.ItemNotFoundError(pluginKey);
|
||||||
@ -63,8 +63,15 @@ const certbot = {
|
|||||||
plugin.version = plugin.version.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT);
|
plugin.version = plugin.version.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT);
|
||||||
plugin.dependencies = plugin.dependencies.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT);
|
plugin.dependencies = plugin.dependencies.replace(/{{certbot-version}}/g, CERTBOT_VERSION_REPLACEMENT);
|
||||||
|
|
||||||
const cmd = '. /opt/certbot/bin/activate && pip install --no-cache-dir ' + plugin.dependencies + ' ' + plugin.package_name + plugin.version + ' ' + ' && deactivate';
|
// SETUPTOOLS_USE_DISTUTILS is required for certbot plugins to install correctly
|
||||||
return utils.exec(cmd)
|
// in new versions of Python
|
||||||
|
let env = Object.assign({}, process.env, {SETUPTOOLS_USE_DISTUTILS: 'stdlib'});
|
||||||
|
if (typeof plugin.env === 'object') {
|
||||||
|
env = Object.assign(env, plugin.env);
|
||||||
|
}
|
||||||
|
|
||||||
|
const cmd = `. /opt/certbot/bin/activate && pip install --no-cache-dir ${plugin.dependencies} ${plugin.package_name}${plugin.version} && deactivate`;
|
||||||
|
return utils.exec(cmd, {env})
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
logger.complete(`Installed ${pluginKey}`);
|
logger.complete(`Installed ${pluginKey}`);
|
||||||
return result;
|
return result;
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const exec = require('child_process').exec;
|
const exec = require('node:child_process').exec;
|
||||||
const execFile = require('child_process').execFile;
|
const execFile = require('node:child_process').execFile;
|
||||||
const { Liquid } = require('liquidjs');
|
const { Liquid } = require('liquidjs');
|
||||||
const logger = require('../logger').global;
|
const logger = require('../logger').global;
|
||||||
const error = require('./error');
|
const error = require('./error');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
exec: async function(cmd, options = {}) {
|
exec: async (cmd, options = {}) => {
|
||||||
logger.debug('CMD:', cmd);
|
logger.debug('CMD:', cmd);
|
||||||
|
|
||||||
const { stdout, stderr } = await new Promise((resolve, reject) => {
|
const { stdout, stderr } = await new Promise((resolve, reject) => {
|
||||||
@ -31,11 +31,11 @@ module.exports = {
|
|||||||
* @param {Array} args
|
* @param {Array} args
|
||||||
* @returns {Promise}
|
* @returns {Promise}
|
||||||
*/
|
*/
|
||||||
execFile: function (cmd, args) {
|
execFile: (cmd, args) => {
|
||||||
// logger.debug('CMD: ' + cmd + ' ' + (args ? args.join(' ') : ''));
|
// logger.debug('CMD: ' + cmd + ' ' + (args ? args.join(' ') : ''));
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
execFile(cmd, args, function (err, stdout, /*stderr*/) {
|
execFile(cmd, args, (err, stdout, /*stderr*/) => {
|
||||||
if (err && typeof err === 'object') {
|
if (err && typeof err === 'object') {
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
@ -51,7 +51,7 @@ module.exports = {
|
|||||||
* @param {Array} omissions
|
* @param {Array} omissions
|
||||||
* @returns {Function}
|
* @returns {Function}
|
||||||
*/
|
*/
|
||||||
omitRow: function (omissions) {
|
omitRow: (omissions) => {
|
||||||
/**
|
/**
|
||||||
* @param {Object} row
|
* @param {Object} row
|
||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
@ -67,7 +67,7 @@ module.exports = {
|
|||||||
* @param {Array} omissions
|
* @param {Array} omissions
|
||||||
* @returns {Function}
|
* @returns {Function}
|
||||||
*/
|
*/
|
||||||
omitRows: function (omissions) {
|
omitRows: (omissions) => {
|
||||||
/**
|
/**
|
||||||
* @param {Array} rows
|
* @param {Array} rows
|
||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
@ -83,9 +83,9 @@ module.exports = {
|
|||||||
/**
|
/**
|
||||||
* @returns {Object} Liquid render engine
|
* @returns {Object} Liquid render engine
|
||||||
*/
|
*/
|
||||||
getRenderEngine: function () {
|
getRenderEngine: () => {
|
||||||
const renderEngine = new Liquid({
|
const renderEngine = new Liquid({
|
||||||
root: __dirname + '/../templates/'
|
root: `${__dirname}/../templates/`
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
const migrate_name = 'identifier_for_migrate';
|
|
||||||
const logger = require('../logger').migrate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Migrate
|
|
||||||
*
|
|
||||||
* @see http://knexjs.org/#Schema
|
|
||||||
*
|
|
||||||
* @param {Object} knex
|
|
||||||
* @param {Promise} Promise
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
exports.up = function (knex) {
|
|
||||||
|
|
||||||
logger.info(`[${migrate_name}] Migrating Up...`);
|
|
||||||
|
|
||||||
return knex.schema.alterTable('proxy_host', (table) => {
|
|
||||||
table.enum('ssl_key_type', ['ecdsa', 'rsa']).defaultTo('ecdsa').notNullable();
|
|
||||||
}).then(() => {
|
|
||||||
logger.info(`[${migrate_name}] Column 'ssl_key_type' added to table 'proxy_host'`);
|
|
||||||
|
|
||||||
return knex.schema.alterTable('certificate', (table) => {
|
|
||||||
table.enum('ssl_key_type', ['ecdsa', 'rsa']).defaultTo('ecdsa').notNullable();
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
logger.info(`[${migrate_name}] Column 'ssl_key_type' added to table 'proxy_host'`);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Undo Migrate
|
|
||||||
*
|
|
||||||
* @param {Object} knex
|
|
||||||
* @param {Promise} Promise
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
exports.down = function (knex) {
|
|
||||||
logger.info(`[${migrate_name}] Migrating Down...`);
|
|
||||||
|
|
||||||
return knex.schema.alterTable('proxy_host', (table) => {
|
|
||||||
table.dropColumn('ssl_key_type');
|
|
||||||
}).then(() => {
|
|
||||||
logger.info(`[${migrate_name}] Column 'ssl_key_type' removed from table 'proxy_host'`);
|
|
||||||
|
|
||||||
return knex.schema.alterTable('certificate', (table) => {
|
|
||||||
table.dropColumn('ssl_key_type');
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
logger.info(`[${migrate_name}] Column 'ssl_key_type' removed from table 'proxy_host'`);
|
|
||||||
});
|
|
||||||
};
|
|
@ -1,40 +0,0 @@
|
|||||||
const migrate_name = 'default_server';
|
|
||||||
const logger = require('../logger').migrate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Migrate Up
|
|
||||||
*
|
|
||||||
* @param {Object} knex
|
|
||||||
* @param {Promise} Promise
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
exports.up = function (knex) {
|
|
||||||
logger.info(`[${migrate_name}] Migrating Up...`);
|
|
||||||
|
|
||||||
// Add default_server column to proxy_host table
|
|
||||||
return knex.schema.table('proxy_host', (table) => {
|
|
||||||
table.boolean('default_server').notNullable().defaultTo(false);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
logger.info(`[${migrate_name}] Column 'default_server' added to 'proxy_host' table`);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Migrate Down
|
|
||||||
*
|
|
||||||
* @param {Object} knex
|
|
||||||
* @param {Promise} Promise
|
|
||||||
* @returns {Promise}
|
|
||||||
*/
|
|
||||||
exports.down = function (knex) {
|
|
||||||
logger.info(`[${migrate_name}] Migrating Down...`);
|
|
||||||
|
|
||||||
// Remove default_server column from proxy_host table
|
|
||||||
return knex.schema.table('proxy_host', (table) => {
|
|
||||||
table.dropColumn('default_server');
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
logger.info(`[${migrate_name}] Column 'default_server' removed from 'proxy_host' table`);
|
|
||||||
});
|
|
||||||
};
|
|
@ -21,7 +21,6 @@ const boolFields = [
|
|||||||
'enabled',
|
'enabled',
|
||||||
'hsts_enabled',
|
'hsts_enabled',
|
||||||
'hsts_subdomains',
|
'hsts_subdomains',
|
||||||
'default_server',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
class ProxyHost extends Model {
|
class ProxyHost extends Model {
|
||||||
|
@ -181,7 +181,7 @@ router
|
|||||||
return internalUser.setPassword(res.locals.access, payload);
|
return internalUser.setPassword(res.locals.access, payload);
|
||||||
})
|
})
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
res.status(201)
|
res.status(200)
|
||||||
.send(result);
|
.send(result);
|
||||||
})
|
})
|
||||||
.catch(next);
|
.catch(next);
|
||||||
@ -212,7 +212,7 @@ router
|
|||||||
return internalUser.setPermissions(res.locals.access, payload);
|
return internalUser.setPermissions(res.locals.access, payload);
|
||||||
})
|
})
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
res.status(201)
|
res.status(200)
|
||||||
.send(result);
|
.send(result);
|
||||||
})
|
})
|
||||||
.catch(next);
|
.catch(next);
|
||||||
@ -238,7 +238,7 @@ router
|
|||||||
.post((req, res, next) => {
|
.post((req, res, next) => {
|
||||||
internalUser.loginAs(res.locals.access, {id: parseInt(req.params.user_id, 10)})
|
internalUser.loginAs(res.locals.access, {id: parseInt(req.params.user_id, 10)})
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
res.status(201)
|
res.status(200)
|
||||||
.send(result);
|
.send(result);
|
||||||
})
|
})
|
||||||
.catch(next);
|
.catch(next);
|
||||||
|
@ -41,11 +41,6 @@
|
|||||||
"owner": {
|
"owner": {
|
||||||
"$ref": "./user-object.json"
|
"$ref": "./user-object.json"
|
||||||
},
|
},
|
||||||
"ssl_key_type": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": ["ecdsa", "rsa"],
|
|
||||||
"description": "Type of SSL key (either ecdsa or rsa)"
|
|
||||||
},
|
|
||||||
"meta": {
|
"meta": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
"enabled",
|
"enabled",
|
||||||
"locations",
|
"locations",
|
||||||
"hsts_enabled",
|
"hsts_enabled",
|
||||||
"default_server",
|
|
||||||
"hsts_subdomains"
|
"hsts_subdomains"
|
||||||
],
|
],
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
@ -149,15 +148,6 @@
|
|||||||
"$ref": "./access-list-object.json"
|
"$ref": "./access-list-object.json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"ssl_key_type": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": ["ecdsa", "rsa"],
|
|
||||||
"description": "Type of SSL key (either ecdsa or rsa)"
|
|
||||||
},
|
|
||||||
"default_server": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Defines if the server is the default for unmatched requests"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"description": "Proxy Hosts list",
|
"description": "Streams list",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "./proxy-host-object.json"
|
"$ref": "./stream-object.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,12 +79,6 @@
|
|||||||
},
|
},
|
||||||
"locations": {
|
"locations": {
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/locations"
|
"$ref": "../../../../components/proxy-host-object.json#/properties/locations"
|
||||||
},
|
|
||||||
"ssl_key_type": {
|
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/ssl_key_type"
|
|
||||||
},
|
|
||||||
"default_server": {
|
|
||||||
"$ref": "../../../../components/proxy-host-object.json#/properties/default_server"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,12 +67,6 @@
|
|||||||
},
|
},
|
||||||
"locations": {
|
"locations": {
|
||||||
"$ref": "../../../components/proxy-host-object.json#/properties/locations"
|
"$ref": "../../../components/proxy-host-object.json#/properties/locations"
|
||||||
},
|
|
||||||
"ssl_key_type": {
|
|
||||||
"$ref": "../../../components/proxy-host-object.json#/properties/ssl_key_type"
|
|
||||||
},
|
|
||||||
"default_server": {
|
|
||||||
"$ref": "../../../components/proxy-host-object.json#/properties/default_server"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
listen 80{% if default_server == true %} default_server{% endif %};
|
listen 80;
|
||||||
{% if ipv6 -%}
|
{% if ipv6 -%}
|
||||||
listen [::]:80{% if default_server == true %} default_server{% endif %};
|
listen [::]:80;
|
||||||
{% else -%}
|
{% else -%}
|
||||||
#listen [::]:80;
|
#listen [::]:80;
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if certificate -%}
|
{% if certificate -%}
|
||||||
listen 443 ssl{% if default_server == true %} default_server{% endif %};
|
listen 443 ssl;
|
||||||
{% if ipv6 -%}
|
{% if ipv6 -%}
|
||||||
listen [::]:443 ssl{% if default_server == true %} default_server{% endif %};
|
listen [::]:443 ssl;
|
||||||
{% else -%}
|
{% else -%}
|
||||||
#listen [::]:443;
|
#listen [::]:443;
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -492,9 +492,9 @@ boxen@^4.2.0:
|
|||||||
widest-line "^3.1.0"
|
widest-line "^3.1.0"
|
||||||
|
|
||||||
brace-expansion@^1.1.7:
|
brace-expansion@^1.1.7:
|
||||||
version "1.1.11"
|
version "1.1.12"
|
||||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
|
||||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
|
||||||
dependencies:
|
dependencies:
|
||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
concat-map "0.0.1"
|
concat-map "0.0.1"
|
||||||
|
@ -53,11 +53,9 @@ COPY --from=testca /home/step/certs/root_ca.crt /etc/ssl/certs/NginxProxyManager
|
|||||||
# Remove frontend service not required for prod, dev nginx config as well
|
# Remove frontend service not required for prod, dev nginx config as well
|
||||||
RUN rm -rf /etc/s6-overlay/s6-rc.d/user/contents.d/frontend /etc/nginx/conf.d/dev.conf \
|
RUN rm -rf /etc/s6-overlay/s6-rc.d/user/contents.d/frontend /etc/nginx/conf.d/dev.conf \
|
||||||
&& chmod 644 /etc/logrotate.d/nginx-proxy-manager
|
&& chmod 644 /etc/logrotate.d/nginx-proxy-manager
|
||||||
COPY docker/start-container /usr/local/bin/start-container
|
|
||||||
RUN chmod +x /usr/local/bin/start-container
|
|
||||||
|
|
||||||
VOLUME [ "/data" ]
|
VOLUME [ "/data" ]
|
||||||
ENTRYPOINT [ "start-container" ]
|
ENTRYPOINT [ "/init" ]
|
||||||
|
|
||||||
LABEL org.label-schema.schema-version="1.0" \
|
LABEL org.label-schema.schema-version="1.0" \
|
||||||
org.label-schema.license="MIT" \
|
org.label-schema.license="MIT" \
|
||||||
|
@ -36,8 +36,5 @@ RUN rm -f /etc/nginx/conf.d/production.conf \
|
|||||||
COPY --from=pebbleca /test/certs/pebble.minica.pem /etc/ssl/certs/pebble.minica.pem
|
COPY --from=pebbleca /test/certs/pebble.minica.pem /etc/ssl/certs/pebble.minica.pem
|
||||||
COPY --from=testca /home/step/certs/root_ca.crt /etc/ssl/certs/NginxProxyManager.crt
|
COPY --from=testca /home/step/certs/root_ca.crt /etc/ssl/certs/NginxProxyManager.crt
|
||||||
|
|
||||||
COPY start-container /usr/local/bin/start-container
|
|
||||||
RUN chmod +x /usr/local/bin/start-container
|
|
||||||
|
|
||||||
EXPOSE 80 81 443
|
EXPOSE 80 81 443
|
||||||
ENTRYPOINT [ "start-container" ]
|
ENTRYPOINT [ "/init" ]
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
text = True
|
text = True
|
||||||
non-interactive = True
|
non-interactive = True
|
||||||
webroot-path = /data/letsencrypt-acme-challenge
|
webroot-path = /data/letsencrypt-acme-challenge
|
||||||
|
key-type = ecdsa
|
||||||
|
elliptic-curve = secp384r1
|
||||||
preferred-chain = ISRG Root X1
|
preferred-chain = ISRG Root X1
|
||||||
server =
|
server =
|
||||||
|
@ -18,6 +18,7 @@ services:
|
|||||||
MYSQL_DATABASE: 'npm'
|
MYSQL_DATABASE: 'npm'
|
||||||
MYSQL_USER: 'npm'
|
MYSQL_USER: 'npm'
|
||||||
MYSQL_PASSWORD: 'npmpass'
|
MYSQL_PASSWORD: 'npmpass'
|
||||||
|
MARIADB_AUTO_UPGRADE: '1'
|
||||||
volumes:
|
volumes:
|
||||||
- mysql_vol:/var/lib/mysql
|
- mysql_vol:/var/lib/mysql
|
||||||
networks:
|
networks:
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
text = True
|
text = True
|
||||||
non-interactive = True
|
non-interactive = True
|
||||||
webroot-path = /data/letsencrypt-acme-challenge
|
webroot-path = /data/letsencrypt-acme-challenge
|
||||||
|
key-type = ecdsa
|
||||||
|
elliptic-curve = secp384r1
|
||||||
preferred-chain = ISRG Root X1
|
preferred-chain = ISRG Root X1
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
# intermediate configuration. tweak to your needs.
|
# intermediate configuration. tweak to your needs.
|
||||||
ssl_protocols TLSv1.2 TLSv1.3;
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
ssl_ciphers "ALL:RC4-SHA:AES128-SHA:AES256-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:AES256-GCM-SHA384:AES128-GCM-SHA256:RSA-AES256-CBC-SHA:RC4-MD5:DES-CBC3-SHA:AES256-SHA:RC4-SHA:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
|
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
|
||||||
ssl_prefer_server_ciphers off;
|
ssl_prefer_server_ciphers off;
|
||||||
ssl_ecdh_curve X25519:prime256v1:secp384r1;
|
|
||||||
ssl_dhparam /etc/ssl/certs/dhparam.pem;
|
|
@ -8,21 +8,53 @@ log_info 'Setting ownership ...'
|
|||||||
# root
|
# root
|
||||||
chown root /tmp/nginx
|
chown root /tmp/nginx
|
||||||
|
|
||||||
# npm user and group
|
locations=(
|
||||||
chown -R "$PUID:$PGID" /data
|
"/data"
|
||||||
chown -R "$PUID:$PGID" /etc/letsencrypt
|
"/etc/letsencrypt"
|
||||||
chown -R "$PUID:$PGID" /run/nginx
|
"/run/nginx"
|
||||||
chown -R "$PUID:$PGID" /tmp/nginx
|
"/tmp/nginx"
|
||||||
chown -R "$PUID:$PGID" /var/cache/nginx
|
"/var/cache/nginx"
|
||||||
chown -R "$PUID:$PGID" /var/lib/logrotate
|
"/var/lib/logrotate"
|
||||||
chown -R "$PUID:$PGID" /var/lib/nginx
|
"/var/lib/nginx"
|
||||||
chown -R "$PUID:$PGID" /var/log/nginx
|
"/var/log/nginx"
|
||||||
|
"/etc/nginx/nginx"
|
||||||
|
"/etc/nginx/nginx.conf"
|
||||||
|
"/etc/nginx/conf.d"
|
||||||
|
)
|
||||||
|
|
||||||
# Don't chown entire /etc/nginx folder as this causes crashes on some systems
|
chownit() {
|
||||||
chown -R "$PUID:$PGID" /etc/nginx/nginx
|
local dir="$1"
|
||||||
chown -R "$PUID:$PGID" /etc/nginx/nginx.conf
|
local recursive="${2:-true}"
|
||||||
chown -R "$PUID:$PGID" /etc/nginx/conf.d
|
|
||||||
|
|
||||||
# Prevents errors when installing python certbot plugins when non-root
|
local have
|
||||||
chown "$PUID:$PGID" /opt/certbot /opt/certbot/bin
|
have="$(stat -c '%u:%g' "$dir")"
|
||||||
find /opt/certbot/lib/python*/site-packages -not -user "$PUID" -execdir chown "$PUID:$PGID" {} \+
|
echo "- $dir ... "
|
||||||
|
|
||||||
|
if [ "$have" != "$PUID:$PGID" ]; then
|
||||||
|
if [ "$recursive" = 'true' ] && [ -d "$dir" ]; then
|
||||||
|
chown -R "$PUID:$PGID" "$dir"
|
||||||
|
else
|
||||||
|
chown "$PUID:$PGID" "$dir"
|
||||||
|
fi
|
||||||
|
echo " DONE"
|
||||||
|
else
|
||||||
|
echo " SKIPPED"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
for loc in "${locations[@]}"; do
|
||||||
|
chownit "$loc"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$(is_true "${SKIP_CERTBOT_OWNERSHIP:-}")" = '1' ]; then
|
||||||
|
log_info 'Skipping ownership change of certbot directories'
|
||||||
|
else
|
||||||
|
log_info 'Changing ownership of certbot directories, this may take some time ...'
|
||||||
|
chownit "/opt/certbot" false
|
||||||
|
chownit "/opt/certbot/bin" false
|
||||||
|
|
||||||
|
# Handle all site-packages directories efficiently
|
||||||
|
find /opt/certbot/lib -type d -name "site-packages" | while read -r SITE_PACKAGES_DIR; do
|
||||||
|
chownit "$SITE_PACKAGES_DIR"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
@ -5,12 +5,9 @@ set -e
|
|||||||
|
|
||||||
log_info 'Dynamic resolvers ...'
|
log_info 'Dynamic resolvers ...'
|
||||||
|
|
||||||
DISABLE_IPV6=$(echo "${DISABLE_IPV6:-}" | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
# Dynamically generate resolvers file, if resolver is IPv6, enclose in `[]`
|
# Dynamically generate resolvers file, if resolver is IPv6, enclose in `[]`
|
||||||
# thanks @tfmm
|
# thanks @tfmm
|
||||||
if [ "$DISABLE_IPV6" == "true" ] || [ "$DISABLE_IPV6" == "on" ] || [ "$DISABLE_IPV6" == "1" ] || [ "$DISABLE_IPV6" == "yes" ];
|
if [ "$(is_true "$DISABLE_IPV6")" = '1' ]; then
|
||||||
then
|
|
||||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" { sub(/%.*$/,"",$2); print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf) ipv6=off valid=10s;" > /etc/nginx/conf.d/include/resolvers.conf
|
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" { sub(/%.*$/,"",$2); print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf) ipv6=off valid=10s;" > /etc/nginx/conf.d/include/resolvers.conf
|
||||||
else
|
else
|
||||||
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" { sub(/%.*$/,"",$2); print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf) valid=10s;" > /etc/nginx/conf.d/include/resolvers.conf
|
echo resolver "$(awk 'BEGIN{ORS=" "} $1=="nameserver" { sub(/%.*$/,"",$2); print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf) valid=10s;" > /etc/nginx/conf.d/include/resolvers.conf
|
||||||
|
@ -8,14 +8,11 @@ set -e
|
|||||||
|
|
||||||
log_info 'IPv6 ...'
|
log_info 'IPv6 ...'
|
||||||
|
|
||||||
# Lowercase
|
|
||||||
DISABLE_IPV6=$(echo "${DISABLE_IPV6:-}" | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
process_folder () {
|
process_folder () {
|
||||||
FILES=$(find "$1" -type f -name "*.conf")
|
FILES=$(find "$1" -type f -name "*.conf")
|
||||||
SED_REGEX=
|
SED_REGEX=
|
||||||
|
|
||||||
if [ "$DISABLE_IPV6" == "true" ] || [ "$DISABLE_IPV6" == "on" ] || [ "$DISABLE_IPV6" == "1" ] || [ "$DISABLE_IPV6" == "yes" ]; then
|
if [ "$(is_true "$DISABLE_IPV6")" = '1' ]; then
|
||||||
# IPV6 is disabled
|
# IPV6 is disabled
|
||||||
echo "Disabling IPV6 in hosts in: $1"
|
echo "Disabling IPV6 in hosts in: $1"
|
||||||
SED_REGEX='s/^([^#]*)listen \[::\]/\1#listen [::]/g'
|
SED_REGEX='s/^([^#]*)listen \[::\]/\1#listen [::]/g'
|
||||||
|
@ -56,3 +56,13 @@ get_group_id () {
|
|||||||
getent group "$1" | cut -d: -f3
|
getent group "$1" | cut -d: -f3
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# param $1: value
|
||||||
|
is_true () {
|
||||||
|
VAL=$(echo "${1:-}" | tr '[:upper:]' '[:lower:]')
|
||||||
|
if [ "$VAL" == 'true' ] || [ "$VAL" == 'on' ] || [ "$VAL" == '1' ] || [ "$VAL" == 'yes' ]; then
|
||||||
|
echo '1'
|
||||||
|
else
|
||||||
|
echo '0'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
@ -8,7 +8,7 @@ BLUE='\E[1;34m'
|
|||||||
GREEN='\E[1;32m'
|
GREEN='\E[1;32m'
|
||||||
RESET='\E[0m'
|
RESET='\E[0m'
|
||||||
|
|
||||||
S6_OVERLAY_VERSION=3.2.0.2
|
S6_OVERLAY_VERSION=3.2.1.0
|
||||||
TARGETPLATFORM=${1:-linux/amd64}
|
TARGETPLATFORM=${1:-linux/amd64}
|
||||||
|
|
||||||
# Determine the correct binary file for the architecture given
|
# Determine the correct binary file for the architecture given
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
FILE="/etc/ssl/certs/dhparam.pem"
|
|
||||||
|
|
||||||
if [ ! -f "$FILE" ]; then
|
|
||||||
echo "the $FILE does not exist, creating..."
|
|
||||||
openssl dhparam -out "$FILE" 2048
|
|
||||||
else
|
|
||||||
echo "the $FILE already exists, skipping..."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "run default script"
|
|
||||||
exec /init
|
|
@ -161,6 +161,14 @@ The easy fix is to add a Docker environment variable to the Nginx Proxy Manager
|
|||||||
DISABLE_IPV6: 'true'
|
DISABLE_IPV6: 'true'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Disabling IP Ranges Fetch
|
||||||
|
|
||||||
|
By default, NPM fetches IP ranges from CloudFront and Cloudflare during application startup. In environments with limited internet access or to speed up container startup, this fetch can be disabled:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
environment:
|
||||||
|
IP_RANGES_FETCH_ENABLED: 'false'
|
||||||
|
```
|
||||||
|
|
||||||
## Custom Nginx Configurations
|
## Custom Nginx Configurations
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ services:
|
|||||||
# Add any other Stream port you want to expose
|
# Add any other Stream port you want to expose
|
||||||
# - '21:21' # FTP
|
# - '21:21' # FTP
|
||||||
|
|
||||||
environment:
|
#environment:
|
||||||
# Uncomment this if you want to change the location of
|
# Uncomment this if you want to change the location of
|
||||||
# the SQLite DB file within the container
|
# the SQLite DB file within the container
|
||||||
# DB_SQLITE_FILE: "/data/database.sqlite"
|
# DB_SQLITE_FILE: "/data/database.sqlite"
|
||||||
|
@ -1065,9 +1065,9 @@ vfile@^6.0.0:
|
|||||||
vfile-message "^4.0.0"
|
vfile-message "^4.0.0"
|
||||||
|
|
||||||
vite@^5.4.8:
|
vite@^5.4.8:
|
||||||
version "5.4.14"
|
version "5.4.19"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.14.tgz#ff8255edb02134df180dcfca1916c37a6abe8408"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959"
|
||||||
integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==
|
integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.21.3"
|
esbuild "^0.21.3"
|
||||||
postcss "^8.4.43"
|
postcss "^8.4.43"
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6">
|
<div class="col-sm-12 col-md-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="custom-switch">
|
<label class="custom-switch">
|
||||||
<input type="checkbox" class="custom-switch-input" name="allow_websocket_upgrade" value="1"<%- allow_websocket_upgrade ? ' checked' : '' %>>
|
<input type="checkbox" class="custom-switch-input" name="allow_websocket_upgrade" value="1"<%- allow_websocket_upgrade ? ' checked' : '' %>>
|
||||||
@ -81,15 +81,6 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 col-md-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="custom-switch">
|
|
||||||
<input type="checkbox" class="custom-switch-input" name="default_server" value="1"<%- default_server ? ' checked' : '' %>>
|
|
||||||
<span class="custom-switch-indicator"></span>
|
|
||||||
<span class="custom-switch-description"><%- i18n('proxy-hosts', 'default-server') %></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-12 col-md-12">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@ -114,15 +105,6 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12 letsencrypt">
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="form-label"><%- i18n('all-hosts', 'ssl-key-type') %></label>
|
|
||||||
<select name="ssl_key_type" class="form-control custom-select">
|
|
||||||
<option value="ecdsa" data-data="{"id":"ecdsa"}" <%- ssl_key_type == 'ecdsa' ? 'selected' : '' %>>ECDSA</option>
|
|
||||||
<option value="rsa" data-data="{"id":"rsa"}" <%- ssl_key_type == 'rsa' ? 'selected' : '' %>>RSA</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-sm-6 col-md-6">
|
<div class="col-sm-6 col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="custom-switch">
|
<label class="custom-switch">
|
||||||
|
@ -167,7 +167,6 @@ module.exports = Mn.View.extend({
|
|||||||
data.hsts_enabled = !!data.hsts_enabled;
|
data.hsts_enabled = !!data.hsts_enabled;
|
||||||
data.hsts_subdomains = !!data.hsts_subdomains;
|
data.hsts_subdomains = !!data.hsts_subdomains;
|
||||||
data.ssl_forced = !!data.ssl_forced;
|
data.ssl_forced = !!data.ssl_forced;
|
||||||
data.default_server = !!data.default_server;
|
|
||||||
|
|
||||||
if (typeof data.meta === 'undefined') data.meta = {};
|
if (typeof data.meta === 'undefined') data.meta = {};
|
||||||
data.meta.letsencrypt_agree = data.meta.letsencrypt_agree == 1;
|
data.meta.letsencrypt_agree = data.meta.letsencrypt_agree == 1;
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"fork-me": "Fork me on Github",
|
"fork-me": "Fork me on Github",
|
||||||
"copy": "© 2024 <a href=\"{url}\" target=\"_blank\">jc21.com</a>.",
|
"copy": "© 2025 <a href=\"{url}\" target=\"_blank\">jc21.com</a>.",
|
||||||
"theme": "Theme by <a href=\"{url}\" target=\"_blank\">Tabler</a>"
|
"theme": "Theme by <a href=\"{url}\" target=\"_blank\">Tabler</a>"
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
@ -77,7 +77,6 @@
|
|||||||
"block-exploits": "Block Common Exploits",
|
"block-exploits": "Block Common Exploits",
|
||||||
"caching-enabled": "Cache Assets",
|
"caching-enabled": "Cache Assets",
|
||||||
"ssl-certificate": "SSL Certificate",
|
"ssl-certificate": "SSL Certificate",
|
||||||
"ssl-key-type": "SSL Key Type",
|
|
||||||
"none": "None",
|
"none": "None",
|
||||||
"new-cert": "Request a new SSL Certificate",
|
"new-cert": "Request a new SSL Certificate",
|
||||||
"with-le": "with Let's Encrypt",
|
"with-le": "with Let's Encrypt",
|
||||||
@ -132,7 +131,6 @@
|
|||||||
"help-content": "A Proxy Host is the incoming endpoint for a web service that you want to forward.\nIt provides optional SSL termination for your service that might not have SSL support built in.\nProxy Hosts are the most common use for the Nginx Proxy Manager.",
|
"help-content": "A Proxy Host is the incoming endpoint for a web service that you want to forward.\nIt provides optional SSL termination for your service that might not have SSL support built in.\nProxy Hosts are the most common use for the Nginx Proxy Manager.",
|
||||||
"access-list": "Access List",
|
"access-list": "Access List",
|
||||||
"allow-websocket-upgrade": "Websockets Support",
|
"allow-websocket-upgrade": "Websockets Support",
|
||||||
"default-server": "Default Server",
|
|
||||||
"ignore-invalid-upstream-ssl": "Ignore Invalid SSL",
|
"ignore-invalid-upstream-ssl": "Ignore Invalid SSL",
|
||||||
"custom-forward-host-help": "Add a path for sub-folder forwarding.\nExample: 203.0.113.25/path/",
|
"custom-forward-host-help": "Add a path for sub-folder forwarding.\nExample: 203.0.113.25/path/",
|
||||||
"search": "Search Host…"
|
"search": "Search Host…"
|
||||||
|
@ -10,8 +10,6 @@ const model = Backbone.Model.extend({
|
|||||||
modified_on: null,
|
modified_on: null,
|
||||||
domain_names: [],
|
domain_names: [],
|
||||||
certificate_id: 0,
|
certificate_id: 0,
|
||||||
ssl_key_type: 'ecdsa',
|
|
||||||
default_server: false,
|
|
||||||
ssl_forced: false,
|
ssl_forced: false,
|
||||||
http2_support: false,
|
http2_support: false,
|
||||||
hsts_enabled: false,
|
hsts_enabled: false,
|
||||||
|
@ -14,8 +14,6 @@ const model = Backbone.Model.extend({
|
|||||||
forward_port: null,
|
forward_port: null,
|
||||||
access_list_id: 0,
|
access_list_id: 0,
|
||||||
certificate_id: 0,
|
certificate_id: 0,
|
||||||
ssl_key_type: 'ecdsa',
|
|
||||||
default_server: false,
|
|
||||||
ssl_forced: false,
|
ssl_forced: false,
|
||||||
hsts_enabled: false,
|
hsts_enabled: false,
|
||||||
hsts_subdomains: false,
|
hsts_subdomains: false,
|
||||||
|
@ -14,8 +14,6 @@ const model = Backbone.Model.extend({
|
|||||||
forward_domain_name: '',
|
forward_domain_name: '',
|
||||||
preserve_path: true,
|
preserve_path: true,
|
||||||
certificate_id: 0,
|
certificate_id: 0,
|
||||||
ssl_key_type: 'ecdsa',
|
|
||||||
default_server: false,
|
|
||||||
ssl_forced: false,
|
ssl_forced: false,
|
||||||
hsts_enabled: false,
|
hsts_enabled: false,
|
||||||
hsts_subdomains: false,
|
hsts_subdomains: false,
|
||||||
|
@ -167,4 +167,5 @@ $pink: #f66d9b;
|
|||||||
|
|
||||||
textarea.form-control.text-monospace {
|
textarea.form-control.text-monospace {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
@ -907,6 +907,13 @@ atob@^2.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||||
|
|
||||||
|
available-typed-arrays@^1.0.7:
|
||||||
|
version "1.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
|
||||||
|
integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
|
||||||
|
dependencies:
|
||||||
|
possible-typed-array-names "^1.0.0"
|
||||||
|
|
||||||
babel-code-frame@^6.26.0:
|
babel-code-frame@^6.26.0:
|
||||||
version "6.26.0"
|
version "6.26.0"
|
||||||
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
|
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
|
||||||
@ -1790,6 +1797,32 @@ cacheable-request@^6.0.0:
|
|||||||
normalize-url "^4.1.0"
|
normalize-url "^4.1.0"
|
||||||
responselike "^1.0.2"
|
responselike "^1.0.2"
|
||||||
|
|
||||||
|
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
|
||||||
|
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
|
||||||
|
dependencies:
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
|
||||||
|
call-bind@^1.0.8:
|
||||||
|
version "1.0.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
|
||||||
|
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
|
||||||
|
dependencies:
|
||||||
|
call-bind-apply-helpers "^1.0.0"
|
||||||
|
es-define-property "^1.0.0"
|
||||||
|
get-intrinsic "^1.2.4"
|
||||||
|
set-function-length "^1.2.2"
|
||||||
|
|
||||||
|
call-bound@^1.0.3, call-bound@^1.0.4:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
|
||||||
|
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
|
||||||
|
dependencies:
|
||||||
|
call-bind-apply-helpers "^1.0.2"
|
||||||
|
get-intrinsic "^1.3.0"
|
||||||
|
|
||||||
callsites@^3.0.0:
|
callsites@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
||||||
@ -2232,7 +2265,7 @@ create-ecdh@^4.0.0:
|
|||||||
bn.js "^4.1.0"
|
bn.js "^4.1.0"
|
||||||
elliptic "^6.5.3"
|
elliptic "^6.5.3"
|
||||||
|
|
||||||
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
|
create-hash@^1.1.0, create-hash@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
|
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
|
||||||
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
|
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
|
||||||
@ -2243,7 +2276,17 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
|
|||||||
ripemd160 "^2.0.1"
|
ripemd160 "^2.0.1"
|
||||||
sha.js "^2.4.0"
|
sha.js "^2.4.0"
|
||||||
|
|
||||||
create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
|
create-hash@~1.1.3:
|
||||||
|
version "1.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
|
||||||
|
integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==
|
||||||
|
dependencies:
|
||||||
|
cipher-base "^1.0.1"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
ripemd160 "^2.0.0"
|
||||||
|
sha.js "^2.4.0"
|
||||||
|
|
||||||
|
create-hmac@^1.1.0, create-hmac@^1.1.7:
|
||||||
version "1.1.7"
|
version "1.1.7"
|
||||||
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
|
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
|
||||||
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
|
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
|
||||||
@ -2414,6 +2457,15 @@ defer-to-connect@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
|
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
|
||||||
integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
|
integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
|
||||||
|
|
||||||
|
define-data-property@^1.1.4:
|
||||||
|
version "1.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||||
|
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
||||||
|
dependencies:
|
||||||
|
es-define-property "^1.0.0"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
gopd "^1.0.1"
|
||||||
|
|
||||||
define-properties@^1.1.2, define-properties@^1.1.3:
|
define-properties@^1.1.2, define-properties@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
@ -2579,6 +2631,15 @@ dot-prop@^5.2.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-obj "^2.0.0"
|
is-obj "^2.0.0"
|
||||||
|
|
||||||
|
dunder-proto@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
|
||||||
|
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
|
||||||
|
dependencies:
|
||||||
|
call-bind-apply-helpers "^1.0.1"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
gopd "^1.2.0"
|
||||||
|
|
||||||
duplexer3@^0.1.4:
|
duplexer3@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
|
||||||
@ -2648,9 +2709,9 @@ electron-to-chromium@^1.3.47:
|
|||||||
integrity sha512-67V62Z4CFOiAtox+o+tosGfVk0QX4DJgH609tjT8QymbJZVAI/jWnAthnr8c5hnRNziIRwkc9EMQYejiVz3/9Q==
|
integrity sha512-67V62Z4CFOiAtox+o+tosGfVk0QX4DJgH609tjT8QymbJZVAI/jWnAthnr8c5hnRNziIRwkc9EMQYejiVz3/9Q==
|
||||||
|
|
||||||
elliptic@^6.5.3, elliptic@^6.5.4:
|
elliptic@^6.5.3, elliptic@^6.5.4:
|
||||||
version "6.6.0"
|
version "6.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.0.tgz#5919ec723286c1edf28685aa89261d4761afa210"
|
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06"
|
||||||
integrity sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==
|
integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==
|
||||||
dependencies:
|
dependencies:
|
||||||
bn.js "^4.11.9"
|
bn.js "^4.11.9"
|
||||||
brorand "^1.1.0"
|
brorand "^1.1.0"
|
||||||
@ -2762,6 +2823,23 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
|
|||||||
string.prototype.trimend "^1.0.1"
|
string.prototype.trimend "^1.0.1"
|
||||||
string.prototype.trimstart "^1.0.1"
|
string.prototype.trimstart "^1.0.1"
|
||||||
|
|
||||||
|
es-define-property@^1.0.0, es-define-property@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
|
||||||
|
integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
|
||||||
|
|
||||||
|
es-errors@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
|
||||||
|
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
||||||
|
|
||||||
|
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
|
||||||
|
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
|
||||||
|
dependencies:
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
|
||||||
es-to-primitive@^1.2.1:
|
es-to-primitive@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
||||||
@ -3131,6 +3209,13 @@ flush-write-stream@^1.0.0:
|
|||||||
inherits "^2.0.3"
|
inherits "^2.0.3"
|
||||||
readable-stream "^2.3.6"
|
readable-stream "^2.3.6"
|
||||||
|
|
||||||
|
for-each@^0.3.5:
|
||||||
|
version "0.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47"
|
||||||
|
integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
|
||||||
|
dependencies:
|
||||||
|
is-callable "^1.2.7"
|
||||||
|
|
||||||
for-in@^1.0.2:
|
for-in@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
||||||
@ -3191,6 +3276,11 @@ function-bind@^1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||||
|
|
||||||
|
function-bind@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||||
|
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||||
|
|
||||||
functional-red-black-tree@^1.0.1:
|
functional-red-black-tree@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
||||||
@ -3227,6 +3317,30 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||||
|
|
||||||
|
get-intrinsic@^1.2.4, get-intrinsic@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
|
||||||
|
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
|
||||||
|
dependencies:
|
||||||
|
call-bind-apply-helpers "^1.0.2"
|
||||||
|
es-define-property "^1.0.1"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
es-object-atoms "^1.1.1"
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
get-proto "^1.0.1"
|
||||||
|
gopd "^1.2.0"
|
||||||
|
has-symbols "^1.1.0"
|
||||||
|
hasown "^2.0.2"
|
||||||
|
math-intrinsics "^1.1.0"
|
||||||
|
|
||||||
|
get-proto@^1.0.1:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
|
||||||
|
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
|
||||||
|
dependencies:
|
||||||
|
dunder-proto "^1.0.1"
|
||||||
|
es-object-atoms "^1.0.0"
|
||||||
|
|
||||||
get-stdin@^4.0.1:
|
get-stdin@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
||||||
@ -3393,6 +3507,11 @@ globule@^1.0.0:
|
|||||||
lodash "~4.17.10"
|
lodash "~4.17.10"
|
||||||
minimatch "~3.0.2"
|
minimatch "~3.0.2"
|
||||||
|
|
||||||
|
gopd@^1.0.1, gopd@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
|
||||||
|
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
|
||||||
|
|
||||||
got@^9.6.0:
|
got@^9.6.0:
|
||||||
version "9.6.0"
|
version "9.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
|
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
|
||||||
@ -3442,11 +3561,30 @@ has-flag@^4.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||||
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
||||||
|
|
||||||
|
has-property-descriptors@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
||||||
|
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
||||||
|
dependencies:
|
||||||
|
es-define-property "^1.0.0"
|
||||||
|
|
||||||
has-symbols@^1.0.0, has-symbols@^1.0.1:
|
has-symbols@^1.0.0, has-symbols@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
|
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
|
||||||
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
|
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
|
||||||
|
|
||||||
|
has-symbols@^1.0.3, has-symbols@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
|
||||||
|
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
|
||||||
|
|
||||||
|
has-tostringtag@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
|
||||||
|
integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
|
||||||
|
dependencies:
|
||||||
|
has-symbols "^1.0.3"
|
||||||
|
|
||||||
has-unicode@^2.0.1:
|
has-unicode@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
|
||||||
@ -3495,6 +3633,13 @@ has@^1.0.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
|
hash-base@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
|
||||||
|
integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.1"
|
||||||
|
|
||||||
hash-base@^3.0.0:
|
hash-base@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
|
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
|
||||||
@ -3512,6 +3657,13 @@ hash.js@^1.0.0, hash.js@^1.0.3:
|
|||||||
inherits "^2.0.3"
|
inherits "^2.0.3"
|
||||||
minimalistic-assert "^1.0.1"
|
minimalistic-assert "^1.0.1"
|
||||||
|
|
||||||
|
hasown@^2.0.2:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
||||||
|
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
||||||
|
dependencies:
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
|
||||||
he@1.2.x, he@^1.2.0:
|
he@1.2.x, he@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||||
@ -3856,6 +4008,11 @@ is-callable@^1.1.4, is-callable@^1.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
|
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
|
||||||
integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
|
integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
|
||||||
|
|
||||||
|
is-callable@^1.2.7:
|
||||||
|
version "1.2.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
|
||||||
|
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
|
||||||
|
|
||||||
is-ci@^2.0.0:
|
is-ci@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
|
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
|
||||||
@ -4019,6 +4176,13 @@ is-symbol@^1.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-symbols "^1.0.1"
|
has-symbols "^1.0.1"
|
||||||
|
|
||||||
|
is-typed-array@^1.1.14:
|
||||||
|
version "1.1.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
|
||||||
|
integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
|
||||||
|
dependencies:
|
||||||
|
which-typed-array "^1.1.16"
|
||||||
|
|
||||||
is-typedarray@^1.0.0:
|
is-typedarray@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||||
@ -4044,6 +4208,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||||
|
|
||||||
|
isarray@^2.0.5:
|
||||||
|
version "2.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
||||||
|
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
|
||||||
|
|
||||||
isexe@^2.0.0:
|
isexe@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||||
@ -4436,6 +4605,11 @@ marionette.templatecache@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
backbone.marionette "^4.0.0, 4.0.0-beta.1"
|
backbone.marionette "^4.0.0, 4.0.0-beta.1"
|
||||||
|
|
||||||
|
math-intrinsics@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
|
||||||
|
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||||
@ -5289,15 +5463,16 @@ path-type@^4.0.0:
|
|||||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||||
|
|
||||||
pbkdf2@^3.0.3:
|
pbkdf2@^3.0.3:
|
||||||
version "3.1.1"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
|
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b"
|
||||||
integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
|
integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==
|
||||||
dependencies:
|
dependencies:
|
||||||
create-hash "^1.1.2"
|
create-hash "~1.1.3"
|
||||||
create-hmac "^1.1.4"
|
create-hmac "^1.1.7"
|
||||||
ripemd160 "^2.0.1"
|
ripemd160 "=2.0.1"
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.2.1"
|
||||||
sha.js "^2.4.8"
|
sha.js "^2.4.11"
|
||||||
|
to-buffer "^1.2.0"
|
||||||
|
|
||||||
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
|
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
|
||||||
version "2.2.2"
|
version "2.2.2"
|
||||||
@ -5326,6 +5501,11 @@ posix-character-classes@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||||
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
||||||
|
|
||||||
|
possible-typed-array-names@^1.0.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
|
||||||
|
integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
|
||||||
|
|
||||||
postcss-modules-extract-imports@^2.0.0:
|
postcss-modules-extract-imports@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
|
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
|
||||||
@ -5886,6 +6066,14 @@ rimraf@^3.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
|
ripemd160@=2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
|
||||||
|
integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==
|
||||||
|
dependencies:
|
||||||
|
hash-base "^2.0.0"
|
||||||
|
inherits "^2.0.1"
|
||||||
|
|
||||||
ripemd160@^2.0.0, ripemd160@^2.0.1:
|
ripemd160@^2.0.0, ripemd160@^2.0.1:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
|
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
|
||||||
@ -6037,6 +6225,18 @@ set-blocking@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||||
|
|
||||||
|
set-function-length@^1.2.2:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
||||||
|
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
||||||
|
dependencies:
|
||||||
|
define-data-property "^1.1.4"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
function-bind "^1.1.2"
|
||||||
|
get-intrinsic "^1.2.4"
|
||||||
|
gopd "^1.0.1"
|
||||||
|
has-property-descriptors "^1.0.2"
|
||||||
|
|
||||||
set-value@^2.0.0, set-value@^2.0.1:
|
set-value@^2.0.0, set-value@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
||||||
@ -6052,7 +6252,7 @@ setimmediate@^1.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||||
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
|
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
|
||||||
|
|
||||||
sha.js@^2.4.0, sha.js@^2.4.8:
|
sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8:
|
||||||
version "2.4.11"
|
version "2.4.11"
|
||||||
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
|
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
|
||||||
integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
|
integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
|
||||||
@ -6592,6 +6792,15 @@ to-arraybuffer@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
|
||||||
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
|
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
|
||||||
|
|
||||||
|
to-buffer@^1.2.0:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0"
|
||||||
|
integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==
|
||||||
|
dependencies:
|
||||||
|
isarray "^2.0.5"
|
||||||
|
safe-buffer "^5.2.1"
|
||||||
|
typed-array-buffer "^1.0.3"
|
||||||
|
|
||||||
to-fast-properties@^1.0.3:
|
to-fast-properties@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
|
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
|
||||||
@ -6698,6 +6907,15 @@ type-fest@^0.8.1:
|
|||||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
|
||||||
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
|
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
|
||||||
|
|
||||||
|
typed-array-buffer@^1.0.3:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536"
|
||||||
|
integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==
|
||||||
|
dependencies:
|
||||||
|
call-bound "^1.0.3"
|
||||||
|
es-errors "^1.3.0"
|
||||||
|
is-typed-array "^1.1.14"
|
||||||
|
|
||||||
typedarray-to-buffer@^3.1.5:
|
typedarray-to-buffer@^3.1.5:
|
||||||
version "3.1.5"
|
version "3.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
|
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
|
||||||
@ -7024,6 +7242,19 @@ which-module@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
||||||
|
|
||||||
|
which-typed-array@^1.1.16:
|
||||||
|
version "1.1.19"
|
||||||
|
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
|
||||||
|
integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
|
||||||
|
dependencies:
|
||||||
|
available-typed-arrays "^1.0.7"
|
||||||
|
call-bind "^1.0.8"
|
||||||
|
call-bound "^1.0.4"
|
||||||
|
for-each "^0.3.5"
|
||||||
|
get-proto "^1.0.1"
|
||||||
|
gopd "^1.2.0"
|
||||||
|
has-tostringtag "^1.0.2"
|
||||||
|
|
||||||
which@^1.2.14, which@^1.2.9, which@^1.3.1:
|
which@^1.2.14, which@^1.2.9, which@^1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
"active24": {
|
"active24": {
|
||||||
"name": "Active24",
|
"name": "Active24",
|
||||||
"package_name": "certbot-dns-active24",
|
"package_name": "certbot-dns-active24",
|
||||||
"version": "~=1.5.1",
|
"version": "~=2.0.0",
|
||||||
"dependencies": "",
|
"dependencies": "",
|
||||||
"credentials": "dns_active24_token=\"TOKEN\"",
|
"credentials": "dns_active24_api_key = <identifier>\ndns_active24_secret = <secret>",
|
||||||
"full_plugin_name": "dns-active24"
|
"full_plugin_name": "dns-active24"
|
||||||
},
|
},
|
||||||
"aliyun": {
|
"aliyun": {
|
||||||
@ -31,6 +31,14 @@
|
|||||||
"credentials": "# This plugin supported API authentication using either Service Principals or utilizing a Managed Identity assigned to the virtual machine.\n# Regardless which authentication method used, the identity will need the “DNS Zone Contributor” role assigned to it.\n# As multiple Azure DNS Zones in multiple resource groups can exist, the config file needs a mapping of zone to resource group ID. Multiple zones -> ID mappings can be listed by using the key dns_azure_zoneX where X is a unique number. At least 1 zone mapping is required.\n\n# Using a service principal (option 1)\ndns_azure_sp_client_id = 912ce44a-0156-4669-ae22-c16a17d34ca5\ndns_azure_sp_client_secret = E-xqXU83Y-jzTI6xe9fs2YC~mck3ZzUih9\ndns_azure_tenant_id = ed1090f3-ab18-4b12-816c-599af8a88cf7\n\n# Using used assigned MSI (option 2)\n# dns_azure_msi_client_id = 912ce44a-0156-4669-ae22-c16a17d34ca5\n\n# Using system assigned MSI (option 3)\n# dns_azure_msi_system_assigned = true\n\n# Zones (at least one always required)\ndns_azure_zone1 = example.com:/subscriptions/c135abce-d87d-48df-936c-15596c6968a5/resourceGroups/dns1\ndns_azure_zone2 = example.org:/subscriptions/99800903-fb14-4992-9aff-12eaf2744622/resourceGroups/dns2",
|
"credentials": "# This plugin supported API authentication using either Service Principals or utilizing a Managed Identity assigned to the virtual machine.\n# Regardless which authentication method used, the identity will need the “DNS Zone Contributor” role assigned to it.\n# As multiple Azure DNS Zones in multiple resource groups can exist, the config file needs a mapping of zone to resource group ID. Multiple zones -> ID mappings can be listed by using the key dns_azure_zoneX where X is a unique number. At least 1 zone mapping is required.\n\n# Using a service principal (option 1)\ndns_azure_sp_client_id = 912ce44a-0156-4669-ae22-c16a17d34ca5\ndns_azure_sp_client_secret = E-xqXU83Y-jzTI6xe9fs2YC~mck3ZzUih9\ndns_azure_tenant_id = ed1090f3-ab18-4b12-816c-599af8a88cf7\n\n# Using used assigned MSI (option 2)\n# dns_azure_msi_client_id = 912ce44a-0156-4669-ae22-c16a17d34ca5\n\n# Using system assigned MSI (option 3)\n# dns_azure_msi_system_assigned = true\n\n# Zones (at least one always required)\ndns_azure_zone1 = example.com:/subscriptions/c135abce-d87d-48df-936c-15596c6968a5/resourceGroups/dns1\ndns_azure_zone2 = example.org:/subscriptions/99800903-fb14-4992-9aff-12eaf2744622/resourceGroups/dns2",
|
||||||
"full_plugin_name": "dns-azure"
|
"full_plugin_name": "dns-azure"
|
||||||
},
|
},
|
||||||
|
"baidu": {
|
||||||
|
"name": "baidu",
|
||||||
|
"package_name": "certbot-dns-baidu",
|
||||||
|
"version": "~=0.1.1",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_baidu_access_key = 12345678\ndns_baidu_secret_key = 1234567890abcdef1234567890abcdef",
|
||||||
|
"full_plugin_name": "dns-baidu"
|
||||||
|
},
|
||||||
"beget": {
|
"beget": {
|
||||||
"name":"Beget",
|
"name":"Beget",
|
||||||
"package_name": "certbot-beget-plugin",
|
"package_name": "certbot-beget-plugin",
|
||||||
@ -47,11 +55,19 @@
|
|||||||
"credentials": "# Bunny API token used by Certbot (see https://dash.bunny.net/account/settings)\ndns_bunny_api_key = xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
|
"credentials": "# Bunny API token used by Certbot (see https://dash.bunny.net/account/settings)\ndns_bunny_api_key = xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
|
||||||
"full_plugin_name": "dns-bunny"
|
"full_plugin_name": "dns-bunny"
|
||||||
},
|
},
|
||||||
|
"cdmon": {
|
||||||
|
"name": "cdmon",
|
||||||
|
"package_name": "certbot-dns-cdmon",
|
||||||
|
"version": "~=0.4.1",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_cdmon_api_key=your-cdmon-api-token\ndns_cdmon_domain=your_domain_is_optional",
|
||||||
|
"full_plugin_name": "dns-cdmon"
|
||||||
|
},
|
||||||
"cloudflare": {
|
"cloudflare": {
|
||||||
"name": "Cloudflare",
|
"name": "Cloudflare",
|
||||||
"package_name": "certbot-dns-cloudflare",
|
"package_name": "certbot-dns-cloudflare",
|
||||||
"version": "=={{certbot-version}}",
|
"version": "=={{certbot-version}}",
|
||||||
"dependencies": "cloudflare==2.19.* acme=={{certbot-version}}",
|
"dependencies": "acme=={{certbot-version}}",
|
||||||
"credentials": "# Cloudflare API token\ndns_cloudflare_api_token=0123456789abcdef0123456789abcdef01234567",
|
"credentials": "# Cloudflare API token\ndns_cloudflare_api_token=0123456789abcdef0123456789abcdef01234567",
|
||||||
"full_plugin_name": "dns-cloudflare"
|
"full_plugin_name": "dns-cloudflare"
|
||||||
},
|
},
|
||||||
@ -90,11 +106,19 @@
|
|||||||
"cpanel": {
|
"cpanel": {
|
||||||
"name": "cPanel",
|
"name": "cPanel",
|
||||||
"package_name": "certbot-dns-cpanel",
|
"package_name": "certbot-dns-cpanel",
|
||||||
"version": "~=0.2.2",
|
"version": "~=0.4.0",
|
||||||
"dependencies": "",
|
"dependencies": "",
|
||||||
"credentials": "cpanel_url = https://cpanel.example.com:2083\ncpanel_username = user\ncpanel_password = hunter2",
|
"credentials": "cpanel_url = https://cpanel.example.com:2083\ncpanel_username = your_username\ncpanel_password = your_password\ncpanel_token = your_api_token",
|
||||||
"full_plugin_name": "cpanel"
|
"full_plugin_name": "cpanel"
|
||||||
},
|
},
|
||||||
|
"ddnss": {
|
||||||
|
"name": "DDNSS",
|
||||||
|
"package_name": "certbot-dns-ddnss",
|
||||||
|
"version": "~=1.1.0",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_ddnss_token = YOUR_DDNSS_API_TOKEN",
|
||||||
|
"full_plugin_name": "dns-ddnss"
|
||||||
|
},
|
||||||
"desec": {
|
"desec": {
|
||||||
"name": "deSEC",
|
"name": "deSEC",
|
||||||
"package_name": "certbot-dns-desec",
|
"package_name": "certbot-dns-desec",
|
||||||
@ -164,7 +188,7 @@
|
|||||||
"package_name": "certbot-dns-domainoffensive",
|
"package_name": "certbot-dns-domainoffensive",
|
||||||
"version": "~=2.0.0",
|
"version": "~=2.0.0",
|
||||||
"dependencies": "",
|
"dependencies": "",
|
||||||
"credentials": "dns_do_api_token = YOUR_DO_DE_AUTH_TOKEN",
|
"credentials": "dns_domainoffensive_api_token = YOUR_DO_DE_AUTH_TOKEN",
|
||||||
"full_plugin_name": "dns-domainoffensive"
|
"full_plugin_name": "dns-domainoffensive"
|
||||||
},
|
},
|
||||||
"domeneshop": {
|
"domeneshop": {
|
||||||
@ -199,6 +223,14 @@
|
|||||||
"credentials": "dns_eurodns_applicationId = myuser\ndns_eurodns_apiKey = mysecretpassword\ndns_eurodns_endpoint = https://rest-api.eurodns.com/user-api-gateway/proxy",
|
"credentials": "dns_eurodns_applicationId = myuser\ndns_eurodns_apiKey = mysecretpassword\ndns_eurodns_endpoint = https://rest-api.eurodns.com/user-api-gateway/proxy",
|
||||||
"full_plugin_name": "dns-eurodns"
|
"full_plugin_name": "dns-eurodns"
|
||||||
},
|
},
|
||||||
|
"firstdomains": {
|
||||||
|
"name": "First Domains",
|
||||||
|
"package_name": "certbot-dns-firstdomains",
|
||||||
|
"version": ">=1.0",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_firstdomains_username = myremoteuser\ndns_firstdomains_password = verysecureremoteuserpassword",
|
||||||
|
"full_plugin_name": "dns-firstdomains"
|
||||||
|
},
|
||||||
"freedns": {
|
"freedns": {
|
||||||
"name": "FreeDNS",
|
"name": "FreeDNS",
|
||||||
"package_name": "certbot-dns-freedns",
|
"package_name": "certbot-dns-freedns",
|
||||||
@ -209,8 +241,8 @@
|
|||||||
},
|
},
|
||||||
"gandi": {
|
"gandi": {
|
||||||
"name": "Gandi Live DNS",
|
"name": "Gandi Live DNS",
|
||||||
"package_name": "certbot_plugin_gandi",
|
"package_name": "certbot-dns-gandi",
|
||||||
"version": "~=1.5.0",
|
"version": "~=1.6.1",
|
||||||
"dependencies": "",
|
"dependencies": "",
|
||||||
"credentials": "# Gandi personal access token\ndns_gandi_token=PERSONAL_ACCESS_TOKEN",
|
"credentials": "# Gandi personal access token\ndns_gandi_token=PERSONAL_ACCESS_TOKEN",
|
||||||
"full_plugin_name": "dns-gandi"
|
"full_plugin_name": "dns-gandi"
|
||||||
@ -383,6 +415,14 @@
|
|||||||
"credentials": "dns_netcup_customer_id = 123456\ndns_netcup_api_key = 0123456789abcdef0123456789abcdef01234567\ndns_netcup_api_password = abcdef0123456789abcdef01234567abcdef0123",
|
"credentials": "dns_netcup_customer_id = 123456\ndns_netcup_api_key = 0123456789abcdef0123456789abcdef01234567\ndns_netcup_api_password = abcdef0123456789abcdef01234567abcdef0123",
|
||||||
"full_plugin_name": "dns-netcup"
|
"full_plugin_name": "dns-netcup"
|
||||||
},
|
},
|
||||||
|
"nicru": {
|
||||||
|
"name": "nic.ru",
|
||||||
|
"package_name": "certbot-dns-nicru",
|
||||||
|
"version": "~=1.0.3",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_nicru_client_id = application-id\ndns_nicru_client_secret = application-token\ndns_nicru_username = 0001110/NIC-D\ndns_nicru_password = password\ndns_nicru_scope = .+:.+/zones/example.com(/.+)?\ndns_nicru_service = DNS_SERVICE_NAME\ndns_nicru_zone = example.com",
|
||||||
|
"full_plugin_name": "dns-nicru"
|
||||||
|
},
|
||||||
"njalla": {
|
"njalla": {
|
||||||
"name": "Njalla",
|
"name": "Njalla",
|
||||||
"package_name": "certbot-dns-njalla",
|
"package_name": "certbot-dns-njalla",
|
||||||
@ -471,13 +511,29 @@
|
|||||||
"credentials": "[default]\naws_access_key_id=AKIAIOSFODNN7EXAMPLE\naws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
|
"credentials": "[default]\naws_access_key_id=AKIAIOSFODNN7EXAMPLE\naws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
|
||||||
"full_plugin_name": "dns-route53"
|
"full_plugin_name": "dns-route53"
|
||||||
},
|
},
|
||||||
|
"spaceship": {
|
||||||
|
"name": "Spaceship",
|
||||||
|
"package_name": "certbot-dns-spaceship",
|
||||||
|
"version": "~=1.0.4",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "[spaceship]\napi_key=your_api_key\napi_secret=your_api_secret",
|
||||||
|
"full_plugin_name": "dns-spaceship"
|
||||||
|
},
|
||||||
"strato": {
|
"strato": {
|
||||||
"name": "Strato",
|
"name": "Strato",
|
||||||
"package_name": "certbot-dns-strato",
|
"package_name": "certbot-dns-strato",
|
||||||
"version": "~=0.2.1",
|
"version": "~=0.2.2",
|
||||||
"dependencies": "",
|
"dependencies": "",
|
||||||
"credentials": "dns_strato_username = user\ndns_strato_password = pass\n# uncomment if youre using two factor authentication:\n# dns_strato_totp_devicename = 2fa_device\n# dns_strato_totp_secret = 2fa_secret\n#\n# uncomment if domain name contains special characters\n# insert domain display name as seen on your account page here\n# dns_strato_domain_display_name = my-punicode-url.de\n#\n# if youre not using strato.de or another special endpoint you can customise it below\n# you will probably only need to adjust the host, but you can also change the complete endpoint url\n# dns_strato_custom_api_scheme = https\n# dns_strato_custom_api_host = www.strato.de\n# dns_strato_custom_api_port = 443\n# dns_strato_custom_api_path = \"/apps/CustomerService\"",
|
"credentials": "dns_strato_username = user\ndns_strato_password = pass\n# uncomment if youre using two factor authentication:\n# dns_strato_totp_devicename = 2fa_device\n# dns_strato_totp_secret = 2fa_secret\n#\n# uncomment if domain name contains special characters\n# insert domain display name as seen on your account page here\n# dns_strato_domain_display_name = my-punicode-url.de\n#\n# if youre not using strato.de or another special endpoint you can customise it below\n# you will probably only need to adjust the host, but you can also change the complete endpoint url\n# dns_strato_custom_api_scheme = https\n# dns_strato_custom_api_host = www.strato.de\n# dns_strato_custom_api_port = 443\n# dns_strato_custom_api_path = \"/apps/CustomerService\"",
|
||||||
"full_plugin_name": "dns-strato"
|
"full_plugin_name": "dns-strato"
|
||||||
|
},
|
||||||
|
"selectelv2": {
|
||||||
|
"name": "Selectel api v2",
|
||||||
|
"package_name": "certbot-dns-selectel-api-v2",
|
||||||
|
"version": "~=0.3.0",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_selectel_api_v2_account_id = your_account_id\ndns_selectel_api_v2_project_name = your_project\ndns_selectel_api_v2_username = your_username\ndns_selectel_api_v2_password = your_password",
|
||||||
|
"full_plugin_name": "dns-selectel-api-v2"
|
||||||
},
|
},
|
||||||
"timeweb": {
|
"timeweb": {
|
||||||
"name": "Timeweb Cloud",
|
"name": "Timeweb Cloud",
|
||||||
|
@ -10,7 +10,7 @@ describe('Certificates endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Validate custom certificate', function() {
|
it('Validate custom certificate', () => {
|
||||||
cy.task('backendApiPostFiles', {
|
cy.task('backendApiPostFiles', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/certificates/validate',
|
path: '/api/nginx/certificates/validate',
|
||||||
@ -25,7 +25,7 @@ describe('Certificates endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Custom certificate lifecycle', function() {
|
it('Custom certificate lifecycle', () => {
|
||||||
// Create custom cert
|
// Create custom cert
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
@ -73,7 +73,7 @@ describe('Certificates endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Request Certificate - CVE-2024-46256/CVE-2024-46257', function() {
|
it('Request Certificate - CVE-2024-46256/CVE-2024-46257', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/certificates',
|
path: '/api/nginx/certificates',
|
||||||
|
25
test/cypress/e2e/api/Dashboard.cy.js
Normal file
25
test/cypress/e2e/api/Dashboard.cy.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/// <reference types="cypress" />
|
||||||
|
|
||||||
|
describe('Dashboard endpoints', () => {
|
||||||
|
let token;
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
cy.getToken().then((tok) => {
|
||||||
|
token = tok;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should be able to get host counts', () => {
|
||||||
|
cy.task('backendApiGet', {
|
||||||
|
token: token,
|
||||||
|
path: '/api/reports/hosts'
|
||||||
|
}).then((data) => {
|
||||||
|
cy.validateSwaggerSchema('get', 200, '/reports/hosts', data);
|
||||||
|
expect(data).to.have.property('dead');
|
||||||
|
expect(data).to.have.property('proxy');
|
||||||
|
expect(data).to.have.property('redirection');
|
||||||
|
expect(data).to.have.property('stream');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -9,7 +9,7 @@ describe('Full Certificate Provisions', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create new http certificate', function() {
|
it('Should be able to create new http certificate', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/certificates',
|
path: '/api/nginx/certificates',
|
||||||
@ -32,7 +32,7 @@ describe('Full Certificate Provisions', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create new DNS certificate with Powerdns', function() {
|
it('Should be able to create new DNS certificate with Powerdns', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/certificates',
|
path: '/api/nginx/certificates',
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
|
|
||||||
describe('Basic API checks', () => {
|
describe('Basic API checks', () => {
|
||||||
it('Should return a valid health payload', function () {
|
it('Should return a valid health payload', () => {
|
||||||
cy.task('backendApiGet', {
|
cy.task('backendApiGet', {
|
||||||
path: '/api/',
|
path: '/api/',
|
||||||
}).then((data) => {
|
}).then((data) => {
|
||||||
@ -10,9 +10,9 @@ describe('Basic API checks', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should return a valid schema payload', function () {
|
it('Should return a valid schema payload', () => {
|
||||||
cy.task('backendApiGet', {
|
cy.task('backendApiGet', {
|
||||||
path: '/api/schema?ts=' + Date.now(),
|
path: `/api/schema?ts=${Date.now()}`,
|
||||||
}).then((data) => {
|
}).then((data) => {
|
||||||
expect(data.openapi).to.be.equal('3.1.0');
|
expect(data.openapi).to.be.equal('3.1.0');
|
||||||
});
|
});
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
|
|
||||||
describe('LDAP with Authentik', () => {
|
describe('LDAP with Authentik', () => {
|
||||||
let token;
|
let _token;
|
||||||
if (Cypress.env('skipStackCheck') === 'true' || Cypress.env('stack') === 'postgres') {
|
if (Cypress.env('skipStackCheck') === 'true' || Cypress.env('stack') === 'postgres') {
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.getToken().then((tok) => {
|
cy.getToken().then((tok) => {
|
||||||
token = tok;
|
_token = tok;
|
||||||
|
|
||||||
// cy.task('backendApiPut', {
|
// cy.task('backendApiPut', {
|
||||||
// token: token,
|
// token: token,
|
||||||
@ -45,7 +45,7 @@ describe('LDAP with Authentik', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it.skip('Should log in with LDAP', function() {
|
it.skip('Should log in with LDAP', () => {
|
||||||
// cy.task('backendApiPost', {
|
// cy.task('backendApiPost', {
|
||||||
// token: token,
|
// token: token,
|
||||||
// path: '/api/auth',
|
// path: '/api/auth',
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
/// <reference types="cypress" />
|
/// <reference types="cypress" />
|
||||||
|
|
||||||
describe('OAuth with Authentik', () => {
|
describe('OAuth with Authentik', () => {
|
||||||
let token;
|
let _token;
|
||||||
if (Cypress.env('skipStackCheck') === 'true' || Cypress.env('stack') === 'postgres') {
|
if (Cypress.env('skipStackCheck') === 'true' || Cypress.env('stack') === 'postgres') {
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.getToken().then((tok) => {
|
cy.getToken().then((tok) => {
|
||||||
token = tok;
|
_token = tok;
|
||||||
|
|
||||||
// cy.task('backendApiPut', {
|
// cy.task('backendApiPut', {
|
||||||
// token: token,
|
// token: token,
|
||||||
@ -47,7 +47,7 @@ describe('OAuth with Authentik', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it.skip('Should log in with OAuth', function() {
|
it.skip('Should log in with OAuth', () => {
|
||||||
// cy.task('backendApiGet', {
|
// cy.task('backendApiGet', {
|
||||||
// path: '/oauth/login?redirect_base=' + encodeURI(Cypress.config('baseUrl')),
|
// path: '/oauth/login?redirect_base=' + encodeURI(Cypress.config('baseUrl')),
|
||||||
// }).then((data) => {
|
// }).then((data) => {
|
||||||
|
@ -9,7 +9,7 @@ describe('Proxy Hosts endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create a http host', function() {
|
it('Should be able to create a http host', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/proxy-hosts',
|
path: '/api/nginx/proxy-hosts',
|
||||||
|
@ -9,7 +9,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Get all settings', function() {
|
it('Get all settings', () => {
|
||||||
cy.task('backendApiGet', {
|
cy.task('backendApiGet', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings',
|
path: '/api/settings',
|
||||||
@ -19,7 +19,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Get default-site setting', function() {
|
it('Get default-site setting', () => {
|
||||||
cy.task('backendApiGet', {
|
cy.task('backendApiGet', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings/default-site',
|
path: '/api/settings/default-site',
|
||||||
@ -30,7 +30,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Default Site congratulations', function() {
|
it('Default Site congratulations', () => {
|
||||||
cy.task('backendApiPut', {
|
cy.task('backendApiPut', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings/default-site',
|
path: '/api/settings/default-site',
|
||||||
@ -46,7 +46,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Default Site 404', function() {
|
it('Default Site 404', () => {
|
||||||
cy.task('backendApiPut', {
|
cy.task('backendApiPut', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings/default-site',
|
path: '/api/settings/default-site',
|
||||||
@ -62,7 +62,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Default Site 444', function() {
|
it('Default Site 444', () => {
|
||||||
cy.task('backendApiPut', {
|
cy.task('backendApiPut', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings/default-site',
|
path: '/api/settings/default-site',
|
||||||
@ -78,7 +78,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Default Site redirect', function() {
|
it('Default Site redirect', () => {
|
||||||
cy.task('backendApiPut', {
|
cy.task('backendApiPut', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings/default-site',
|
path: '/api/settings/default-site',
|
||||||
@ -100,7 +100,7 @@ describe('Settings endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Default Site html', function() {
|
it('Default Site html', () => {
|
||||||
cy.task('backendApiPut', {
|
cy.task('backendApiPut', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/settings/default-site',
|
path: '/api/settings/default-site',
|
||||||
|
@ -33,7 +33,7 @@ describe('Streams', () => {
|
|||||||
cy.exec('rm -f /test/results/testssl.json');
|
cy.exec('rm -f /test/results/testssl.json');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create TCP Stream', function() {
|
it('Should be able to create TCP Stream', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/streams',
|
path: '/api/nginx/streams',
|
||||||
@ -65,7 +65,7 @@ describe('Streams', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create UDP Stream', function() {
|
it('Should be able to create UDP Stream', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/streams',
|
path: '/api/nginx/streams',
|
||||||
@ -92,7 +92,7 @@ describe('Streams', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create TCP/UDP Stream', function() {
|
it('Should be able to create TCP/UDP Stream', () => {
|
||||||
cy.task('backendApiPost', {
|
cy.task('backendApiPost', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/nginx/streams',
|
path: '/api/nginx/streams',
|
||||||
@ -124,7 +124,7 @@ describe('Streams', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to create SSL TCP Stream', function() {
|
it('Should be able to create SSL TCP Stream', () => {
|
||||||
let certID = 0;
|
let certID = 0;
|
||||||
|
|
||||||
// Create custom cert
|
// Create custom cert
|
||||||
@ -184,7 +184,7 @@ describe('Streams', () => {
|
|||||||
cy.exec('/testssl/testssl.sh --quiet --add-ca="$(/bin/mkcert -CAROOT)/rootCA.pem" --jsonfile=/test/results/testssl.json website1.example.com:1503', {
|
cy.exec('/testssl/testssl.sh --quiet --add-ca="$(/bin/mkcert -CAROOT)/rootCA.pem" --jsonfile=/test/results/testssl.json website1.example.com:1503', {
|
||||||
timeout: 120000, // 2 minutes
|
timeout: 120000, // 2 minutes
|
||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
cy.task('log', '[testssl.sh] ' + result.stdout);
|
cy.task('log', `[testssl.sh] ${result.stdout}`);
|
||||||
|
|
||||||
const allowedSeverities = ["INFO", "OK", "LOW", "MEDIUM"];
|
const allowedSeverities = ["INFO", "OK", "LOW", "MEDIUM"];
|
||||||
const ignoredIDs = [
|
const ignoredIDs = [
|
||||||
@ -210,4 +210,16 @@ describe('Streams', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Should be able to List Streams', () => {
|
||||||
|
cy.task('backendApiGet', {
|
||||||
|
token: token,
|
||||||
|
path: '/api/nginx/streams?expand=owner,certificate',
|
||||||
|
}).then((data) => {
|
||||||
|
cy.validateSwaggerSchema('get', 200, '/nginx/streams', data);
|
||||||
|
expect(data.length).to.be.greaterThan(0);
|
||||||
|
expect(data[0]).to.have.property('id');
|
||||||
|
expect(data[0]).to.have.property('enabled');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,7 @@ describe('Users endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to get yourself', function() {
|
it('Should be able to get yourself', () => {
|
||||||
cy.task('backendApiGet', {
|
cy.task('backendApiGet', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/users/me'
|
path: '/api/users/me'
|
||||||
@ -20,7 +20,7 @@ describe('Users endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to get all users', function() {
|
it('Should be able to get all users', () => {
|
||||||
cy.task('backendApiGet', {
|
cy.task('backendApiGet', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/users'
|
path: '/api/users'
|
||||||
@ -30,7 +30,7 @@ describe('Users endpoints', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to update yourself', function() {
|
it('Should be able to update yourself', () => {
|
||||||
cy.task('backendApiPut', {
|
cy.task('backendApiPut', {
|
||||||
token: token,
|
token: token,
|
||||||
path: '/api/users/me',
|
path: '/api/users/me',
|
||||||
|
943
test/yarn.lock
943
test/yarn.lock
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user