From 30ac973f9610e685dc58790ee2dbfa9b1a15f351 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 5 Jun 2018 17:26:14 +0300 Subject: [PATCH 1/5] Remove `lib` folder from autoload path - Load extensions explicitly --- app/controllers/epp_controller.rb | 17 ++++++++++++++++- {lib => app/models}/sorted_country.rb | 3 --- config/application.rb | 2 +- config/initializers/devise.rb | 2 ++ config/initializers/ext.rb | 4 ++++ config/initializers/load_class_extensions.rb | 1 - config/routes.rb | 2 +- {config/initializers => lib/core_ext}/array.rb | 0 lib/{ext/xml_builder.rb => gem_ext/builder.rb} | 0 .../relaxed_i18n.rb => lib/gem_ext/i18n.rb | 2 +- .../gem_ext/paper_trail.rb | 0 lib/iptable.rb | 17 ----------------- 12 files changed, 25 insertions(+), 25 deletions(-) rename {lib => app/models}/sorted_country.rb (96%) create mode 100644 config/initializers/ext.rb delete mode 100644 config/initializers/load_class_extensions.rb rename {config/initializers => lib/core_ext}/array.rb (100%) rename lib/{ext/xml_builder.rb => gem_ext/builder.rb} (100%) rename config/initializers/relaxed_i18n.rb => lib/gem_ext/i18n.rb (86%) rename config/initializers/001_paper_trail.rb => lib/gem_ext/paper_trail.rb (100%) delete mode 100644 lib/iptable.rb diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 3eba05777..5cc006eda 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -1,5 +1,4 @@ class EppController < ApplicationController - include Iptable layout false protect_from_forgery with: :null_session skip_before_action :verify_authenticity_token @@ -407,4 +406,20 @@ class EppController < ApplicationController timeout = 5.minutes epp_session.updated_at < (Time.zone.now - timeout) end + + def counter_update(registrar_code, ip) + counter_proc = "/proc/net/xt_recent/#{registrar_code}" + + begin + File.open(counter_proc, 'a') do |f| + f.puts "+#{ip}" + end + rescue Errno::ENOENT => e + logger.error "IPTABLES COUNTER UPDATE: cannot open #{counter_proc}: #{e}" + rescue Errno::EACCES => e + logger.error "IPTABLES COUNTER UPDATE: no permission #{counter_proc}: #{e}" + rescue IOError => e + logger.error "IPTABLES COUNTER UPDATE: cannot write #{ip} to #{counter_proc}: #{e}" + end + end end diff --git a/lib/sorted_country.rb b/app/models/sorted_country.rb similarity index 96% rename from lib/sorted_country.rb rename to app/models/sorted_country.rb index 8b69d951a..4eb5750f5 100644 --- a/lib/sorted_country.rb +++ b/app/models/sorted_country.rb @@ -1,6 +1,3 @@ -require 'countries' -require 'action_view' - class SortedCountry class << self include ActionView::Helpers diff --git a/config/application.rb b/config/application.rb index 0d043fa5e..400e72124 100644 --- a/config/application.rb +++ b/config/application.rb @@ -40,8 +40,8 @@ module DomainNameRegistry # Autoload all model subdirs config.autoload_paths += Dir[Rails.root.join('app', 'models', '**/')] - config.autoload_paths << Rails.root.join('lib') config.eager_load_paths << config.root.join('lib', 'validators') + config.watchable_dirs['lib'] = %i[rb] # Add the fonts path config.assets.paths << Rails.root.join('vendor', 'assets', 'fonts') diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 3fe74cba6..eceb6d5f2 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -1,3 +1,5 @@ +require 'devise_custom_failure' + # Use this hook to configure devise mailer, warden hooks and so forth. # Many of these configuration options can be set straight in your model. Devise.setup do |config| diff --git a/config/initializers/ext.rb b/config/initializers/ext.rb new file mode 100644 index 000000000..50b8b2791 --- /dev/null +++ b/config/initializers/ext.rb @@ -0,0 +1,4 @@ +require 'core_ext/array' +require 'gem_ext/builder' +require 'gem_ext/i18n' +require 'gem_ext/paper_trail' \ No newline at end of file diff --git a/config/initializers/load_class_extensions.rb b/config/initializers/load_class_extensions.rb deleted file mode 100644 index f9fb4625c..000000000 --- a/config/initializers/load_class_extensions.rb +++ /dev/null @@ -1 +0,0 @@ -Dir[File.join(Rails.root, 'lib', 'ext', '*.rb')].each { |x| require x } diff --git a/config/routes.rb b/config/routes.rb index 5ef26a195..ab6369775 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,4 @@ -require 'epp_constraint' +require_dependency 'epp_constraint' Rails.application.routes.draw do namespace(:epp, defaults: { format: :xml }) do diff --git a/config/initializers/array.rb b/lib/core_ext/array.rb similarity index 100% rename from config/initializers/array.rb rename to lib/core_ext/array.rb diff --git a/lib/ext/xml_builder.rb b/lib/gem_ext/builder.rb similarity index 100% rename from lib/ext/xml_builder.rb rename to lib/gem_ext/builder.rb diff --git a/config/initializers/relaxed_i18n.rb b/lib/gem_ext/i18n.rb similarity index 86% rename from config/initializers/relaxed_i18n.rb rename to lib/gem_ext/i18n.rb index fc9b94983..2f7fceff7 100644 --- a/config/initializers/relaxed_i18n.rb +++ b/lib/gem_ext/i18n.rb @@ -1,5 +1,5 @@ # Don't raise error when nil -# http://stackoverflow.com/questions/9467034/rails-i18n-how-to-handle-case-of-a-nil-date-being-passed-ie-lnil +# http://stackoverflow.com/questions/9467034/rails-i18n-how-to-handle-case-of-a-nil-date-being-passed-ie-lnil module I18n class << self alias_method :original_localize, :localize diff --git a/config/initializers/001_paper_trail.rb b/lib/gem_ext/paper_trail.rb similarity index 100% rename from config/initializers/001_paper_trail.rb rename to lib/gem_ext/paper_trail.rb diff --git a/lib/iptable.rb b/lib/iptable.rb deleted file mode 100644 index c41bc37f4..000000000 --- a/lib/iptable.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Iptable - def counter_update(registrar_code, ip) - counter_proc = "/proc/net/xt_recent/#{registrar_code}" - - begin - File.open(counter_proc, 'a') do |f| - f.puts "+#{ip}" - end - rescue Errno::ENOENT => e - logger.error "IPTABLES COUNTER UPDATE: cannot open #{counter_proc}: #{e}" - rescue Errno::EACCES => e - logger.error "IPTABLES COUNTER UPDATE: no permission #{counter_proc}: #{e}" - rescue IOError => e - logger.error "IPTABLES COUNTER UPDATE: cannot write #{ip} to #{counter_proc}: #{e}" - end - end -end From 132ba8c6e2d1f7638c67ba910c26605ba9bd3f62 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 6 Jun 2018 03:11:28 +0300 Subject: [PATCH 2/5] Hide method --- app/controllers/epp_controller.rb | 12 ++++++------ doc/controllers_complete.svg | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 5cc006eda..4250e0e84 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -358,12 +358,6 @@ class EppController < ApplicationController # rubocop: enable Metrics/CyclomaticComplexity # rubocop: enable Metrics/PerceivedComplexity - def iptables_counter_update - return if ENV['iptables_counter_enabled'].blank? && ENV['iptables_counter_enabled'] != 'true' - return if current_user.blank? - counter_update(current_user.registrar_code, ENV['iptables_server_ip']) - end - def resource name = self.class.to_s.sub("Epp::","").sub("Controller","").underscore.singularize instance_variable_get("@#{name}") @@ -407,6 +401,12 @@ class EppController < ApplicationController epp_session.updated_at < (Time.zone.now - timeout) end + def iptables_counter_update + return if ENV['iptables_counter_enabled'].blank? && ENV['iptables_counter_enabled'] != 'true' + return if current_user.blank? + counter_update(current_user.registrar_code, ENV['iptables_server_ip']) + end + def counter_update(registrar_code, ip) counter_proc = "/proc/net/xt_recent/#{registrar_code}" diff --git a/doc/controllers_complete.svg b/doc/controllers_complete.svg index dcf736019..7f3644dd3 100644 --- a/doc/controllers_complete.svg +++ b/doc/controllers_complete.svg @@ -668,7 +668,6 @@ generate_svtrid handle_errors has_attribute -iptables_counter_update latin_only mutually_exclusive optional From d87f4992948bc3962978821ba53a0ae710e529b6 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 6 Jun 2018 03:15:58 +0300 Subject: [PATCH 3/5] Remove unneeded require --- lib/gem_ext/builder.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/gem_ext/builder.rb b/lib/gem_ext/builder.rb index 2c933c480..e5038592a 100644 --- a/lib/gem_ext/builder.rb +++ b/lib/gem_ext/builder.rb @@ -1,5 +1,3 @@ -require 'builder' - class Builder::XmlMarkup def epp_head self.instruct! From 3400a1bd3edecf657344cace670c371414c78bb7 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 6 Jun 2018 03:20:25 +0300 Subject: [PATCH 4/5] Fix code style issues from CodeClimate --- app/models/sorted_country.rb | 10 +++++----- lib/core_ext/array.rb | 2 +- lib/gem_ext/builder.rb | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/models/sorted_country.rb b/app/models/sorted_country.rb index 4eb5750f5..e4f2ad330 100644 --- a/app/models/sorted_country.rb +++ b/app/models/sorted_country.rb @@ -18,12 +18,12 @@ class SortedCountry def quick_list @quick_list ||= [ - ['Estonia', 'EE'], - ['Finland', 'FI'], - ['Latvia', 'LV'], - ['Lithuania', 'LT'], + %w[Estonia' EE], + %w[Finland FI], + %w[Latvia LV], + %w[Lithuania LT], ['Russian Federation', 'RU'], - ['Sweden', 'SE'], + %w[Sweden SE], ['United States', 'US'] ] end diff --git a/lib/core_ext/array.rb b/lib/core_ext/array.rb index b48249d27..ec280ab81 100644 --- a/lib/core_ext/array.rb +++ b/lib/core_ext/array.rb @@ -1,5 +1,5 @@ class Array - def include_any? *args + def include_any?(*args) (self & args).any? end end \ No newline at end of file diff --git a/lib/gem_ext/builder.rb b/lib/gem_ext/builder.rb index e5038592a..8f2945040 100644 --- a/lib/gem_ext/builder.rb +++ b/lib/gem_ext/builder.rb @@ -1,6 +1,6 @@ class Builder::XmlMarkup def epp_head - self.instruct! + instruct! epp( 'xmlns' => 'https://epp.tld.ee/schema/epp-ee-1.0.xsd', 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', From 7a5a46b158dcd1cb2597606711e0a202fa1ded65 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 6 Jun 2018 22:04:26 +0300 Subject: [PATCH 5/5] Fix CodeClimate issues --- app/models/sorted_country.rb | 8 ++++---- lib/core_ext/array.rb | 2 +- lib/gem_ext/builder.rb | 20 +++++++++++--------- lib/gem_ext/paper_trail.rb | 2 +- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/models/sorted_country.rb b/app/models/sorted_country.rb index e4f2ad330..19ad5f4f3 100644 --- a/app/models/sorted_country.rb +++ b/app/models/sorted_country.rb @@ -3,13 +3,13 @@ class SortedCountry include ActionView::Helpers def all_options(selected = nil) - quick_options = options_for_select(quick_list, { selected: selected }) + quick_options = options_for_select(quick_list, selected: selected) # no double select - selected = quick_list.map(&:second).include?(selected) ? '' : selected + selected = quick_list.map(&:second).include?(selected) ? '' : selected - all_options = options_for_select([['---', '---']] + all_sorted_truncated, - { selected: selected, disabled: ['---'] }) + all_options = options_for_select([['---', '---']] + all_sorted_truncated, + selected: selected, disabled: ['---']) quick_options + all_options end diff --git a/lib/core_ext/array.rb b/lib/core_ext/array.rb index ec280ab81..2dee1d56a 100644 --- a/lib/core_ext/array.rb +++ b/lib/core_ext/array.rb @@ -2,4 +2,4 @@ class Array def include_any?(*args) (self & args).any? end -end \ No newline at end of file +end diff --git a/lib/gem_ext/builder.rb b/lib/gem_ext/builder.rb index 8f2945040..d4ebe2efd 100644 --- a/lib/gem_ext/builder.rb +++ b/lib/gem_ext/builder.rb @@ -1,12 +1,14 @@ -class Builder::XmlMarkup - def epp_head - instruct! - epp( - 'xmlns' => 'https://epp.tld.ee/schema/epp-ee-1.0.xsd', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'lib/schemas/epp-ee-1.0.xsd' - ) do - yield +module Builder + class XmlMarkup + def epp_head + instruct! + epp( + 'xmlns' => 'https://epp.tld.ee/schema/epp-ee-1.0.xsd', + 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:schemaLocation' => 'lib/schemas/epp-ee-1.0.xsd' + ) do + yield + end end end end diff --git a/lib/gem_ext/paper_trail.rb b/lib/gem_ext/paper_trail.rb index 9dec5fb12..200e71d48 100644 --- a/lib/gem_ext/paper_trail.rb +++ b/lib/gem_ext/paper_trail.rb @@ -8,7 +8,7 @@ end # Store console and rake changes in versions if defined?(::Rails::Console) || File.basename($PROGRAM_NAME).split(' ').first == 'spring' PaperTrail.whodunnit = "console-#{`whoami`.strip}" -elsif File.basename($PROGRAM_NAME) == "rake" +elsif File.basename($PROGRAM_NAME) == 'rake' # rake username does not work when spring enabled PaperTrail.whodunnit = "rake-#{`whoami`.strip} #{ARGV.join ' '}" end