Skip to content

Allows hostname instead of ip for streams #1036

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions backend/migrations/20210423103500_stream_domain.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
const migrate_name = 'stream_domain';
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('stream', (table) => {
table.renameColumn('forward_ip', 'forwarding_host');
})
.then(function () {
logger.info('[' + migrate_name + '] stream Table altered');
});
};

/**
* Undo Migrate
*
* @param {Object} knex
* @param {Promise} Promise
* @returns {Promise}
*/
exports.down = function (knex/*, Promise*/) {
logger.info('[' + migrate_name + '] Migrating Down...');

return knex.schema.table('stream', (table) => {
table.renameColumn('forwarding_host', 'forward_ip');
})
.then(function () {
logger.info('[' + migrate_name + '] stream Table altered');
});
};
31 changes: 21 additions & 10 deletions backend/schema/endpoints/streams.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,20 @@
"minimum": 1,
"maximum": 65535
},
"forward_ip": {
"type": "string",
"format": "ipv4"
"forwarding_host": {
"oneOf": [
{
"$ref": "../definitions.json#/definitions/domain_name"
},
{
"type": "string",
"format": "ipv4"
},
{
"type": "string",
"format": "ipv6"
}
]
},
"forwarding_port": {
"type": "integer",
Expand Down Expand Up @@ -55,8 +66,8 @@
"incoming_port": {
"$ref": "#/definitions/incoming_port"
},
"forward_ip": {
"$ref": "#/definitions/forward_ip"
"forwarding_host": {
"$ref": "#/definitions/forwarding_host"
},
"forwarding_port": {
"$ref": "#/definitions/forwarding_port"
Expand Down Expand Up @@ -107,15 +118,15 @@
"additionalProperties": false,
"required": [
"incoming_port",
"forward_ip",
"forwarding_host",
"forwarding_port"
],
"properties": {
"incoming_port": {
"$ref": "#/definitions/incoming_port"
},
"forward_ip": {
"$ref": "#/definitions/forward_ip"
"forwarding_host": {
"$ref": "#/definitions/forwarding_host"
},
"forwarding_port": {
"$ref": "#/definitions/forwarding_port"
Expand Down Expand Up @@ -154,8 +165,8 @@
"incoming_port": {
"$ref": "#/definitions/incoming_port"
},
"forward_ip": {
"$ref": "#/definitions/forward_ip"
"forwarding_host": {
"$ref": "#/definitions/forwarding_host"
},
"forwarding_port": {
"$ref": "#/definitions/forwarding_port"
Expand Down
4 changes: 2 additions & 2 deletions backend/templates/stream.conf
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ server {
#listen [::]:{{ incoming_port }};
{% endif %}

proxy_pass {{ forward_ip }}:{{ forwarding_port }};
proxy_pass {{ forwarding_host }}:{{ forwarding_port }};

# Custom
include /data/nginx/custom/server_stream[.]conf;
Expand All @@ -27,7 +27,7 @@ server {
{% else -%}
#listen [::]:{{ incoming_port }} udp;
{% endif %}
proxy_pass {{ forward_ip }}:{{ forwarding_port }};
proxy_pass {{ forwarding_host }}:{{ forwarding_port }};

# Custom
include /data/nginx/custom/server_stream[.]conf;
Expand Down
1 change: 1 addition & 0 deletions docker/rootfs/etc/services.d/frontend/run
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

if [ "$DEVELOPMENT" == "true" ]; then
cd /app/frontend || exit 1
# If yarn install fails: add --verbose --network-concurrency 1
yarn install
yarn watch
else
Expand Down
1 change: 1 addition & 0 deletions docker/rootfs/etc/services.d/manager/run
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ cd /app || echo

if [ "$DEVELOPMENT" == "true" ]; then
cd /app || exit 1
# If yarn install fails: add --verbose --network-concurrency 1
yarn install
node --max_old_space_size=250 --abort_on_uncaught_exception node_modules/nodemon/bin/nodemon.js
else
Expand Down
4 changes: 2 additions & 2 deletions frontend/js/app/nginx/stream/form.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
</div>
<div class="col-sm-8 col-md-8">
<div class="form-group">
<label class="form-label"><%- i18n('streams', 'forward-ip') %><span class="form-required">*</span></label>
<input type="text" name="forward_ip" class="form-control text-monospace" placeholder="000.000.000.000" value="<%- forward_ip %>" autocomplete="off" maxlength="15" required>
<label class="form-label"><%- i18n('streams', 'forwarding-host') %><span class="form-required">*</span></label>
<input type="text" name="forwarding_host" class="form-control text-monospace" placeholder="example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888" value="<%- forwarding_host %>" autocomplete="off" maxlength="255" required>
</div>
</div>
<div class="col-sm-4 col-md-4">
Expand Down
9 changes: 1 addition & 8 deletions frontend/js/app/nginx/stream/form.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ module.exports = Mn.View.extend({

ui: {
form: 'form',
forward_ip: 'input[name="forward_ip"]',
forwarding_host: 'input[name="forwarding_host"]',
type_error: '.forward-type-error',
buttons: '.modal-footer button',
switches: '.custom-switch-input',
Expand Down Expand Up @@ -76,13 +76,6 @@ module.exports = Mn.View.extend({
}
},

onRender: function () {
this.ui.forward_ip.mask('099.099.099.099', {
clearIfNotMatch: true,
placeholder: '000.000.000.000'
});
},

initialize: function (options) {
if (typeof options.model === 'undefined' || !options.model) {
this.model = new StreamModel.Model();
Expand Down
2 changes: 1 addition & 1 deletion frontend/js/app/nginx/stream/list/item.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</div>
</td>
<td>
<div class="text-monospace"><%- forward_ip %>:<%- forwarding_port %></div>
<div class="text-monospace"><%- forwarding_host %>:<%- forwarding_port %></div>
</td>
<td>
<div>
Expand Down
2 changes: 1 addition & 1 deletion frontend/js/i18n/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
"add": "Add Stream",
"form-title": "{id, select, undefined{New} other{Edit}} Stream",
"incoming-port": "Incoming Port",
"forward-ip": "Forward IP",
"forwarding-host": "Forward Host",
"forwarding-port": "Forward Port",
"tcp-forwarding": "TCP Forwarding",
"udp-forwarding": "UDP Forwarding",
Expand Down
2 changes: 1 addition & 1 deletion frontend/js/models/stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const model = Backbone.Model.extend({
created_on: null,
modified_on: null,
incoming_port: null,
forward_ip: null,
forwarding_host: null,
forwarding_port: null,
tcp_forwarding: true,
udp_forwarding: false,
Expand Down