mirror of
https://github.com/jc21/nginx-proxy-manager.git
synced 2024-08-30 18:22:48 +00:00
commit
e923db7e94
33
Jenkinsfile
vendored
33
Jenkinsfile
vendored
@ -18,7 +18,38 @@ pipeline {
|
|||||||
sh 'docker pull $DOCKER_CI_TOOLS'
|
sh 'docker pull $DOCKER_CI_TOOLS'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Build') {
|
stage('Build Develop') {
|
||||||
|
when {
|
||||||
|
branch 'develop'
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
ansiColor('xterm') {
|
||||||
|
// Codebase
|
||||||
|
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME yarn install'
|
||||||
|
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME npm run-script build'
|
||||||
|
sh 'rm -rf node_modules'
|
||||||
|
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME yarn install --prod'
|
||||||
|
sh 'docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS node-prune'
|
||||||
|
|
||||||
|
// Docker Build
|
||||||
|
sh 'docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_NAME .'
|
||||||
|
|
||||||
|
// Private Registry
|
||||||
|
sh 'docker tag $TEMP_IMAGE_NAME $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:develop'
|
||||||
|
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:develop'
|
||||||
|
|
||||||
|
// Dockerhub
|
||||||
|
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:develop'
|
||||||
|
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
|
||||||
|
sh "docker login -u '${duser}' -p '$dpass'"
|
||||||
|
sh 'docker push docker.io/jc21/$IMAGE_NAME:develop'
|
||||||
|
}
|
||||||
|
|
||||||
|
sh 'docker rmi $TEMP_IMAGE_NAME'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Build Master') {
|
||||||
parallel {
|
parallel {
|
||||||
stage('x86_64') {
|
stage('x86_64') {
|
||||||
when {
|
when {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Nginx Proxy Manager
|
# Nginx Proxy Manager
|
||||||
|
|
||||||
![Version](https://img.shields.io/badge/version-2.0.5-green.svg?style=for-the-badge)
|
![Version](https://img.shields.io/badge/version-2.0.6-green.svg?style=for-the-badge)
|
||||||
![Stars](https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
![Stars](https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
||||||
![Pulls](https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
![Pulls](https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
||||||
|
|
||||||
|
17
TODO.md
17
TODO.md
@ -1,17 +0,0 @@
|
|||||||
# TODO
|
|
||||||
|
|
||||||
- Dashboard stats are caching instead of querying
|
|
||||||
|
|
||||||
Next version:
|
|
||||||
|
|
||||||
- UI Log tail
|
|
||||||
- Enable/Disable a config
|
|
||||||
|
|
||||||
Testing:
|
|
||||||
|
|
||||||
- Access Levels
|
|
||||||
- Adding a proxy host without access to read certs or access lists
|
|
||||||
- Visibility
|
|
||||||
- Forwarding
|
|
||||||
- Cert renewals
|
|
||||||
- Custom certs
|
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Nginx Proxy Manager
|
# Nginx Proxy Manager
|
||||||
|
|
||||||
![Version](https://img.shields.io/badge/version-2.0.5-green.svg?style=for-the-badge)
|
![Version](https://img.shields.io/badge/version-2.0.6-green.svg?style=for-the-badge)
|
||||||
![Stars](https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
![Stars](https://img.shields.io/docker/stars/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
||||||
![Pulls](https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
![Pulls](https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nginx-proxy-manager",
|
"name": "nginx-proxy-manager",
|
||||||
"version": "2.0.5",
|
"version": "2.0.6",
|
||||||
"description": "A beautiful interface for creating Nginx endpoints",
|
"description": "A beautiful interface for creating Nginx endpoints",
|
||||||
"main": "src/backend/index.js",
|
"main": "src/backend/index.js",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
51
src/backend/migrations/20181113041458_http2_support.js
Normal file
51
src/backend/migrations/20181113041458_http2_support.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const migrate_name = 'http2_support';
|
||||||
|
const logger = require('../logger').migrate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Migrate
|
||||||
|
*
|
||||||
|
* @see http://knexjs.org/#Schema
|
||||||
|
*
|
||||||
|
* @param {Object} knex
|
||||||
|
* @param {Promise} Promise
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
exports.up = function (knex/*, Promise*/) {
|
||||||
|
logger.info('[' + migrate_name + '] Migrating Up...');
|
||||||
|
|
||||||
|
return knex.schema.table('proxy_host', function (proxy_host) {
|
||||||
|
proxy_host.integer('http2_support').notNull().unsigned().defaultTo(0);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
logger.info('[' + migrate_name + '] proxy_host Table altered');
|
||||||
|
|
||||||
|
return knex.schema.table('redirection_host', function (redirection_host) {
|
||||||
|
redirection_host.integer('http2_support').notNull().unsigned().defaultTo(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
logger.info('[' + migrate_name + '] redirection_host Table altered');
|
||||||
|
|
||||||
|
return knex.schema.table('dead_host', function (dead_host) {
|
||||||
|
dead_host.integer('http2_support').notNull().unsigned().defaultTo(0);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
logger.info('[' + migrate_name + '] dead_host Table altered');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undo Migrate
|
||||||
|
*
|
||||||
|
* @param {Object} knex
|
||||||
|
* @param {Promise} Promise
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
exports.down = function (knex, Promise) {
|
||||||
|
logger.warn('[' + migrate_name + '] You can\'t migrate down this one.');
|
||||||
|
return Promise.resolve(true);
|
||||||
|
};
|
||||||
|
|
@ -186,6 +186,11 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"pattern": "^(letsencrypt|other)$"
|
"pattern": "^(letsencrypt|other)$"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"description": "HTTP2 Protocol Support",
|
||||||
|
"example": false,
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"description": "Should we block common exploits",
|
"description": "Should we block common exploits",
|
||||||
"example": true,
|
"example": true,
|
||||||
|
@ -24,6 +24,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "../definitions.json#/definitions/ssl_forced"
|
"$ref": "../definitions.json#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "../definitions.json#/definitions/http2_support"
|
||||||
|
},
|
||||||
"advanced_config": {
|
"advanced_config": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
@ -50,6 +53,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"advanced_config": {
|
"advanced_config": {
|
||||||
"$ref": "#/definitions/advanced_config"
|
"$ref": "#/definitions/advanced_config"
|
||||||
},
|
},
|
||||||
@ -101,6 +107,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"advanced_config": {
|
"advanced_config": {
|
||||||
"$ref": "#/definitions/advanced_config"
|
"$ref": "#/definitions/advanced_config"
|
||||||
},
|
},
|
||||||
@ -138,6 +147,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"advanced_config": {
|
"advanced_config": {
|
||||||
"$ref": "#/definitions/advanced_config"
|
"$ref": "#/definitions/advanced_config"
|
||||||
},
|
},
|
||||||
|
@ -34,6 +34,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "../definitions.json#/definitions/ssl_forced"
|
"$ref": "../definitions.json#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "../definitions.json#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "../definitions.json#/definitions/block_exploits"
|
"$ref": "../definitions.json#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
@ -80,6 +83,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "#/definitions/block_exploits"
|
"$ref": "#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
@ -151,6 +157,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "#/definitions/block_exploits"
|
"$ref": "#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
@ -206,6 +215,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "#/definitions/block_exploits"
|
"$ref": "#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
|
@ -32,6 +32,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "../definitions.json#/definitions/ssl_forced"
|
"$ref": "../definitions.json#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "../definitions.json#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "../definitions.json#/definitions/block_exploits"
|
"$ref": "../definitions.json#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
@ -67,6 +70,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "#/definitions/block_exploits"
|
"$ref": "#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
@ -128,6 +134,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "#/definitions/block_exploits"
|
"$ref": "#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
@ -174,6 +183,9 @@
|
|||||||
"ssl_forced": {
|
"ssl_forced": {
|
||||||
"$ref": "#/definitions/ssl_forced"
|
"$ref": "#/definitions/ssl_forced"
|
||||||
},
|
},
|
||||||
|
"http2_support": {
|
||||||
|
"$ref": "#/definitions/http2_support"
|
||||||
|
},
|
||||||
"block_exploits": {
|
"block_exploits": {
|
||||||
"$ref": "#/definitions/block_exploits"
|
"$ref": "#/definitions/block_exploits"
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
listen 80;
|
listen 80;
|
||||||
{% if certificate -%}
|
{% if certificate -%}
|
||||||
listen 443 ssl;
|
listen 443 ssl{% if http2_support %} http2{% endif %};
|
||||||
{% endif %}
|
{% endif %}
|
||||||
server_name {{ domain_names | join: " " }};
|
server_name {{ domain_names | join: " " }};
|
@ -36,7 +36,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-6 col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="custom-switch">
|
<label class="custom-switch">
|
||||||
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
||||||
@ -45,6 +45,15 @@
|
|||||||
</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="http2_support" value="1"<%- http2_support ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
||||||
|
<span class="custom-switch-indicator"></span>
|
||||||
|
<span class="custom-switch-description"><%- i18n('all-hosts', 'http2-support') %></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Lets encrypt -->
|
<!-- Lets encrypt -->
|
||||||
<div class="col-sm-12 col-md-12 letsencrypt">
|
<div class="col-sm-12 col-md-12 letsencrypt">
|
||||||
|
@ -22,6 +22,7 @@ module.exports = Mn.View.extend({
|
|||||||
save: 'button.save',
|
save: 'button.save',
|
||||||
certificate_select: 'select[name="certificate_id"]',
|
certificate_select: 'select[name="certificate_id"]',
|
||||||
ssl_forced: 'input[name="ssl_forced"]',
|
ssl_forced: 'input[name="ssl_forced"]',
|
||||||
|
http2_support: 'input[name="http2_support"]',
|
||||||
letsencrypt: '.letsencrypt'
|
letsencrypt: '.letsencrypt'
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -35,7 +36,11 @@ module.exports = Mn.View.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
let enabled = id === 'new' || parseInt(id, 10) > 0;
|
let enabled = id === 'new' || parseInt(id, 10) > 0;
|
||||||
this.ui.ssl_forced.prop('disabled', !enabled).parents('.form-group').css('opacity', enabled ? 1 : 0.5);
|
this.ui.ssl_forced.add(this.ui.http2_support)
|
||||||
|
.prop('disabled', !enabled)
|
||||||
|
.parents('.form-group')
|
||||||
|
.css('opacity', enabled ? 1 : 0.5);
|
||||||
|
this.ui.http2_support.prop('disabled', !enabled);
|
||||||
},
|
},
|
||||||
|
|
||||||
'click @ui.save': function (e) {
|
'click @ui.save': function (e) {
|
||||||
@ -54,6 +59,10 @@ module.exports = Mn.View.extend({
|
|||||||
data.ssl_forced = true;
|
data.ssl_forced = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof data.http2_support !== 'undefined') {
|
||||||
|
data.http2_support = !!data.http2_support;
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof data.domain_names === 'string' && data.domain_names) {
|
if (typeof data.domain_names === 'string' && data.domain_names) {
|
||||||
data.domain_names = data.domain_names.split(',');
|
data.domain_names = data.domain_names.split(',');
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-6 col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="custom-switch">
|
<label class="custom-switch">
|
||||||
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
||||||
@ -91,6 +91,15 @@
|
|||||||
</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="http2_support" value="1"<%- http2_support ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
||||||
|
<span class="custom-switch-indicator"></span>
|
||||||
|
<span class="custom-switch-description"><%- i18n('all-hosts', 'http2-support') %></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Lets encrypt -->
|
<!-- Lets encrypt -->
|
||||||
<div class="col-sm-12 col-md-12 letsencrypt">
|
<div class="col-sm-12 col-md-12 letsencrypt">
|
||||||
|
@ -25,6 +25,7 @@ module.exports = Mn.View.extend({
|
|||||||
certificate_select: 'select[name="certificate_id"]',
|
certificate_select: 'select[name="certificate_id"]',
|
||||||
access_list_select: 'select[name="access_list_id"]',
|
access_list_select: 'select[name="access_list_id"]',
|
||||||
ssl_forced: 'input[name="ssl_forced"]',
|
ssl_forced: 'input[name="ssl_forced"]',
|
||||||
|
http2_support: 'input[name="http2_support"]',
|
||||||
letsencrypt: '.letsencrypt'
|
letsencrypt: '.letsencrypt'
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -38,7 +39,12 @@ module.exports = Mn.View.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
let enabled = id === 'new' || parseInt(id, 10) > 0;
|
let enabled = id === 'new' || parseInt(id, 10) > 0;
|
||||||
this.ui.ssl_forced.prop('disabled', !enabled).parents('.form-group').css('opacity', enabled ? 1 : 0.5);
|
this.ui.ssl_forced.add(this.ui.http2_support)
|
||||||
|
.prop('disabled', !enabled)
|
||||||
|
.parents('.form-group')
|
||||||
|
.css('opacity', enabled ? 1 : 0.5);
|
||||||
|
|
||||||
|
this.ui.http2_support.prop('disabled', !enabled);
|
||||||
},
|
},
|
||||||
|
|
||||||
'click @ui.save': function (e) {
|
'click @ui.save': function (e) {
|
||||||
@ -62,6 +68,10 @@ module.exports = Mn.View.extend({
|
|||||||
data.ssl_forced = true;
|
data.ssl_forced = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof data.http2_support !== 'undefined') {
|
||||||
|
data.http2_support = !!data.http2_support;
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof data.domain_names === 'string' && data.domain_names) {
|
if (typeof data.domain_names === 'string' && data.domain_names) {
|
||||||
data.domain_names = data.domain_names.split(',');
|
data.domain_names = data.domain_names.split(',');
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-6 col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="custom-switch">
|
<label class="custom-switch">
|
||||||
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
||||||
@ -69,6 +69,15 @@
|
|||||||
</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="http2_support" value="1"<%- http2_support ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
|
||||||
|
<span class="custom-switch-indicator"></span>
|
||||||
|
<span class="custom-switch-description"><%- i18n('all-hosts', 'http2-support') %></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Lets encrypt -->
|
<!-- Lets encrypt -->
|
||||||
<div class="col-sm-12 col-md-12 letsencrypt">
|
<div class="col-sm-12 col-md-12 letsencrypt">
|
||||||
|
@ -22,6 +22,7 @@ module.exports = Mn.View.extend({
|
|||||||
save: 'button.save',
|
save: 'button.save',
|
||||||
certificate_select: 'select[name="certificate_id"]',
|
certificate_select: 'select[name="certificate_id"]',
|
||||||
ssl_forced: 'input[name="ssl_forced"]',
|
ssl_forced: 'input[name="ssl_forced"]',
|
||||||
|
http2_support: 'input[name="http2_support"]',
|
||||||
letsencrypt: '.letsencrypt'
|
letsencrypt: '.letsencrypt'
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -35,7 +36,11 @@ module.exports = Mn.View.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
let enabled = id === 'new' || parseInt(id, 10) > 0;
|
let enabled = id === 'new' || parseInt(id, 10) > 0;
|
||||||
this.ui.ssl_forced.prop('disabled', !enabled).parents('.form-group').css('opacity', enabled ? 1 : 0.5);
|
this.ui.ssl_forced.add(this.ui.http2_support)
|
||||||
|
.prop('disabled', !enabled)
|
||||||
|
.parents('.form-group')
|
||||||
|
.css('opacity', enabled ? 1 : 0.5);
|
||||||
|
this.ui.http2_support.prop('disabled', !enabled);
|
||||||
},
|
},
|
||||||
|
|
||||||
'click @ui.save': function (e) {
|
'click @ui.save': function (e) {
|
||||||
@ -57,6 +62,10 @@ module.exports = Mn.View.extend({
|
|||||||
data.ssl_forced = true;
|
data.ssl_forced = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof data.http2_support !== 'undefined') {
|
||||||
|
data.http2_support = !!data.http2_support;
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof data.domain_names === 'string' && data.domain_names) {
|
if (typeof data.domain_names === 'string' && data.domain_names) {
|
||||||
data.domain_names = data.domain_names.split(',');
|
data.domain_names = data.domain_names.split(',');
|
||||||
}
|
}
|
||||||
|
@ -65,6 +65,7 @@
|
|||||||
"details": "Details",
|
"details": "Details",
|
||||||
"enable-ssl": "Enable SSL",
|
"enable-ssl": "Enable SSL",
|
||||||
"force-ssl": "Force SSL",
|
"force-ssl": "Force SSL",
|
||||||
|
"http2-support": "HTTP/2 Support",
|
||||||
"domain-names": "Domain Names",
|
"domain-names": "Domain Names",
|
||||||
"cert-provider": "Certificate Provider",
|
"cert-provider": "Certificate Provider",
|
||||||
"block-exploits": "Block Common Exploits",
|
"block-exploits": "Block Common Exploits",
|
||||||
|
@ -13,6 +13,7 @@ const model = Backbone.Model.extend({
|
|||||||
domain_names: [],
|
domain_names: [],
|
||||||
certificate_id: 0,
|
certificate_id: 0,
|
||||||
ssl_forced: false,
|
ssl_forced: false,
|
||||||
|
http2_support: false,
|
||||||
meta: {},
|
meta: {},
|
||||||
advanced_config: '',
|
advanced_config: '',
|
||||||
// The following are expansions:
|
// The following are expansions:
|
||||||
|
@ -19,6 +19,7 @@ const model = Backbone.Model.extend({
|
|||||||
caching_enabled: false,
|
caching_enabled: false,
|
||||||
allow_websocket_upgrade: false,
|
allow_websocket_upgrade: false,
|
||||||
block_exploits: false,
|
block_exploits: false,
|
||||||
|
http2_support: false,
|
||||||
advanced_config: '',
|
advanced_config: '',
|
||||||
meta: {},
|
meta: {},
|
||||||
// The following are expansions:
|
// The following are expansions:
|
||||||
|
@ -16,6 +16,7 @@ const model = Backbone.Model.extend({
|
|||||||
certificate_id: 0,
|
certificate_id: 0,
|
||||||
ssl_forced: false,
|
ssl_forced: false,
|
||||||
block_exploits: false,
|
block_exploits: false,
|
||||||
|
http2_support: false,
|
||||||
advanced_config: '',
|
advanced_config: '',
|
||||||
meta: {},
|
meta: {},
|
||||||
// The following are expansions:
|
// The following are expansions:
|
||||||
|
Loading…
Reference in New Issue
Block a user