Remove unimplemented Keyrelay feature

Closes #715
This commit is contained in:
Artur Beljajev 2019-09-17 14:52:21 +03:00
parent 0893d5b6f2
commit fc71bf93e7
46 changed files with 21 additions and 1487 deletions

View file

@ -34,8 +34,6 @@ class Ability
if @user.registrar.api_ip_white?(@ip)
can :manage, :poll
can :manage, Depp::Contact
# can :manage, Depp::Keyrelay # TODO: Keyrelay is disabled for now
# can :confirm, :keyrelay # TODO: Keyrelay is disabled for now
can :manage, :xml_console
can :manage, Depp::Domain
end
@ -95,7 +93,6 @@ class Ability
can :manage, ApiUser
can :manage, AdminUser
can :manage, Certificate
can :manage, Keyrelay
can :manage, LegalDocument
can :manage, BankStatement
can :manage, BankTransaction

View file

@ -121,16 +121,6 @@ module Depp
}, op, Domain.construct_custom_params_hash(params)))
end
def confirm_keyrelay(domain_params)
xml = epp_xml.update({
name: { value: domain_params[:name] }
}, {
add: Domain.create_dnskeys_hash(domain_params)
})
current_user.request(xml)
end
def confirm_transfer(domain_params)
data = current_user.request(epp_xml.info(name: { value: domain_params[:name] }))
pw = data.css('pw').text

View file

@ -1,45 +0,0 @@
module Depp
class Keyrelay
attr_accessor :current_user, :epp_xml
def initialize(args = {})
self.current_user = args[:current_user]
self.epp_xml = EppXml::Keyrelay.new(cl_trid_prefix: current_user.tag)
end
def keyrelay(params)
custom_params = {}
if params[:legal_document].present?
type = params[:legal_document].original_filename.split('.').last.downcase
custom_params = {
_anonymus: [
legalDocument: { value: Base64.encode64(params[:legal_document].read), attrs: { type: type } }
]
}
end
xml = epp_xml.keyrelay({
name: { value: params['domain_name'] },
keyData: {
flags: { value: params['key_data_flags'] },
protocol: { value: params['key_data_protocol'] },
alg: { value: params['key_data_alg'] },
pubKey: { value: params['key_data_public_key'] }
},
authInfo: {
pw: { value: params['password'] }
},
expiry: expiry(params['expiry'])
}, custom_params)
current_user.request(xml)
end
def expiry(value)
ISO8601::Duration.new(value)
{ relative: { value: value } }
rescue => _e
{ absolute: { value: value } }
end
end
end

View file

@ -51,7 +51,6 @@ class Domain < ActiveRecord::Base
has_many :dnskeys, dependent: :destroy
has_many :keyrelays
has_one :whois_record # destroyment will be done in after_commit
accepts_nested_attributes_for :dnskeys, allow_destroy: true

View file

@ -691,52 +691,6 @@ class Epp::Domain < Domain
pt
end
def keyrelay(parsed_frame, requester)
if registrar == requester
errors.add(:base, :domain_already_belongs_to_the_querying_registrar) and return false
end
abs_datetime = parsed_frame.css('absolute').text
abs_datetime = DateTime.zone.parse(abs_datetime) if abs_datetime.present?
transaction do
kr = keyrelays.build(
pa_date: Time.zone.now,
key_data_flags: parsed_frame.css('flags').text,
key_data_protocol: parsed_frame.css('protocol').text,
key_data_alg: parsed_frame.css('alg').text,
key_data_public_key: parsed_frame.css('pubKey').text,
auth_info_pw: parsed_frame.css('pw').text,
expiry_relative: parsed_frame.css('relative').text,
expiry_absolute: abs_datetime,
requester: requester,
accepter: registrar
)
legal_document_data = self.class.parse_legal_document_from_frame(parsed_frame)
if legal_document_data
kr.legal_documents.build(
document_type: legal_document_data[:type],
body: legal_document_data[:body]
)
end
kr.save
return false unless valid?
registrar.notifications.create!(
text: 'Key Relay action completed successfully.',
attached_obj_type: kr.class.to_s,
attached_obj_id: kr.id
)
end
true
end
### VALIDATIONS ###
def validate_exp_dates(cur_exp_date)
begin
return if cur_exp_date.to_date == valid_to.to_date

View file

@ -1,61 +0,0 @@
class Keyrelay < ActiveRecord::Base
include Versions # version/keyrelay_version.rb
include EppErrors
belongs_to :domain
belongs_to :requester, class_name: 'Registrar'
belongs_to :accepter, class_name: 'Registrar'
has_many :legal_documents, as: :documentable
delegate :name, to: :domain, prefix: true
validates :domain, :key_data_public_key, :key_data_flags, :key_data_protocol,
:key_data_alg, :auth_info_pw, presence: true
validates :expiry_relative, duration_iso8601: true
validate :validate_expiry_relative_xor_expiry_absolute
after_save :touch_domain_version
def epp_code_map
{
'2005' => [
[:expiry_relative, :unknown_pattern, { value: { obj: 'relative', val: expiry_relative } }]
],
'2003' => [
# TODO: Remove only_one_parameter_allowed and other params that are validated in controller?
[:base, :only_one_parameter_allowed, { param_1: 'relative', param_2: 'absolute' }],
[:key_data_public_key, :blank],
[:key_data_flags, :blank],
[:key_data_protocol, :blank],
[:key_data_alg, :blank],
[:auth_info_pw, :blank]
]
}
end
def expiry
if expiry_relative.present?
pa_date + ISO8601::Duration.new(expiry_relative).to_seconds
elsif expiry_absolute
expiry_absolute
end
end
def status
if Time.zone.now > expiry
return 'expired'
else
return 'pending'
end
end
private
def validate_expiry_relative_xor_expiry_absolute
return if expiry_relative.blank? ^ expiry_absolute.blank?
errors.add(:base, I18n.t(:only_one_parameter_allowed, param_1: 'relative', param_2: 'absolute'))
end
end

View file

@ -1,5 +0,0 @@
class KeyrelayVersion < PaperTrail::Version
include VersionSession
self.table_name = :log_keyrelays
self.sequence_name = :log_keyrelays_id_seq
end