mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-10-05 12:20:10 +00:00
Compare commits
9 Commits
v2.12.2
...
3339770a84
Author | SHA1 | Date | |
---|---|---|---|
|
3339770a84 | ||
|
3f3aacd7ec | ||
|
e6f61e297f | ||
|
9687e9e450 | ||
|
5a234bb88c | ||
|
4de4b65036 | ||
|
f1c97c7c36 | ||
|
73110d5e1e | ||
|
356b98bf7e |
6
Jenkinsfile
vendored
6
Jenkinsfile
vendored
@@ -128,7 +128,7 @@ pipeline {
|
|||||||
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
||||||
}
|
}
|
||||||
unstable {
|
unstable {
|
||||||
dir(path: 'testing/results') {
|
dir(path: 'test/results') {
|
||||||
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,7 +161,7 @@ pipeline {
|
|||||||
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
||||||
}
|
}
|
||||||
unstable {
|
unstable {
|
||||||
dir(path: 'testing/results') {
|
dir(path: 'test/results') {
|
||||||
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -199,7 +199,7 @@ pipeline {
|
|||||||
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
sh 'docker-compose down --remove-orphans --volumes -t 30 || true'
|
||||||
}
|
}
|
||||||
unstable {
|
unstable {
|
||||||
dir(path: 'testing/results') {
|
dir(path: 'test/results') {
|
||||||
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
archiveArtifacts(allowEmptyArchive: true, artifacts: '**/*', excludes: '**/*.xml')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -258,6 +258,7 @@ const internalAccessList = {
|
|||||||
})
|
})
|
||||||
.where('access_list.is_deleted', 0)
|
.where('access_list.is_deleted', 0)
|
||||||
.andWhere('access_list.id', data.id)
|
.andWhere('access_list.id', data.id)
|
||||||
|
.groupBy('access_list.id')
|
||||||
.allowGraph('[owner,items,clients,proxy_hosts.[certificate,access_list.[clients,items]]]')
|
.allowGraph('[owner,items,clients,proxy_hosts.[certificate,access_list.[clients,items]]]')
|
||||||
.first();
|
.first();
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ services:
|
|||||||
- ca.internal
|
- ca.internal
|
||||||
|
|
||||||
pdns:
|
pdns:
|
||||||
image: pschiffe/pdns-mysql
|
image: pschiffe/pdns-mysql:4.8
|
||||||
volumes:
|
volumes:
|
||||||
- '/etc/localtime:/etc/localtime:ro'
|
- '/etc/localtime:/etc/localtime:ro'
|
||||||
environment:
|
environment:
|
||||||
|
@@ -132,7 +132,7 @@ services:
|
|||||||
- 8128:3128
|
- 8128:3128
|
||||||
|
|
||||||
pdns:
|
pdns:
|
||||||
image: pschiffe/pdns-mysql
|
image: pschiffe/pdns-mysql:4.8
|
||||||
container_name: npm2dev.pdns
|
container_name: npm2dev.pdns
|
||||||
volumes:
|
volumes:
|
||||||
- '/etc/localtime:/etc/localtime:ro'
|
- '/etc/localtime:/etc/localtime:ro'
|
||||||
@@ -218,7 +218,7 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- ci.env
|
- ci.env
|
||||||
ports:
|
ports:
|
||||||
- 9000:9000
|
- 9000:9000
|
||||||
depends_on:
|
depends_on:
|
||||||
- authentik-redis
|
- authentik-redis
|
||||||
- db-postgres
|
- db-postgres
|
||||||
|
@@ -6,6 +6,10 @@ if (subtitle) { %>
|
|||||||
<p class="h4 text-muted font-weight-normal mb-7"><%- subtitle %></p>
|
<p class="h4 text-muted font-weight-normal mb-7"><%- subtitle %></p>
|
||||||
<% }
|
<% }
|
||||||
|
|
||||||
if (link) { %>
|
if (links && links.length) { %>
|
||||||
<a class="btn btn-<%- btn_color %>" href="#"><%- link %></a>
|
<% links.forEach(function(link, index) { %>
|
||||||
|
<div style="margin-bottom: 10px;">
|
||||||
|
<a class="btn btn-<%- btn_color %>" href="#" data-index="<%- index %>"><%- link %></a>
|
||||||
|
</div>
|
||||||
|
<% }); %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
@@ -6,7 +6,9 @@ module.exports = Mn.View.extend({
|
|||||||
template: template,
|
template: template,
|
||||||
|
|
||||||
options: {
|
options: {
|
||||||
btn_color: 'teal'
|
btn_color: 'teal',
|
||||||
|
links: [], // Added to accept multiple links
|
||||||
|
actions: [] // Added to accept multiple actions
|
||||||
},
|
},
|
||||||
|
|
||||||
ui: {
|
ui: {
|
||||||
@@ -16,17 +18,19 @@ module.exports = Mn.View.extend({
|
|||||||
events: {
|
events: {
|
||||||
'click @ui.action': function (e) {
|
'click @ui.action': function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
this.getOption('action')();
|
const index = $(e.currentTarget).data('index');
|
||||||
|
this.getOption('actions')[index]();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
templateContext: function () {
|
templateContext: function () {
|
||||||
return {
|
return {
|
||||||
title: this.getOption('title'),
|
title: this.getOption('title'),
|
||||||
subtitle: this.getOption('subtitle'),
|
subtitle: this.getOption('subtitle'),
|
||||||
link: this.getOption('link'),
|
links: this.getOption('links'), // Changed to array
|
||||||
action: typeof this.getOption('action') === 'function',
|
actions: this.getOption('actions'), // Changed to array
|
||||||
btn_color: this.getOption('btn_color')
|
hasActions: this.getOption('actions').length > 0,
|
||||||
|
btn_color: this.getOption('btn_color')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -45,12 +45,14 @@ module.exports = Mn.View.extend({
|
|||||||
this.showChildView('list_region', new EmptyView({
|
this.showChildView('list_region', new EmptyView({
|
||||||
title: App.i18n('access-lists', 'empty'),
|
title: App.i18n('access-lists', 'empty'),
|
||||||
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
||||||
link: manage ? App.i18n('access-lists', 'add') : null,
|
links: manage ? [App.i18n('access-lists', 'add')] : [],
|
||||||
btn_color: 'teal',
|
btn_color: 'teal',
|
||||||
permission: 'access_lists',
|
permission: 'access_lists',
|
||||||
action: function () {
|
actions: [
|
||||||
App.Controller.showNginxAccessListForm();
|
function () {
|
||||||
}
|
App.Controller.showNginxAccessListForm();
|
||||||
|
}
|
||||||
|
]
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -45,12 +45,16 @@ module.exports = Mn.View.extend({
|
|||||||
this.showChildView('list_region', new EmptyView({
|
this.showChildView('list_region', new EmptyView({
|
||||||
title: App.i18n('certificates', 'empty'),
|
title: App.i18n('certificates', 'empty'),
|
||||||
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
||||||
link: manage ? App.i18n('certificates', 'add') : null,
|
links: manage ? [App.i18n('certificates', 'add-letsencrypt'), App.i18n('certificates', 'add-custom')] : [],
|
||||||
|
actions: [
|
||||||
|
function () {
|
||||||
|
App.Controller.showNginxCertificateForm();
|
||||||
|
},
|
||||||
|
function () {
|
||||||
|
App.Controller.showNginxCertificateForm(new CertificateModel.Model({provider: 'custom'}));
|
||||||
|
}],
|
||||||
btn_color: 'pink',
|
btn_color: 'pink',
|
||||||
permission: 'certificates',
|
permission: 'certificates'
|
||||||
action: function () {
|
|
||||||
App.Controller.showNginxCertificateForm();
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -45,12 +45,14 @@ module.exports = Mn.View.extend({
|
|||||||
this.showChildView('list_region', new EmptyView({
|
this.showChildView('list_region', new EmptyView({
|
||||||
title: App.i18n('dead-hosts', 'empty'),
|
title: App.i18n('dead-hosts', 'empty'),
|
||||||
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
||||||
link: manage ? App.i18n('dead-hosts', 'add') : null,
|
links: manage ? [App.i18n('dead-hosts', 'add')] : [],
|
||||||
btn_color: 'danger',
|
btn_color: 'danger',
|
||||||
permission: 'dead_hosts',
|
permission: 'dead_hosts',
|
||||||
action: function () {
|
actions: [
|
||||||
App.Controller.showNginxDeadForm();
|
function () {
|
||||||
}
|
App.Controller.showNginxDeadForm();
|
||||||
|
}
|
||||||
|
]
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -41,16 +41,17 @@ module.exports = Mn.View.extend({
|
|||||||
|
|
||||||
showEmpty: function() {
|
showEmpty: function() {
|
||||||
let manage = App.Cache.User.canManage('proxy_hosts');
|
let manage = App.Cache.User.canManage('proxy_hosts');
|
||||||
|
|
||||||
this.showChildView('list_region', new EmptyView({
|
this.showChildView('list_region', new EmptyView({
|
||||||
title: App.i18n('proxy-hosts', 'empty'),
|
title: App.i18n('proxy-hosts', 'empty'),
|
||||||
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
||||||
link: manage ? App.i18n('proxy-hosts', 'add') : null,
|
links: manage ? [App.i18n('proxy-hosts', 'add')] : [],
|
||||||
|
actions: [
|
||||||
|
function () {
|
||||||
|
App.Controller.showNginxProxyForm();
|
||||||
|
}
|
||||||
|
],
|
||||||
btn_color: 'success',
|
btn_color: 'success',
|
||||||
permission: 'proxy_hosts',
|
permission: 'proxy_hosts',
|
||||||
action: function () {
|
|
||||||
App.Controller.showNginxProxyForm();
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -44,12 +44,14 @@ module.exports = Mn.View.extend({
|
|||||||
this.showChildView('list_region', new EmptyView({
|
this.showChildView('list_region', new EmptyView({
|
||||||
title: App.i18n('redirection-hosts', 'empty'),
|
title: App.i18n('redirection-hosts', 'empty'),
|
||||||
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
||||||
link: manage ? App.i18n('redirection-hosts', 'add') : null,
|
links: manage ? [App.i18n('redirection-hosts', 'add')] : [],
|
||||||
btn_color: 'yellow',
|
btn_color: 'yellow',
|
||||||
permission: 'redirection_hosts',
|
permission: 'redirection_hosts',
|
||||||
action: function () {
|
actions: [
|
||||||
App.Controller.showNginxRedirectionForm();
|
function () {
|
||||||
}
|
App.Controller.showNginxRedirectionForm();
|
||||||
|
}
|
||||||
|
]
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -45,12 +45,14 @@ module.exports = Mn.View.extend({
|
|||||||
this.showChildView('list_region', new EmptyView({
|
this.showChildView('list_region', new EmptyView({
|
||||||
title: App.i18n('streams', 'empty'),
|
title: App.i18n('streams', 'empty'),
|
||||||
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
subtitle: App.i18n('all-hosts', 'empty-subtitle', {manage: manage}),
|
||||||
link: manage ? App.i18n('streams', 'add') : null,
|
links: manage ? [App.i18n('streams', 'add')] : [],
|
||||||
btn_color: 'blue',
|
btn_color: 'blue',
|
||||||
permission: 'streams',
|
permission: 'streams',
|
||||||
action: function () {
|
actions: [
|
||||||
App.Controller.showNginxStreamForm();
|
function () {
|
||||||
}
|
App.Controller.showNginxStreamForm();
|
||||||
|
}
|
||||||
|
]
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -185,6 +185,8 @@
|
|||||||
"title": "SSL Certificates",
|
"title": "SSL Certificates",
|
||||||
"empty": "There are no SSL Certificates",
|
"empty": "There are no SSL Certificates",
|
||||||
"add": "Add SSL Certificate",
|
"add": "Add SSL Certificate",
|
||||||
|
"add-letsencrypt": "Add SSL Certificate with Let's Encrypt",
|
||||||
|
"add-custom": "Add Custom SSL Certificate",
|
||||||
"form-title": "Add {provider, select, letsencrypt{Let's Encrypt} other{Custom}} Certificate",
|
"form-title": "Add {provider, select, letsencrypt{Let's Encrypt} other{Custom}} Certificate",
|
||||||
"delete": "Delete SSL Certificate",
|
"delete": "Delete SSL Certificate",
|
||||||
"delete-confirm": "Are you sure you want to delete this SSL Certificate? Any hosts using it will need to be updated later.",
|
"delete-confirm": "Are you sure you want to delete this SSL Certificate? Any hosts using it will need to be updated later.",
|
||||||
|
@@ -215,6 +215,14 @@
|
|||||||
"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"
|
||||||
},
|
},
|
||||||
|
"gcore": {
|
||||||
|
"name": "Gcore DNS",
|
||||||
|
"package_name": "certbot-dns-gcore",
|
||||||
|
"version": "~=0.1.8",
|
||||||
|
"dependencies": "",
|
||||||
|
"credentials": "dns_gcore_apitoken = 0123456789abcdef0123456789abcdef01234567",
|
||||||
|
"full_plugin_name": "dns-gcore"
|
||||||
|
},
|
||||||
"godaddy": {
|
"godaddy": {
|
||||||
"name": "GoDaddy",
|
"name": "GoDaddy",
|
||||||
"package_name": "certbot-dns-godaddy",
|
"package_name": "certbot-dns-godaddy",
|
||||||
|
Reference in New Issue
Block a user