Skip to content

Commit

Permalink
fix: correctly specify NO_PROXY without protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
soniqua committed Aug 28, 2024
1 parent 06ed790 commit 13dec50
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 6 deletions.
19 changes: 19 additions & 0 deletions charts/snyk-broker/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -155,3 +155,22 @@ true
true
{{- end }}
{{- end }}
{{/*
NoProxy helper
Ensure all values are trimmed, separated by comma, and do not contain protocol or port
Validate against RFC 1123
*/}}
{{- define "snyk-broker.noProxy" -}}
{{- $proxyUrls := .Values.noProxy | nospace -}}
{{- $proxyUrlsWithoutProtocol := mustRegexReplaceAll "http(s?)://" $proxyUrls "" -}}
{{- $sanitisedProxyUrls := "" -}}
{{- range $proxyUrlsWithoutProtocol | split "," -}}
{{- if ( mustRegexMatch "^[a-zA-Z0-9.-]+$" . ) -}}
{{- $sanitisedProxyUrls = printf "%s,%s" $sanitisedProxyUrls . -}}
{{- else }}
{{- fail (printf "Entry %s for .Values.noProxy is invalid. Specify hostname only (no schema or port)" . ) -}}
{{- end }}
{{- end }}
{{- $sanitisedProxyUrls | trimPrefix "," -}}
{{- end }}
2 changes: 1 addition & 1 deletion charts/snyk-broker/templates/broker_deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ spec:
{{- if .Values.noProxy }}
# No Proxy Settings
- name: NO_PROXY
value: {{ .Values.noProxy }}
value: {{ include "snyk-broker.noProxy" . }}
{{- end }}

{{- if (include "snyk-broker.acceptJson" .)}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,52 @@ tests:
- failedTemplate: {}
- it: sets noproxy without protocol
set:
httpsProxy: my.ghe.io
noProxy: my.ghe.io
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: NO_PROXY
value: my.ghe.io
- it: rejects noproxy with protocol
- it: corrects noproxy by removing protocol
set:
httpsProxy: https://my.ghe.io
noProxy: https://my.ghe.io
asserts:
- failedTemplate: {}
- contains:
path: spec.template.spec.containers[0].env
content:
name: NO_PROXY
value: my.ghe.io
- it: sets noproxy with multiple domains
set:
noProxy: my.ghe.io,my.other.host.tld
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: NO_PROXY
value: my.ghe.io,my.other.host.tld
- it: corrects noproxy with multiple domains, one with protocol
set:
noProxy: my.ghe.io,https://my.private.site
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: NO_PROXY
value: my.ghe.io,my.private.site
- it: corrects noproxy with multiple domains, one with protocol, with spaces
set:
noProxy: my.ghe.io, https://my.private.site
asserts:
- contains:
path: spec.template.spec.containers[0].env
content:
name: NO_PROXY
value: my.ghe.io,my.private.site
- it: rejects noproxy with multiple domains, one with protocol, one with a port
set:
noProxy: my.ghe.io, https://my.private.site,notadomain:12334
asserts:
- failedTemplate:
errorMessage: Entry notadomain:12334 for .Values.noProxy is invalid. Specify hostname only (no schema or port)
2 changes: 1 addition & 1 deletion charts/snyk-broker/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@
"$ref": "#/$defs/urlWithSchema"
},
"noProxy": {
"$ref": "#/$defs/urlNoSchema"
"type": "string"
},
"acceptJson":{
"type": "string"
Expand Down
3 changes: 3 additions & 0 deletions charts/snyk-broker/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ httpProxy: ""
httpsProxy: ""

# No Proxy URL - This will apply to both Snyk Broker and Snyk Code Agent
# Do not specify protocol (http(s)://) or port
# Separate multiple entries by a comma
# e.g. my.first.host,my.second.host
noProxy: ""

# For custom accept.json, specify the path to the accept.json using the --set-file command when installing the chart
Expand Down

0 comments on commit 13dec50

Please sign in to comment.