From 7b920cac2f54e2f830273bd79434e184ab62b589 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Fri, 9 Jan 2015 16:56:52 +0200 Subject: [PATCH] Rake task for making api log schema --- app/controllers/concerns/epp/common.rb | 13 +++++-- app/controllers/epp/sessions_controller.rb | 9 +++-- app/helpers/epp/poll_helper.rb | 1 + db/api_log_schema.rb | 43 ++++++++++++++++++++++ db/seeds.rb | 5 --- lib/tasks/api_log.rake | 12 ++++++ 6 files changed, 70 insertions(+), 13 deletions(-) create mode 100644 db/api_log_schema.rb create mode 100644 lib/tasks/api_log.rake diff --git a/app/controllers/concerns/epp/common.rb b/app/controllers/concerns/epp/common.rb index ef24fe03f..712bd886e 100644 --- a/app/controllers/concerns/epp/common.rb +++ b/app/controllers/concerns/epp/common.rb @@ -9,7 +9,7 @@ module Epp::Common included do protect_from_forgery with: :null_session before_action :validate_request, only: [:proxy] - after_action :log_to_epp_log + after_action :write_to_epp_log helper_method :current_epp_user end @@ -114,15 +114,20 @@ module Epp::Common handle_errors and return unless send(validation_method) end - def log_to_epp_log + def render_epp_response(*args) + @response = render_to_string(*args) + render xml: @response + end + + def write_to_epp_log ApiLog::EppLog.create!({ request: params[:frame], request_command: params[:command], request_successful: epp_errors.empty?, request_object: OBJECT_TYPES[params_hash['epp']['xmlns:ns2']], response: @response, - api_user_name: current_epp_user.try(:to_s), - api_user_registrar: current_epp_user.try(:registrar).try(:to_s) + api_user_name: @epp_user.try(:to_s) || current_epp_user.try(:to_s), + api_user_registrar: @epp_user.try(:registrar).try(:to_s) || current_epp_user.try(:registrar).try(:to_s) }) end end diff --git a/app/controllers/epp/sessions_controller.rb b/app/controllers/epp/sessions_controller.rb index 7bf2049dd..cfb00c521 100644 --- a/app/controllers/epp/sessions_controller.rb +++ b/app/controllers/epp/sessions_controller.rb @@ -5,7 +5,7 @@ class Epp::SessionsController < ApplicationController private def hello - render 'greeting' + render_epp_response('greeting') end def login @@ -13,17 +13,18 @@ class Epp::SessionsController < ApplicationController if @epp_user.try(:active) epp_session[:epp_user_id] = @epp_user.id - render 'login_success' + render_epp_response('login_success') else response.headers['X-EPP-Returncode'] = '2200' - render 'login_fail' + render_epp_response('login_fail') end end def logout + @epp_user = current_epp_user # cache current_epp_user for logging epp_session[:epp_user_id] = nil response.headers['X-EPP-Returncode'] = '1500' - render 'logout' + render_epp_response('logout') end ### HELPER METHODS ### diff --git a/app/helpers/epp/poll_helper.rb b/app/helpers/epp/poll_helper.rb index 568ff23ac..f13fd81f8 100644 --- a/app/helpers/epp/poll_helper.rb +++ b/app/helpers/epp/poll_helper.rb @@ -15,6 +15,7 @@ module Epp::PollHelper if @message.attached_obj_type == 'Keyrelay' @response = render_to_string('epp/poll/poll_keyrelay') render xml: @response + # render 'epp/poll/poll_keyrelay' else render 'epp/poll/poll_req' end diff --git a/db/api_log_schema.rb b/db/api_log_schema.rb new file mode 100644 index 000000000..2f469bb15 --- /dev/null +++ b/db/api_log_schema.rb @@ -0,0 +1,43 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 0) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "epp_logs", force: true do |t| + t.text "request" + t.text "response" + t.string "request_command" + t.string "request_object" + t.string "request_successful" + t.string "api_user_name" + t.string "api_user_registrar" + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "repp_logs", force: true do |t| + t.text "request" + t.text "response" + t.string "request_command" + t.string "request_object" + t.string "request_successful" + t.string "api_user_name" + t.string "api_user_registrar" + t.datetime "created_at" + t.datetime "updated_at" + end + +end diff --git a/db/seeds.rb b/db/seeds.rb index b62cc3614..e21d01cd2 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -41,7 +41,6 @@ User.where( username: 'user1', password: 'test1', email: 'user1@example.ee', - admin: true, identity_code: '37810013855', country: Country.where(name: 'Estonia').first ).first_or_create @@ -50,9 +49,7 @@ User.where( username: 'user2', password: 'test2', email: 'user2@example.ee', - admin: false, identity_code: '37810010085', - registrar_id: registrar1.id, country: Country.where(name: 'Estonia').first ).first_or_create @@ -60,9 +57,7 @@ User.where( username: 'user3', password: 'test3', email: 'user3@example.ee', - admin: false, identity_code: '37810010727', - registrar_id: registrar2.id, country: Country.where(name: 'Estonia').first ).first_or_create diff --git a/lib/tasks/api_log.rake b/lib/tasks/api_log.rake new file mode 100644 index 000000000..2f02f87f4 --- /dev/null +++ b/lib/tasks/api_log.rake @@ -0,0 +1,12 @@ +namespace :api_log do + namespace :schema do + # desc 'Dump additional database schema' + task :dump => [:environment] do + filename = "#{Rails.root}/db/api_log_schema.rb" + File.open(filename, 'w:utf-8') do |file| + ActiveRecord::Base.establish_connection("api_log_#{Rails.env}") + ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file) + end + end + end +end