diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 3eba05777..4250e0e84 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 @@ -359,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,4 +400,26 @@ class EppController < ApplicationController timeout = 5.minutes 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}" + + 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 64% rename from lib/sorted_country.rb rename to app/models/sorted_country.rb index 8b69d951a..19ad5f4f3 100644 --- a/lib/sorted_country.rb +++ b/app/models/sorted_country.rb @@ -1,18 +1,15 @@ -require 'countries' -require 'action_view' - class SortedCountry class << self 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 @@ -21,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/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 b06598cdc..ecb054409 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/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 diff --git a/config/initializers/array.rb b/lib/core_ext/array.rb similarity index 57% rename from config/initializers/array.rb rename to lib/core_ext/array.rb index b48249d27..2dee1d56a 100644 --- a/config/initializers/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 +end diff --git a/lib/ext/xml_builder.rb b/lib/ext/xml_builder.rb deleted file mode 100644 index 2c933c480..000000000 --- a/lib/ext/xml_builder.rb +++ /dev/null @@ -1,14 +0,0 @@ -require 'builder' - -class Builder::XmlMarkup - def epp_head - self.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 diff --git a/lib/gem_ext/builder.rb b/lib/gem_ext/builder.rb new file mode 100644 index 000000000..d4ebe2efd --- /dev/null +++ b/lib/gem_ext/builder.rb @@ -0,0 +1,14 @@ +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/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 93% rename from config/initializers/001_paper_trail.rb rename to lib/gem_ext/paper_trail.rb index 9dec5fb12..200e71d48 100644 --- a/config/initializers/001_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 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