class PostDB::CLI::Domains::DKIM

Public Instance Methods

dns(domain_name = nil) click to toggle source
# File lib/postdb/cli/domains/dkim.rb, line 10
def dns(domain_name = nil)
  unless domain_name
    domains = PostDB::Domain.all

    if domains.empty?
      exit_with_warning("There don't appear to be any domains on this system.")
    end

    domain_name = prompt.select("Domain:", domains.map(&:name))
  end

  domain_name = domain_name.downcase

  domain = PostDB::Domain.where(name: domain_name).first

  dkim_public = [domain.dkim.public_key.to_der].pack('m').gsub("\n", '')

  puts "mail._domainkey.#{domain.name}:"
  puts " v=DKIM1; k=rsa; p=#{dkim_public};"
end
regenerate(domain_name = nil) click to toggle source
# File lib/postdb/cli/domains/dkim.rb, line 33
def regenerate(domain_name = nil)
  unless domain_name
    domains = PostDB::Domain.all

    if domains.empty?
      exit_with_warning("There don't appear to be any domains on this system.")
    end

    domain_name = prompt.select("Domain:", domains.map(&:name))
  end

  domain_name = domain_name.downcase

  domains = PostDB::Domain.where(name: domain_name)

  if domains.empty?
    exit_with_warning("The domain '#{domain_name}' could not be found.")
  end

  unless options[:force]
    confirm_action!("Regenerate the DKIM key for '#{domain_name}'?", "'#{domain_name}' left untouched.")
  end

  domains.each do |domain|
    domain.regenerate_dkim

    unless domain.save
      exit_with_error("The DKIM key for '#{domain_name}' couldn't be regenerated.")
    end
  end

  prompt.ok("The DKIM key for '#{domain_name}' has been regenerated.")
end