From 963b5d465d99cf7116e98e798bd5555dfaa6a2a8 Mon Sep 17 00:00:00 2001 From: Zhihe Li Date: Wed, 31 May 2023 18:33:27 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20default=20client?= =?UTF-8?q?=20port=20to=20targets=20(#1700)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 🎸 Add default client port to targets ✅ Closes: ICU-9299 --- addons/api/addon/generated/models/target.js | 13 +++++++++ addons/api/addon/models/target.js | 6 ----- .../api/mirage/generated/factories/target.js | 1 + .../api/tests/unit/serializers/target-test.js | 5 ++++ addons/core/translations/form/en-us.yaml | 3 --- addons/core/translations/resources/en-us.yaml | 6 +++++ .../components/form/target/details/index.hbs | 27 +++++++++++++++++-- 7 files changed, 50 insertions(+), 11 deletions(-) diff --git a/addons/api/addon/generated/models/target.js b/addons/api/addon/generated/models/target.js index 2c7e3ae14..4cc169731 100644 --- a/addons/api/addon/generated/models/target.js +++ b/addons/api/addon/generated/models/target.js @@ -83,4 +83,17 @@ export default class GeneratedTargetModel extends BaseModel { 'An IP address or DNS name for the session to connect to. Cannot be used in conjunction with host sources.', }) address; + + @attr('number', { + isNestedAttribute: true, + description: 'The default port a target should use if present.', + }) + default_port; + + @attr('number', { + isNestedAttribute: true, + description: + "The default port that will be listened on by the client's local proxy.", + }) + default_client_port; } diff --git a/addons/api/addon/models/target.js b/addons/api/addon/models/target.js index 79a784e5e..1d8073371 100644 --- a/addons/api/addon/models/target.js +++ b/addons/api/addon/models/target.js @@ -18,12 +18,6 @@ export default class TargetModel extends GeneratedTargetModel { // =attributes - @attr('number', { - isNestedAttribute: true, - description: 'The default port a target should use if present.', - }) - default_port; - /** * @type Array */ diff --git a/addons/api/mirage/generated/factories/target.js b/addons/api/mirage/generated/factories/target.js index cf868541a..f551efda2 100644 --- a/addons/api/mirage/generated/factories/target.js +++ b/addons/api/mirage/generated/factories/target.js @@ -17,5 +17,6 @@ export default Factory.extend({ updated_time: () => faker.date.recent(), disabled: () => faker.datatype.boolean(), default_port: () => faker.datatype.number(), + default_client_port: () => faker.datatype.number(), version: () => faker.datatype.number(), }); diff --git a/addons/api/tests/unit/serializers/target-test.js b/addons/api/tests/unit/serializers/target-test.js index c531a311a..447a863e7 100644 --- a/addons/api/tests/unit/serializers/target-test.js +++ b/addons/api/tests/unit/serializers/target-test.js @@ -31,6 +31,7 @@ module('Unit | Serializer | target', function (hooks) { type: 'org', }, default_port: 1234, + default_client_port: 4321, version: 1, type: TYPE_TARGET_TCP, address: '0.0.0.0', @@ -51,6 +52,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: 4321, }, address: '0.0.0.0', }); @@ -157,6 +159,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: null, }, address: null, }); @@ -192,6 +195,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: null, }, address: null, }); @@ -227,6 +231,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: 'ingress worker', attributes: { default_port: 1234, + default_client_port: null, }, address: null, }); diff --git a/addons/core/translations/form/en-us.yaml b/addons/core/translations/form/en-us.yaml index 9d76fa1f4..11af2b1fd 100644 --- a/addons/core/translations/form/en-us.yaml +++ b/addons/core/translations/form/en-us.yaml @@ -33,9 +33,6 @@ grant: address: label: Address help: An IP, host name, or other routable address -default_port: - label: Default Port - help: The default port on which to connect current_password: label: Current Password new_password: diff --git a/addons/core/translations/resources/en-us.yaml b/addons/core/translations/resources/en-us.yaml index c57556183..281fd20ca 100644 --- a/addons/core/translations/resources/en-us.yaml +++ b/addons/core/translations/resources/en-us.yaml @@ -326,6 +326,12 @@ target: worker_filter: label: Worker Filter help: Deprecated. Boolean expression to filter the workers that are allowed to satisfy this request. + default_port: + label: Default Port + help: The default port on which to connect. + default_client_port: + label: Default Client Port + help: The local proxy port on which to listen by default when a session is started on a client. questions: delete-host-sources: title: Remove associated host sources? diff --git a/ui/admin/app/components/form/target/details/index.hbs b/ui/admin/app/components/form/target/details/index.hbs index 5b7f672ff..685358d9f 100644 --- a/ui/admin/app/components/form/target/details/index.hbs +++ b/ui/admin/app/components/form/target/details/index.hbs @@ -122,9 +122,9 @@ as |F| > {{t - 'form.default_port.label' + 'resources.target.form.default_port.label' }} - {{t 'form.default_port.help'}} + {{t 'resources.target.form.default_port.help'}} {{#if @model.errors.default_port}} {{#each @model.errors.default_port as |error|}} @@ -134,6 +134,29 @@ {{/if}} + + {{t 'resources.target.form.default_client_port.label'}} + {{t + 'resources.target.form.default_client_port.help' + }} + {{#if @model.errors.default_client_port}} + + {{#each @model.errors.default_client_port as |error|}} + {{error.message}} + {{/each}} + + {{/if}} + +