Merge branch 'story/105418634-generate-record' into staging

This commit is contained in:
Vladimir Krylov 2015-10-28 20:48:06 +02:00
commit a325db2bb9
5 changed files with 65 additions and 50 deletions

View file

@ -6,14 +6,6 @@ class WhoisRecord < ActiveRecord::Base
validates :domain, :name, :body, :json, presence: true validates :domain, :name, :body, :json, presence: true
before_validation :populate before_validation :populate
def populate
return if domain_id.blank?
self.json = generate_json
self.body = generated_body
self.name = json['name']
self.registrar_id = domain.registrar_id # for faster registrar updates
end
after_save :update_whois_server after_save :update_whois_server
class << self class << self
@ -30,6 +22,10 @@ class WhoisRecord < ActiveRecord::Base
end end
end end
def generated_json
@generated_json ||= generate_json
end
# rubocop:disable Metrics/MethodLength # rubocop:disable Metrics/MethodLength
# rubocop:disable Metrics/AbcSize # rubocop:disable Metrics/AbcSize
def generate_json def generate_json
@ -92,6 +88,8 @@ class WhoisRecord < ActiveRecord::Base
end end
def generated_body def generated_body
self.json = generated_json if self.json.blank?
template = Rails.root.join("app/views/for_models/whois.erb".freeze) template = Rails.root.join("app/views/for_models/whois.erb".freeze)
ERB.new(template.read, nil, "-").result.binding ERB.new(template.read, nil, "-").result.binding
end end
@ -99,6 +97,14 @@ class WhoisRecord < ActiveRecord::Base
# rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/AbcSize
def populate
return if domain_id.blank?
self.json = generated_json
self.body = generated_body
self.name = json['name']
self.registrar_id = domain.registrar_id # for faster registrar updates
end
def update_whois_server def update_whois_server
wd = Whois::Record.find_or_initialize_by(name: name) wd = Whois::Record.find_or_initialize_by(name: name)
wd.body = body wd.body = body

View file

@ -1,59 +1,59 @@
Estonia .ee Top Level Domain WHOIS server Estonia .ee Top Level Domain WHOIS server
Domain: Domain:
name: <%= json[:name] %> name: <%= json['name'] %>
<%- for st in Array(json[:status]) -%> <%- for st in Array(json['status']) -%>
status: <%= st %> status: <%= st %>
<%- end -%> <%- end -%>
registered: <%= json[:registered].to_s.tr('T',' ').sub('+', ' +') %> registered: <%= json['registered'].to_s.tr('T',' ').sub('+', ' +') %>
changed: <%= json[:changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= json['changed'].to_s.tr('T',' ').sub('+', ' +') %>
expire: <%= json[:expire].to_s.tr('T',' ').sub('+', ' +') %> expire: <%= json['expire'].to_s.tr('T',' ').sub('+', ' +') %>
outzone: <%= json[:outzone].to_s.tr('T',' ').sub('+', ' +') %> outzone: <%= json['outzone'].to_s.tr('T',' ').sub('+', ' +') %>
delete: <%= json[:delete].to_s.tr('T',' ').sub('+', ' +') %> delete: <%= json['delete'].to_s.tr('T',' ').sub('+', ' +') %>
Registrant: Registrant:
name: <%= json[:registrant] %> name: <%= json['registrant'] %>
email: Not Disclosed - Visit www.internet.ee for webbased WHOIS email: Not Disclosed - Visit www.internet.ee for webbased WHOIS
changed: <%= json[:changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= json['changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- if json[:admin_contacts].present? -%> <%- if json['admin_contacts'].present? -%>
Administrative contact Administrative contact
<%- for contact in json[:admin_contacts] -%> <%- for contact in json['admin_contacts'] -%>
name: <%= contact[:name] %> name: <%= contact['name'] %>
email: Not Disclosed - Visit www.internet.ee for webbased WHOIS email: Not Disclosed - Visit www.internet.ee for webbased WHOIS
changed: <%= contact[:changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= contact['changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- end -%> <%- end -%>
<%- end -%> <%- end -%>
<% if json[:tech_contacts].present? %> <% if json['tech_contacts'].present? %>
Technical contact: Technical contact:
<%- for contact in json[:admin_contacts] -%> <%- for contact in json['admin_contacts'] -%>
name: <%= contact[:name] %> name: <%= contact['name'] %>
email: Not Disclosed - Visit www.internet.ee for webbased WHOIS email: Not Disclosed - Visit www.internet.ee for webbased WHOIS
changed: <%= contact[:changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= contact['changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- end -%> <%- end -%>
<%- end -%> <%- end -%>
Registrar: Registrar:
name: <%= json[:registrar] %> name: <%= json['registrar'] %>
url: <%= json[:registrar_url] %> url: <%= json['registrar_url'] %>
phone: <%= json[:registrar_phone] %> phone: <%= json['registrar_phone'] %>
changed: <%= json[:registrar_changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= json['registrar_changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- if json[:nameservers].present? -%> <%- if json['nameservers'].present? -%>
Name servers: Name servers:
<%- for server in json[:nameservers] -%> <%- for server in json['nameservers'] -%>
nserver: <%= server %> nserver: <%= server %>
<%- end -%> <%- end -%>
changed: <%= json[:nameservers_changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= json['nameservers_changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- end -%> <%- end -%>
<%- if json[:dnssec_keys].present? -%> <%- if json['dnssec_keys'].present? -%>
DNSSEC: DNSSEC:
<%- for key in json[:dnssec_keys] -%> <%- for key in json['dnssec_keys'] -%>
dnskey: <%= key %> dnskey: <%= key %>
<%- end -%> <%- end -%>
changed: <%= json[:dnssec_changed].to_s.tr('T',' ').sub('+', ' +') %> changed: <%= json['dnssec_changed'].to_s.tr('T',' ').sub('+', ' +') %>
<%- end -%> <%- end -%>
Estonia .ee Top Level Domain WHOIS server Estonia .ee Top Level Domain WHOIS server

View file

@ -0,0 +1,5 @@
class AddUpdatedAtToDnskey < ActiveRecord::Migration
def change
add_column :dnskeys, :updated_at, :datetime
end
end

View file

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150921111842) do ActiveRecord::Schema.define(version: 20151028183132) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -240,19 +240,20 @@ ActiveRecord::Schema.define(version: 20150921111842) do
end end
create_table "dnskeys", force: :cascade do |t| create_table "dnskeys", force: :cascade do |t|
t.integer "domain_id" t.integer "domain_id"
t.integer "flags" t.integer "flags"
t.integer "protocol" t.integer "protocol"
t.integer "alg" t.integer "alg"
t.text "public_key" t.text "public_key"
t.integer "delegation_signer_id" t.integer "delegation_signer_id"
t.string "ds_key_tag" t.string "ds_key_tag"
t.integer "ds_alg" t.integer "ds_alg"
t.integer "ds_digest_type" t.integer "ds_digest_type"
t.string "ds_digest" t.string "ds_digest"
t.string "creator_str" t.string "creator_str"
t.string "updator_str" t.string "updator_str"
t.integer "legacy_domain_id" t.integer "legacy_domain_id"
t.datetime "updated_at"
end end
add_index "dnskeys", ["delegation_signer_id"], name: "index_dnskeys_on_delegation_signer_id", using: :btree add_index "dnskeys", ["delegation_signer_id"], name: "index_dnskeys_on_delegation_signer_id", using: :btree

View file

@ -745,7 +745,8 @@ CREATE TABLE dnskeys (
ds_digest character varying, ds_digest character varying,
creator_str character varying, creator_str character varying,
updator_str character varying, updator_str character varying,
legacy_domain_id integer legacy_domain_id integer,
updated_at timestamp without time zone
); );
@ -5480,3 +5481,5 @@ INSERT INTO schema_migrations (version) VALUES ('20150921110152');
INSERT INTO schema_migrations (version) VALUES ('20150921111842'); INSERT INTO schema_migrations (version) VALUES ('20150921111842');
INSERT INTO schema_migrations (version) VALUES ('20151028183132');