Skip to content

Commit

Permalink
Merge pull request #29 from jc21/develop
Browse files Browse the repository at this point in the history
Http2 support
  • Loading branch information
jc21 authored Nov 26, 2018
2 parents 9fd480c + e53d9fa commit e923db7
Show file tree
Hide file tree
Showing 21 changed files with 194 additions and 29 deletions.
33 changes: 32 additions & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,38 @@ pipeline {
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 {
stage('x86_64') {
when {
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# 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)
![Pulls](https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge)

Expand Down
17 changes: 0 additions & 17 deletions TODO.md

This file was deleted.

2 changes: 1 addition & 1 deletion doc/DOCKERHUB.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# 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)
![Pulls](https://img.shields.io/docker/pulls/jc21/nginx-proxy-manager.svg?style=for-the-badge)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "nginx-proxy-manager",
"version": "2.0.5",
"version": "2.0.6",
"description": "A beautiful interface for creating Nginx endpoints",
"main": "src/backend/index.js",
"devDependencies": {
Expand Down
51 changes: 51 additions & 0 deletions src/backend/migrations/20181113041458_http2_support.js
Original file line number Diff line number Diff line change
@@ -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);
};

5 changes: 5 additions & 0 deletions src/backend/schema/definitions.json
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,11 @@
"type": "string",
"pattern": "^(letsencrypt|other)$"
},
"http2_support": {
"description": "HTTP2 Protocol Support",
"example": false,
"type": "boolean"
},
"block_exploits": {
"description": "Should we block common exploits",
"example": true,
Expand Down
12 changes: 12 additions & 0 deletions src/backend/schema/endpoints/dead-hosts.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
"ssl_forced": {
"$ref": "../definitions.json#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "../definitions.json#/definitions/http2_support"
},
"advanced_config": {
"type": "string"
},
Expand All @@ -50,6 +53,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"advanced_config": {
"$ref": "#/definitions/advanced_config"
},
Expand Down Expand Up @@ -101,6 +107,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"advanced_config": {
"$ref": "#/definitions/advanced_config"
},
Expand Down Expand Up @@ -138,6 +147,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"advanced_config": {
"$ref": "#/definitions/advanced_config"
},
Expand Down
12 changes: 12 additions & 0 deletions src/backend/schema/endpoints/proxy-hosts.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
"ssl_forced": {
"$ref": "../definitions.json#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "../definitions.json#/definitions/http2_support"
},
"block_exploits": {
"$ref": "../definitions.json#/definitions/block_exploits"
},
Expand Down Expand Up @@ -80,6 +83,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"block_exploits": {
"$ref": "#/definitions/block_exploits"
},
Expand Down Expand Up @@ -151,6 +157,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"block_exploits": {
"$ref": "#/definitions/block_exploits"
},
Expand Down Expand Up @@ -206,6 +215,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"block_exploits": {
"$ref": "#/definitions/block_exploits"
},
Expand Down
12 changes: 12 additions & 0 deletions src/backend/schema/endpoints/redirection-hosts.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
"ssl_forced": {
"$ref": "../definitions.json#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "../definitions.json#/definitions/http2_support"
},
"block_exploits": {
"$ref": "../definitions.json#/definitions/block_exploits"
},
Expand Down Expand Up @@ -67,6 +70,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"block_exploits": {
"$ref": "#/definitions/block_exploits"
},
Expand Down Expand Up @@ -128,6 +134,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"block_exploits": {
"$ref": "#/definitions/block_exploits"
},
Expand Down Expand Up @@ -174,6 +183,9 @@
"ssl_forced": {
"$ref": "#/definitions/ssl_forced"
},
"http2_support": {
"$ref": "#/definitions/http2_support"
},
"block_exploits": {
"$ref": "#/definitions/block_exploits"
},
Expand Down
4 changes: 2 additions & 2 deletions src/backend/templates/_listen.conf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
listen 80;
{% if certificate -%}
listen 443 ssl;
listen 443 ssl{% if http2_support %} http2{% endif %};
{% endif %}
server_name {{ domain_names | join: " " }};
server_name {{ domain_names | join: " " }};
11 changes: 10 additions & 1 deletion src/frontend/js/app/nginx/dead/form.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
</select>
</div>
</div>
<div class="col-sm-12 col-md-12">
<div class="col-sm-6 col-md-6">
<div class="form-group">
<label class="custom-switch">
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
Expand All @@ -45,6 +45,15 @@
</label>
</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 -->
<div class="col-sm-12 col-md-12 letsencrypt">
Expand Down
11 changes: 10 additions & 1 deletion src/frontend/js/app/nginx/dead/form.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ module.exports = Mn.View.extend({
save: 'button.save',
certificate_select: 'select[name="certificate_id"]',
ssl_forced: 'input[name="ssl_forced"]',
http2_support: 'input[name="http2_support"]',
letsencrypt: '.letsencrypt'
},

Expand All @@ -35,7 +36,11 @@ module.exports = Mn.View.extend({
}

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) {
Expand All @@ -54,6 +59,10 @@ module.exports = Mn.View.extend({
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) {
data.domain_names = data.domain_names.split(',');
}
Expand Down
11 changes: 10 additions & 1 deletion src/frontend/js/app/nginx/proxy/form.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
</select>
</div>
</div>
<div class="col-sm-12 col-md-12">
<div class="col-sm-6 col-md-6">
<div class="form-group">
<label class="custom-switch">
<input type="checkbox" class="custom-switch-input" name="ssl_forced" value="1"<%- ssl_forced ? ' checked' : '' %><%- certificate_id ? '' : ' disabled' %>>
Expand All @@ -91,6 +91,15 @@
</label>
</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 -->
<div class="col-sm-12 col-md-12 letsencrypt">
Expand Down
12 changes: 11 additions & 1 deletion src/frontend/js/app/nginx/proxy/form.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ module.exports = Mn.View.extend({
certificate_select: 'select[name="certificate_id"]',
access_list_select: 'select[name="access_list_id"]',
ssl_forced: 'input[name="ssl_forced"]',
http2_support: 'input[name="http2_support"]',
letsencrypt: '.letsencrypt'
},

Expand All @@ -38,7 +39,12 @@ module.exports = Mn.View.extend({
}

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) {
Expand All @@ -62,6 +68,10 @@ module.exports = Mn.View.extend({
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) {
data.domain_names = data.domain_names.split(',');
}
Expand Down
Loading

0 comments on commit e923db7

Please sign in to comment.