Skip to content

Commit

Permalink
Move CsyncRecord::Diggable out of Concerns namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
karlerikounapuu committed Mar 22, 2021
1 parent fb08537 commit 7c6f5d9
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 47 deletions.
88 changes: 42 additions & 46 deletions app/models/concerns/csync_record/diggable.rb
Original file line number Diff line number Diff line change
@@ -1,49 +1,45 @@
module Concerns
module CsyncRecord
module Diggable
extend ActiveSupport::Concern

def valid_security_level?(post: false)
res = post ? valid_post_action? : valid_pre_action?

log_dnssec_entry(valid: res, post: post)
res
rescue Dnsruby::NXDomain
log.info "CsyncRecord: #{domain.name}: Could not resolve (NXDomain)"
false
end

def valid_pre_action?
case domain.dnssec_security_level
when Dnsruby::Message::SecurityLevel.SECURE
return true if %w[rollover deactivate].include? action
when Dnsruby::Message::SecurityLevel.INSECURE, Dnsruby::Message::SecurityLevel.BOGUS
return true if action == 'initialized'
end

false
end

def valid_post_action?
secure_msg = Dnsruby::Message::SecurityLevel.SECURE
security_level = domain.dnssec_security_level(stubber: dnskey)
return true if action == 'deactivate' && security_level != secure_msg
return true if %w[rollover initialized].include?(action) && security_level == secure_msg

false
end

def dnssec_validates?
return false unless dnskey.valid?
return true if valid_security_level? && valid_security_level?(post: true)

false
end

def log_dnssec_entry(valid:, post:)
log.info "#{domain.name}: #{post ? 'Post' : 'Pre'} DNSSEC validation " \
"#{valid ? 'PASSED' : 'FAILED'} for action '#{action}'"
end
module CsyncRecord::Diggable
extend ActiveSupport::Concern

def valid_security_level?(post: false)
res = post ? valid_post_action? : valid_pre_action?

log_dnssec_entry(valid: res, post: post)
res
rescue Dnsruby::NXDomain
log.info("CsyncRecord: #{domain.name}: Could not resolve (NXDomain)")
false
end

def valid_pre_action?
case domain.dnssec_security_level
when Dnsruby::Message::SecurityLevel.SECURE
return true if %w[rollover deactivate].include?(action)
when Dnsruby::Message::SecurityLevel.INSECURE, Dnsruby::Message::SecurityLevel.BOGUS
return true if action == 'initialized'
end

false
end

def valid_post_action?
secure_msg = Dnsruby::Message::SecurityLevel.SECURE
security_level = domain.dnssec_security_level(stubber: dnskey)
return true if action == 'deactivate' && security_level != secure_msg
return true if %w[rollover initialized].include?(action) && security_level == secure_msg

false
end

def dnssec_validates?
return false unless dnskey.valid?
return true if valid_security_level? && valid_security_level?(post: true)

false
end

def log_dnssec_entry(valid:, post:)
log.info("#{domain.name}: #{post ? 'Post' : 'Pre'} DNSSEC validation " \
"#{valid ? 'PASSED' : 'FAILED'} for action '#{action}'")
end
end
2 changes: 1 addition & 1 deletion app/models/csync_record.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

class CsyncRecord < ApplicationRecord
include Concerns::CsyncRecord::Diggable
include CsyncRecord::Diggable
belongs_to :domain, optional: false
validates :domain, uniqueness: true
validates :cdnskey, :action, :last_scan, presence: true
Expand Down

0 comments on commit 7c6f5d9

Please sign in to comment.