diff --git a/.rubocop.yml b/.rubocop.yml
index 3d8fd0b90..497e45bbe 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -2,3 +2,6 @@ inherit_from: .rubocop_todo.yml
Style/Alias:
EnforcedStyle: prefer_alias_method
+
+Style/FrozenStringLiteralComment:
+ Enabled: false
diff --git a/.ruby-version b/.ruby-version
index 5bc1cc43d..00355e29d 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.2.7
+2.3.7
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 66e29f9f7..8fe8f891a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,31 @@
+25.05.2018
+* GDPR: updated whois templates with configurable disclaimer [#795](https://github.com/internetee/registry/issues/795)
+* GDPR: email forwarding solution to contact private domain registrants without revealing their email addresses [#824](https://github.com/internetee/registry/issues/824)
+* EPP: added support for additional digitally signed doc formats like asice, sce, asics, scs, edoc, adoc [#840](https://github.com/internetee/registry/issues/840)
+* Registrar: removed handling of newlines from contact form street field [#836](https://github.com/internetee/registry/issues/836)
+* Ruby upgrade to version 2.3.7 [#546](https://github.com/internetee/registry/issues/546)
+* Devise upgrade to version 4.4.3 [#847](https://github.com/internetee/registry/pull/847)
+* Added extra logging to debug Directo integration [#848](https://github.com/internetee/registry/pull/848)
+
+30.04.2018
+* Upgrade Ruby on Rails to version 4.2.10 [#826](https://github.com/internetee/registry/issues/826)
+* BUG: Admin - fixed internal error in domain_versions and contact_versions views caused by removed db column [#830](https://github.com/internetee/registry/issues/830)
+
+23.04.2018
+* WHOIS: domains with deleteCandidate status do not return registration details as domains waiting to be deleted [#789](https://github.com/internetee/registry/issues/789)
+* Security: Nokigiri gem update to version 1.8.2 [#823](https://github.com/internetee/registry/pull/823)
+* Bug: fixed missing translation error in admin mail templates page [#818](https://github.com/internetee/registry/pull/818)
+* Admin: VAT percentage info to registrar profile for setting tax rate for foreign non vat liable registrars [#623](https://github.com/internetee/registry/issues/623)
+* Admin: deleteCandidate status is now stressed in domain details view [#792](https://github.com/internetee/registry/issues/792)
+* Removed invoice_type from invoice db data as unused [#772](https://github.com/internetee/registry/issues/772)
+* Removed valid_from from domain db data as duplicated and unused [#787](https://github.com/internetee/registry/issues/787)
+* Set Not null constraint to valid_ti domain db data [#800](https://github.com/internetee/registry/issues/800)
+* Removed unused methods [#797](https://github.com/internetee/registry/issues/797)
+* Removed unused cron tasks [#782](https://github.com/internetee/registry/issues/782)
+* Removed some monkey-patching for flash message logging [#231](https://github.com/internetee/registry/issues/231)
+* Added Docker container support for dev and test environments [#821](https://github.com/internetee/registry/issues/821)
+* Fix for Travis CI random test failures [#809](https://github.com/internetee/registry/pull/809)
+
03.04.2018
* BUG: Fixed bug with sometimes failing bank-link payments [#642](https://github.com/internetee/registry/issues/642)
* EPP: Domain and associated objects are now validated on domain renew [#678](https://github.com/internetee/registry/issues/678)
diff --git a/Dockerfile b/Dockerfile
index 0c2c51e25..480231fc2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM ruby:2.2
+FROM ruby:2.3
MAINTAINER maciej.szlosarczyk@internet.ee
RUN apt-get update > /dev/null && apt-get install -y > /dev/null \
diff --git a/Gemfile b/Gemfile
index 9b6f97dad..0af80fddf 100644
--- a/Gemfile
+++ b/Gemfile
@@ -11,7 +11,7 @@ source 'https://rubygems.org'
gem 'SyslogLogger', '2.0', require: 'syslog/logger'
gem 'iso8601', '0.8.6' # for dates and times
-gem 'rails', '4.2.7.1' # when update, all initializers eis_custom files needs check/update
+gem 'rails', '4.2.10' # when update, all initializers eis_custom files needs check/update
gem 'rest-client'
# load env
@@ -52,7 +52,7 @@ gem 'liquid', '3.0.6' # for email templates
# rights
gem 'cancancan', '1.11.0' # autharization
-gem 'devise', '3.5.4' # authenitcation
+gem 'devise', '4.4.3' # authenitcation
# rest api
gem 'grape', '0.12.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index efa504d8e..b12b28a2d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -60,43 +60,42 @@ GEM
remote: https://rubygems.org/
specs:
SyslogLogger (2.0)
- actionmailer (4.2.7.1)
- actionpack (= 4.2.7.1)
- actionview (= 4.2.7.1)
- activejob (= 4.2.7.1)
+ actionmailer (4.2.10)
+ actionpack (= 4.2.10)
+ actionview (= 4.2.10)
+ activejob (= 4.2.10)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
- actionpack (4.2.7.1)
- actionview (= 4.2.7.1)
- activesupport (= 4.2.7.1)
+ actionpack (4.2.10)
+ actionview (= 4.2.10)
+ activesupport (= 4.2.10)
rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
- actionview (4.2.7.1)
- activesupport (= 4.2.7.1)
+ actionview (4.2.10)
+ activesupport (= 4.2.10)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model-errors_details (1.3.1)
activemodel (>= 3.2.13, < 5.0.0)
activesupport
- activejob (4.2.7.1)
- activesupport (= 4.2.7.1)
+ activejob (4.2.10)
+ activesupport (= 4.2.10)
globalid (>= 0.3.0)
- activemodel (4.2.7.1)
- activesupport (= 4.2.7.1)
+ activemodel (4.2.10)
+ activesupport (= 4.2.10)
builder (~> 3.1)
- activerecord (4.2.7.1)
- activemodel (= 4.2.7.1)
- activesupport (= 4.2.7.1)
+ activerecord (4.2.10)
+ activemodel (= 4.2.10)
+ activesupport (= 4.2.10)
arel (~> 6.0)
activerecord-import (0.7.0)
activerecord (>= 3.0)
- activesupport (4.2.7.1)
+ activesupport (4.2.10)
i18n (~> 0.7)
- json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
@@ -160,7 +159,7 @@ GEM
unicode_utils (~> 1.4)
crack (0.4.3)
safe_yaml (~> 1.0.0)
- crass (1.0.3)
+ crass (1.0.4)
daemons (1.2.4)
daemons-rails (1.2.1)
daemons
@@ -168,12 +167,11 @@ GEM
database_cleaner (1.6.1)
descendants_tracker (0.0.4)
thread_safe (~> 0.3, >= 0.3.1)
- devise (3.5.4)
+ devise (4.4.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
- railties (>= 3.2.6, < 5)
+ railties (>= 4.1.0, < 6.0)
responders
- thread_safe (~> 0.1)
warden (~> 1.2.3)
diff-lcs (1.3)
docile (1.1.5)
@@ -189,8 +187,8 @@ GEM
railties (>= 3.0.0)
figaro (1.1.1)
thor (~> 0.14)
- globalid (0.3.7)
- activesupport (>= 4.1.0)
+ globalid (0.4.1)
+ activesupport (>= 4.2.0)
grape (0.12.0)
activesupport
builder
@@ -228,7 +226,7 @@ GEM
httpi (2.4.2)
rack
socksify
- i18n (0.8.4)
+ i18n (0.8.6)
i18n_data (0.7.0)
ice_nine (0.11.2)
isikukood (0.1.2)
@@ -251,8 +249,8 @@ GEM
loofah (2.2.2)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
- mail (2.6.6)
- mime-types (>= 1.16, < 4)
+ mail (2.7.0)
+ mini_mime (>= 0.1.1)
method_source (0.8.2)
mime-types (3.1)
mime-types-data (~> 3.2015)
@@ -260,8 +258,9 @@ GEM
mina (0.3.1)
open4 (~> 1.3.4)
rake
+ mini_mime (1.0.0)
mini_portile2 (2.3.0)
- minitest (5.10.3)
+ minitest (5.11.3)
monetize (1.6.0)
money (~> 6.8)
money (6.8.3)
@@ -313,35 +312,35 @@ GEM
rack-test (0.6.3)
rack (>= 1.0)
railroady (1.3.0)
- rails (4.2.7.1)
- actionmailer (= 4.2.7.1)
- actionpack (= 4.2.7.1)
- actionview (= 4.2.7.1)
- activejob (= 4.2.7.1)
- activemodel (= 4.2.7.1)
- activerecord (= 4.2.7.1)
- activesupport (= 4.2.7.1)
+ rails (4.2.10)
+ actionmailer (= 4.2.10)
+ actionpack (= 4.2.10)
+ actionview (= 4.2.10)
+ activejob (= 4.2.10)
+ activemodel (= 4.2.10)
+ activerecord (= 4.2.10)
+ activesupport (= 4.2.10)
bundler (>= 1.3.0, < 2.0)
- railties (= 4.2.7.1)
+ railties (= 4.2.10)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
- rails-dom-testing (1.0.8)
- activesupport (>= 4.2.0.beta, < 5.0)
+ rails-dom-testing (1.0.9)
+ activesupport (>= 4.2.0, < 5.0)
nokogiri (~> 1.6)
rails-deprecated_sanitizer (>= 1.0.1)
- rails-html-sanitizer (1.0.3)
- loofah (~> 2.0)
+ rails-html-sanitizer (1.0.4)
+ loofah (~> 2.2, >= 2.2.2)
rails-settings-cached (0.4.1)
rails (>= 4.0.0)
- railties (4.2.7.1)
- actionpack (= 4.2.7.1)
- activesupport (= 4.2.7.1)
+ railties (4.2.10)
+ actionpack (= 4.2.10)
+ activesupport (= 4.2.10)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rainbow (2.2.2)
rake
- rake (12.0.0)
+ rake (12.3.1)
ransack (1.5.1)
actionpack (>= 3.0)
activerecord (>= 3.0)
@@ -350,8 +349,9 @@ GEM
polyamorous (~> 1.1)
rdoc (4.3.0)
request_store (1.1.0)
- responders (2.3.0)
- railties (>= 4.2.0, < 5.1)
+ responders (2.4.0)
+ actionpack (>= 4.2.0, < 5.3)
+ railties (>= 4.2.0, < 5.3)
rest-client (2.0.1)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
@@ -430,14 +430,14 @@ GEM
sprockets (3.7.1)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
- sprockets-rails (3.2.0)
+ sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
- thor (0.19.4)
+ thor (0.20.0)
thread_safe (0.3.6)
tilt (1.4.1)
- tzinfo (1.2.3)
+ tzinfo (1.2.5)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
@@ -491,7 +491,7 @@ DEPENDENCIES
daemons-rails (= 1.2.1)
data_migrate!
database_cleaner
- devise (= 3.5.4)
+ devise (= 4.4.3)
digidoc_client!
epp (= 1.5.0)!
epp-xml (= 1.1.0)!
@@ -522,7 +522,7 @@ DEPENDENCIES
que-web (= 0.4.0)
que_mailer!
railroady (= 1.3.0)
- rails (= 4.2.7.1)
+ rails (= 4.2.10)
rails-settings-cached (= 0.4.1)
ransack (= 1.5.1)
rest-client
@@ -542,4 +542,4 @@ DEPENDENCIES
whenever (= 0.9.4)
BUNDLED WITH
- 1.14.6
+ 1.16.1
diff --git a/app/controllers/admin/blocked_domains_controller.rb b/app/controllers/admin/blocked_domains_controller.rb
index d9227d773..bf5359b82 100644
--- a/app/controllers/admin/blocked_domains_controller.rb
+++ b/app/controllers/admin/blocked_domains_controller.rb
@@ -3,13 +3,11 @@ module Admin
load_and_authorize_resource
def index
-
params[:q] ||= {}
domains = BlockedDomain.all.order(:name)
@q = domains.search(params[:q])
@domains = @q.result.page(params[:page])
- @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
-
+ @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
def new
diff --git a/app/controllers/admin/contact_versions_controller.rb b/app/controllers/admin/contact_versions_controller.rb
index d066f698e..834353cf4 100644
--- a/app/controllers/admin/contact_versions_controller.rb
+++ b/app/controllers/admin/contact_versions_controller.rb
@@ -1,5 +1,7 @@
module Admin
class ContactVersionsController < BaseController
+ include ObjectVersionsHelper
+
load_and_authorize_resource
def index
@@ -24,7 +26,7 @@ module Admin
versions = ContactVersion.includes(:item).where(whereS).order(created_at: :desc, id: :desc)
@q = versions.search(params[:q])
@versions = @q.result.page(params[:page])
- @versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
diff --git a/app/controllers/admin/contacts_controller.rb b/app/controllers/admin/contacts_controller.rb
index 6402d09ae..b53d366ab 100644
--- a/app/controllers/admin/contacts_controller.rb
+++ b/app/controllers/admin/contacts_controller.rb
@@ -22,7 +22,7 @@ module Admin
@contacts = @q.result.uniq.page(params[:page])
end
- @contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
def search
diff --git a/app/controllers/admin/domain_versions_controller.rb b/app/controllers/admin/domain_versions_controller.rb
index 283c84f97..b6245f6ea 100644
--- a/app/controllers/admin/domain_versions_controller.rb
+++ b/app/controllers/admin/domain_versions_controller.rb
@@ -1,5 +1,7 @@
module Admin
class DomainVersionsController < BaseController
+ include ObjectVersionsHelper
+
load_and_authorize_resource
def index
@@ -41,7 +43,7 @@ module Admin
versions = DomainVersion.includes(:item).where(whereS).order(created_at: :desc, id: :desc)
@q = versions.search(params[:q])
@versions = @q.result.page(params[:page])
- @versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @versions = @versions.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
render "admin/domain_versions/archive"
end
diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb
index 0718d600a..cda04b280 100644
--- a/app/controllers/admin/domains_controller.rb
+++ b/app/controllers/admin/domains_controller.rb
@@ -32,7 +32,7 @@ module Admin
end
end
- @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
# rubocop: enable Metrics/PerceivedComplexity
diff --git a/app/controllers/admin/invoices_controller.rb b/app/controllers/admin/invoices_controller.rb
index 9b97d0903..39bf06152 100644
--- a/app/controllers/admin/invoices_controller.rb
+++ b/app/controllers/admin/invoices_controller.rb
@@ -13,7 +13,7 @@ module Admin
@deposit = Deposit.new(deposit_params.merge(registrar: r))
@invoice = @deposit.issue_prepayment_invoice
- if @invoice && @invoice.persisted?
+ if @invoice&.persisted?
flash[:notice] = t(:record_created)
redirect_to [:admin, @invoice]
else
diff --git a/app/controllers/admin/reserved_domains_controller.rb b/app/controllers/admin/reserved_domains_controller.rb
index 52a74f345..78d752866 100644
--- a/app/controllers/admin/reserved_domains_controller.rb
+++ b/app/controllers/admin/reserved_domains_controller.rb
@@ -4,13 +4,11 @@ module Admin
before_action :set_domain, only: [:edit, :update]
def index
-
params[:q] ||= {}
domains = ReservedDomain.all.order(:name)
@q = domains.search(params[:q])
@domains = @q.result.page(params[:page])
- @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
-
+ @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
def new
diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb
index 36bdcd6cc..3eba05777 100644
--- a/app/controllers/epp_controller.rb
+++ b/app/controllers/epp_controller.rb
@@ -168,7 +168,7 @@ class EppController < ApplicationController
# validate legal document's type here because it may be in most of the requests
@prefix = nil
- if element_count('extdata > legalDocument') > 0
+ if element_count('extdata > legalDocument').positive?
requires_attribute('extdata > legalDocument', 'type', values: LegalDocument::TYPES, policy: true)
end
@@ -279,7 +279,7 @@ class EppController < ApplicationController
def optional(selector, *validations)
full_selector = [@prefix, selector].compact.join(' ')
el = params[:parsed_frame].css(full_selector).first
- return unless el && el.text.present?
+ return unless el&.text.present?
value = el.text
validations.each do |x|
diff --git a/app/controllers/registrant/domains_controller.rb b/app/controllers/registrant/domains_controller.rb
index 7cde44a86..0e2f6eeaf 100644
--- a/app/controllers/registrant/domains_controller.rb
+++ b/app/controllers/registrant/domains_controller.rb
@@ -6,7 +6,7 @@ class Registrant::DomainsController < RegistrantController
@q = domains.search(params[:q])
@domains = @q.result.page(params[:page])
end
- @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
def show
diff --git a/app/controllers/registrant/whois_controller.rb b/app/controllers/registrant/whois_controller.rb
index b44a0bb67..2936477eb 100644
--- a/app/controllers/registrant/whois_controller.rb
+++ b/app/controllers/registrant/whois_controller.rb
@@ -1,3 +1,5 @@
+# As non-GDPR compliant, this controller is deprecated. Needs to be replaced with one that relies
+# on the REST WHOIS API.
class Registrant::WhoisController < RegistrantController
def index
authorize! :view, :registrant_whois
diff --git a/app/controllers/registrar/contacts_controller.rb b/app/controllers/registrar/contacts_controller.rb
index f5f527e1f..cb059641e 100644
--- a/app/controllers/registrar/contacts_controller.rb
+++ b/app/controllers/registrar/contacts_controller.rb
@@ -33,7 +33,7 @@ class Registrar
@contacts = @q.result(distinct: :true).page(params[:page])
end
- @contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
end
def download_list
diff --git a/app/controllers/registrar/deposits_controller.rb b/app/controllers/registrar/deposits_controller.rb
index 856b22553..ec6d13977 100644
--- a/app/controllers/registrar/deposits_controller.rb
+++ b/app/controllers/registrar/deposits_controller.rb
@@ -10,7 +10,7 @@ class Registrar
@deposit = Deposit.new(deposit_params.merge(registrar: current_user.registrar))
@invoice = @deposit.issue_prepayment_invoice
- if @invoice && @invoice.persisted?
+ if @invoice&.persisted?
flash[:notice] = t(:please_pay_the_following_invoice)
redirect_to [:registrar, @invoice]
else
diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb
index b85923a02..774ec2e44 100644
--- a/app/controllers/registrar/domains_controller.rb
+++ b/app/controllers/registrar/domains_controller.rb
@@ -40,7 +40,7 @@ class Registrar
end
end
- @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
+ @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i.positive?
respond_to do |format|
format.html
diff --git a/app/helpers/object_versions_helper.rb b/app/helpers/object_versions_helper.rb
new file mode 100644
index 000000000..d8e00abbe
--- /dev/null
+++ b/app/helpers/object_versions_helper.rb
@@ -0,0 +1,15 @@
+module ObjectVersionsHelper
+ def attach_existing_fields(version, new_object)
+ version.object_changes.to_h.each do |key, value|
+ method_name = "#{key}=".to_sym
+ if new_object.respond_to?(method_name)
+ new_object.public_send(method_name, value.last)
+ end
+ end
+ end
+
+ def only_present_fields(version, model)
+ field_names = model.column_names
+ version.object.to_h.select { |key, _value| field_names.include?(key) }
+ end
+end
diff --git a/app/jobs/update_whois_record_job.rb b/app/jobs/update_whois_record_job.rb
index acfafa3d4..bee0e032c 100644
--- a/app/jobs/update_whois_record_job.rb
+++ b/app/jobs/update_whois_record_job.rb
@@ -51,4 +51,4 @@ class UpdateWhoisRecordJob < Que::Job
def delete_blocked(name)
delete_reserved(name)
end
-end
\ No newline at end of file
+end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 3883bbabf..6083d700f 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -13,9 +13,9 @@ class Ability
case @user.class.to_s
when 'AdminUser'
- @user.roles.each { |role| send(role) } if @user.roles
+ @user.roles&.each { |role| send(role) }
when 'ApiUser'
- @user.roles.each { |role| send(role) } if @user.roles
+ @user.roles&.each { |role| send(role) }
when 'RegistrantUser'
static_registrant
end
diff --git a/app/models/directo.rb b/app/models/directo.rb
index 9352c9356..3e4e93e2c 100644
--- a/app/models/directo.rb
+++ b/app/models/directo.rb
@@ -45,8 +45,10 @@ class Directo < ActiveRecord::Base
end
data = builder.to_xml.gsub("\n",'')
- response = RestClient::Request.execute(url: ENV['directo_invoice_url'], method: :post, payload: {put: "1", what: "invoice", xmldata: data}, verify_ssl: false).to_s
- dump_result_to_db(mappers, response)
+ Rails.logger.info("[Directo] XML request: #{data}")
+ response = RestClient::Request.execute(url: ENV['directo_invoice_url'], method: :post, payload: {put: "1", what: "invoice", xmldata: data}, verify_ssl: false)
+ Rails.logger.info("[Directo] Directo responded with code: #{response.code}, body: #{response.body}")
+ dump_result_to_db(mappers, response.to_s)
end
STDOUT << "#{Time.zone.now.utc} - Directo receipts sending finished. #{counter} of #{total} are sent\n"
@@ -165,11 +167,15 @@ class Directo < ActiveRecord::Base
end
data = builder.to_xml.gsub("\n",'')
+ Rails.logger.info("[Directo] XML request: #{data}")
if debug
STDOUT << "#{Time.zone.now.utc} - Directo xml had to be sent #{data}\n"
else
- response = RestClient::Request.execute(url: ENV['directo_invoice_url'], method: :post, payload: {put: "1", what: "invoice", xmldata: data}, verify_ssl: false).to_s
+ response = RestClient::Request.execute(url: ENV['directo_invoice_url'], method: :post, payload: {put: "1", what: "invoice", xmldata: data}, verify_ssl: false)
+ Rails.logger.info("[Directo] Directo responded with code: #{response.code}, body: #{response.body}")
+ response = response.to_s
+
Setting.directo_monthly_number_last = directo_next
Nokogiri::XML(response).css("Result").each do |res|
Directo.create!(request: data, response: res.as_json.to_h, invoice_number: directo_next)
@@ -190,4 +196,3 @@ class Directo < ActiveRecord::Base
@pricelists[account_activity.price_id] = account_activity.price
end
end
-
diff --git a/app/models/epp/contact.rb b/app/models/epp/contact.rb
index b280ceea6..699c07ab0 100644
--- a/app/models/epp/contact.rb
+++ b/app/models/epp/contact.rb
@@ -147,7 +147,7 @@ class Epp::Contact < Contact
end
if doc = attach_legal_document(Epp::Domain.parse_legal_document_from_frame(frame))
- frame.css("legalDocument").first.content = doc.path if doc && doc.persisted?
+ frame.css("legalDocument").first.content = doc.path if doc&.persisted?
self.legal_document_id = doc.id
end
@@ -238,7 +238,7 @@ class Epp::Contact < Contact
)
self.legal_documents = [doc]
- frame.css("legalDocument").first.content = doc.path if doc && doc.persisted?
+ frame.css("legalDocument").first.content = doc.path if doc&.persisted?
self.legal_document_id = doc.id
end
diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb
index 4e0e7d44c..dcf61ddcf 100644
--- a/app/models/epp/domain.rb
+++ b/app/models/epp/domain.rb
@@ -197,7 +197,7 @@ class Epp::Domain < Domain
)
self.legal_documents = [doc]
- frame.css("legalDocument").first.content = doc.path if doc && doc.persisted?
+ frame.css("legalDocument").first.content = doc.path if doc&.persisted?
self.legal_document_id = doc.id
end
# rubocop: enable Metrics/PerceivedComplexity
@@ -472,7 +472,7 @@ class Epp::Domain < Domain
at.deep_merge!(attrs_from(frame.css('rem'), current_user, 'rem'))
if doc = attach_legal_document(Epp::Domain.parse_legal_document_from_frame(frame))
- frame.css("legalDocument").first.content = doc.path if doc && doc.persisted?
+ frame.css("legalDocument").first.content = doc.path if doc&.persisted?
self.legal_document_id = doc.id
end
@@ -547,7 +547,7 @@ class Epp::Domain < Domain
check_discarded
if doc = attach_legal_document(Epp::Domain.parse_legal_document_from_frame(frame))
- frame.css("legalDocument").first.content = doc.path if doc && doc.persisted?
+ frame.css("legalDocument").first.content = doc.path if doc&.persisted?
end
if Setting.request_confirmation_on_domain_deletion_enabled &&
diff --git a/app/models/legal_document.rb b/app/models/legal_document.rb
index c1f9243e3..4d75d272d 100644
--- a/app/models/legal_document.rb
+++ b/app/models/legal_document.rb
@@ -6,7 +6,8 @@ class LegalDocument < ActiveRecord::Base
if ENV['legal_document_types'].present?
TYPES = ENV['legal_document_types'].split(',').map(&:strip)
else
- TYPES = %w(pdf bdoc ddoc zip rar gz tar 7z odt doc docx).freeze
+ TYPES = %w(pdf asice asics sce scs adoc edoc bdoc ddoc zip rar gz tar 7z odt
+ doc docx).freeze
end
attr_accessor :body
diff --git a/app/models/whois_record.rb b/app/models/whois_record.rb
index 3ff0e9023..e4ccec22f 100644
--- a/app/models/whois_record.rb
+++ b/app/models/whois_record.rb
@@ -36,6 +36,7 @@ class WhoisRecord < ActiveRecord::Base
registrant = domain.registrant
@disclosed = []
+ h[:disclaimer] = disclaimer_text if disclaimer_text.present?
h[:name] = domain.name
h[:status] = domain.statuses.map { |x| status_map[x] || x }
h[:registered] = domain.registered_at.try(:to_s, :iso8601)
@@ -120,4 +121,10 @@ class WhoisRecord < ActiveRecord::Base
def destroy_whois_record
Whois::Record.where(name: name).delete_all
end
+
+ private
+
+ def disclaimer_text
+ Setting.registry_whois_disclaimer
+ end
end
diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb
index 49939087c..26db4dda9 100644
--- a/app/validators/domain_name_validator.rb
+++ b/app/validators/domain_name_validator.rb
@@ -37,7 +37,7 @@ class DomainNameValidator < ActiveModel::EachValidator
def validate_blocked(value)
return true unless value
- return false if BlockedDomain.where(name: value).count > 0
+ return false if BlockedDomain.where(name: value).count.positive?
DNS::Zone.where(origin: value).count.zero?
end
end
diff --git a/app/views/admin/contact_versions/index.haml b/app/views/admin/contact_versions/index.haml
index 0367db3be..8f293ba5d 100644
--- a/app/views/admin/contact_versions/index.haml
+++ b/app/views/admin/contact_versions/index.haml
@@ -57,8 +57,9 @@
%tbody
- @versions.each do |version|
- if version
- - contact = Contact.new(version.object.to_h)
- - version.object_changes.to_h.each { |k,v| contact.public_send("#{k}=", v.last) }
+ - attributes = only_present_fields(version, Contact)
+ - contact = Contact.new(attributes)
+ - attach_existing_fields(version, contact)
%tr
%td= link_to(contact.name, admin_contact_version_path(version.id))
diff --git a/app/views/admin/contact_versions/show.haml b/app/views/admin/contact_versions/show.haml
index e19326fca..a412b4312 100644
--- a/app/views/admin/contact_versions/show.haml
+++ b/app/views/admin/contact_versions/show.haml
@@ -1,5 +1,6 @@
-- contact = Contact.new(@version.object.to_h)
-- @version.object_changes.to_h.each { |k,v| contact.public_send("#{k}=", v.last ) }
+- attributes = only_present_fields(@version, Contact)
+- contact = Contact.new(attributes)
+- attach_existing_fields(@version, contact)
= render 'shared/title', name: contact.name
.row
@@ -41,11 +42,11 @@
%br
- %dt= t(:created)
+ %dt= t(:created_at)
%dd{class: changing_css_class(@version,"created_at")}
= l(contact.created_at, format: :short)
- %dt= t(:updated)
+ %dt= t(:updated_at)
%dd{class: changing_css_class(@version,"updated_at")}
= l(contact.updated_at, format: :short)
@@ -61,7 +62,7 @@
- if contact.street.present?
%dt= t(:street)
- %dd{class: changing_css_class(@version,"street")}= contact.street.to_s.gsub("\n", '
').html_safe
+ %dd{class: changing_css_class(@version,"street")}= contact.street
- if contact.city.present?
%dt= t(:city)
diff --git a/app/views/admin/domain_versions/archive.haml b/app/views/admin/domain_versions/archive.haml
index 5e6d8eaa9..9fdf8b000 100644
--- a/app/views/admin/domain_versions/archive.haml
+++ b/app/views/admin/domain_versions/archive.haml
@@ -55,8 +55,9 @@
%tbody
- @versions.each do |version|
- if version
- - domain = Domain.new(version.object.to_h)
- - version.object_changes.to_h.each{|k,v| domain.public_send("#{k}=", v.last) }
+ - attributes = only_present_fields(version, Domain)
+ - domain = Domain.new(attributes)
+ - attach_existing_fields(version, domain)
%tr
%td= link_to(domain.name, admin_domain_version_path(version.id))
diff --git a/app/views/admin/domain_versions/show.haml b/app/views/admin/domain_versions/show.haml
index 1a17ba3f9..9a38150be 100644
--- a/app/views/admin/domain_versions/show.haml
+++ b/app/views/admin/domain_versions/show.haml
@@ -1,5 +1,6 @@
-- domain = Domain.new(@version.object.to_h)
-- @version.object_changes.to_h.each{|k,v| domain.public_send("#{k}=", v.last) }
+- present_fields = only_present_fields(@version, Domain)
+- domain = Domain.new(present_fields)
+- attach_existing_fields(@version, domain)
- if @version
- children = HashWithIndifferentAccess.new(@version.children)
diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml
index c41f5cd6b..14e158ec0 100644
--- a/app/views/admin/settings/index.haml
+++ b/app/views/admin/settings/index.haml
@@ -99,6 +99,7 @@
= render 'setting_row', var: :registry_state
= render 'setting_row', var: :registry_zip
= render 'setting_row', var: :registry_country_code
+ = render 'setting_row', var: :registry_whois_disclaimer
.row
.col-md-12.text-right
diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder
index 2d10f8baf..850334955 100644
--- a/app/views/epp/domains/info.xml.builder
+++ b/app/views/epp/domains/info.xml.builder
@@ -22,7 +22,7 @@ xml.epp_head do
xml.tag!('domain:contact', ac.code, 'type' => 'admin')
end
- if @nameservers && @nameservers.any?
+ if @nameservers&.any?
xml.tag!('domain:ns') do
@nameservers.each do |x|
xml.tag!('domain:hostAttr') do
diff --git a/app/views/for_models/whois.erb b/app/views/for_models/whois.erb
index 390511031..02b9b1398 100644
--- a/app/views/for_models/whois.erb
+++ b/app/views/for_models/whois.erb
@@ -1,3 +1,6 @@
+<%- if json['disclaimer'].present? -%>
+<%= json['disclaimer'].scan(/\S.{0,72}\S(?=\s|$)|\S+/).join("\n") %>
+<%- end -%>
Estonia .ee Top Level Domain WHOIS server
Domain:
@@ -23,18 +26,18 @@ changed: <%= json['registrant_changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- if json['admin_contacts'].present? -%>
Administrative contact:
<%- for contact in json['admin_contacts'] -%>
-name: <%= contact['name'] %>
+name: Not Disclosed
email: Not Disclosed - Visit www.internet.ee for webbased WHOIS
-changed: <%= contact['changed'].to_s.tr('T',' ').sub('+', ' +') %>
+changed: Not Disclosed
<%- end -%>
<%- end -%>
<% if json['tech_contacts'].present? %>
Technical contact:
<%- for contact in json['tech_contacts'] -%>
-name: <%= contact['name'] %>
+name: Not Disclosed
email: Not Disclosed - Visit www.internet.ee for webbased WHOIS
-changed: <%= contact['changed'].to_s.tr('T',' ').sub('+', ' +') %>
+changed: Not Disclosed
<%- end -%>
<%- end -%>
diff --git a/app/views/layouts/registrant/application.haml b/app/views/layouts/registrant/application.haml
deleted file mode 100644
index 12d161c94..000000000
--- a/app/views/layouts/registrant/application.haml
+++ /dev/null
@@ -1,54 +0,0 @@
-!!! 5
-%html{lang: I18n.locale.to_s}
- %head
- %meta{charset: "utf-8"}/
- %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/
- - if content_for? :head_title
- = yield :head_title
- - else
- %title= t(:registrant_head_title)
- = csrf_meta_tags
- = stylesheet_link_tag 'registrant-manifest', media: 'all'
- = favicon_link_tag 'favicon.ico'
- %body
- / Fixed navbar
- %nav.navbar.navbar-default.navbar-fixed-top
- .container
- .navbar-header
- %button.navbar-toggle.collapsed{"aria-controls" => "navbar", "aria-expanded" => "false", "data-target" => "#navbar", "data-toggle" => "collapse", :type => "button"}
- %span.sr-only Toggle navigation
- %span.icon-bar
- %span.icon-bar
- %span.icon-bar
- = link_to registrant_root_path, class: 'navbar-brand' do
- = t(:registrant_head_title)
- - if unstable_env.present?
- .text-center
- %small{style: 'color: #0074B3;'}= unstable_env
- - if current_user
- .navbar-collapse.collapse
- %ul.nav.navbar-nav.public-nav
- - if can? :view, Depp::Domain
- - active_class = %w(registrant/domains registrant/check registrant/renew registrant/tranfer registrant/keyrelays).include?(params[:controller]) ? 'active' :nil
- %li{class: active_class}= link_to t(:domains), registrant_domains_path
-
- - active_class = %w(registrant/whois).include?(params[:controller]) ? 'active' :nil
- %li{class: active_class}= link_to t(:whois), registrant_whois_path
-
- %ul.nav.navbar-nav.navbar-right
- - if user_signed_in?
- %li= link_to t(:log_out, user: current_user), '/registrant/logout'
-
- .container
- = render 'shared/flash'
- = yield
-
- %footer.footer
- .container
- .row
- .col-md-6
- = image_tag 'eis-logo-et.png'
- .col-md-6.text-right
- Version
- = CURRENT_COMMIT_HASH
- = javascript_include_tag 'registrant-manifest', async: true
diff --git a/app/views/layouts/registrant/application.html.erb b/app/views/layouts/registrant/application.html.erb
new file mode 100644
index 000000000..da081b05a
--- /dev/null
+++ b/app/views/layouts/registrant/application.html.erb
@@ -0,0 +1,84 @@
+
+
+