diff options
Diffstat (limited to 'app/models/instance_configuration.rb')
-rw-r--r-- | app/models/instance_configuration.rb | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/app/models/instance_configuration.rb b/app/models/instance_configuration.rb index f401c23e453..09a60e9dd10 100644 --- a/app/models/instance_configuration.rb +++ b/app/models/instance_configuration.rb @@ -13,7 +13,9 @@ class InstanceConfiguration { ssh_algorithms_hashes: ssh_algorithms_hashes, host: host, gitlab_pages: gitlab_pages, - gitlab_ci: gitlab_ci }.deep_symbolize_keys + gitlab_ci: gitlab_ci, + package_file_size_limits: package_file_size_limits, + rate_limits: rate_limits }.deep_symbolize_keys end end @@ -43,6 +45,66 @@ class InstanceConfiguration default: 100.megabytes }) end + def package_file_size_limits + Plan.all.to_h { |plan| [plan.name.capitalize, plan_file_size_limits(plan)] } + end + + def plan_file_size_limits(plan) + { + conan: plan.actual_limits[:conan_max_file_size], + maven: plan.actual_limits[:maven_max_file_size], + npm: plan.actual_limits[:npm_max_file_size], + nuget: plan.actual_limits[:nuget_max_file_size], + pypi: plan.actual_limits[:pypi_max_file_size], + terraform_module: plan.actual_limits[:terraform_module_max_file_size], + generic: plan.actual_limits[:generic_packages_max_file_size] + } + end + + def rate_limits + { + unauthenticated: { + enabled: application_settings[:throttle_unauthenticated_enabled], + requests_per_period: application_settings[:throttle_unauthenticated_requests_per_period], + period_in_seconds: application_settings[:throttle_unauthenticated_period_in_seconds] + }, + authenticated_api: { + enabled: application_settings[:throttle_authenticated_api_enabled], + requests_per_period: application_settings[:throttle_authenticated_api_requests_per_period], + period_in_seconds: application_settings[:throttle_authenticated_api_period_in_seconds] + }, + authenticated_web: { + enabled: application_settings[:throttle_authenticated_web_enabled], + requests_per_period: application_settings[:throttle_authenticated_web_requests_per_period], + period_in_seconds: application_settings[:throttle_authenticated_web_period_in_seconds] + }, + protected_paths: { + enabled: application_settings[:throttle_protected_paths_enabled], + requests_per_period: application_settings[:throttle_protected_paths_requests_per_period], + period_in_seconds: application_settings[:throttle_protected_paths_period_in_seconds] + }, + unauthenticated_packages_api: { + enabled: application_settings[:throttle_unauthenticated_packages_api_enabled], + requests_per_period: application_settings[:throttle_unauthenticated_packages_api_requests_per_period], + period_in_seconds: application_settings[:throttle_unauthenticated_packages_api_period_in_seconds] + }, + authenticated_packages_api: { + enabled: application_settings[:throttle_authenticated_packages_api_enabled], + requests_per_period: application_settings[:throttle_authenticated_packages_api_requests_per_period], + period_in_seconds: application_settings[:throttle_authenticated_packages_api_period_in_seconds] + }, + issue_creation: application_setting_limit_per_minute(:issues_create_limit), + note_creation: application_setting_limit_per_minute(:notes_create_limit), + project_export: application_setting_limit_per_minute(:project_export_limit), + project_export_download: application_setting_limit_per_minute(:project_download_export_limit), + project_import: application_setting_limit_per_minute(:project_import_limit), + group_export: application_setting_limit_per_minute(:group_export_limit), + group_export_download: application_setting_limit_per_minute(:group_download_export_limit), + group_import: application_setting_limit_per_minute(:group_import_limit), + raw_blob: application_setting_limit_per_minute(:raw_blob_request_limit) + } + end + def ssh_algorithm_file(algorithm) File.join(SSH_ALGORITHMS_PATH, "ssh_host_#{algorithm.downcase}_key.pub") end @@ -70,4 +132,16 @@ class InstanceConfiguration def ssh_algorithm_sha256(ssh_file_content) Gitlab::SSHPublicKey.new(ssh_file_content).fingerprint('SHA256') end + + def application_settings + Gitlab::CurrentSettings.current_application_settings + end + + def application_setting_limit_per_minute(setting) + { + enabled: application_settings[setting] > 0, + requests_per_period: application_settings[setting], + period_in_seconds: 1.minute + } + end end |