diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-24 03:08:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-24 03:08:51 +0300 |
commit | 1ce6af4aad0107b6d604f89a3c0b530476a10165 (patch) | |
tree | 4956b0d395cd9232bca14f83daca3cd8616cc842 /lib/gitlab | |
parent | 24256212ea84e6fb6509f6fb317a2d2bac3d0d06 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab')
-rw-r--r-- | lib/gitlab/application_rate_limiter.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/email/smime/certificate.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/email/smime/signer.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/etag_caching/middleware.rb | 21 |
4 files changed, 26 insertions, 12 deletions
diff --git a/lib/gitlab/application_rate_limiter.rb b/lib/gitlab/application_rate_limiter.rb index 629632b744b..49e1f1edfb9 100644 --- a/lib/gitlab/application_rate_limiter.rb +++ b/lib/gitlab/application_rate_limiter.rb @@ -22,6 +22,7 @@ module Gitlab project_export: { threshold: 1, interval: 5.minutes }, project_download_export: { threshold: 10, interval: 10.minutes }, project_generate_new_export: { threshold: 1, interval: 5.minutes }, + project_import: { threshold: 30, interval: 10.minutes }, play_pipeline_schedule: { threshold: 1, interval: 1.minute }, show_raw_controller: { threshold: -> { Gitlab::CurrentSettings.current_application_settings.raw_blob_request_limit }, interval: 1.minute } }.freeze diff --git a/lib/gitlab/email/smime/certificate.rb b/lib/gitlab/email/smime/certificate.rb index b331c4ca19c..59d7b0c3c5b 100644 --- a/lib/gitlab/email/smime/certificate.rb +++ b/lib/gitlab/email/smime/certificate.rb @@ -4,8 +4,6 @@ module Gitlab module Email module Smime class Certificate - include OpenSSL - attr_reader :key, :cert def key_string @@ -17,8 +15,8 @@ module Gitlab end def self.from_strings(key_string, cert_string) - key = PKey::RSA.new(key_string) - cert = X509::Certificate.new(cert_string) + key = OpenSSL::PKey::RSA.new(key_string) + cert = OpenSSL::X509::Certificate.new(cert_string) new(key, cert) end diff --git a/lib/gitlab/email/smime/signer.rb b/lib/gitlab/email/smime/signer.rb index 2fa83014003..db03e383ecf 100644 --- a/lib/gitlab/email/smime/signer.rb +++ b/lib/gitlab/email/smime/signer.rb @@ -7,20 +7,18 @@ module Gitlab module Smime # Tooling for signing and verifying data with SMIME class Signer - include OpenSSL - def self.sign(cert:, key:, data:) - signed_data = PKCS7.sign(cert, key, data, nil, PKCS7::DETACHED) - PKCS7.write_smime(signed_data) + signed_data = OpenSSL::PKCS7.sign(cert, key, data, nil, OpenSSL::PKCS7::DETACHED) + OpenSSL::PKCS7.write_smime(signed_data) end # return nil if data cannot be verified, otherwise the signed content data def self.verify_signature(cert:, ca_cert: nil, signed_data:) - store = X509::Store.new + store = OpenSSL::X509::Store.new store.set_default_paths store.add_cert(ca_cert) if ca_cert - signed_smime = PKCS7.read_smime(signed_data) + signed_smime = OpenSSL::PKCS7.read_smime(signed_data) signed_smime if signed_smime.verify([cert], store) end end diff --git a/lib/gitlab/etag_caching/middleware.rb b/lib/gitlab/etag_caching/middleware.rb index a11d6b66409..303e1a23e6b 100644 --- a/lib/gitlab/etag_caching/middleware.rb +++ b/lib/gitlab/etag_caching/middleware.rb @@ -18,7 +18,7 @@ module Gitlab if_none_match = env['HTTP_IF_NONE_MATCH'] if if_none_match == etag - handle_cache_hit(etag, route) + handle_cache_hit(etag, route, request) else track_cache_miss(if_none_match, cached_value_present, route) @@ -47,11 +47,13 @@ module Gitlab %Q{W/"#{value}"} end - def handle_cache_hit(etag, route) + def handle_cache_hit(etag, route, request) track_event(:etag_caching_cache_hit, route) status_code = Gitlab::PollingInterval.polling_enabled? ? 304 : 429 + add_instrument_for_cache_hit(status_code, route, request) + [status_code, { 'ETag' => etag, 'X-Gitlab-From-Cache' => 'true' }, []] end @@ -68,6 +70,21 @@ module Gitlab def track_event(name, route) Gitlab::Metrics.add_event(name, endpoint: route.name) end + + def add_instrument_for_cache_hit(status, route, request) + payload = { + etag_route: route.name, + params: request.filtered_parameters, + headers: request.headers, + format: request.format.ref, + method: request.request_method, + path: request.filtered_path, + status: status + } + + ActiveSupport::Notifications.instrument( + "process_action.action_controller", payload) + end end end end |