summaryrefslogtreecommitdiff
path: root/app/services/projects/update_pages_configuration_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects/update_pages_configuration_service.rb')
-rw-r--r--app/services/projects/update_pages_configuration_service.rb109
1 files changed, 0 insertions, 109 deletions
diff --git a/app/services/projects/update_pages_configuration_service.rb b/app/services/projects/update_pages_configuration_service.rb
deleted file mode 100644
index 4272e1dc8b6..00000000000
--- a/app/services/projects/update_pages_configuration_service.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-# frozen_string_literal: true
-
-module Projects
- class UpdatePagesConfigurationService < BaseService
- include Gitlab::Utils::StrongMemoize
-
- attr_reader :project
-
- def initialize(project)
- @project = project
- end
-
- def execute
- return success unless ::Settings.pages.local_store.enabled
-
- # If the pages were never deployed, we can't write out the config, as the
- # directory would not exist.
- # https://gitlab.com/gitlab-org/gitlab/-/issues/235139
- return success unless project.pages_deployed?
-
- unless file_equals?(pages_config_file, pages_config_json)
- update_file(pages_config_file, pages_config_json)
- reload_daemon
- end
-
- success
- end
-
- private
-
- def pages_config_json
- strong_memoize(:pages_config_json) do
- pages_config.to_json
- end
- end
-
- def pages_config
- {
- domains: pages_domains_config,
- https_only: project.pages_https_only?,
- id: project.project_id,
- access_control: !project.public_pages?
- }
- end
-
- def pages_domains_config
- enabled_pages_domains.map do |domain|
- {
- domain: domain.domain,
- certificate: domain.certificate,
- key: domain.key,
- https_only: project.pages_https_only? && domain.https?,
- id: project.project_id,
- access_control: !project.public_pages?
- }
- end
- end
-
- def enabled_pages_domains
- if Gitlab::CurrentSettings.pages_domain_verification_enabled?
- project.pages_domains.enabled
- else
- project.pages_domains
- end
- end
-
- def reload_daemon
- # GitLab Pages daemon constantly watches for modification time of `pages.path`
- # It reloads configuration when `pages.path` is modified
- update_file(pages_update_file, SecureRandom.hex(64))
- end
-
- def pages_path
- @pages_path ||= project.pages_path
- end
-
- def pages_config_file
- File.join(pages_path, 'config.json')
- end
-
- def pages_update_file
- File.join(::Settings.pages.path, '.update')
- end
-
- def update_file(file, data)
- temp_file = "#{file}.#{SecureRandom.hex(16)}"
- File.open(temp_file, 'w') do |f|
- f.write(data)
- end
- FileUtils.move(temp_file, file, force: true)
- ensure
- # In case if the updating fails
- FileUtils.remove(temp_file, force: true)
- end
-
- def file_equals?(file, data)
- existing_data = read_file(file)
- data == existing_data.to_s
- end
-
- def read_file(file)
- File.open(file, 'r') do |f|
- f.read
- end
- rescue StandardError
- nil
- end
- end
-end