Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-12-01 03:07:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-12-01 03:07:13 +0300
commitba557e8fea7c8a825a702ab154fa1574c4d2998a (patch)
tree9c252889816492ea0ebc5c7f86b1f5cd4a2f3620 /app/models/ci
parentd88cacce3f205151867ab3f9297f10cdae4a7025 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/ci')
-rw-r--r--app/models/ci/build_runner_session.rb20
1 files changed, 11 insertions, 9 deletions
diff --git a/app/models/ci/build_runner_session.rb b/app/models/ci/build_runner_session.rb
index c6dbb5d0a43..0f37ce70964 100644
--- a/app/models/ci/build_runner_session.rb
+++ b/app/models/ci/build_runner_session.rb
@@ -13,14 +13,15 @@ module Ci
belongs_to :build, class_name: 'Ci::Build', inverse_of: :runner_session
validates :build, presence: true
- validates :url, addressable_url: { schemes: %w(https) }
+ validates :url, public_url: { schemes: %w(https) }
def terminal_specification
- wss_url = Gitlab::UrlHelpers.as_wss(self.url)
+ wss_url = Gitlab::UrlHelpers.as_wss(Addressable::URI.escape(self.url))
return {} unless wss_url.present?
- wss_url = "#{wss_url}/exec"
- channel_specification(wss_url, TERMINAL_SUBPROTOCOL)
+ parsed_wss_url = URI.parse(wss_url)
+ parsed_wss_url.path += '/exec'
+ channel_specification(parsed_wss_url, TERMINAL_SUBPROTOCOL)
end
def service_specification(service: nil, path: nil, port: nil, subprotocols: nil)
@@ -28,20 +29,21 @@ module Ci
port = port.presence || DEFAULT_PORT_NAME
service = service.presence || DEFAULT_SERVICE_NAME
- url = "#{self.url}/proxy/#{service}/#{port}/#{path}"
+ parsed_url = URI.parse(Addressable::URI.escape(self.url))
+ parsed_url.path += "/proxy/#{service}/#{port}/#{path}"
subprotocols = subprotocols.presence || ::Ci::BuildRunnerSession::TERMINAL_SUBPROTOCOL
- channel_specification(url, subprotocols)
+ channel_specification(parsed_url, subprotocols)
end
private
- def channel_specification(url, subprotocol)
- return {} if subprotocol.blank? || url.blank?
+ def channel_specification(parsed_url, subprotocol)
+ return {} if subprotocol.blank? || parsed_url.blank?
{
subprotocols: Array(subprotocol),
- url: url,
+ url: Addressable::URI.unescape(parsed_url.to_s),
headers: { Authorization: [authorization.presence] }.compact,
ca_pem: certificate.presence
}