Skip to content

Commit 9989eef

Browse files
author
OpenShift Bot
authored
Merge pull request #1184 from spadgett/relax-route-validation
Merged by openshift-bot
2 parents 960a94b + f2dbce7 commit 9989eef

File tree

7 files changed

+59
-29
lines changed

7 files changed

+59
-29
lines changed

app/scripts/controllers/edit/route.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,6 @@ angular.module('openshiftConsole')
125125

126126
if (_.get($scope, 'routing.tls.termination')) {
127127
updated.spec.tls = $scope.routing.tls;
128-
if (updated.spec.tls.termination !== 'edge') {
129-
// insecureEdgeTerminationPolicy only applies to edge routes.
130-
delete updated.spec.tls.insecureEdgeTerminationPolicy;
131-
}
132128

133129
if (updated.spec.tls.termination === 'passthrough') {
134130
delete updated.spec.path;

app/scripts/directives/oscRouting.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ angular.module("openshiftConsole")
6969
_.set(scope, 'route.tls.insecureEdgeTerminationPolicy', '');
7070
}
7171

72+
var validateInsecureTerminationPolicy = function() {
73+
var insecureTrafficValid = _.get(scope, 'route.tls.termination') !== 'passthrough' ||
74+
_.get(scope, 'route.tls.insecureEdgeTerminationPolicy') !== 'Allow';
75+
scope.routeForm.insecureTraffic.$setValidity('passthrough', insecureTrafficValid);
76+
};
77+
scope.$watchGroup([ 'route.tls.termination', 'route.tls.insecureEdgeTerminationPolicy' ],
78+
validateInsecureTerminationPolicy);
79+
7280
scope.nameValidation = DNS1123_SUBDOMAIN_VALIDATION;
7381

7482
// Use different patterns for validating hostnames if wildcard subdomains are supported.

app/scripts/services/applicationGenerator.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,11 @@ angular.module("openshiftConsole")
157157
termination: tls.termination
158158
};
159159

160+
if (tls.insecureEdgeTerminationPolicy) {
161+
route.spec.tls.insecureEdgeTerminationPolicy = tls.insecureEdgeTerminationPolicy;
162+
}
163+
160164
if (tls.termination !== 'passthrough') {
161-
if (tls.termination === 'edge' && tls.insecureEdgeTerminationPolicy) {
162-
route.spec.tls.insecureEdgeTerminationPolicy = tls.insecureEdgeTerminationPolicy;
163-
}
164165
if (tls.certificate) {
165166
route.spec.tls.certificate = tls.certificate;
166167
}

app/views/browse/route.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ <h4>TLS Settings</h4>
147147
<dl class="dl-horizontal left" ng-if="route.spec.tls">
148148
<dt>Termination Type:</dt>
149149
<dd>{{route.spec.tls.termination | humanizeTLSTermination}}</dd>
150-
<dt ng-if-start="route.spec.tls.termination === 'edge'">Insecure Traffic:</dt>
151-
<dd ng-if-end>{{route.spec.tls.insecureEdgeTerminationPolicy || 'None'}}</dd>
150+
<dt>Insecure Traffic:</dt>
151+
<dd>{{route.spec.tls.insecureEdgeTerminationPolicy || 'None'}}</dd>
152152
<dt>Certificate:</dt>
153153
<dd>
154154
<span ng-show="route.spec.tls.certificate && !reveal.certificate">

app/views/directives/osc-routing.html

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,15 +247,28 @@ <h3>Security</h3>
247247
<!-- Insecure Edge Termination Policy -->
248248
<div class="form-group">
249249
<label for="insecureTraffic">Insecure Traffic</label>
250-
<ui-select ng-model="route.tls.insecureEdgeTerminationPolicy" ng-disabled="route.tls.termination !== 'edge'" input-id="insecureTraffic" aria-describedby="route-insecure-policy-help" search-enabled="false">
250+
<!-- Since we can't give the ui-select field a name, create a hidden input for Angular form validation. -->
251+
<input type="hidden" name="insecureTraffic">
252+
<ui-select ng-model="route.tls.insecureEdgeTerminationPolicy"
253+
name="insecureTraffic"
254+
input-id="insecureTraffic"
255+
aria-describedby="route-insecure-policy-help"
256+
search-enabled="false">
251257
<ui-select-match>{{$select.selected.label}}</ui-select-match>
252-
<ui-select-choices repeat="option.value as option in insecureTrafficOptions">
258+
<ui-select-choices
259+
repeat="option.value as option in insecureTrafficOptions"
260+
ui-disable-choice="route.tls.termination === 'passthrough' && option.value === 'Allow'">
253261
{{option.label}}
254262
</ui-select-choices>
255263
</ui-select>
256264
<div>
257265
<span id="route-insecure-policy-help" class="help-block">
258-
Policy for traffic on insecure schemes like HTTP for edge termination.
266+
Policy for traffic on insecure schemes like HTTP.
267+
</span>
268+
</div>
269+
<div ng-if="routeForm.insecureTraffic.$error.passthrough" class="has-warning">
270+
<span class="help-block">
271+
Passthrough routes can't use the insecure traffic policy <var>Allow</var>.
259272
</span>
260273
</div>
261274
</div>

dist/scripts/scripts.js

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1814,7 +1814,7 @@ targetPort:a.routing.targetPort
18141814
var f = a.routing.tls;
18151815
return f && f.termination && (d.spec.tls = {
18161816
termination:f.termination
1817-
}, "passthrough" !== f.termination && ("edge" === f.termination && f.insecureEdgeTerminationPolicy && (d.spec.tls.insecureEdgeTerminationPolicy = f.insecureEdgeTerminationPolicy), f.certificate && (d.spec.tls.certificate = f.certificate), f.key && (d.spec.tls.key = f.key), f.caCertificate && (d.spec.tls.caCertificate = f.caCertificate), f.destinationCACertificate && "reencrypt" === f.termination && (d.spec.tls.destinationCACertificate = f.destinationCACertificate))), d;
1817+
}, f.insecureEdgeTerminationPolicy && (d.spec.tls.insecureEdgeTerminationPolicy = f.insecureEdgeTerminationPolicy), "passthrough" !== f.termination && (f.certificate && (d.spec.tls.certificate = f.certificate), f.key && (d.spec.tls.key = f.key), f.caCertificate && (d.spec.tls.caCertificate = f.caCertificate), f.destinationCACertificate && "reencrypt" === f.termination && (d.spec.tls.destinationCACertificate = f.destinationCACertificate))), d;
18181818
}, f._generateDeploymentConfig = function(a, b, c) {
18191819
var d = [];
18201820
angular.forEach(a.deploymentConfig.envVars, function(a, b) {
@@ -7893,7 +7893,7 @@ _.set(a, "spec.to.name", b);
78937893
var c = _.get(d, "routing.to.weight");
78947894
isNaN(c) || _.set(a, "spec.to.weight", c), a.spec.path = d.routing.path;
78957895
var e = d.routing.targetPort;
7896-
e ? _.set(a, "spec.port.targetPort", e) :delete a.spec.port, _.get(d, "routing.tls.termination") ? (a.spec.tls = d.routing.tls, "edge" !== a.spec.tls.termination && delete a.spec.tls.insecureEdgeTerminationPolicy, "passthrough" === a.spec.tls.termination && (delete a.spec.path, delete a.spec.tls.certificate, delete a.spec.tls.key, delete a.spec.tls.caCertificate), "reencrypt" !== a.spec.tls.termination && delete a.spec.tls.destinationCACertificate) :delete a.spec.tls;
7896+
e ? _.set(a, "spec.port.targetPort", e) :delete a.spec.port, _.get(d, "routing.tls.termination") ? (a.spec.tls = d.routing.tls, "passthrough" === a.spec.tls.termination && (delete a.spec.path, delete a.spec.tls.certificate, delete a.spec.tls.key, delete a.spec.tls.caCertificate), "reencrypt" !== a.spec.tls.termination && delete a.spec.tls.destinationCACertificate) :delete a.spec.tls;
78977897
var f = _.get(d, "routing.alternateServices", []);
78987898
return _.isEmpty(f) ? delete a.spec.alternateBackends :a.spec.alternateBackends = _.map(f, function(a) {
78997899
return {
@@ -10225,8 +10225,13 @@ label:"Allow"
1022510225
}, {
1022610226
value:"Redirect",
1022710227
label:"Redirect"
10228-
} ], _.has(c, "route.tls.insecureEdgeTerminationPolicy") || _.set(c, "route.tls.insecureEdgeTerminationPolicy", ""), c.nameValidation = b, c.disableWildcards ? c.hostnamePattern = b.pattern :c.hostnamePattern = /^(\*(\.[a-z0-9]([-a-z0-9]*[a-z0-9]))+|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$/, c.hostnameMaxLength = b.maxlength;
10229-
var g = function(a) {
10228+
} ], _.has(c, "route.tls.insecureEdgeTerminationPolicy") || _.set(c, "route.tls.insecureEdgeTerminationPolicy", "");
10229+
var g = function() {
10230+
var a = "passthrough" !== _.get(c, "route.tls.termination") || "Allow" !== _.get(c, "route.tls.insecureEdgeTerminationPolicy");
10231+
c.routeForm.insecureTraffic.$setValidity("passthrough", a);
10232+
};
10233+
c.$watchGroup([ "route.tls.termination", "route.tls.insecureEdgeTerminationPolicy" ], g), c.nameValidation = b, c.disableWildcards ? c.hostnamePattern = b.pattern :c.hostnamePattern = /^(\*(\.[a-z0-9]([-a-z0-9]*[a-z0-9]))+|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)$/, c.hostnameMaxLength = b.maxlength;
10234+
var h = function(a) {
1023010235
a && (c.unnamedServicePort = 1 === a.spec.ports.length && !a.spec.ports[0].name, a.spec.ports.length && !c.unnamedServicePort ? c.route.portOptions = _.map(a.spec.ports, function(a) {
1023110236
return {
1023210237
port:a.name,
@@ -10235,25 +10240,25 @@ label:a.port + " → " + a.targetPort + " (" + a.protocol + ")"
1023510240
}) :c.route.portOptions = []);
1023610241
};
1023710242
c.services && !c.route.service && (c.route.service = _.find(c.services)), c.$watch("route.to.service", function(a, b) {
10238-
g(a), a === b && c.route.targetPort || (c.route.targetPort = _.get(c, "route.portOptions[0].port")), c.services && (c.alternateServiceOptions = _.reject(c.services, function(b) {
10243+
h(a), a === b && c.route.targetPort || (c.route.targetPort = _.get(c, "route.portOptions[0].port")), c.services && (c.alternateServiceOptions = _.reject(c.services, function(b) {
1023910244
return a === b;
1024010245
}));
1024110246
}), c.$watch("route.alternateServices", function(a) {
1024210247
c.duplicateServices = _(a).map("service").filter(function(a, b, c) {
1024310248
return _.includes(c, a, b + 1);
1024410249
}).value(), f.$setValidity("duplicateServices", !c.duplicateServices.length), c.options.alternateServices = !_.isEmpty(a);
1024510250
}, !0);
10246-
var h = function() {
10251+
var i = function() {
1024710252
return !!c.route.tls && ((!c.route.tls.termination || "passthrough" === c.route.tls.termination) && (c.route.tls.certificate || c.route.tls.key || c.route.tls.caCertificate || c.route.tls.destinationCACertificate));
1024810253
};
1024910254
c.$watch("route.tls.termination", function() {
10250-
c.options.secureRoute = !!_.get(c, "route.tls.termination"), c.showCertificatesNotUsedWarning = h();
10255+
c.options.secureRoute = !!_.get(c, "route.tls.termination"), c.showCertificatesNotUsedWarning = i();
1025110256
});
10252-
var i;
10257+
var j;
1025310258
c.$watch("options.secureRoute", function(a, b) {
1025410259
if (a !== b) {
1025510260
var d = _.get(c, "route.tls.termination");
10256-
!c.securetRoute && d && (i = d, delete c.route.tls.termination), c.options.secureRoute && !d && _.set(c, "route.tls.termination", i || "edge");
10261+
!c.securetRoute && d && (j = d, delete c.route.tls.termination), c.options.secureRoute && !d && _.set(c, "route.tls.termination", j || "edge");
1025710262
}
1025810263
}), c.$watch("options.alternateServices", function(a, b) {
1025910264
a !== b && (a || (c.route.alternateServices = []), a && _.isEmpty(c.route.alternateServices) && c.addAlternateService());
@@ -10277,11 +10282,11 @@ d += _.get(a, "weight", 0);
1027710282
var e = a / d * 100;
1027810283
return b ? d3.round(e, 1) + "%" :e;
1027910284
};
10280-
var j = !1;
10285+
var k = !1;
1028110286
c.$watch("route.alternateServices.length", function(a) {
10282-
0 === a && _.has(c, "route.to.weight") && delete c.route.to.weight, 1 === a && (j = !0, c.controls.rangeSlider = c.weightAsPercentage(c.route.to.weight));
10287+
0 === a && _.has(c, "route.to.weight") && delete c.route.to.weight, 1 === a && (k = !0, c.controls.rangeSlider = c.weightAsPercentage(c.route.to.weight));
1028310288
}), c.$watch("controls.rangeSlider", function(a, b) {
10284-
return j ? void (j = !1) :void (a !== b && (a = parseInt(a, 10), _.set(c, "route.to.weight", a), _.set(c, "route.alternateServices[0].weight", 100 - a)));
10289+
return k ? void (k = !1) :void (a !== b && (a = parseInt(a, 10), _.set(c, "route.to.weight", a), _.set(c, "route.alternateServices[0].weight", 100 - a)));
1028510290
});
1028610291
}
1028710292
};

dist/scripts/templates.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3730,8 +3730,8 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
37303730
"<dl class=\"dl-horizontal left\" ng-if=\"route.spec.tls\">\n" +
37313731
"<dt>Termination Type:</dt>\n" +
37323732
"<dd>{{route.spec.tls.termination | humanizeTLSTermination}}</dd>\n" +
3733-
"<dt ng-if-start=\"route.spec.tls.termination === 'edge'\">Insecure Traffic:</dt>\n" +
3734-
"<dd ng-if-end>{{route.spec.tls.insecureEdgeTerminationPolicy || 'None'}}</dd>\n" +
3733+
"<dt>Insecure Traffic:</dt>\n" +
3734+
"<dd>{{route.spec.tls.insecureEdgeTerminationPolicy || 'None'}}</dd>\n" +
37353735
"<dt>Certificate:</dt>\n" +
37363736
"<dd>\n" +
37373737
"<span ng-show=\"route.spec.tls.certificate && !reveal.certificate\">\n" +
@@ -8297,15 +8297,22 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
82978297
"\n" +
82988298
"<div class=\"form-group\">\n" +
82998299
"<label for=\"insecureTraffic\">Insecure Traffic</label>\n" +
8300-
"<ui-select ng-model=\"route.tls.insecureEdgeTerminationPolicy\" ng-disabled=\"route.tls.termination !== 'edge'\" input-id=\"insecureTraffic\" aria-describedby=\"route-insecure-policy-help\" search-enabled=\"false\">\n" +
8300+
"\n" +
8301+
"<input type=\"hidden\" name=\"insecureTraffic\">\n" +
8302+
"<ui-select ng-model=\"route.tls.insecureEdgeTerminationPolicy\" name=\"insecureTraffic\" input-id=\"insecureTraffic\" aria-describedby=\"route-insecure-policy-help\" search-enabled=\"false\">\n" +
83018303
"<ui-select-match>{{$select.selected.label}}</ui-select-match>\n" +
8302-
"<ui-select-choices repeat=\"option.value as option in insecureTrafficOptions\">\n" +
8304+
"<ui-select-choices repeat=\"option.value as option in insecureTrafficOptions\" ui-disable-choice=\"route.tls.termination === 'passthrough' && option.value === 'Allow'\">\n" +
83038305
"{{option.label}}\n" +
83048306
"</ui-select-choices>\n" +
83058307
"</ui-select>\n" +
83068308
"<div>\n" +
83078309
"<span id=\"route-insecure-policy-help\" class=\"help-block\">\n" +
8308-
"Policy for traffic on insecure schemes like HTTP for edge termination.\n" +
8310+
"Policy for traffic on insecure schemes like HTTP.\n" +
8311+
"</span>\n" +
8312+
"</div>\n" +
8313+
"<div ng-if=\"routeForm.insecureTraffic.$error.passthrough\" class=\"has-warning\">\n" +
8314+
"<span class=\"help-block\">\n" +
8315+
"Passthrough routes can't use the insecure traffic policy <var>Allow</var>.\n" +
83098316
"</span>\n" +
83108317
"</div>\n" +
83118318
"</div>\n" +

0 commit comments

Comments
 (0)