diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-20 12:40:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-20 12:40:42 +0300 |
commit | ee664acb356f8123f4f6b00b73c1e1cf0866c7fb (patch) | |
tree | f8479f94a28f66654c6a4f6fb99bad6b4e86a40e /app/uploaders/object_storage | |
parent | 62f7d5c5b69180e82ae8196b7b429eeffc8e7b4f (diff) |
Add latest changes from gitlab-org/gitlab@15-5-stable-eev15.5.0-rc42
Diffstat (limited to 'app/uploaders/object_storage')
-rw-r--r-- | app/uploaders/object_storage/cdn.rb | 10 | ||||
-rw-r--r-- | app/uploaders/object_storage/cdn/google_cdn.rb | 4 |
2 files changed, 12 insertions, 2 deletions
diff --git a/app/uploaders/object_storage/cdn.rb b/app/uploaders/object_storage/cdn.rb index 0711ab0bd28..e49e2780147 100644 --- a/app/uploaders/object_storage/cdn.rb +++ b/app/uploaders/object_storage/cdn.rb @@ -10,6 +10,16 @@ module ObjectStorage include Gitlab::Utils::StrongMemoize + UrlResult = Struct.new(:url, :used_cdn) + + def cdn_enabled_url(project, ip_address) + if Feature.enabled?(:ci_job_artifacts_cdn, project) && use_cdn?(ip_address) + UrlResult.new(cdn_signed_url, true) + else + UrlResult.new(url, false) + end + end + def use_cdn?(request_ip) return false unless cdn_options.is_a?(Hash) && cdn_options['provider'] return false unless cdn_provider diff --git a/app/uploaders/object_storage/cdn/google_cdn.rb b/app/uploaders/object_storage/cdn/google_cdn.rb index ea7683f131c..91bad1f8d6b 100644 --- a/app/uploaders/object_storage/cdn/google_cdn.rb +++ b/app/uploaders/object_storage/cdn/google_cdn.rb @@ -19,7 +19,7 @@ module ObjectStorage ip = IPAddr.new(request_ip) - return false if ip.private? + return false if ip.private? || ip.link_local? || ip.loopback? !GoogleIpCache.google_ip?(request_ip) end @@ -41,7 +41,7 @@ module ObjectStorage private def config_valid? - [key_name, decoded_key, cdn_url].all?(&:present?) + [key_name, decoded_key, cdn_url].all?(&:present?) && cdn_url.start_with?('https://') end def key_name |