Added first version of whois update and sync tasks

This commit is contained in:
Priit Tark 2015-04-14 16:01:27 +03:00
parent e678e655da
commit fbd7ca3146
2 changed files with 41 additions and 10 deletions

View file

@ -53,6 +53,7 @@ class Domain < ActiveRecord::Base
end
after_save :manage_automatic_statuses
after_save :update_whois_body
after_save :update_whois_server
validates :name_dirty, domain_name: true, uniqueness: true
validates :period, numericality: { only_integer: true }
@ -118,6 +119,10 @@ class Domain < ActiveRecord::Base
return period.to_i.months if unit == 'm'
return period.to_i.years if unit == 'y'
end
def included
includes(:registrar, :nameservers, {tech_contacts: :registrar}, {admin_contacts: :registrar})
end
end
def name=(value)
@ -228,12 +233,6 @@ class Domain < ActiveRecord::Base
log
end
def update_whois_server
wd = Whois::Domain.find_or_initialize_by(name: name)
wd.whois_body = whois_body
wd.save
end
# rubocop:disable Metrics/MethodLength
def update_whois_body
self.whois_body = <<-EOS
@ -260,14 +259,12 @@ class Domain < ActiveRecord::Base
created: #{registrar.created_at.to_s(:db)}
changed: #{registrar.updated_at.to_s(:db)}
EOS
update_whois_server
end
# rubocop:enable Metrics/MethodLength
def contacts_body
out = ''
admin_contacts.includes(:registrar).each do |c|
admin_contacts.each do |c|
out << 'Admin contact:'
out << "name: #{c.name}"
out << "email: #{c.email}"
@ -275,7 +272,7 @@ class Domain < ActiveRecord::Base
out << "created: #{c.created_at.to_s(:db)}"
end
tech_contacts.includes(:registrar).each do |c|
tech_contacts.each do |c|
out << 'Tech contact:'
out << "name: #{c.name}"
out << "email: #{c.email}"
@ -284,4 +281,10 @@ class Domain < ActiveRecord::Base
end
out
end
def update_whois_server
wd = Whois::Domain.find_or_initialize_by(name: name)
wd.whois_body = whois_body
wd.save
end
end

28
lib/tasks/whois.rake Normal file
View file

@ -0,0 +1,28 @@
namespace :whois do
desc 'Regenerate Registry records and sync whois database'
task sync_all: :environment do
end
desc 'Regenerate whois records at Registry master database'
task generate: :environment do
start = Time.zone.now.to_f
print "-----> Update Registry whois records..."
Domain.included.find_each(batch_size: 100000).with_index do |d, index|
d.update_columns(whois_body: d.update_whois_body)
print '.' if index % 100 == 0
end
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
end
desc 'Sync whois database'
task sync: :environment do
start = Time.zone.now.to_f
print "-----> Sync whois database..."
Domain.select(:id, :name, :whois_body).find_each(batch_size: 100000).with_index do |d, index|
d.update_whois_server
print '.' if index % 100 == 0
end
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
end
end