summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-02-10 12:07:46 +0100
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-01-31 22:53:57 +0000
commit6e99226cca41f36d92c4ccb2cd398d2256091adc (patch)
treefc3cc5262537f33d46b2407970a6a7b6a5cef69d /app
parentf034f6b3ec5dc8b72f43c954ddb34bae037be254 (diff)
downloadgitlab-ce-6e99226cca41f36d92c4ccb2cd398d2256091adc.tar.gz
Added PagesDomain
Diffstat (limited to 'app')
-rw-r--r--app/models/pages_domain.rb29
-rw-r--r--app/models/project.rb38
2 files changed, 31 insertions, 36 deletions
diff --git a/app/models/pages_domain.rb b/app/models/pages_domain.rb
new file mode 100644
index 00000000000..eebdf7501de
--- /dev/null
+++ b/app/models/pages_domain.rb
@@ -0,0 +1,29 @@
+class PagesDomain < ActiveRecord::Base
+ belongs_to :project
+
+ validates :domain, hostname: true
+ validates_uniqueness_of :domain, allow_nil: true, allow_blank: true
+ validates :certificate, certificate: true, allow_nil: true, allow_blank: true
+ validates :key, certificate_key: true, allow_nil: true, allow_blank: true
+
+ attr_encrypted :pages_custom_certificate_key, mode: :per_attribute_iv_and_salt, key: Gitlab::Application.secrets.db_key_base
+
+ after_create :update
+ after_save :update
+ after_destroy :update
+
+ def url
+ return unless domain
+ return unless Dir.exist?(project.public_pages_path)
+
+ if certificate
+ return "https://#{domain}"
+ else
+ return "http://#{domain}"
+ end
+ end
+
+ def update
+ UpdatePagesConfigurationService.new(project).execute
+ end
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index f447c2bf293..dac52a0fc5e 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -150,6 +150,7 @@ class Project < ActiveRecord::Base
has_many :lfs_objects, through: :lfs_objects_projects
has_many :project_group_links, dependent: :destroy
has_many :invited_groups, through: :project_group_links, source: :group
+ has_many :pages_domains, dependent: :destroy
has_many :todos, dependent: :destroy
has_many :notification_settings, dependent: :destroy, as: :source
@@ -205,18 +206,11 @@ class Project < ActiveRecord::Base
presence: true,
inclusion: { in: ->(_object) { Gitlab.config.repositories.storages.keys } }
- validates :pages_custom_domain, hostname: true, allow_blank: true, allow_nil: true
- validates_uniqueness_of :pages_custom_domain, allow_nil: true, allow_blank: true
- validates :pages_custom_certificate, certificate: true, allow_nil: true, allow_blank: true
- validates :pages_custom_certificate_key, certificate_key: true, allow_nil: true, allow_blank: true
-
add_authentication_token_field :runners_token
before_save :ensure_runners_token
mount_uploader :avatar, AvatarUploader
- attr_encrypted :pages_custom_certificate_key, mode: :per_attribute_iv_and_salt, key: Gitlab::Application.secrets.db_key_base
-
# Scopes
default_scope { where(pending_delete: false) }
@@ -1184,17 +1178,6 @@ class Project < ActiveRecord::Base
"#{url}/#{path}"
end
- def pages_custom_url
- return unless pages_custom_domain
- return unless Dir.exist?(public_pages_path)
-
- if Gitlab.config.pages.https
- return "https://#{pages_custom_domain}"
- else
- return "http://#{pages_custom_domain}"
- end
- end
-
def pages_path
File.join(Settings.pages.path, path_with_namespace)
end
@@ -1203,32 +1186,15 @@ class Project < ActiveRecord::Base
File.join(pages_path, 'public')
end
- def remove_pages_certificate
- update(
- pages_custom_certificate: nil,
- pages_custom_certificate_key: nil
- )
-
- UpdatePagesConfigurationService.new(self).execute
- end
-
def remove_pages
# 1. We rename pages to temporary directory
# 2. We wait 5 minutes, due to NFS caching
# 3. We asynchronously remove pages with force
- temp_path = "#{path}.#{SecureRandom.hex}"
+ temp_path = "#{path}.#{SecureRandom.hex}.deleted"
if Gitlab::PagesTransfer.new.rename_project(path, temp_path, namespace.path)
PagesWorker.perform_in(5.minutes, :remove, namespace.path, temp_path)
end
-
- update(
- pages_custom_certificate: nil,
- pages_custom_certificate_key: nil,
- pages_custom_domain: nil
- )
-
- UpdatePagesConfigurationService.new(self).execute
end
def wiki