Commit a55112b8 authored by Guillaume Grossetie's avatar Guillaume Grossetie

Validate kroki_url

parent 8f0d318b
...@@ -13,6 +13,9 @@ class ApplicationSetting < ApplicationRecord ...@@ -13,6 +13,9 @@ class ApplicationSetting < ApplicationRecord
GRAFANA_URL_ERROR_MESSAGE = 'Please check your Grafana URL setting in ' \ GRAFANA_URL_ERROR_MESSAGE = 'Please check your Grafana URL setting in ' \
'Admin Area > Settings > Metrics and profiling > Metrics - Grafana' 'Admin Area > Settings > Metrics and profiling > Metrics - Grafana'
KROKI_URL_ERROR_MESSAGE = 'Please check your Kroki URL setting in ' \
'Admin Area > Settings > General > Kroki'
add_authentication_token_field :runners_registration_token, encrypted: -> { Feature.enabled?(:application_settings_tokens_optional_encryption) ? :optional : :required } add_authentication_token_field :runners_registration_token, encrypted: -> { Feature.enabled?(:application_settings_tokens_optional_encryption) ? :optional : :required }
add_authentication_token_field :health_check_access_token add_authentication_token_field :health_check_access_token
add_authentication_token_field :static_objects_external_storage_auth_token add_authentication_token_field :static_objects_external_storage_auth_token
...@@ -129,8 +132,12 @@ class ApplicationSetting < ApplicationRecord ...@@ -129,8 +132,12 @@ class ApplicationSetting < ApplicationRecord
if: :unique_ips_limit_enabled if: :unique_ips_limit_enabled
validates :kroki_url, validates :kroki_url,
presence: true, system_hook_url: {
if: :kroki_enabled blocked_message: "is blocked: %{exception_message}. " + KROKI_URL_ERROR_MESSAGE
},
if: :kroki_url_absolute?
validate :validate_kroki_url
validates :plantuml_url, validates :plantuml_url,
presence: true, presence: true,
...@@ -433,18 +440,21 @@ class ApplicationSetting < ApplicationRecord ...@@ -433,18 +440,21 @@ class ApplicationSetting < ApplicationRecord
after_commit :expire_performance_bar_allowed_user_ids_cache, if: -> { previous_changes.key?('performance_bar_allowed_group_id') } after_commit :expire_performance_bar_allowed_user_ids_cache, if: -> { previous_changes.key?('performance_bar_allowed_group_id') }
def validate_grafana_url def validate_grafana_url
unless parsed_grafana_url validate_url(parsed_grafana_url, :grafana_url, GRAFANA_URL_ERROR_MESSAGE)
self.errors.add(
:grafana_url,
"must be a valid relative or absolute URL. #{GRAFANA_URL_ERROR_MESSAGE}"
)
end
end end
def grafana_url_absolute? def grafana_url_absolute?
parsed_grafana_url&.absolute? parsed_grafana_url&.absolute?
end end
def validate_kroki_url
validate_url(parsed_kroki_url, :kroki_url, KROKI_URL_ERROR_MESSAGE)
end
def kroki_url_absolute?
parsed_kroki_url&.absolute?
end
def sourcegraph_url_is_com? def sourcegraph_url_is_com?
!!(sourcegraph_url =~ /\Ahttps:\/\/(www\.)?sourcegraph\.com/) !!(sourcegraph_url =~ /\Ahttps:\/\/(www\.)?sourcegraph\.com/)
end end
...@@ -507,6 +517,19 @@ class ApplicationSetting < ApplicationRecord ...@@ -507,6 +517,19 @@ class ApplicationSetting < ApplicationRecord
def parsed_grafana_url def parsed_grafana_url
@parsed_grafana_url ||= Gitlab::Utils.parse_url(grafana_url) @parsed_grafana_url ||= Gitlab::Utils.parse_url(grafana_url)
end end
def parsed_kroki_url
@parsed_kroki_url ||= Gitlab::Utils.parse_url(kroki_url)
end
def validate_url(parsed_url, name, error_message)
unless parsed_url
self.errors.add(
name,
"must be a valid relative or absolute URL. #{error_message}"
)
end
end
end end
ApplicationSetting.prepend_if_ee('EE::ApplicationSetting') ApplicationSetting.prepend_if_ee('EE::ApplicationSetting')
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment