mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 05:34:46 +02:00
fixed codeclimate errors (partically)
This commit is contained in:
parent
3f41ce4ab4
commit
f4e0084895
103 changed files with 339 additions and 367 deletions
|
@ -1,7 +1,9 @@
|
||||||
version: "2"
|
version: "2"
|
||||||
prepare:
|
prepare:
|
||||||
fetch:
|
fetch:
|
||||||
- "https://raw.githubusercontent.com/internetee/style-guide/master/ruby/.rubocop.yml"
|
- "https://raw.githubusercontent.com/internetee/style-guide/adding-new-rules/.rubocop-ruby.yml"
|
||||||
|
- url: "https://raw.githubusercontent.com/internetee/style-guide/adding-new-rules/.rubocop-rails.yml"
|
||||||
|
path: ".rubocop.yml"
|
||||||
plugins:
|
plugins:
|
||||||
brakeman:
|
brakeman:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
22
Gemfile
22
Gemfile
|
@ -5,8 +5,8 @@ gem 'active_interaction', '~> 4.0'
|
||||||
gem 'apipie-rails', '~> 0.5.19'
|
gem 'apipie-rails', '~> 0.5.19'
|
||||||
gem 'bootsnap', '>= 1.1.0', require: false
|
gem 'bootsnap', '>= 1.1.0', require: false
|
||||||
gem 'iso8601', '0.13.0' # for dates and times
|
gem 'iso8601', '0.13.0' # for dates and times
|
||||||
gem 'mime-types-data'
|
|
||||||
gem 'mimemagic', '0.4.3'
|
gem 'mimemagic', '0.4.3'
|
||||||
|
gem 'mime-types-data'
|
||||||
gem 'puma'
|
gem 'puma'
|
||||||
gem 'rails', '~> 6.1.4'
|
gem 'rails', '~> 6.1.4'
|
||||||
gem 'rest-client'
|
gem 'rest-client'
|
||||||
|
@ -29,22 +29,22 @@ gem 'nokogiri', '~> 1.12.4'
|
||||||
|
|
||||||
# style
|
# style
|
||||||
gem 'bootstrap-sass', '~> 3.4'
|
gem 'bootstrap-sass', '~> 3.4'
|
||||||
|
gem 'cancancan'
|
||||||
gem 'coderay', '1.1.3' # xml console visualize
|
gem 'coderay', '1.1.3' # xml console visualize
|
||||||
gem 'coffee-rails', '>= 5.0'
|
gem 'coffee-rails', '>= 5.0'
|
||||||
|
gem 'devise', '~> 4.8'
|
||||||
gem 'jquery-rails'
|
gem 'jquery-rails'
|
||||||
gem 'selectize-rails', '0.12.6' # include selectize.js for select
|
|
||||||
gem 'kaminari'
|
gem 'kaminari'
|
||||||
gem 'sass-rails'
|
gem 'sass-rails'
|
||||||
gem 'select2-rails', '4.0.13' # for autocomplete
|
gem 'select2-rails', '4.0.13' # for autocomplete
|
||||||
gem 'cancancan'
|
gem 'selectize-rails', '0.12.6' # include selectize.js for select
|
||||||
gem 'devise', '~> 4.8'
|
|
||||||
|
|
||||||
# registry specfic
|
# registry specfic
|
||||||
gem 'data_migrate', '~> 7.0'
|
gem 'data_migrate', '~> 7.0'
|
||||||
gem 'dnsruby', '~> 1.61'
|
gem 'dnsruby', '~> 1.61'
|
||||||
gem 'isikukood' # for EE-id validation
|
gem 'isikukood' # for EE-id validation
|
||||||
gem 'simpleidn', '0.2.1' # For punycode
|
|
||||||
gem 'money-rails'
|
gem 'money-rails'
|
||||||
|
gem 'simpleidn', '0.2.1' # For punycode
|
||||||
gem 'whenever', '1.0.0', require: false
|
gem 'whenever', '1.0.0', require: false
|
||||||
|
|
||||||
# country listing
|
# country listing
|
||||||
|
@ -62,22 +62,22 @@ gem 'omniauth-rails_csrf_protection'
|
||||||
gem 'omniauth-tara', github: 'internetee/omniauth-tara'
|
gem 'omniauth-tara', github: 'internetee/omniauth-tara'
|
||||||
|
|
||||||
|
|
||||||
|
gem 'airbrake'
|
||||||
|
gem 'daemons-rails', '1.2.1'
|
||||||
gem 'epp', github: 'internetee/epp', branch: :master
|
gem 'epp', github: 'internetee/epp', branch: :master
|
||||||
gem 'epp-xml', '1.2.0', github: 'internetee/epp-xml', branch: :master
|
gem 'epp-xml', '1.2.0', github: 'internetee/epp-xml', branch: :master
|
||||||
|
gem 'jquery-ui-rails', '6.0.1'
|
||||||
|
gem 'pdfkit'
|
||||||
gem 'que'
|
gem 'que'
|
||||||
gem 'daemons-rails', '1.2.1'
|
|
||||||
gem 'que-web'
|
gem 'que-web'
|
||||||
gem 'sidekiq'
|
gem 'sidekiq'
|
||||||
gem 'pdfkit'
|
|
||||||
gem 'jquery-ui-rails', '6.0.1'
|
|
||||||
gem 'airbrake'
|
|
||||||
|
|
||||||
gem 'company_register', github: 'internetee/company_register',
|
gem 'company_register', github: 'internetee/company_register',
|
||||||
branch: 'master'
|
branch: 'master'
|
||||||
gem 'e_invoice', github: 'internetee/e_invoice', branch: :master
|
|
||||||
gem 'lhv', github: 'internetee/lhv', branch: 'master'
|
|
||||||
gem 'domain_name'
|
gem 'domain_name'
|
||||||
|
gem 'e_invoice', github: 'internetee/e_invoice', branch: :master
|
||||||
gem 'haml', '~> 5.2'
|
gem 'haml', '~> 5.2'
|
||||||
|
gem 'lhv', github: 'internetee/lhv', branch: 'master'
|
||||||
gem 'rexml'
|
gem 'rexml'
|
||||||
gem 'wkhtmltopdf-binary', '~> 0.12.5.1'
|
gem 'wkhtmltopdf-binary', '~> 0.12.5.1'
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,12 @@ module Admin
|
||||||
|
|
||||||
def admin_user_params
|
def admin_user_params
|
||||||
params.require(:admin_user).permit(:username,
|
params.require(:admin_user).permit(:username,
|
||||||
:password, :password_confirmation, :identity_code, :email, :country_code, { roles: [] })
|
:password,
|
||||||
|
:password_confirmation,
|
||||||
|
:identity_code,
|
||||||
|
:email,
|
||||||
|
:country_code,
|
||||||
|
{ roles: [] })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -61,9 +61,9 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def bank_statement_params
|
def bank_statement_params
|
||||||
params.require(:bank_statement).permit(:bank_code, :iban, bank_transactions_attributes: [
|
params.require(:bank_statement).permit(:bank_code, :iban, bank_transactions_attributes: %i[
|
||||||
:description, :sum, :currency, :reference_no, :paid_at
|
description sum currency reference_no paid_at
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,7 +43,6 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def blocked_domain_params
|
def blocked_domain_params
|
||||||
params.require(:blocked_domain).permit(:name)
|
params.require(:blocked_domain).permit(:name)
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,19 +11,20 @@ module Admin
|
||||||
@versions = @q.result.page(params[:page])
|
@versions = @q.result.page(params[:page])
|
||||||
search_params = params[:q].deep_dup
|
search_params = params[:q].deep_dup
|
||||||
|
|
||||||
whereS = "1=1"
|
where_s = "1=1"
|
||||||
|
|
||||||
search_params.each do |key, value|
|
search_params.each do |key, value|
|
||||||
next if value.empty?
|
next if value.empty?
|
||||||
case key
|
|
||||||
when 'event'
|
where_s += case key
|
||||||
whereS += " AND event = '#{value}'"
|
when 'event'
|
||||||
else
|
" AND event = '#{value}'"
|
||||||
whereS += create_where_string(key, value)
|
else
|
||||||
end
|
create_where_string(key, value)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
versions = Version::ContactVersion.includes(:item).where(whereS).order(created_at: :desc, id: :desc)
|
versions = Version::ContactVersion.includes(:item).where(where_s).order(created_at: :desc, id: :desc)
|
||||||
@q = versions.search(params[:q])
|
@q = versions.search(params[:q])
|
||||||
@versions = @q.result.page(params[:page])
|
@versions = @q.result.page(params[:page])
|
||||||
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
|
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
|
||||||
|
|
|
@ -9,7 +9,8 @@ module Admin
|
||||||
params[:q] ||= {}
|
params[:q] ||= {}
|
||||||
search_params = params[:q].deep_dup
|
search_params = params[:q].deep_dup
|
||||||
|
|
||||||
if search_params[:domain_contacts_type_in].is_a?(Array) && search_params[:domain_contacts_type_in].delete('registrant')
|
if search_params[:domain_contacts_type_in].is_a?(Array) &&
|
||||||
|
search_params[:domain_contacts_type_in].delete('registrant')
|
||||||
search_params[:registrant_domains_id_not_null] = 1
|
search_params[:registrant_domains_id_not_null] = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,4 +4,4 @@ module Admin
|
||||||
|
|
||||||
def show; end
|
def show; end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,26 +21,31 @@ module Admin
|
||||||
search_params.delete(:registrar)
|
search_params.delete(:registrar)
|
||||||
end
|
end
|
||||||
|
|
||||||
whereS = "1=1"
|
where_s = "1=1"
|
||||||
|
|
||||||
search_params.each do |key, value|
|
search_params.each do |key, value|
|
||||||
next if value.empty?
|
next if value.empty?
|
||||||
case key
|
|
||||||
when 'event'
|
where_s += case key
|
||||||
whereS += " AND event = '#{value}'"
|
when 'event'
|
||||||
when 'name'
|
" AND event = '#{value}'"
|
||||||
whereS += " AND (object->>'name' ~* '#{value}' OR object_changes->>'name' ~* '#{value}')"
|
when 'name'
|
||||||
else
|
" AND (object->>'name' ~* '#{value}' OR object_changes->>'name' ~* '#{value}')"
|
||||||
whereS += create_where_string(key, value)
|
else
|
||||||
end
|
create_where_string(key, value)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
whereS += " AND object->>'registrant_id' IN (#{registrants.map { |r| "'#{r.id.to_s}'" }.join ','})" if registrants.present?
|
if registrants.present?
|
||||||
whereS += " AND 1=0" if registrants == []
|
where_s += " AND object->>'registrant_id' IN (#{registrants.map { |r| "'#{r.id}'" }.join ','})"
|
||||||
whereS += " AND object->>'registrar_id' IN (#{registrars.map { |r| "'#{r.id.to_s}'" }.join ','})" if registrars.present?
|
end
|
||||||
whereS += " AND 1=0" if registrars == []
|
where_s += " AND 1=0" if registrants == []
|
||||||
|
if registrars.present?
|
||||||
|
where_s += " AND object->>'registrar_id' IN (#{registrars.map { |r| "'#{r.id}'" }.join ','})"
|
||||||
|
end
|
||||||
|
where_s += " AND 1=0" if registrars == []
|
||||||
|
|
||||||
versions = Version::DomainVersion.includes(:item).where(whereS).order(created_at: :desc, id: :desc)
|
versions = Version::DomainVersion.includes(:item).where(where_s).order(created_at: :desc, id: :desc)
|
||||||
@q = versions.search(params[:q])
|
@q = versions.search(params[:q])
|
||||||
@versions = @q.result.page(params[:page])
|
@versions = @q.result.page(params[:page])
|
||||||
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
|
@versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
|
||||||
|
|
|
@ -5,20 +5,19 @@ module Admin
|
||||||
|
|
||||||
def index
|
def index
|
||||||
params[:q] ||= {}
|
params[:q] ||= {}
|
||||||
if params[:statuses_contains]
|
domains = if params[:statuses_contains]
|
||||||
domains = Domain.includes(:registrar, :registrant).where(
|
Domain.includes(:registrar, :registrant).where(
|
||||||
"domains.statuses @> ?::varchar[]", "{#{params[:statuses_contains].join(',')}}"
|
"domains.statuses @> ?::varchar[]", "{#{params[:statuses_contains].join(',')}}"
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
domains = Domain.includes(:registrar, :registrant)
|
Domain.includes(:registrar, :registrant)
|
||||||
end
|
end
|
||||||
|
|
||||||
normalize_search_parameters do
|
normalize_search_parameters do
|
||||||
@q = domains.search(params[:q])
|
@q = domains.search(params[:q])
|
||||||
@domains = @q.result.page(params[:page])
|
@domains = @q.result.page(params[:page])
|
||||||
if @domains.count == 1 && params[:q][:name_matches].present?
|
(redirect_to [:admin, @domains.first] and return if @domains.count == 1 && params[:q][:name_matches].present?)
|
||||||
redirect_to [:admin, @domains.first] and return
|
if @domains.count.zero? && params[:q][:name_matches] !~ /^%.+%$/
|
||||||
elsif @domains.count == 0 && params[:q][:name_matches] !~ /^%.+%$/
|
|
||||||
# if we do not get any results, add wildcards to the name field and search again
|
# if we do not get any results, add wildcards to the name field and search again
|
||||||
n_cache = params[:q][:name_matches]
|
n_cache = params[:q][:name_matches]
|
||||||
params[:q][:name_matches] = "%#{params[:q][:name_matches]}%"
|
params[:q][:name_matches] = "%#{params[:q][:name_matches]}%"
|
||||||
|
@ -51,7 +50,7 @@ module Admin
|
||||||
redirect_to [:admin, @domain]
|
redirect_to [:admin, @domain]
|
||||||
else
|
else
|
||||||
build_associations
|
build_associations
|
||||||
flash.now[:alert] = I18n.t('failed_to_update_domain') + ' ' + @domain.errors.full_messages.join(", ")
|
flash.now[:alert] = "#{I18n.t('failed_to_update_domain')} #{@domain.errors.full_messages.join(', ')}"
|
||||||
render 'edit'
|
render 'edit'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,8 +8,14 @@ module Admin
|
||||||
@q.sorts = 'id desc' if @q.sorts.empty?
|
@q.sorts = 'id desc' if @q.sorts.empty?
|
||||||
|
|
||||||
@epp_logs = @q.result
|
@epp_logs = @q.result
|
||||||
@epp_logs = @epp_logs.where("extract(epoch from created_at) >= extract(epoch from ?::timestamp)", Time.parse(params[:q][:created_at_gteq])) if params[:q][:created_at_gteq].present?
|
if params[:q][:created_at_gteq].present?
|
||||||
@epp_logs = @epp_logs.where("extract(epoch from created_at) <= extract(epoch from ?::timestamp)", Time.parse(params[:q][:created_at_lteq])) if params[:q][:created_at_lteq].present?
|
@epp_logs = @epp_logs.where("extract(epoch from created_at) >= extract(epoch from ?::timestamp)",
|
||||||
|
Time.parse(params[:q][:created_at_gteq]))
|
||||||
|
end
|
||||||
|
if params[:q][:created_at_lteq].present?
|
||||||
|
@epp_logs = @epp_logs.where("extract(epoch from created_at) <= extract(epoch from ?::timestamp)",
|
||||||
|
Time.parse(params[:q][:created_at_lteq]))
|
||||||
|
end
|
||||||
@epp_logs = @epp_logs.page(params[:page])
|
@epp_logs = @epp_logs.page(params[:page])
|
||||||
|
|
||||||
render_by_format('admin/epp_logs/index', 'epp_logs')
|
render_by_format('admin/epp_logs/index', 'epp_logs')
|
||||||
|
|
|
@ -10,4 +10,4 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,8 +8,14 @@ module Admin
|
||||||
@q.sorts = 'id desc' if @q.sorts.empty?
|
@q.sorts = 'id desc' if @q.sorts.empty?
|
||||||
|
|
||||||
@repp_logs = @q.result
|
@repp_logs = @q.result
|
||||||
@repp_logs = @repp_logs.where("extract(epoch from created_at) >= extract(epoch from ?::timestamp)", Time.parse(params[:q][:created_at_gteq])) if params[:q][:created_at_gteq].present?
|
if params[:q][:created_at_gteq].present?
|
||||||
@repp_logs = @repp_logs.where("extract(epoch from created_at) <= extract(epoch from ?::timestamp)", Time.parse(params[:q][:created_at_lteq])) if params[:q][:created_at_lteq].present?
|
@repp_logs = @repp_logs.where("extract(epoch from created_at) >= extract(epoch from ?::timestamp)",
|
||||||
|
Time.parse(params[:q][:created_at_gteq]))
|
||||||
|
end
|
||||||
|
if params[:q][:created_at_lteq].present?
|
||||||
|
@repp_logs = @repp_logs.where("extract(epoch from created_at) <= extract(epoch from ?::timestamp)",
|
||||||
|
Time.parse(params[:q][:created_at_lteq]))
|
||||||
|
end
|
||||||
@repp_logs = @repp_logs.page(params[:page])
|
@repp_logs = @repp_logs.page(params[:page])
|
||||||
@count = @q.result.count
|
@count = @q.result.count
|
||||||
@repp_logs = @repp_logs.per(params[:results_per_page]) if paginate?
|
@repp_logs = @repp_logs.per(params[:results_per_page]) if paginate?
|
||||||
|
|
|
@ -14,4 +14,4 @@ module Admin
|
||||||
current_admin_user ? current_admin_user.id_role_username : 'anonymous'
|
current_admin_user ? current_admin_user.id_role_username : 'anonymous'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -45,8 +45,7 @@ module Api
|
||||||
|
|
||||||
def create_token(user)
|
def create_token(user)
|
||||||
token_creator = AuthTokenCreator.create_with_defaults(user)
|
token_creator = AuthTokenCreator.create_with_defaults(user)
|
||||||
hash = token_creator.token_in_hash
|
token_creator.token_in_hash
|
||||||
hash
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_ip_whitelist
|
def check_ip_whitelist
|
||||||
|
|
|
@ -103,9 +103,10 @@ module Api
|
||||||
end
|
end
|
||||||
|
|
||||||
def verify_action
|
def verify_action
|
||||||
action = if params[:template] == 'change'
|
action = case params[:template]
|
||||||
|
when 'change'
|
||||||
@domain.registrant_update_confirmable?(verify_params[:token])
|
@domain.registrant_update_confirmable?(verify_params[:token])
|
||||||
elsif params[:template] == 'delete'
|
when 'delete'
|
||||||
@domain.registrant_delete_confirmable?(verify_params[:token])
|
@domain.registrant_delete_confirmable?(verify_params[:token])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -77,9 +77,7 @@ module Api
|
||||||
render json: { errors: [{ address: [error_msg] }] }, status: :bad_request and return
|
render json: { errors: [{ address: [error_msg] }] }, status: :bad_request and return
|
||||||
end
|
end
|
||||||
|
|
||||||
if ENV['fax_enabled'] == 'true'
|
contact.fax = params[:fax] if ENV['fax_enabled'] == 'true' && params[:fax].present?
|
||||||
contact.fax = params[:fax] if params[:fax].present?
|
|
||||||
end
|
|
||||||
|
|
||||||
logger.debug "ENV['fax_enabled'] is set to #{ENV['fax_enabled']}"
|
logger.debug "ENV['fax_enabled'] is set to #{ENV['fax_enabled']}"
|
||||||
if ENV['fax_enabled'] != 'true' && params[:fax]
|
if ENV['fax_enabled'] != 'true' && params[:fax]
|
||||||
|
|
|
@ -303,7 +303,10 @@ module Epp
|
||||||
if request_command == 'login' && frame.present?
|
if request_command == 'login' && frame.present?
|
||||||
frame.gsub!(/pw>.+<\//, 'pw>[FILTERED]</')
|
frame.gsub!(/pw>.+<\//, 'pw>[FILTERED]</')
|
||||||
end
|
end
|
||||||
trimmed_request = frame.gsub(/<eis:legalDocument([^>]+)>([^<])+<\/eis:legalDocument>/, "<eis:legalDocument>[FILTERED]</eis:legalDocument>") if frame.present?
|
if frame.present?
|
||||||
|
trimmed_request = frame.gsub(/<eis:legalDocument([^>]+)>([^<])+<\/eis:legalDocument>/,
|
||||||
|
"<eis:legalDocument>[FILTERED]</eis:legalDocument>")
|
||||||
|
end
|
||||||
|
|
||||||
ApiLog::EppLog.create({
|
ApiLog::EppLog.create({
|
||||||
request: trimmed_request,
|
request: trimmed_request,
|
||||||
|
@ -312,7 +315,8 @@ module Epp
|
||||||
request_object: resource ? "#{params[:epp_object_type]}: #{resource.class} - #{resource.id} - #{resource.name}" : params[:epp_object_type],
|
request_object: resource ? "#{params[:epp_object_type]}: #{resource.class} - #{resource.id} - #{resource.name}" : params[:epp_object_type],
|
||||||
response: @response,
|
response: @response,
|
||||||
api_user_name: @api_user.try(:username) || current_user.try(:username) || 'api-public',
|
api_user_name: @api_user.try(:username) || current_user.try(:username) || 'api-public',
|
||||||
api_user_registrar: @api_user.try(:registrar).try(:to_s) || current_user.try(:registrar).try(:to_s),
|
api_user_registrar: @api_user.try(:registrar).try(:to_s) ||
|
||||||
|
current_user.try(:registrar).try(:to_s),
|
||||||
ip: request.ip,
|
ip: request.ip,
|
||||||
uuid: request.uuid
|
uuid: request.uuid
|
||||||
})
|
})
|
||||||
|
|
|
@ -155,8 +155,8 @@ module Epp
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_update
|
def validate_update
|
||||||
if element_count('update > chg > registrant') > 0
|
if element_count('update > chg > registrant').positive? && current_user.legaldoc_mandatory?
|
||||||
requires 'extension > extdata > legalDocument' if current_user.legaldoc_mandatory?
|
requires 'extension > extdata > legalDocument'
|
||||||
end
|
end
|
||||||
|
|
||||||
@prefix = 'update > update >'
|
@prefix = 'update > update >'
|
||||||
|
|
|
@ -51,6 +51,7 @@ module Epp
|
||||||
end
|
end
|
||||||
|
|
||||||
handle_errors(@notification) and return unless @notification.mark_as_read
|
handle_errors(@notification) and return unless @notification.mark_as_read
|
||||||
|
|
||||||
render_epp_response 'epp/poll/poll_ack'
|
render_epp_response 'epp/poll/poll_ack'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -29,23 +29,19 @@ module Epp
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if !Rails.env.development? && (!webclient_request && @api_user)
|
if !Rails.env.development? && (!webclient_request && @api_user) &&
|
||||||
unless @api_user.pki_ok?(request.env['HTTP_SSL_CLIENT_CERT'],
|
!@api_user.pki_ok?(request.env['HTTP_SSL_CLIENT_CERT'], request.env['HTTP_SSL_CLIENT_S_DN_CN'])
|
||||||
request.env['HTTP_SSL_CLIENT_S_DN_CN'])
|
msg = 'Authentication error; server closing connection (certificate is not valid)'
|
||||||
msg = 'Authentication error; server closing connection (certificate is not valid)'
|
epp_errors.add(:epp_errors,
|
||||||
epp_errors.add(:epp_errors,
|
msg: msg,code: '2501')
|
||||||
msg: msg,
|
|
||||||
code: '2501')
|
|
||||||
|
|
||||||
success = false
|
success = false
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
if success && !@api_user
|
if success && !@api_user
|
||||||
msg = 'Authentication error; server closing connection (API user not found)'
|
msg = 'Authentication error; server closing connection (API user not found)'
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
msg: msg,
|
msg: msg, code: '2501')
|
||||||
code: '2501')
|
|
||||||
|
|
||||||
success = false
|
success = false
|
||||||
end
|
end
|
||||||
|
@ -53,8 +49,7 @@ module Epp
|
||||||
if success && !@api_user.try(:active)
|
if success && !@api_user.try(:active)
|
||||||
msg = 'Authentication error; server closing connection (API user is not active)'
|
msg = 'Authentication error; server closing connection (API user is not active)'
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
msg: msg,
|
msg: msg, code: '2501')
|
||||||
code: '2501')
|
|
||||||
|
|
||||||
success = false
|
success = false
|
||||||
end
|
end
|
||||||
|
@ -62,8 +57,7 @@ module Epp
|
||||||
if success && @api_user.cannot?(:create, :epp_login)
|
if success && @api_user.cannot?(:create, :epp_login)
|
||||||
msg = 'Authentication error; server closing connection (API user does not have epp role)'
|
msg = 'Authentication error; server closing connection (API user does not have epp role)'
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
msg: msg,
|
msg: msg, code: '2501')
|
||||||
code: '2501')
|
|
||||||
|
|
||||||
success = false
|
success = false
|
||||||
end
|
end
|
||||||
|
@ -71,8 +65,7 @@ module Epp
|
||||||
if success && !ip_white?
|
if success && !ip_white?
|
||||||
msg = 'Authentication error; server closing connection (IP is not whitelisted)'
|
msg = 'Authentication error; server closing connection (IP is not whitelisted)'
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
msg: msg,
|
msg: msg, code: '2501')
|
||||||
code: '2501')
|
|
||||||
|
|
||||||
success = false
|
success = false
|
||||||
end
|
end
|
||||||
|
@ -80,8 +73,7 @@ module Epp
|
||||||
if success && EppSession.limit_reached?(@api_user.registrar)
|
if success && EppSession.limit_reached?(@api_user.registrar)
|
||||||
msg = 'Session limit exceeded; server closing connection (connection limit reached)'
|
msg = 'Session limit exceeded; server closing connection (connection limit reached)'
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
msg: msg,
|
msg: msg, code: '2502')
|
||||||
code: '2502')
|
|
||||||
|
|
||||||
success = false
|
success = false
|
||||||
end
|
end
|
||||||
|
@ -99,8 +91,7 @@ module Epp
|
||||||
|
|
||||||
if already_authenticated
|
if already_authenticated
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
msg: 'Command use error; Already authenticated',
|
msg: 'Command use error; Already authenticated', code: 2002)
|
||||||
code: 2002)
|
|
||||||
handle_errors
|
handle_errors
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -118,8 +109,8 @@ module Epp
|
||||||
def ip_white?
|
def ip_white?
|
||||||
webclient_request = ENV['webclient_ips'].split(',').map(&:strip).include?(request.ip)
|
webclient_request = ENV['webclient_ips'].split(',').map(&:strip).include?(request.ip)
|
||||||
return true if webclient_request
|
return true if webclient_request
|
||||||
if @api_user
|
if @api_user && !@api_user.registrar.api_ip_white?(request.ip)
|
||||||
return false unless @api_user.registrar.api_ip_white?(request.ip)
|
return false
|
||||||
end
|
end
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
@ -127,8 +118,7 @@ module Epp
|
||||||
def logout
|
def logout
|
||||||
unless signed_in?
|
unless signed_in?
|
||||||
epp_errors.add(:epp_errors,
|
epp_errors.add(:epp_errors,
|
||||||
code: 2201,
|
code: 2201, msg: 'Authorization error')
|
||||||
msg: 'Authorization error')
|
|
||||||
handle_errors
|
handle_errors
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,4 +31,4 @@ class Registrar
|
||||||
current_registrar_user.registrar.settings['balance_auto_reload']
|
current_registrar_user.registrar.settings['balance_auto_reload']
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -89,7 +89,7 @@ class Registrar
|
||||||
end
|
end
|
||||||
|
|
||||||
def domain_ids_for_bulk_renew
|
def domain_ids_for_bulk_renew
|
||||||
params.dig('domain_ids')&.reject { |id| id.blank? }
|
params['domain_ids']&.reject { |id| id.blank? }
|
||||||
end
|
end
|
||||||
|
|
||||||
def renew_task(domains)
|
def renew_task(domains)
|
||||||
|
|
|
@ -13,7 +13,8 @@ class Registrar
|
||||||
|
|
||||||
search_params = params[:q].deep_dup
|
search_params = params[:q].deep_dup
|
||||||
|
|
||||||
if search_params[:domain_contacts_type_in].is_a?(Array) && search_params[:domain_contacts_type_in].delete('registrant')
|
if search_params[:domain_contacts_type_in].is_a?(Array) &&
|
||||||
|
search_params[:domain_contacts_type_in].delete('registrant')
|
||||||
search_params[:registrant_domains_id_not_null] = 1
|
search_params[:registrant_domains_id_not_null] = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -10,4 +10,4 @@ class Registrar
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,9 +16,7 @@ class Registrar
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@data = depp_current_user.request(@ex.poll(poll: {
|
@data = depp_current_user.request(@ex.poll(poll: { value: '', attrs: { op: 'ack', msgID: params[:id] } }))
|
||||||
value: '', attrs: { op: 'ack', msgID: params[:id] }
|
|
||||||
}))
|
|
||||||
|
|
||||||
@results = @data.css('result')
|
@results = @data.css('result')
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,9 @@ class Registrar
|
||||||
show_error and return
|
show_error and return
|
||||||
end
|
end
|
||||||
|
|
||||||
if @depp_user.pki
|
if @depp_user.pki && !@api_user.pki_ok?(request.env['HTTP_SSL_CLIENT_CERT'],
|
||||||
unless @api_user.pki_ok?(request.env['HTTP_SSL_CLIENT_CERT'],
|
request.env['HTTP_SSL_CLIENT_S_DN_CN'], api: false)
|
||||||
request.env['HTTP_SSL_CLIENT_S_DN_CN'], api: false)
|
@depp_user.errors.add(:base, :invalid_cert)
|
||||||
@depp_user.errors.add(:base, :invalid_cert)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if @depp_user.errors.none?
|
if @depp_user.errors.none?
|
||||||
|
|
|
@ -49,4 +49,4 @@ class Registrar
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ class Registrar
|
||||||
|
|
||||||
def load_xml
|
def load_xml
|
||||||
cl_trid = "#{depp_current_user.tag}-#{Time.zone.now.to_i}"
|
cl_trid = "#{depp_current_user.tag}-#{Time.zone.now.to_i}"
|
||||||
xml_dir_path = Rails.root + 'app/views/registrar/xml_consoles/epp_requests'
|
xml_dir_path = "#{Rails.root}/app/views/registrar/xml_consoles/epp_requests"
|
||||||
xml = File.read("#{xml_dir_path}/#{params[:obj]}/#{params[:epp_action]}.xml")
|
xml = File.read("#{xml_dir_path}/#{params[:obj]}/#{params[:epp_action]}.xml")
|
||||||
xml = prepare_payload(xml, cl_trid)
|
xml = prepare_payload(xml, cl_trid)
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ class Registrar
|
||||||
end
|
end
|
||||||
|
|
||||||
def insert_prefix_and_version(xml, pref, version)
|
def insert_prefix_and_version(xml, pref, version)
|
||||||
xml.gsub!('"' + pref.to_s + '"',
|
xml.gsub!("\"#{pref.to_s}\"",
|
||||||
"\"#{Xsd::Schema.filename(for_prefix: pref.to_s, for_version: version)}\"")
|
"\"#{Xsd::Schema.filename(for_prefix: pref.to_s, for_version: version)}\"")
|
||||||
xml
|
xml
|
||||||
end
|
end
|
||||||
|
|
|
@ -89,13 +89,11 @@ module Repp
|
||||||
|
|
||||||
return contacts.pluck(:code) unless details
|
return contacts.pluck(:code) unless details
|
||||||
|
|
||||||
contacts = contacts.map do |contact|
|
contacts.map do |contact|
|
||||||
serializer = ::Serializers::Repp::Contact.new(contact,
|
serializer = ::Serializers::Repp::Contact.new(contact,
|
||||||
show_address: Contact.address_processing?)
|
show_address: Contact.address_processing?)
|
||||||
serializer.to_json
|
serializer.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
contacts
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def opt_addr?
|
def opt_addr?
|
||||||
|
|
|
@ -53,7 +53,7 @@ module Repp
|
||||||
end
|
end
|
||||||
|
|
||||||
def nameserver_params
|
def nameserver_params
|
||||||
params.permit(:domain_id, nameservers: [[:hostname, :action, ipv4: [], ipv6: []]])
|
params.permit(:domain_id, nameservers: [[:hostname, :action, { ipv4: [], ipv6: [] }]])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -223,7 +223,7 @@ module Repp
|
||||||
params.require(:domain).permit(:name, :registrant, :period, :period_unit, :registrar,
|
params.require(:domain).permit(:name, :registrant, :period, :period_unit, :registrar,
|
||||||
:transfer_code, :reserved_pw,
|
:transfer_code, :reserved_pw,
|
||||||
dnskeys_attributes: [%i[flags alg protocol public_key]],
|
dnskeys_attributes: [%i[flags alg protocol public_key]],
|
||||||
nameservers_attributes: [[:hostname, ipv4: [], ipv6: []]],
|
nameservers_attributes: [[:hostname, { ipv4: [], ipv6: [] }]],
|
||||||
admin_contacts: [], tech_contacts: [])
|
admin_contacts: [], tech_contacts: [])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,7 +6,7 @@ module ApplicationHelper
|
||||||
|
|
||||||
def env_style
|
def env_style
|
||||||
return '' if unstable_env.nil?
|
return '' if unstable_env.nil?
|
||||||
"background-image: url(#{image_path(unstable_env.to_s + '.png')});"
|
"background-image: url(#{image_path("#{unstable_env.to_s}.png")});"
|
||||||
end
|
end
|
||||||
|
|
||||||
def ident_for(contact)
|
def ident_for(contact)
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class ContactDelete
|
class ContactDelete
|
||||||
attr_reader :contact
|
attr_reader :contact, :new_attributes, :legal_document, :ident, :user
|
||||||
attr_reader :new_attributes
|
|
||||||
attr_reader :legal_document
|
|
||||||
attr_reader :ident
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(contact, legal_document = nil)
|
def initialize(contact, legal_document = nil)
|
||||||
@legal_document = legal_document
|
@legal_document = legal_document
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class ContactUpdate
|
class ContactUpdate
|
||||||
attr_reader :contact
|
attr_reader :contact, :new_attributes, :legal_document, :ident, :user
|
||||||
attr_reader :new_attributes
|
|
||||||
attr_reader :legal_document
|
|
||||||
attr_reader :ident
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(contact, new_attributes, legal_document, ident, user)
|
def initialize(contact, new_attributes, legal_document, ident, user)
|
||||||
@contact = contact
|
@contact = contact
|
||||||
|
|
|
@ -6,14 +6,14 @@ module Actions
|
||||||
end
|
end
|
||||||
|
|
||||||
def call
|
def call
|
||||||
response = if Rails.env.test?
|
if Rails.env.test?
|
||||||
do_test_request(@request, @uri)
|
do_test_request(@request, @uri)
|
||||||
elsif Rails.env.development?
|
elsif Rails.env.development?
|
||||||
do_dev_request(@request, @uri)
|
do_dev_request(@request, @uri)
|
||||||
else
|
else
|
||||||
do_live_request(@request, @uri)
|
do_live_request(@request, @uri)
|
||||||
end
|
end
|
||||||
response
|
|
||||||
rescue StandardError, OpenURI::HTTPError => e
|
rescue StandardError, OpenURI::HTTPError => e
|
||||||
Rails.logger.debug e.message
|
Rails.logger.debug e.message
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class DomainDelete
|
class DomainDelete
|
||||||
attr_reader :domain
|
attr_reader :domain, :params, :user
|
||||||
attr_reader :params
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(domain, params, user)
|
def initialize(domain, params, user)
|
||||||
@domain = domain
|
@domain = domain
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class DomainRenew
|
class DomainRenew
|
||||||
attr_reader :domain
|
attr_reader :domain, :params, :user
|
||||||
attr_reader :params
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(domain, params, user)
|
def initialize(domain, params, user)
|
||||||
@domain = domain
|
@domain = domain
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class DomainTransfer
|
class DomainTransfer
|
||||||
attr_reader :domain
|
attr_reader :domain, :transfer_code, :legal_document, :ident, :user
|
||||||
attr_reader :transfer_code
|
|
||||||
attr_reader :legal_document
|
|
||||||
attr_reader :ident
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(domain, transfer_code, user)
|
def initialize(domain, transfer_code, user)
|
||||||
@domain = domain
|
@domain = domain
|
||||||
|
|
|
@ -70,8 +70,9 @@ module Domains
|
||||||
max_reg_time = 11.years.from_now
|
max_reg_time = 11.years.from_now
|
||||||
|
|
||||||
if renewed_expire_time >= max_reg_time
|
if renewed_expire_time >= max_reg_time
|
||||||
domain.add_epp_error('2105', nil, nil, I18n.t('epp.domains.object_is_not_eligible_for_renewal',
|
domain.add_epp_error('2105', nil, nil,
|
||||||
max_date: max_reg_time.to_date.to_s(:db)))
|
I18n.t('epp.domains.object_is_not_eligible_for_renewal',
|
||||||
|
max_date: max_reg_time.to_date.to_s(:db)))
|
||||||
end
|
end
|
||||||
renewed_expire_time
|
renewed_expire_time
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ module Domains
|
||||||
class Base < ActiveInteraction::Base
|
class Base < ActiveInteraction::Base
|
||||||
def to_stdout(message)
|
def to_stdout(message)
|
||||||
time = Time.zone.now.utc
|
time = Time.zone.now.utc
|
||||||
STDOUT << "#{time} - #{message}\n" unless Rails.env.test?
|
$stdout << "#{time} - #{message}\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ module Domains
|
||||||
class Base < ActiveInteraction::Base
|
class Base < ActiveInteraction::Base
|
||||||
def to_stdout(message)
|
def to_stdout(message)
|
||||||
time = Time.zone.now.utc
|
time = Time.zone.now.utc
|
||||||
STDOUT << "#{time} - #{message}\n" unless Rails.env.test?
|
$stdout << "#{time} - #{message}\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
|
|
||||||
def logger
|
def logger
|
||||||
|
|
|
@ -3,7 +3,7 @@ module Domains
|
||||||
class Base < ActiveInteraction::Base
|
class Base < ActiveInteraction::Base
|
||||||
def to_stdout(message)
|
def to_stdout(message)
|
||||||
time = Time.zone.now.utc
|
time = Time.zone.now.utc
|
||||||
STDOUT << "#{time} - #{message}\n" unless Rails.env.test?
|
$stdout << "#{time} - #{message}\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,6 +9,7 @@ module Domains
|
||||||
count = 0
|
count = 0
|
||||||
expired_pending_domains.each do |domain|
|
expired_pending_domains.each do |domain|
|
||||||
log_error(domain) && next unless need_to_be_cleared?(domain)
|
log_error(domain) && next unless need_to_be_cleared?(domain)
|
||||||
|
|
||||||
count += 1
|
count += 1
|
||||||
Domains::ExpiredPendings::ProcessClean.run(domain: domain)
|
Domains::ExpiredPendings::ProcessClean.run(domain: domain)
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,7 +37,7 @@ module Domains
|
||||||
def added_additional_email_into_notes(domain)
|
def added_additional_email_into_notes(domain)
|
||||||
return if domain.status_notes[DomainStatus::FORCE_DELETE].include? email
|
return if domain.status_notes[DomainStatus::FORCE_DELETE].include? email
|
||||||
|
|
||||||
domain.status_notes[DomainStatus::FORCE_DELETE].concat(' ' + email)
|
domain.status_notes[DomainStatus::FORCE_DELETE].concat(" #{email}")
|
||||||
domain.save(validate: false)
|
domain.save(validate: false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ module Domains
|
||||||
class Base < ActiveInteraction::Base
|
class Base < ActiveInteraction::Base
|
||||||
def to_stdout(message)
|
def to_stdout(message)
|
||||||
time = Time.zone.now.utc
|
time = Time.zone.now.utc
|
||||||
STDOUT << "#{time} - #{message}\n" unless Rails.env.test?
|
$stdout << "#{time} - #{message}\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ class CsyncJob < ApplicationJob
|
||||||
@store = {}
|
@store = {}
|
||||||
@input_store = { secure: {}, insecure: {} }
|
@input_store = { secure: {}, insecure: {} }
|
||||||
@results = {}
|
@results = {}
|
||||||
@logger = Rails.env.test? ? Rails.logger : Logger.new(STDOUT)
|
@logger = Rails.env.test? ? Rails.logger : Logger.new($stdout)
|
||||||
generate ? generate_scanner_input : process_scanner_results
|
generate ? generate_scanner_input : process_scanner_results
|
||||||
|
|
||||||
@logger.info 'CsyncJob: Finished.'
|
@logger.info 'CsyncJob: Finished.'
|
||||||
|
@ -121,7 +121,7 @@ class CsyncJob < ApplicationJob
|
||||||
end
|
end
|
||||||
|
|
||||||
out_file.close
|
out_file.close
|
||||||
@logger.info 'CsyncJob Generate: Finished writing output to ' + ENV['cdns_scanner_input_file']
|
@logger.info "CsyncJob Generate: Finished writing output to #{ENV['cdns_scanner_input_file']}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_directory
|
def check_directory
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
class DisputeStatusUpdateJob < ApplicationJob
|
class DisputeStatusUpdateJob < ApplicationJob
|
||||||
def perform(logger: Logger.new(STDOUT))
|
def perform(logger: Logger.new($stdout))
|
||||||
@logger = logger
|
@logger = logger
|
||||||
|
|
||||||
@backlog = { 'activated': 0, 'closed': 0, 'activate_fail': [], 'close_fail': [] }
|
@backlog = { 'activated': 0, 'closed': 0, 'activate_fail': [], 'close_fail': [] }
|
||||||
|
|
|
@ -13,7 +13,8 @@ class RegistrantChangeConfirmEmailJob < ApplicationJob
|
||||||
private
|
private
|
||||||
|
|
||||||
def log(domain)
|
def log(domain)
|
||||||
message = "Send RegistrantChangeMailer#confirm email for domain #{domain.name} (##{domain.id}) to #{domain.registrant.email}"
|
message = 'Send RegistrantChangeMailer#confirm email for domain '\
|
||||||
|
"#{domain.name} (##{domain.id}) to #{domain.registrant.email}"
|
||||||
logger.info(message)
|
logger.info(message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,8 @@ class RegistrantChangeNoticeEmailJob < ApplicationJob
|
||||||
private
|
private
|
||||||
|
|
||||||
def log(domain, new_registrant)
|
def log(domain, new_registrant)
|
||||||
message = "Send RegistrantChangeMailer#notice email for domain #{domain.name} (##{domain.id}) to #{new_registrant.email}"
|
message = 'Send RegistrantChangeMailer#notice email for domain '\
|
||||||
|
"#{domain.name} (##{domain.id}) to #{new_registrant.email}"
|
||||||
logger.info(message)
|
logger.info(message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
class ToStdout
|
class ToStdout
|
||||||
def self.msg(message)
|
def self.msg(message)
|
||||||
time = Time.zone.now.utc
|
time = Time.zone.now.utc
|
||||||
STDOUT << "#{time} - #{message}\n" unless Rails.env.test?
|
$stdout << "#{time} - #{message}\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -58,7 +58,7 @@ class Ability
|
||||||
can(:delete, Epp::Domain) { |d, pw| d.registrar_id == @user.registrar_id || d.transfer_code == pw }
|
can(:delete, Epp::Domain) { |d, pw| d.registrar_id == @user.registrar_id || d.transfer_code == pw }
|
||||||
|
|
||||||
# Epp::Contact
|
# Epp::Contact
|
||||||
can(:info, Epp::Contact) { |c, pw| c.registrar_id == @user.registrar_id || pw.blank? ? true : c.auth_info == pw }
|
can(:info, Epp::Contact) { |c, pw| c.registrar_id == @user.registrar_id || pw.blank? ? true : c.auth_info == pw }
|
||||||
can(:view_full_info, Epp::Contact) { |c, pw| c.registrar_id == @user.registrar_id || c.auth_info == pw }
|
can(:view_full_info, Epp::Contact) { |c, pw| c.registrar_id == @user.registrar_id || c.auth_info == pw }
|
||||||
can(:check, Epp::Contact)
|
can(:check, Epp::Contact)
|
||||||
can(:create, Epp::Contact)
|
can(:create, Epp::Contact)
|
||||||
|
|
|
@ -39,4 +39,3 @@ class AccountActivity < ApplicationRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class ContactDelete
|
class ContactDelete
|
||||||
attr_reader :contact
|
attr_reader :contact, :new_attributes, :legal_document, :ident, :user
|
||||||
attr_reader :new_attributes
|
|
||||||
attr_reader :legal_document
|
|
||||||
attr_reader :ident
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(contact, legal_document = nil)
|
def initialize(contact, legal_document = nil)
|
||||||
@legal_document = legal_document
|
@legal_document = legal_document
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class ContactUpdate
|
class ContactUpdate
|
||||||
attr_reader :contact
|
attr_reader :contact, :new_attributes, :legal_document, :ident, :user
|
||||||
attr_reader :new_attributes
|
|
||||||
attr_reader :legal_document
|
|
||||||
attr_reader :ident
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(contact, new_attributes, legal_document, ident, user)
|
def initialize(contact, new_attributes, legal_document, ident, user)
|
||||||
@contact = contact
|
@contact = contact
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
module Actions
|
module Actions
|
||||||
class DomainTransfer
|
class DomainTransfer
|
||||||
attr_reader :domain
|
attr_reader :domain, :transfer_code, :legal_document, :ident, :user
|
||||||
attr_reader :transfer_code
|
|
||||||
attr_reader :legal_document
|
|
||||||
attr_reader :ident
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def initialize(domain, transfer_code, user)
|
def initialize(domain, transfer_code, user)
|
||||||
@domain = domain
|
@domain = domain
|
||||||
|
|
|
@ -2,8 +2,7 @@ module BalanceAutoReloadTypes
|
||||||
class Threshold
|
class Threshold
|
||||||
include ActiveModel::Model
|
include ActiveModel::Model
|
||||||
|
|
||||||
attr_accessor :amount
|
attr_accessor :amount, :threshold
|
||||||
attr_accessor :threshold
|
|
||||||
|
|
||||||
validates :amount, numericality: { greater_than_or_equal_to: :min_amount }
|
validates :amount, numericality: { greater_than_or_equal_to: :min_amount }
|
||||||
validates :threshold, numericality: { greater_than_or_equal_to: 0 }
|
validates :threshold, numericality: { greater_than_or_equal_to: 0 }
|
||||||
|
@ -22,4 +21,4 @@ module BalanceAutoReloadTypes
|
||||||
self.class.name.demodulize.underscore
|
self.class.name.demodulize.underscore
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,7 +9,8 @@ module Billing
|
||||||
|
|
||||||
validates :price, :valid_from, :operation_category, :duration, presence: true
|
validates :price, :valid_from, :operation_category, :duration, presence: true
|
||||||
validates :operation_category, inclusion: { in: Proc.new { |price| price.class.operation_categories } }
|
validates :operation_category, inclusion: { in: Proc.new { |price| price.class.operation_categories } }
|
||||||
validates :duration, inclusion: { in: Proc.new { |price| price.class.durations.values } }, if: :should_validate_duration?
|
validates :duration, inclusion: { in: Proc.new { |price| price.class.durations.values } },
|
||||||
|
if: :should_validate_duration?
|
||||||
|
|
||||||
alias_attribute :effect_time, :valid_from
|
alias_attribute :effect_time, :valid_from
|
||||||
alias_attribute :expire_time, :valid_to
|
alias_attribute :expire_time, :valid_to
|
||||||
|
|
|
@ -83,10 +83,11 @@ class Certificate < ApplicationRecord
|
||||||
csr_file.rewind
|
csr_file.rewind
|
||||||
|
|
||||||
crt_file = Tempfile.new('client_crt')
|
crt_file = Tempfile.new('client_crt')
|
||||||
_out, err, _st = Open3.capture3("openssl ca -config #{ENV['openssl_config_path']} -keyfile #{ENV['ca_key_path']} \
|
_out, err, _st = Open3.capture3("openssl ca -config #{ENV['openssl_config_path']} \
|
||||||
-cert #{ENV['ca_cert_path']} \
|
-keyfile #{ENV['ca_key_path']} \
|
||||||
-extensions usr_cert -notext -md sha256 \
|
-cert #{ENV['ca_cert_path']} \
|
||||||
-in #{csr_file.path} -out #{crt_file.path} -key '#{ENV['ca_key_password']}' -batch")
|
-extensions usr_cert -notext -md sha256 \
|
||||||
|
-in #{csr_file.path} -out #{crt_file.path} -key '#{ENV['ca_key_password']}' -batch")
|
||||||
|
|
||||||
if err.match?(/Data Base Updated/)
|
if err.match?(/Data Base Updated/)
|
||||||
crt_file.rewind
|
crt_file.rewind
|
||||||
|
@ -112,7 +113,8 @@ class Certificate < ApplicationRecord
|
||||||
crt_file.write(crt)
|
crt_file.write(crt)
|
||||||
crt_file.rewind
|
crt_file.rewind
|
||||||
|
|
||||||
_out, err, _st = Open3.capture3("openssl ca -config #{ENV['openssl_config_path']} -keyfile #{ENV['ca_key_path']} \
|
_out, err, _st = Open3.capture3("openssl ca -config #{ENV['openssl_config_path']} \
|
||||||
|
-keyfile #{ENV['ca_key_path']} \
|
||||||
-cert #{ENV['ca_cert_path']} \
|
-cert #{ENV['ca_cert_path']} \
|
||||||
-revoke #{crt_file.path} -key '#{ENV['ca_key_password']}' -batch")
|
-revoke #{crt_file.path} -key '#{ENV['ca_key_password']}' -batch")
|
||||||
|
|
||||||
|
@ -134,7 +136,7 @@ class Certificate < ApplicationRecord
|
||||||
class << self
|
class << self
|
||||||
def tostdout(message)
|
def tostdout(message)
|
||||||
time = Time.zone.now.utc
|
time = Time.zone.now.utc
|
||||||
STDOUT << "#{time} - #{message}\n" unless Rails.env.test?
|
$stdout << "#{time} - #{message}\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_crl
|
def update_crl
|
||||||
|
|
|
@ -47,7 +47,7 @@ module Contact::Archivable
|
||||||
end
|
end
|
||||||
|
|
||||||
def log(msg)
|
def log(msg)
|
||||||
@log ||= Logger.new(STDOUT)
|
@log ||= Logger.new($stdout)
|
||||||
@log.info(msg)
|
@log.info(msg)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -68,13 +68,10 @@ module Registrar::BookKeeping
|
||||||
|
|
||||||
def finalize_invoice_line(line, price:, activity:, duration:)
|
def finalize_invoice_line(line, price:, activity:, duration:)
|
||||||
yearly = price.duration.in_years.to_i >= 1
|
yearly = price.duration.in_years.to_i >= 1
|
||||||
|
|
||||||
line['price'] = yearly ? (price.price.amount / price.duration.in_years.to_i) : price.price.amount
|
line['price'] = yearly ? (price.price.amount / price.duration.in_years.to_i) : price.price.amount
|
||||||
line['description'] = description_in_language(price: price, yearly: yearly)
|
line['description'] = description_in_language(price: price, yearly: yearly)
|
||||||
|
|
||||||
if duration.present?
|
add_product_timeframe(line: line, activity: activity, duration: duration) if duration.present? && (duration > 1)
|
||||||
add_product_timeframe(line: line, activity: activity, duration: duration) if duration > 1
|
|
||||||
end
|
|
||||||
|
|
||||||
line
|
line
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,9 +43,9 @@ class Contact < ApplicationRecord
|
||||||
validate :correct_email_format, if: proc { |c| c.will_save_change_to_email? }
|
validate :correct_email_format, if: proc { |c| c.will_save_change_to_email? }
|
||||||
|
|
||||||
validates :code,
|
validates :code,
|
||||||
uniqueness: { message: :epp_id_taken },
|
uniqueness: { message: :epp_id_taken },
|
||||||
format: { with: /\A[\w\-\:\.\_]*\z/i, message: :invalid },
|
format: { with: /\A[\w\-\:\.\_]*\z/i, message: :invalid },
|
||||||
length: { maximum: 100, message: :too_long_contact_code }
|
length: { maximum: 100, message: :too_long_contact_code }
|
||||||
validates_associated :identifier
|
validates_associated :identifier
|
||||||
|
|
||||||
validate :validate_html
|
validate :validate_html
|
||||||
|
@ -164,7 +164,9 @@ class Contact < ApplicationRecord
|
||||||
scope = all
|
scope = all
|
||||||
|
|
||||||
# all contacts has state ok, so no need to filter by it
|
# all contacts has state ok, so no need to filter by it
|
||||||
scope = scope.where("NOT contacts.statuses && ?::varchar[]", "{#{(STATUSES - [OK, LINKED]).join(',')}}") if states.delete(OK)
|
if states.delete(OK)
|
||||||
|
scope = scope.where("NOT contacts.statuses && ?::varchar[]", "{#{(STATUSES - [OK, LINKED]).join(',')}}")
|
||||||
|
end
|
||||||
scope = scope.linked if states.delete(LINKED)
|
scope = scope.linked if states.delete(LINKED)
|
||||||
scope = scope.where("contacts.statuses @> ?::varchar[]", "{#{states.join(',')}}") if states.any?
|
scope = scope.where("contacts.statuses @> ?::varchar[]", "{#{states.join(',')}}") if states.any?
|
||||||
scope
|
scope
|
||||||
|
@ -385,7 +387,6 @@ class Contact < ApplicationRecord
|
||||||
self.email = email.to_s.strip
|
self.email = email.to_s.strip
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# what we can do load firstly by registrant
|
# what we can do load firstly by registrant
|
||||||
# if total is smaller than needed, the load more
|
# if total is smaller than needed, the load more
|
||||||
# we also need to sort by valid_to
|
# we also need to sort by valid_to
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
class Contact
|
class Contact
|
||||||
class Address
|
class Address
|
||||||
attr_reader :street
|
attr_reader :street, :zip, :city, :state, :country_code
|
||||||
attr_reader :zip
|
|
||||||
attr_reader :city
|
|
||||||
attr_reader :state
|
|
||||||
attr_reader :country_code
|
|
||||||
|
|
||||||
def initialize(street, zip, city, state, country_code)
|
def initialize(street, zip, city, state, country_code)
|
||||||
@street = street
|
@street = street
|
||||||
|
@ -22,4 +18,4 @@ class Contact
|
||||||
(country_code == other.country_code)
|
(country_code == other.country_code)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
class Contact::Ident
|
class Contact::Ident
|
||||||
include ActiveModel::Model
|
include ActiveModel::Model
|
||||||
|
|
||||||
attr_accessor :code
|
attr_accessor :code, :type, :country_code
|
||||||
attr_accessor :type
|
|
||||||
attr_accessor :country_code
|
|
||||||
|
|
||||||
validates :code, presence: true
|
validates :code, presence: true
|
||||||
validates :code, national_id: true, if: :national_id?
|
validates :code, national_id: true, if: :national_id?
|
||||||
|
|
|
@ -122,7 +122,7 @@ class CsyncRecord < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.log
|
def self.log
|
||||||
Rails.env.test? ? logger : Logger.new(STDOUT)
|
Rails.env.test? ? logger : Logger.new($stdout)
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_csync_action
|
def validate_csync_action
|
||||||
|
|
|
@ -34,10 +34,10 @@ module Depp
|
||||||
org_name: params[:org_name],
|
org_name: params[:org_name],
|
||||||
|
|
||||||
# address
|
# address
|
||||||
street: params[:street],
|
street: params[:street],
|
||||||
city: params[:city],
|
city: params[:city],
|
||||||
zip: params[:zip],
|
zip: params[:zip],
|
||||||
state: params[:state],
|
state: params[:state],
|
||||||
country_code: params[:country_code]
|
country_code: params[:country_code]
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
@ -61,10 +61,10 @@ module Depp
|
||||||
org_name: res.css('postalInfo org').text,
|
org_name: res.css('postalInfo org').text,
|
||||||
|
|
||||||
# address
|
# address
|
||||||
street: res.css('postalInfo addr street').text,
|
street: res.css('postalInfo addr street').text,
|
||||||
city: res.css('postalInfo addr city').text,
|
city: res.css('postalInfo addr city').text,
|
||||||
zip: res.css('postalInfo addr pc').text,
|
zip: res.css('postalInfo addr pc').text,
|
||||||
state: res.css('postalInfo addr sp').text,
|
state: res.css('postalInfo addr sp').text,
|
||||||
country_code: res.css('postalInfo addr cc').text,
|
country_code: res.css('postalInfo addr cc').text,
|
||||||
|
|
||||||
# authInfo
|
# authInfo
|
||||||
|
@ -116,10 +116,11 @@ module Depp
|
||||||
xml.with_indifferent_access
|
xml.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_disclosure_hash(cpd) # cpd = contact_params[:disclose]
|
# cpd = contact_params[:disclose]
|
||||||
|
def extract_disclosure_hash(cpd)
|
||||||
return {} unless cpd
|
return {} unless cpd
|
||||||
cpd = cpd.delete_if { |k, v| v if v != '1' && k == 'flag' }
|
|
||||||
cpd
|
cpd.delete_if { |k, v| v if v != '1' && k == 'flag' }
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_info_disclosure(data)
|
def extract_info_disclosure(data)
|
||||||
|
@ -147,7 +148,7 @@ module Depp
|
||||||
id: { value: code },
|
id: { value: code },
|
||||||
postalInfo: {
|
postalInfo: {
|
||||||
name: { value: name },
|
name: { value: name },
|
||||||
org: { value: org_name },
|
org: { value: org_name },
|
||||||
},
|
},
|
||||||
voice: { value: phone },
|
voice: { value: phone },
|
||||||
email: { value: email }
|
email: { value: email }
|
||||||
|
@ -195,7 +196,7 @@ module Depp
|
||||||
chg: {
|
chg: {
|
||||||
postalInfo: {
|
postalInfo: {
|
||||||
name: { value: name },
|
name: { value: name },
|
||||||
org: { value: org_name },
|
org: { value: org_name },
|
||||||
},
|
},
|
||||||
voice: { value: phone },
|
voice: { value: phone },
|
||||||
email: { value: email },
|
email: { value: email },
|
||||||
|
@ -240,7 +241,7 @@ module Depp
|
||||||
ident = ident_xml[:_anonymus].try(:first)
|
ident = ident_xml[:_anonymus].try(:first)
|
||||||
when :update
|
when :update
|
||||||
# detect if any ident has changed, nb! ident and self.ident is not always same
|
# detect if any ident has changed, nb! ident and self.ident is not always same
|
||||||
if !(ident == self.ident && ident == self.ident_type && ident_country_code == self.ident_country_code)
|
unless ident == self.ident && ident == self.ident_type && ident_country_code == self.ident_country_code
|
||||||
ident = ident_xml[:_anonymus].try(:first)
|
ident = ident_xml[:_anonymus].try(:first)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -109,11 +109,9 @@ module Depp
|
||||||
period = params[:period].to_i.to_s
|
period = params[:period].to_i.to_s
|
||||||
period_unit = params[:period][-1].to_s
|
period_unit = params[:period][-1].to_s
|
||||||
|
|
||||||
current_user.request(epp_xml.renew(
|
current_user.request(epp_xml.renew(name: { value: params[:domain_name] },
|
||||||
name: { value: params[:domain_name] },
|
curExpDate: { value: params[:cur_exp_date] },
|
||||||
curExpDate: { value: params[:cur_exp_date] },
|
period: { value: period, attrs: { unit: period_unit } }))
|
||||||
period: { value: period, attrs: { unit: period_unit } }
|
|
||||||
))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def transfer(params)
|
def transfer(params)
|
||||||
|
|
|
@ -11,7 +11,7 @@ module Depp
|
||||||
validate :validate_existance_in_server
|
validate :validate_existance_in_server
|
||||||
|
|
||||||
def initialize(args = {})
|
def initialize(args = {})
|
||||||
args.each { |k, v| send(k.to_s + '=', v) }
|
args.each { |k, v| send("#{k.to_s}=", v) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def server
|
def server
|
||||||
|
@ -20,13 +20,13 @@ module Depp
|
||||||
port = ENV['epp_port'] || '700'
|
port = ENV['epp_port'] || '700'
|
||||||
|
|
||||||
@server_cache ||= Epp::Server.new({
|
@server_cache ||= Epp::Server.new({
|
||||||
server: ENV['epp_hostname'],
|
server: ENV['epp_hostname'],
|
||||||
tag: tag,
|
tag: tag,
|
||||||
password: password,
|
password: password,
|
||||||
port: port,
|
port: port,
|
||||||
cert: OpenSSL::X509::Certificate.new(client_cert),
|
cert: OpenSSL::X509::Certificate.new(client_cert),
|
||||||
key: OpenSSL::PKey::RSA.new(client_key)
|
key: OpenSSL::PKey::RSA.new(client_key)
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
def request(xml)
|
def request(xml)
|
||||||
|
|
|
@ -20,7 +20,7 @@ module DNS
|
||||||
def self.generate_zonefile(origin)
|
def self.generate_zonefile(origin)
|
||||||
filename = "#{origin}.zone"
|
filename = "#{origin}.zone"
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Generating zonefile #{filename}\n"
|
$stdout << "#{Time.zone.now.utc} - Generating zonefile #{filename}\n"
|
||||||
|
|
||||||
zf = ActiveRecord::Base.connection.execute(
|
zf = ActiveRecord::Base.connection.execute(
|
||||||
"select generate_zonefile('#{origin}')"
|
"select generate_zonefile('#{origin}')"
|
||||||
|
@ -28,7 +28,7 @@ module DNS
|
||||||
|
|
||||||
File.open("#{ENV['zonefile_export_dir']}/#{filename}", 'w') { |f| f.write(zf) }
|
File.open("#{ENV['zonefile_export_dir']}/#{filename}", 'w') { |f| f.write(zf) }
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Successfully generated zonefile #{filename}\n"
|
$stdout << "#{Time.zone.now.utc} - Successfully generated zonefile #{filename}\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.origins
|
def self.origins
|
||||||
|
|
|
@ -24,7 +24,8 @@ class Dnskey < ApplicationRecord
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
ALGORITHMS = Depp::Dnskey::ALGORITHMS.map {|pair| pair[1].to_s}.freeze # IANA numbers, single authority list
|
# IANA numbers, single authority list
|
||||||
|
ALGORITHMS = Depp::Dnskey::ALGORITHMS.map {|pair| pair[1].to_s}.freeze
|
||||||
PROTOCOLS = %w(3)
|
PROTOCOLS = %w(3)
|
||||||
FLAGS = %w(0 256 257) # 256 = ZSK, 257 = KSK
|
FLAGS = %w(0 256 257) # 256 = ZSK, 257 = KSK
|
||||||
DS_DIGEST_TYPE = [1,2]
|
DS_DIGEST_TYPE = [1,2]
|
||||||
|
@ -81,7 +82,9 @@ class Dnskey < ApplicationRecord
|
||||||
def generate_digest
|
def generate_digest
|
||||||
return unless flags == 257 || flags == 256 # require ZoneFlag, but optional SecureEntryPoint
|
return unless flags == 257 || flags == 256 # require ZoneFlag, but optional SecureEntryPoint
|
||||||
self.ds_alg = alg
|
self.ds_alg = alg
|
||||||
self.ds_digest_type = Setting.ds_digest_type if self.ds_digest_type.blank? || !DS_DIGEST_TYPE.include?(ds_digest_type)
|
if self.ds_digest_type.blank? || !DS_DIGEST_TYPE.include?(ds_digest_type)
|
||||||
|
self.ds_digest_type = Setting.ds_digest_type
|
||||||
|
end
|
||||||
|
|
||||||
flags_hex = self.class.int_to_hex(flags)
|
flags_hex = self.class.int_to_hex(flags)
|
||||||
protocol_hex = self.class.int_to_hex(protocol)
|
protocol_hex = self.class.int_to_hex(protocol)
|
||||||
|
@ -90,9 +93,10 @@ class Dnskey < ApplicationRecord
|
||||||
hex = [domain.name_in_wire_format, flags_hex, protocol_hex, alg_hex, public_key_hex].join
|
hex = [domain.name_in_wire_format, flags_hex, protocol_hex, alg_hex, public_key_hex].join
|
||||||
bin = self.class.hex_to_bin(hex)
|
bin = self.class.hex_to_bin(hex)
|
||||||
|
|
||||||
if self.ds_digest_type == 1
|
case self.ds_digest_type
|
||||||
|
when 1
|
||||||
self.ds_digest = Digest::SHA1.hexdigest(bin).upcase
|
self.ds_digest = Digest::SHA1.hexdigest(bin).upcase
|
||||||
elsif self.ds_digest_type == 2
|
when 2
|
||||||
self.ds_digest = Digest::SHA256.hexdigest(bin).upcase
|
self.ds_digest = Digest::SHA256.hexdigest(bin).upcase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,9 +13,14 @@ class Domain < ApplicationRecord
|
||||||
include Domain::Disputable
|
include Domain::Disputable
|
||||||
include Domain::BulkUpdatable
|
include Domain::BulkUpdatable
|
||||||
|
|
||||||
attr_accessor :roles
|
attr_accessor :roles,
|
||||||
|
:legal_document_id,
|
||||||
attr_accessor :legal_document_id
|
:is_admin,
|
||||||
|
:registrant_typeahead,
|
||||||
|
:update_me,
|
||||||
|
:epp_pending_update,
|
||||||
|
:epp_pending_delete,
|
||||||
|
:reserved_pw
|
||||||
|
|
||||||
alias_attribute :on_hold_time, :outzone_at
|
alias_attribute :on_hold_time, :outzone_at
|
||||||
alias_attribute :outzone_time, :outzone_at
|
alias_attribute :outzone_time, :outzone_at
|
||||||
|
@ -27,16 +32,18 @@ class Domain < ApplicationRecord
|
||||||
:admin_store_statuses_history
|
:admin_store_statuses_history
|
||||||
|
|
||||||
# TODO: whois requests ip whitelist for full info for own domains and partial info for other domains
|
# TODO: whois requests ip whitelist for full info for own domains and partial info for other domains
|
||||||
# TODO: most inputs should be trimmed before validatation, probably some global logic?
|
# TODO: most inputs should be trimmed before validation, probably some global logic?
|
||||||
|
|
||||||
belongs_to :registrar, required: true
|
belongs_to :registrar, required: true
|
||||||
belongs_to :registrant, required: true
|
belongs_to :registrant, required: true
|
||||||
# TODO: should we user validates_associated :registrant here?
|
# TODO: should we user validates_associated :registrant here?
|
||||||
|
|
||||||
has_many :admin_domain_contacts
|
has_many :admin_domain_contacts
|
||||||
accepts_nested_attributes_for :admin_domain_contacts, allow_destroy: true, reject_if: :admin_change_prohibited?
|
accepts_nested_attributes_for :admin_domain_contacts,
|
||||||
|
allow_destroy: true, reject_if: :admin_change_prohibited?
|
||||||
has_many :tech_domain_contacts
|
has_many :tech_domain_contacts
|
||||||
accepts_nested_attributes_for :tech_domain_contacts, allow_destroy: true, reject_if: :tech_change_prohibited?
|
accepts_nested_attributes_for :tech_domain_contacts,
|
||||||
|
allow_destroy: true, reject_if: :tech_change_prohibited?
|
||||||
|
|
||||||
def registrant_change_prohibited?
|
def registrant_change_prohibited?
|
||||||
statuses.include? DomainStatus::SERVER_REGISTRANT_CHANGE_PROHIBITED
|
statuses.include? DomainStatus::SERVER_REGISTRANT_CHANGE_PROHIBITED
|
||||||
|
@ -122,8 +129,6 @@ class Domain < ApplicationRecord
|
||||||
errors.add(:domains, I18n.t(:object_status_prohibits_operation)) if has_error
|
errors.add(:domains, I18n.t(:object_status_prohibits_operation)) if has_error
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_accessor :is_admin
|
|
||||||
|
|
||||||
# Removed to comply new ForceDelete procedure
|
# Removed to comply new ForceDelete procedure
|
||||||
# at https://github.com/internetee/registry/issues/1428#issuecomment-570561967
|
# at https://github.com/internetee/registry/issues/1428#issuecomment-570561967
|
||||||
#
|
#
|
||||||
|
@ -204,12 +209,10 @@ class Domain < ApplicationRecord
|
||||||
|
|
||||||
def statuses_uniqueness
|
def statuses_uniqueness
|
||||||
return if statuses.uniq == statuses
|
return if statuses.uniq == statuses
|
||||||
|
|
||||||
errors.add(:statuses, :taken)
|
errors.add(:statuses, :taken)
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_accessor :registrant_typeahead, :update_me,
|
|
||||||
:epp_pending_update, :epp_pending_delete, :reserved_pw
|
|
||||||
|
|
||||||
self.ignored_columns = %w[legacy_id legacy_registrar_id legacy_registrant_id]
|
self.ignored_columns = %w[legacy_id legacy_registrar_id legacy_registrant_id]
|
||||||
|
|
||||||
def subordinate_nameservers
|
def subordinate_nameservers
|
||||||
|
@ -423,9 +426,11 @@ class Domain < ApplicationRecord
|
||||||
|
|
||||||
def pending_update!
|
def pending_update!
|
||||||
return true if pending_update?
|
return true if pending_update?
|
||||||
|
|
||||||
self.epp_pending_update = true # for epp
|
self.epp_pending_update = true # for epp
|
||||||
|
|
||||||
return true unless registrant_verification_asked?
|
return true unless registrant_verification_asked?
|
||||||
|
|
||||||
pending_json_cache = pending_json
|
pending_json_cache = pending_json
|
||||||
token = registrant_verification_token
|
token = registrant_verification_token
|
||||||
asked_at = registrant_verification_asked_at
|
asked_at = registrant_verification_asked_at
|
||||||
|
@ -582,7 +587,6 @@ class Domain < ApplicationRecord
|
||||||
# special handling for admin changing status
|
# special handling for admin changing status
|
||||||
def admin_status_update(update)
|
def admin_status_update(update)
|
||||||
update_unless_locked_by_registrant(update)
|
update_unless_locked_by_registrant(update)
|
||||||
|
|
||||||
update_not_by_locked_statuses(update)
|
update_not_by_locked_statuses(update)
|
||||||
# check for deleted status
|
# check for deleted status
|
||||||
statuses.each do |s|
|
statuses.each do |s|
|
||||||
|
|
|
@ -80,9 +80,10 @@ class DomainStatus < ApplicationRecord
|
||||||
CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD,
|
CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD,
|
||||||
CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
|
CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
|
||||||
SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED,
|
SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED,
|
||||||
INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_DELETE_CONFIRMATION, PENDING_RENEW, PENDING_TRANSFER,
|
INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_DELETE_CONFIRMATION,
|
||||||
PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
|
PENDING_RENEW, PENDING_TRANSFER, PENDING_UPDATE, SERVER_MANUAL_INZONE,
|
||||||
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE,
|
SERVER_REGISTRANT_CHANGE_PROHIBITED, SERVER_ADMIN_CHANGE_PROHIBITED,
|
||||||
|
SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE,
|
||||||
DELETE_CANDIDATE, EXPIRED, DISPUTED, SERVER_RELEASE_PROHIBITED
|
DELETE_CANDIDATE, EXPIRED, DISPUTED, SERVER_RELEASE_PROHIBITED
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
|
@ -98,24 +99,24 @@ class DomainStatus < ApplicationRecord
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
UPDATE_PROHIBIT_STATES = [
|
UPDATE_PROHIBIT_STATES = [
|
||||||
DomainStatus::PENDING_DELETE_CONFIRMATION,
|
DomainStatus::PENDING_DELETE_CONFIRMATION,
|
||||||
DomainStatus::CLIENT_UPDATE_PROHIBITED,
|
DomainStatus::CLIENT_UPDATE_PROHIBITED,
|
||||||
DomainStatus::SERVER_UPDATE_PROHIBITED,
|
DomainStatus::SERVER_UPDATE_PROHIBITED,
|
||||||
DomainStatus::PENDING_CREATE,
|
DomainStatus::PENDING_CREATE,
|
||||||
DomainStatus::PENDING_UPDATE,
|
DomainStatus::PENDING_UPDATE,
|
||||||
DomainStatus::PENDING_DELETE,
|
DomainStatus::PENDING_DELETE,
|
||||||
DomainStatus::PENDING_RENEW,
|
DomainStatus::PENDING_RENEW,
|
||||||
DomainStatus::PENDING_TRANSFER
|
DomainStatus::PENDING_TRANSFER
|
||||||
]
|
].freeze
|
||||||
|
|
||||||
DELETE_PROHIBIT_STATES = [
|
DELETE_PROHIBIT_STATES = [
|
||||||
DomainStatus::CLIENT_DELETE_PROHIBITED,
|
DomainStatus::CLIENT_DELETE_PROHIBITED,
|
||||||
DomainStatus::SERVER_DELETE_PROHIBITED,
|
DomainStatus::SERVER_DELETE_PROHIBITED,
|
||||||
DomainStatus::PENDING_CREATE,
|
DomainStatus::PENDING_CREATE,
|
||||||
DomainStatus::PENDING_RENEW,
|
DomainStatus::PENDING_RENEW,
|
||||||
DomainStatus::PENDING_TRANSFER,
|
DomainStatus::PENDING_TRANSFER,
|
||||||
DomainStatus::PENDING_UPDATE,
|
DomainStatus::PENDING_UPDATE,
|
||||||
DomainStatus::PENDING_DELETE
|
DomainStatus::PENDING_DELETE
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
def epp_code_map
|
def epp_code_map
|
||||||
|
@ -148,7 +149,6 @@ class DomainStatus < ApplicationRecord
|
||||||
admin_statuses_map.map(&:second)
|
admin_statuses_map.map(&:second)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def admin_statuses_map
|
def admin_statuses_map
|
||||||
[
|
[
|
||||||
['Hold', SERVER_HOLD],
|
['Hold', SERVER_HOLD],
|
||||||
|
|
|
@ -15,7 +15,8 @@ class Epp::Domain < Domain
|
||||||
return true if is_transfer || is_renewal
|
return true if is_transfer || is_renewal
|
||||||
return unless update_prohibited?
|
return unless update_prohibited?
|
||||||
|
|
||||||
stat = (statuses & (DomainStatus::UPDATE_PROHIBIT_STATES + DomainStatus::DELETE_PROHIBIT_STATES)).first
|
stat = (statuses &
|
||||||
|
(DomainStatus::UPDATE_PROHIBIT_STATES + DomainStatus::DELETE_PROHIBIT_STATES)).first
|
||||||
add_epp_error('2304', 'status', stat, I18n.t(:object_status_prohibits_operation))
|
add_epp_error('2304', 'status', stat, I18n.t(:object_status_prohibits_operation))
|
||||||
throw(:abort)
|
throw(:abort)
|
||||||
end
|
end
|
||||||
|
@ -307,10 +308,12 @@ class Epp::Domain < Domain
|
||||||
begin
|
begin
|
||||||
return if cur_exp_date.to_date == valid_to.to_date
|
return if cur_exp_date.to_date == valid_to.to_date
|
||||||
rescue
|
rescue
|
||||||
add_epp_error('2306', 'curExpDate', cur_exp_date, I18n.t('errors.messages.epp_exp_dates_do_not_match'))
|
add_epp_error('2306', 'curExpDate', cur_exp_date,
|
||||||
|
I18n.t('errors.messages.epp_exp_dates_do_not_match'))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
add_epp_error('2306', 'curExpDate', cur_exp_date, I18n.t('errors.messages.epp_exp_dates_do_not_match'))
|
add_epp_error('2306', 'curExpDate', cur_exp_date,
|
||||||
|
I18n.t('errors.messages.epp_exp_dates_do_not_match'))
|
||||||
end
|
end
|
||||||
|
|
||||||
### ABILITIES ###
|
### ABILITIES ###
|
||||||
|
@ -325,7 +328,8 @@ class Epp::Domain < Domain
|
||||||
begin
|
begin
|
||||||
errors.add(:base, :domain_status_prohibits_operation)
|
errors.add(:base, :domain_status_prohibits_operation)
|
||||||
return false
|
return false
|
||||||
end if (statuses & [DomainStatus::CLIENT_DELETE_PROHIBITED, DomainStatus::SERVER_DELETE_PROHIBITED]).any?
|
end if (statuses &
|
||||||
|
[DomainStatus::CLIENT_DELETE_PROHIBITED, DomainStatus::SERVER_DELETE_PROHIBITED]).any?
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,7 +14,7 @@ class InactiveContacts
|
||||||
end
|
end
|
||||||
|
|
||||||
def log(msg)
|
def log(msg)
|
||||||
@log ||= Logger.new(STDOUT)
|
@log ||= Logger.new($stdout)
|
||||||
@log.info(msg)
|
@log.info(msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,22 +12,22 @@ class Invoice < ApplicationRecord
|
||||||
has_many :payment_orders
|
has_many :payment_orders
|
||||||
|
|
||||||
accepts_nested_attributes_for :items
|
accepts_nested_attributes_for :items
|
||||||
|
# rubocop:disable Layout/LineLength
|
||||||
scope :all_columns, ->{select("invoices.*")}
|
scope :all_columns, -> { select("invoices.*") }
|
||||||
scope :sort_due_date_column, ->{all_columns.select("CASE WHEN invoices.cancelled_at is not null THEN
|
scope :sort_due_date_column, -> { all_columns.select("CASE WHEN invoices.cancelled_at is not null THEN
|
||||||
(invoices.cancelled_at + interval '100 year') ELSE
|
(invoices.cancelled_at + interval '100 year') ELSE
|
||||||
invoices.due_date END AS sort_due_date")}
|
invoices.due_date END AS sort_due_date")}
|
||||||
scope :sort_by_sort_due_date_asc, ->{sort_due_date_column.order("sort_due_date ASC")}
|
scope :sort_by_sort_due_date_asc, -> { sort_due_date_column.order("sort_due_date ASC") }
|
||||||
scope :sort_by_sort_due_date_desc, ->{sort_due_date_column.order("sort_due_date DESC")}
|
scope :sort_by_sort_due_date_desc, -> { sort_due_date_column.order("sort_due_date DESC") }
|
||||||
scope :sort_receipt_date_column, ->{all_columns.includes(:account_activity).references(:account_activity).select(%Q{
|
scope :sort_receipt_date_column, -> { all_columns.includes(:account_activity).references(:account_activity).select(%Q{
|
||||||
CASE WHEN account_activities.created_at is not null THEN account_activities.created_at
|
CASE WHEN account_activities.created_at is not null THEN account_activities.created_at
|
||||||
WHEN invoices.cancelled_at is not null THEN invoices.cancelled_at + interval '100 year'
|
WHEN invoices.cancelled_at is not null THEN invoices.cancelled_at + interval '100 year'
|
||||||
ELSE NULL END AS sort_receipt_date })}
|
ELSE NULL END AS sort_receipt_date })}
|
||||||
scope :sort_by_sort_receipt_date_asc, ->{sort_receipt_date_column.order("sort_receipt_date ASC")}
|
scope :sort_by_sort_receipt_date_asc, -> { sort_receipt_date_column.order("sort_receipt_date ASC") }
|
||||||
scope :sort_by_sort_receipt_date_desc, ->{sort_receipt_date_column.order("sort_receipt_date DESC")}
|
scope :sort_by_sort_receipt_date_desc, -> { sort_receipt_date_column.order("sort_receipt_date DESC") }
|
||||||
|
|
||||||
scope :overdue, -> { unpaid.non_cancelled.where('due_date < ?', Time.zone.today) }
|
scope :overdue, -> { unpaid.non_cancelled.where('due_date < ?', Time.zone.today) }
|
||||||
|
# rubocop:enable Layout/LineLength
|
||||||
validates :due_date, :currency, :seller_name,
|
validates :due_date, :currency, :seller_name,
|
||||||
:seller_iban, :buyer_name, :items, presence: true
|
:seller_iban, :buyer_name, :items, presence: true
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
class Invoice
|
class Invoice
|
||||||
class EInvoiceGenerator
|
class EInvoiceGenerator
|
||||||
attr_reader :invoice
|
attr_reader :invoice, :payable
|
||||||
attr_reader :payable
|
|
||||||
|
|
||||||
def initialize(invoice, payable)
|
def initialize(invoice, payable)
|
||||||
@invoice = invoice
|
@invoice = invoice
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
class Invoice
|
class Invoice
|
||||||
class VatRateCalculator
|
class VatRateCalculator
|
||||||
attr_reader :registry
|
attr_reader :registry, :registrar
|
||||||
attr_reader :registrar
|
|
||||||
|
|
||||||
def initialize(registry: Registry.current, registrar:)
|
def initialize(registry: Registry.current, registrar:)
|
||||||
@registry = registry
|
@registry = registry
|
||||||
|
@ -16,4 +15,4 @@ class Invoice
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -65,7 +65,6 @@ class LegalDocument < ApplicationRecord
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def self.remove_duplicates
|
def self.remove_duplicates
|
||||||
start = Time.zone.now.to_f
|
start = Time.zone.now.to_f
|
||||||
Rails.logger.info '-----> Removing legal documents duplicates'
|
Rails.logger.info '-----> Removing legal documents duplicates'
|
||||||
|
@ -84,7 +83,8 @@ class LegalDocument < ApplicationRecord
|
||||||
File.delete(new_legal.path) if File.exist?(new_legal.path)
|
File.delete(new_legal.path) if File.exist?(new_legal.path)
|
||||||
new_legal.update(path: orig_legal.path)
|
new_legal.update(path: orig_legal.path)
|
||||||
count += 1
|
count += 1
|
||||||
Rails.logger.info "File #{new_legal.path} has been removed by Domain #{new_legal.documentable_id}. Document id: #{new_legal.id}"
|
Rails.logger.info "File #{new_legal.path} has been removed by Domain "\
|
||||||
|
"#{new_legal.documentable_id}. Document id: #{new_legal.id}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -107,7 +107,8 @@ class LegalDocument < ApplicationRecord
|
||||||
File.delete(new_legal.path) if File.exist?(new_legal.path)
|
File.delete(new_legal.path) if File.exist?(new_legal.path)
|
||||||
new_legal.update(path: orig_legal.path)
|
new_legal.update(path: orig_legal.path)
|
||||||
count += 1
|
count += 1
|
||||||
Rails.logger.info "File #{new_legal.path} has been removed by Contact #{new_legal.documentable_id}. Document id: #{new_legal.id}"
|
Rails.logger.info "File #{new_legal.path} has been removed by Contact "\
|
||||||
|
"#{new_legal.documentable_id}. Document id: #{new_legal.id}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -38,18 +38,18 @@ class Nameserver < ApplicationRecord
|
||||||
|
|
||||||
def epp_code_map
|
def epp_code_map
|
||||||
{
|
{
|
||||||
'2302' => [
|
'2302' => [
|
||||||
[:hostname, :taken, { value: { obj: 'hostAttr', val: {'hostName': hostname} } }]
|
[:hostname, :taken, { value: { obj: 'hostAttr', val: { 'hostName': hostname } } }]
|
||||||
],
|
],
|
||||||
'2005' => [
|
'2005' => [
|
||||||
[:hostname, :invalid, { value: { obj: 'hostAttr', val: hostname } }],
|
[:hostname, :invalid, { value: { obj: 'hostAttr', val: hostname } }],
|
||||||
[:hostname, :puny_to_long, { value: { obj: 'hostAttr', val: hostname } }],
|
[:hostname, :puny_to_long, { value: { obj: 'hostAttr', val: hostname } }],
|
||||||
[:ipv4, :invalid, { value: { obj: 'hostAddr', val: ipv4 } }],
|
[:ipv4, :invalid, { value: { obj: 'hostAddr', val: ipv4 } }],
|
||||||
[:ipv6, :invalid, { value: { obj: 'hostAddr', val: ipv6 } }]
|
[:ipv6, :invalid, { value: { obj: 'hostAddr', val: ipv6 } }]
|
||||||
],
|
],
|
||||||
'2003' => [
|
'2003' => [
|
||||||
%i[base ip_required],
|
%i[base ip_required],
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -63,11 +63,10 @@ class Nameserver < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def from_hash_params params
|
def from_hash_params(params)
|
||||||
params = params.with_indifferent_access
|
params = params.with_indifferent_access
|
||||||
rel = all
|
rel = all
|
||||||
rel = rel.where(hostname: params[:hostname])
|
rel.where(hostname: params[:hostname])
|
||||||
rel
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def hostnames
|
def hostnames
|
||||||
|
|
|
@ -23,7 +23,7 @@ class PaymentOrder < ApplicationRecord
|
||||||
supported = []
|
supported = []
|
||||||
|
|
||||||
PAYMENT_METHODS.each do |method|
|
PAYMENT_METHODS.each do |method|
|
||||||
class_name = ('PaymentOrders::' + method.camelize).constantize
|
class_name = "PaymentOrders::#{method.camelize}".constantize
|
||||||
raise(NoMethodError, class_name) unless class_name < PaymentOrder
|
raise(NoMethodError, class_name) unless class_name < PaymentOrder
|
||||||
|
|
||||||
supported << class_name
|
supported << class_name
|
||||||
|
@ -33,7 +33,7 @@ class PaymentOrder < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.new_with_type(type:, invoice:)
|
def self.new_with_type(type:, invoice:)
|
||||||
channel = ('PaymentOrders::' + type.camelize).constantize
|
channel = "PaymentOrders::#{type.camelize}".constantize
|
||||||
|
|
||||||
PaymentOrder.new(type: channel, invoice: invoice)
|
PaymentOrder.new(type: channel, invoice: invoice)
|
||||||
end
|
end
|
||||||
|
@ -55,7 +55,7 @@ class PaymentOrder < ApplicationRecord
|
||||||
|
|
||||||
def self.supported_method?(name, shortname: false)
|
def self.supported_method?(name, shortname: false)
|
||||||
some_class = if shortname
|
some_class = if shortname
|
||||||
('PaymentOrders::' + name.camelize).constantize
|
"PaymentOrders::#{name.camelize}".constantize
|
||||||
else
|
else
|
||||||
name.constantize
|
name.constantize
|
||||||
end
|
end
|
||||||
|
|
|
@ -104,9 +104,8 @@ module PaymentOrders
|
||||||
|
|
||||||
def sign(data)
|
def sign(data)
|
||||||
private_key = OpenSSL::PKey::RSA.new(File.read(seller_certificate))
|
private_key = OpenSSL::PKey::RSA.new(File.read(seller_certificate))
|
||||||
signed_data = private_key.sign(OpenSSL::Digest::SHA1.new, data)
|
signed_data = private_key.sign(OpenSSL::Digest.new('SHA1'), data)
|
||||||
signed_data = Base64.encode64(signed_data).gsub(/\n|\r/, '')
|
Base64.encode64(signed_data).gsub(/\n|\r/, '')
|
||||||
signed_data
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def calc_mac(fields)
|
def calc_mac(fields)
|
||||||
|
@ -122,7 +121,7 @@ module PaymentOrders
|
||||||
|
|
||||||
def verify_mac(data, mac)
|
def verify_mac(data, mac)
|
||||||
bank_public_key = OpenSSL::X509::Certificate.new(File.read(bank_certificate)).public_key
|
bank_public_key = OpenSSL::X509::Certificate.new(File.read(bank_certificate)).public_key
|
||||||
bank_public_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(mac), data)
|
bank_public_key.verify(OpenSSL::Digest.new('SHA1'), Base64.decode64(mac), data)
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepend_size(value)
|
def prepend_size(value)
|
||||||
|
|
|
@ -28,7 +28,7 @@ class Registrar < ApplicationRecord
|
||||||
validates :vat_rate, absence: true, if: :vat_liable_locally?
|
validates :vat_rate, absence: true, if: :vat_liable_locally?
|
||||||
validates :vat_rate, absence: true, if: -> { vat_liable_in_foreign_country? && vat_no? }
|
validates :vat_rate, absence: true, if: -> { vat_liable_in_foreign_country? && vat_no? }
|
||||||
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than: 100 },
|
validates :vat_rate, numericality: { greater_than_or_equal_to: 0, less_than: 100 },
|
||||||
allow_nil: true
|
allow_nil: true
|
||||||
|
|
||||||
attribute :vat_rate, ::Type::VatRate.new
|
attribute :vat_rate, ::Type::VatRate.new
|
||||||
after_initialize :set_defaults
|
after_initialize :set_defaults
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
class Registry
|
class Registry
|
||||||
include ActiveModel::Model
|
include ActiveModel::Model
|
||||||
|
|
||||||
attr_accessor :vat_rate
|
attr_accessor :vat_rate, :vat_country
|
||||||
attr_accessor :vat_country
|
|
||||||
|
|
||||||
def self.current
|
def self.current
|
||||||
vat_rate = Setting.registry_vat_prc.to_d * 100
|
vat_rate = Setting.registry_vat_prc.to_d * 100
|
||||||
|
@ -10,4 +9,4 @@ class Registry
|
||||||
|
|
||||||
new(vat_rate: vat_rate, vat_country: vat_country)
|
new(vat_rate: vat_rate, vat_country: vat_country)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -28,7 +28,7 @@ class WhoisRecord < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
status_map = {
|
status_map = {
|
||||||
'ok' => 'ok (paid and in zone)'
|
'ok' => 'ok (paid and in zone)'
|
||||||
}
|
}
|
||||||
|
|
||||||
registrant = domain.registrant
|
registrant = domain.registrant
|
||||||
|
@ -75,7 +75,7 @@ class WhoisRecord < ApplicationRecord
|
||||||
h[:nameservers] = domain.nameservers.hostnames.uniq.select(&:present?)
|
h[:nameservers] = domain.nameservers.hostnames.uniq.select(&:present?)
|
||||||
h[:nameservers_changed] = domain.nameservers.pluck(:updated_at).max.try(:to_s, :iso8601)
|
h[:nameservers_changed] = domain.nameservers.pluck(:updated_at).max.try(:to_s, :iso8601)
|
||||||
|
|
||||||
h[:dnssec_keys] = domain.dnskeys.map{|key| "#{key.flags} #{key.protocol} #{key.alg} #{key.public_key}" }
|
h[:dnssec_keys] = domain.dnskeys.map { |key| "#{key.flags} #{key.protocol} #{key.alg} #{key.public_key}" }
|
||||||
h[:dnssec_changed] = domain.dnskeys.pluck(:updated_at).max.try(:to_s, :iso8601) rescue nil
|
h[:dnssec_changed] = domain.dnskeys.pluck(:updated_at).max.try(:to_s, :iso8601) rescue nil
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -81,8 +81,8 @@ class DomainPresenter
|
||||||
view.content_tag(:a, view.t('admin.domains.force_delete_toggle_btn.schedule'),
|
view.content_tag(:a, view.t('admin.domains.force_delete_toggle_btn.schedule'),
|
||||||
class: 'dropdown-item',
|
class: 'dropdown-item',
|
||||||
data: {
|
data: {
|
||||||
toggle: 'modal',
|
toggle: 'modal',
|
||||||
target: '.domain-edit-force-delete-dialog',
|
target: '.domain-edit-force-delete-dialog',
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class DomainPresenter
|
||||||
view.admin_domain_force_delete_path(domain),
|
view.admin_domain_force_delete_path(domain),
|
||||||
method: :delete,
|
method: :delete,
|
||||||
data: {
|
data: {
|
||||||
confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm'),
|
confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm'),
|
||||||
},
|
},
|
||||||
class: 'dropdown-item'
|
class: 'dropdown-item'
|
||||||
end
|
end
|
||||||
|
@ -103,6 +103,5 @@ class DomainPresenter
|
||||||
class: 'dropdown-item'
|
class: 'dropdown-item'
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :domain
|
attr_reader :domain, :view
|
||||||
attr_reader :view
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,6 +37,5 @@ class RegistrantPresenter
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
attr_reader :registrant
|
attr_reader :registrant, :view
|
||||||
attr_reader :view
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -42,6 +42,5 @@ class Registrar::DomainListCsvPresenter
|
||||||
CSV::Row.new([], row)
|
CSV::Row.new([], row)
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :domains
|
attr_reader :domains, :view
|
||||||
attr_reader :view
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -26,6 +26,5 @@ class RegistrarPresenter
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
attr_reader :registrar
|
attr_reader :registrar, :view
|
||||||
attr_reader :view
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,5 @@ class UserPresenter
|
||||||
user.roles.first
|
user.roles.first
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :user
|
attr_reader :user, :view
|
||||||
attr_reader :view
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
class OverdueInvoiceCanceller
|
class OverdueInvoiceCanceller
|
||||||
attr_reader :invoices
|
attr_reader :invoices, :delay
|
||||||
attr_reader :delay
|
|
||||||
|
|
||||||
def initialize(invoices: Invoice.overdue, delay: self.class.delay)
|
def initialize(invoices: Invoice.overdue, delay: self.class.delay)
|
||||||
@invoices = invoices
|
@invoices = invoices
|
||||||
|
@ -30,4 +29,4 @@ class OverdueInvoiceCanceller
|
||||||
due_date_with_delay = invoice.due_date + delay
|
due_date_with_delay = invoice.due_date + delay
|
||||||
due_date_with_delay.past?
|
due_date_with_delay.past?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,6 +15,5 @@ class RegistrantChange
|
||||||
RegistrantChangeMailer.accepted(domain: domain, old_registrant: old_registrant).deliver_now
|
RegistrantChangeMailer.accepted(domain: domain, old_registrant: old_registrant).deliver_now
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :domain
|
attr_reader :domain, :old_registrant
|
||||||
attr_reader :old_registrant
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -65,9 +65,9 @@ xml.epp_head do
|
||||||
xml.tag!('contact:crDate', @contact.created_at.try(:iso8601))
|
xml.tag!('contact:crDate', @contact.created_at.try(:iso8601))
|
||||||
|
|
||||||
if @contact.updated_at > @contact.created_at
|
if @contact.updated_at > @contact.created_at
|
||||||
upID = @contact.updator.try(:registrar)
|
up_id = @contact.updator.try(:registrar)
|
||||||
upID = upID.code if upID.present? # Did updator return a kind of User that has a registrar?
|
up_id = up_id.code if up_id.present? # Did updator return a kind of User that has a registrar?
|
||||||
xml.tag!('contact:upID', upID) if upID.present? # optional upID
|
xml.tag!('contact:upID', up_id) if up_id.present? # optional upID
|
||||||
xml.tag!('contact:upDate', @contact.updated_at.try(:iso8601))
|
xml.tag!('contact:upDate', @contact.updated_at.try(:iso8601))
|
||||||
end
|
end
|
||||||
if can? :view_password, @contact, @password
|
if can? :view_password, @contact, @password
|
||||||
|
|
|
@ -7,7 +7,7 @@ xml.epp_head do
|
||||||
xml.result('code' => x[:code]) do
|
xml.result('code' => x[:code]) do
|
||||||
xml.msg(x[:msg], 'lang' => 'en')
|
xml.msg(x[:msg], 'lang' => 'en')
|
||||||
model_name = resource ? resource.model_name.singular.sub('epp_','') : controller.controller_name.singularize
|
model_name = resource ? resource.model_name.singular.sub('epp_','') : controller.controller_name.singularize
|
||||||
prefix = model_name == 'poll' ? 'changePoll' : model_name + '-ee'
|
prefix = model_name == 'poll' ? 'changePoll' : "#{model_name}-ee"
|
||||||
|
|
||||||
xml.value("xmlns:#{model_name}" => Xsd::Schema.filename(for_prefix: prefix)) do
|
xml.value("xmlns:#{model_name}" => Xsd::Schema.filename(for_prefix: prefix)) do
|
||||||
value = x[:value][:val]
|
value = x[:value][:val]
|
||||||
|
|
|
@ -9,10 +9,10 @@ xml.epp_head do
|
||||||
xml.msg @notification.text
|
xml.msg @notification.text
|
||||||
end
|
end
|
||||||
|
|
||||||
if @notification.attached_obj_type == 'DomainTransfer'
|
if @notification.attached_obj_type == 'DomainTransfer' && @object
|
||||||
xml.resData do
|
xml.resData do
|
||||||
xml << render('epp/domains/partials/transfer', builder: xml, dt: @object)
|
xml << render('epp/domains/partials/transfer', builder: xml, dt: @object)
|
||||||
end if @object
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if @notification.action&.contact || @notification.registry_lock?
|
if @notification.action&.contact || @notification.registry_lock?
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
class AuthTokenCreator
|
class AuthTokenCreator
|
||||||
DEFAULT_VALIDITY = 2.hours
|
DEFAULT_VALIDITY = 2.hours
|
||||||
|
|
||||||
attr_reader :user
|
attr_reader :user, :key, :expires_at
|
||||||
attr_reader :key
|
|
||||||
attr_reader :expires_at
|
|
||||||
|
|
||||||
def self.create_with_defaults(user)
|
def self.create_with_defaults(user)
|
||||||
new(user, Rails.application.config.secret_key_base, Time.now + DEFAULT_VALIDITY)
|
new(user, Rails.application.config.secret_key_base, Time.now + DEFAULT_VALIDITY)
|
||||||
|
@ -24,7 +22,7 @@ class AuthTokenCreator
|
||||||
end
|
end
|
||||||
|
|
||||||
def encrypted_token
|
def encrypted_token
|
||||||
encryptor = OpenSSL::Cipher::AES.new(256, :CBC)
|
encryptor = OpenSSL::Cipher.new('aes-256-cbc')
|
||||||
encryptor.encrypt
|
encryptor.encrypt
|
||||||
|
|
||||||
# OpenSSL used to automatically shrink oversized keys, it does not do that any longer.
|
# OpenSSL used to automatically shrink oversized keys, it does not do that any longer.
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
class AuthTokenDecryptor
|
class AuthTokenDecryptor
|
||||||
attr_reader :decrypted_data
|
attr_reader :decrypted_data, :token, :key, :user
|
||||||
attr_reader :token
|
|
||||||
attr_reader :key
|
|
||||||
attr_reader :user
|
|
||||||
|
|
||||||
def self.create_with_defaults(token)
|
def self.create_with_defaults(token)
|
||||||
new(token, Rails.application.config.secret_key_base)
|
new(token, Rails.application.config.secret_key_base)
|
||||||
|
@ -14,7 +11,7 @@ class AuthTokenDecryptor
|
||||||
end
|
end
|
||||||
|
|
||||||
def decrypt_token
|
def decrypt_token
|
||||||
decipher = OpenSSL::Cipher::AES.new(256, :CBC)
|
decipher = OpenSSL::Cipher.new('aes-256-cbc')
|
||||||
decipher.decrypt
|
decipher.decrypt
|
||||||
|
|
||||||
# OpenSSL used to automatically shrink oversized keys, it does not do that any longer.
|
# OpenSSL used to automatically shrink oversized keys, it does not do that any longer.
|
||||||
|
|
|
@ -5,8 +5,7 @@ require 'deserializers/xml/dnssec'
|
||||||
module Deserializers
|
module Deserializers
|
||||||
module Xml
|
module Xml
|
||||||
class DomainCreate
|
class DomainCreate
|
||||||
attr_reader :frame
|
attr_reader :frame, :registrar
|
||||||
attr_reader :registrar
|
|
||||||
|
|
||||||
def initialize(frame, registrar)
|
def initialize(frame, registrar)
|
||||||
@frame = frame
|
@frame = frame
|
||||||
|
|
|
@ -81,12 +81,11 @@ module Serializers
|
||||||
end
|
end
|
||||||
|
|
||||||
def contacts(type)
|
def contacts(type)
|
||||||
contact_pool = begin
|
contact_pool = case type
|
||||||
if type == :tech
|
when :tech
|
||||||
domain.tech_contacts
|
domain.tech_contacts
|
||||||
elsif type == :admin
|
when :admin
|
||||||
domain.admin_contacts
|
domain.admin_contacts
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
array_of_contacts = []
|
array_of_contacts = []
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace :contacts do
|
||||||
end
|
end
|
||||||
|
|
||||||
def log(msg)
|
def log(msg)
|
||||||
@log ||= Logger.new(STDOUT)
|
@log ||= Logger.new($stdout)
|
||||||
@log.info(msg)
|
@log.info(msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace :dev do
|
||||||
http.ca_file = ENV['lhv_ca_file']
|
http.ca_file = ENV['lhv_ca_file']
|
||||||
|
|
||||||
http.start do
|
http.start do
|
||||||
response = http.post(api_base_uri.path + '/payment', request_body, request_headers)
|
response = http.post("#{api_base_uri.path}/payment", request_body, request_headers)
|
||||||
|
|
||||||
if response.is_a?(Net::HTTPSuccess)
|
if response.is_a?(Net::HTTPSuccess)
|
||||||
puts 'Success'
|
puts 'Success'
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue