Skip to content

Commit 74db000

Browse files
authoredMar 17, 2021
Merge pull request NginxProxyManager#883 from baruffaldi/master
Forward scheme and http code added for redirection hosts
2 parents 6e67352 + 49fbf03 commit 74db000

File tree

11 files changed

+159
-4
lines changed

11 files changed

+159
-4
lines changed
 

‎.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.8.0
1+
2.8.1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const migrate_name = 'redirection_scheme';
2+
const logger = require('../logger').migrate;
3+
4+
/**
5+
* Migrate
6+
*
7+
* @see http://knexjs.org/#Schema
8+
*
9+
* @param {Object} knex
10+
* @param {Promise} Promise
11+
* @returns {Promise}
12+
*/
13+
exports.up = function (knex/*, Promise*/) {
14+
15+
logger.info('[' + migrate_name + '] Migrating Up...');
16+
17+
return knex.schema.table('redirection_host', (table) => {
18+
table.string('forward_scheme').notNull().defaultTo('$scheme');
19+
})
20+
.then(function () {
21+
logger.info('[' + migrate_name + '] redirection_host Table altered');
22+
});
23+
};
24+
25+
/**
26+
* Undo Migrate
27+
*
28+
* @param {Object} knex
29+
* @param {Promise} Promise
30+
* @returns {Promise}
31+
*/
32+
exports.down = function (knex/*, Promise*/) {
33+
logger.info('[' + migrate_name + '] Migrating Down...');
34+
35+
return knex.schema.table('redirection_host', (table) => {
36+
table.dropColumn('forward_scheme');
37+
})
38+
.then(function () {
39+
logger.info('[' + migrate_name + '] redirection_host Table altered');
40+
});
41+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
const migrate_name = 'redirection_status_code';
2+
const logger = require('../logger').migrate;
3+
4+
/**
5+
* Migrate
6+
*
7+
* @see http://knexjs.org/#Schema
8+
*
9+
* @param {Object} knex
10+
* @param {Promise} Promise
11+
* @returns {Promise}
12+
*/
13+
exports.up = function (knex/*, Promise*/) {
14+
15+
logger.info('[' + migrate_name + '] Migrating Up...');
16+
17+
return knex.schema.table('redirection_host', (table) => {
18+
table.integer('forward_http_code').notNull().unsigned().defaultTo(302);
19+
})
20+
.then(function () {
21+
logger.info('[' + migrate_name + '] redirection_host Table altered');
22+
});
23+
};
24+
25+
/**
26+
* Undo Migrate
27+
*
28+
* @param {Object} knex
29+
* @param {Promise} Promise
30+
* @returns {Promise}
31+
*/
32+
exports.down = function (knex/*, Promise*/) {
33+
logger.info('[' + migrate_name + '] Migrating Down...');
34+
35+
return knex.schema.table('redirection_host', (table) => {
36+
table.dropColumn('forward_http_code');
37+
})
38+
.then(function () {
39+
logger.info('[' + migrate_name + '] redirection_host Table altered');
40+
});
41+
};

‎backend/schema/definitions.json

+12
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,18 @@
179179
"pattern": "^(?:\\*\\.)?(?:[^.*]+\\.?)+[^.]$"
180180
}
181181
},
182+
"http_code": {
183+
"description": "HTTP Status Code",
184+
"example": 302,
185+
"type": "integer",
186+
"minimum": 0
187+
},
188+
"scheme": {
189+
"description": "RFC Protocol",
190+
"example": "HTTPS or $scheme",
191+
"type": "string",
192+
"minLength": 4
193+
},
182194
"enabled": {
183195
"description": "Is Enabled",
184196
"example": true,

‎backend/schema/endpoints/redirection-hosts.json

+26
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
"domain_names": {
1919
"$ref": "../definitions.json#/definitions/domain_names"
2020
},
21+
"forward_http_code": {
22+
"$ref": "../definitions.json#/definitions/http_code"
23+
},
24+
"forward_scheme": {
25+
"$ref": "../definitions.json#/definitions/scheme"
26+
},
2127
"forward_domain_name": {
2228
"$ref": "../definitions.json#/definitions/domain_name"
2329
},
@@ -67,6 +73,12 @@
6773
"domain_names": {
6874
"$ref": "#/definitions/domain_names"
6975
},
76+
"forward_http_code": {
77+
"$ref": "#/definitions/forward_http_code"
78+
},
79+
"forward_scheme": {
80+
"$ref": "#/definitions/forward_scheme"
81+
},
7082
"forward_domain_name": {
7183
"$ref": "#/definitions/forward_domain_name"
7284
},
@@ -134,12 +146,20 @@
134146
"additionalProperties": false,
135147
"required": [
136148
"domain_names",
149+
"forward_scheme",
150+
"forward_http_code",
137151
"forward_domain_name"
138152
],
139153
"properties": {
140154
"domain_names": {
141155
"$ref": "#/definitions/domain_names"
142156
},
157+
"forward_http_code": {
158+
"$ref": "#/definitions/forward_http_code"
159+
},
160+
"forward_scheme": {
161+
"$ref": "#/definitions/forward_scheme"
162+
},
143163
"forward_domain_name": {
144164
"$ref": "#/definitions/forward_domain_name"
145165
},
@@ -195,6 +215,12 @@
195215
"domain_names": {
196216
"$ref": "#/definitions/domain_names"
197217
},
218+
"forward_http_code": {
219+
"$ref": "#/definitions/forward_http_code"
220+
},
221+
"forward_scheme": {
222+
"$ref": "#/definitions/forward_scheme"
223+
},
198224
"forward_domain_name": {
199225
"$ref": "#/definitions/forward_domain_name"
200226
},

‎backend/templates/redirection_host.conf

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ server {
1818
{% include "_hsts.conf" %}
1919

2020
{% if preserve_path == 1 or preserve_path == true %}
21-
return 301 $scheme://{{ forward_domain_name }}$request_uri;
21+
return {{ forward_http_code }} {{ forward_scheme }}://{{ forward_domain_name }}$request_uri;
2222
{% else %}
23-
return 301 $scheme://{{ forward_domain_name }};
23+
return {{ forward_http_code }} {{ forward_scheme }}://{{ forward_domain_name }};
2424
{% endif %}
2525
}
2626
{% endif %}

‎frontend/js/app/nginx/redirection/form.ejs

+24-1
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,35 @@
2222
<input type="text" name="domain_names" class="form-control" id="input-domains" value="<%- domain_names.join(',') %>" required>
2323
</div>
2424
</div>
25-
<div class="col-sm-12 col-md-12">
25+
<div class="col-sm-3 col-md-3">
26+
<div class="form-group">
27+
<label class="form-label"><%- i18n('redirection-hosts', 'forward-scheme') %><span class="form-required">*</span></label>
28+
<select name="forward_scheme" class="form-control custom-select" placeholder="$scheme">
29+
<option value="$scheme" <%- forward_scheme === '$scheme' ? 'selected' : '' %>>auto</option>
30+
<option value="http" <%- forward_scheme === 'http' ? 'selected' : '' %>>http</option>
31+
<option value="https" <%- forward_scheme === 'https' ? 'selected' : '' %>>https</option>
32+
</select>
33+
</div>
34+
</div>
35+
<div class="col-sm-9 col-md-9">
2636
<div class="form-group">
2737
<label class="form-label"><%- i18n('redirection-hosts', 'forward-domain') %><span class="form-required">*</span></label>
2838
<input type="text" name="forward_domain_name" class="form-control text-monospace" placeholder="" value="<%- forward_domain_name %>" required>
2939
</div>
3040
</div>
41+
<div class="col-sm-12 col-md-12">
42+
<div class="form-group">
43+
<label class="form-label"><%- i18n('redirection-hosts', 'forward-http-status-code') %><span class="form-required">*</span></label>
44+
<select name="forward_http_code" class="form-control custom-select" placeholder="301">
45+
<option value="300" <%- forward_http_code == '300' ? 'selected' : '' %>>300 Multiple choices</option>
46+
<option value="301" <%- forward_http_code == '301' ? 'selected' : '' %>>301 Moved permanently</option>
47+
<option value="302" <%- forward_http_code == '302' ? 'selected' : '' %>>302 Found</option>
48+
<option value="303" <%- forward_http_code == '303' ? 'selected' : '' %>>303 See other</option>
49+
<option value="307" <%- forward_http_code == '307' ? 'selected' : '' %>>307 Temporary redirect</option>
50+
<option value="308" <%- forward_http_code == '308' ? 'selected' : '' %>>308 Permanent redirect</option>
51+
</select>
52+
</div>
53+
</div>
3154
<div class="col-sm-6 col-md-6">
3255
<div class="form-group">
3356
<label class="custom-switch">

‎frontend/js/app/nginx/redirection/list/item.ejs

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
<%- i18n('str', 'created-on', {date: formatDbDate(created_on, 'Do MMMM YYYY')}) %>
2323
</div>
2424
</td>
25+
<td>
26+
<div class="text-monospace"><%- forward_http_code %></div>
27+
</td>
28+
<td>
29+
<div class="text-monospace"><%- forward_scheme == '$scheme' ? 'auto' : forward_scheme %></div>
30+
</td>
2531
<td>
2632
<div class="text-monospace"><%- forward_domain_name %></div>
2733
</td>

‎frontend/js/app/nginx/redirection/list/main.ejs

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<thead>
22
<th width="30">&nbsp;</th>
33
<th><%- i18n('str', 'source') %></th>
4+
<th><%- i18n('redirection-hosts', 'forward-http-status-code') %></th>
5+
<th><%- i18n('redirection-hosts', 'forward-scheme') %></th>
46
<th><%- i18n('str', 'destination') %></th>
57
<th><%- i18n('str', 'ssl') %></th>
68
<th><%- i18n('str', 'status') %></th>

‎frontend/js/i18n/messages.json

+2
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@
137137
"empty": "There are no Redirection Hosts",
138138
"add": "Add Redirection Host",
139139
"form-title": "{id, select, undefined{New} other{Edit}} Redirection Host",
140+
"forward-scheme": "Scheme",
141+
"forward-http-status-code": "HTTP Code",
140142
"forward-domain": "Forward Domain",
141143
"preserve-path": "Preserve Path",
142144
"delete": "Delete Proxy Host",

‎frontend/js/models/redirection-host.js

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ const model = Backbone.Model.extend({
99
created_on: null,
1010
modified_on: null,
1111
domain_names: [],
12+
forward_http_code: 0,
13+
forward_scheme: null,
1214
forward_domain_name: '',
1315
preserve_path: true,
1416
certificate_id: 0,

0 commit comments

Comments
 (0)
Please sign in to comment.