mirror of
https://github.com/internetee/registry.git
synced 2025-08-04 17:01:44 +02:00
parent
0893d5b6f2
commit
fc71bf93e7
46 changed files with 21 additions and 1487 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -1,5 +0,0 @@
|
|||
class KeyrelayVersion < PaperTrail::Version
|
||||
include VersionSession
|
||||
self.table_name = :log_keyrelays
|
||||
self.sequence_name = :log_keyrelays_id_seq
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue