![Vladimir Shushlin](/assets/img/avatar_default.png)
Extract acme double to helper Create ACME challanges for pages domains * Create order & challange through API * save them to database * request challenge validation We're saving order and challenge as one entity, that wouldn't be correct if we would order certificates for several domains simultaneously, but we always order certificate per domain Add controller for processing acme challenges redirected from pages Don't save acme challenge url - we don't use it Validate acme challenge attributes Encrypt private_key in acme orders
24 lines
819 B
Ruby
24 lines
819 B
Ruby
# frozen_string_literal: true
|
|
|
|
class PagesDomainAcmeOrder < ApplicationRecord
|
|
belongs_to :pages_domain
|
|
|
|
scope :expired, -> { where("expires_at < ?", Time.now) }
|
|
|
|
validates :pages_domain, presence: true
|
|
validates :expires_at, presence: true
|
|
validates :url, presence: true
|
|
validates :challenge_token, presence: true
|
|
validates :challenge_file_content, presence: true
|
|
validates :private_key, presence: true
|
|
|
|
attr_encrypted :private_key,
|
|
mode: :per_attribute_iv,
|
|
key: Settings.attr_encrypted_db_key_base_truncated,
|
|
algorithm: 'aes-256-gcm',
|
|
encode: true
|
|
|
|
def self.find_by_domain_and_token(domain_name, challenge_token)
|
|
joins(:pages_domain).find_by(pages_domains: { domain: domain_name }, challenge_token: challenge_token)
|
|
end
|
|
end
|