mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 01:47:18 +02:00
Merge branch 'master' of github.com:domify/registry
This commit is contained in:
commit
11f149bd53
11 changed files with 126 additions and 21 deletions
|
@ -28,6 +28,24 @@ class Admin::DomainsController < AdminController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_force_delete
|
||||||
|
if @domain.set_force_delete
|
||||||
|
flash[:notice] = I18n.t('domain_updated')
|
||||||
|
else
|
||||||
|
flash.now[:alert] = I18n.t('failed_to_update_domain')
|
||||||
|
end
|
||||||
|
redirect_to [:admin, @domain]
|
||||||
|
end
|
||||||
|
|
||||||
|
def unset_force_delete
|
||||||
|
if @domain.unset_force_delete
|
||||||
|
flash[:notice] = I18n.t('domain_updated')
|
||||||
|
else
|
||||||
|
flash.now[:alert] = I18n.t('failed_to_update_domain')
|
||||||
|
end
|
||||||
|
redirect_to [:admin, @domain]
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_domain
|
def set_domain
|
||||||
|
|
|
@ -152,7 +152,10 @@ class Domain < ActiveRecord::Base
|
||||||
|
|
||||||
d = Domain.where('valid_to <= ?', Time.zone.now)
|
d = Domain.where('valid_to <= ?', Time.zone.now)
|
||||||
d.each do |x|
|
d.each do |x|
|
||||||
x.domain_statuses.create(value: DomainStatus::EXPIRED) if x.expirable?
|
next unless x.expirable?
|
||||||
|
x.domain_statuses.create(value: DomainStatus::EXPIRED)
|
||||||
|
# TODO: This should be managed by automatic_statuses
|
||||||
|
x.domain_statuses.where(value: DomainStatus::OK).destroy_all
|
||||||
end
|
end
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Successfully expired #{d.count} domains\n" unless Rails.env.test?
|
STDOUT << "#{Time.zone.now.utc} - Successfully expired #{d.count} domains\n" unless Rails.env.test?
|
||||||
|
@ -163,7 +166,10 @@ class Domain < ActiveRecord::Base
|
||||||
|
|
||||||
d = Domain.where('outzone_at <= ?', Time.zone.now)
|
d = Domain.where('outzone_at <= ?', Time.zone.now)
|
||||||
d.each do |x|
|
d.each do |x|
|
||||||
x.domain_statuses.create(value: DomainStatus::SERVER_HOLD) if x.server_holdable?
|
next unless x.server_holdable?
|
||||||
|
x.domain_statuses.create(value: DomainStatus::SERVER_HOLD)
|
||||||
|
# TODO: This should be managed by automatic_statuses
|
||||||
|
x.domain_statuses.where(value: DomainStatus::OK).destroy_all
|
||||||
end
|
end
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Successfully set server_hold to #{d.count} domains\n" unless Rails.env.test?
|
STDOUT << "#{Time.zone.now.utc} - Successfully set server_hold to #{d.count} domains\n" unless Rails.env.test?
|
||||||
|
@ -175,6 +181,8 @@ class Domain < ActiveRecord::Base
|
||||||
d = Domain.where('delete_at <= ?', Time.zone.now)
|
d = Domain.where('delete_at <= ?', Time.zone.now)
|
||||||
d.each do |x|
|
d.each do |x|
|
||||||
x.domain_statuses.create(value: DomainStatus::DELETE_CANDIDATE) if x.delete_candidateable?
|
x.domain_statuses.create(value: DomainStatus::DELETE_CANDIDATE) if x.delete_candidateable?
|
||||||
|
# TODO: This should be managed by automatic_statuses
|
||||||
|
x.domain_statuses.where(value: DomainStatus::OK).destroy_all
|
||||||
end
|
end
|
||||||
|
|
||||||
return if Rails.env.test?
|
return if Rails.env.test?
|
||||||
|
@ -190,6 +198,11 @@ class Domain < ActiveRecord::Base
|
||||||
c += 1
|
c += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Domain.where('force_delete_at <= ?', Time.zone.now).each do |x|
|
||||||
|
x.destroy
|
||||||
|
c += 1
|
||||||
|
end
|
||||||
|
|
||||||
STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{c} domains\n" unless Rails.env.test?
|
STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{c} domains\n" unless Rails.env.test?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -245,7 +258,7 @@ class Domain < ActiveRecord::Base
|
||||||
|
|
||||||
def renewable?
|
def renewable?
|
||||||
if Setting.days_to_renew_domain_before_expire != 0
|
if Setting.days_to_renew_domain_before_expire != 0
|
||||||
if (valid_to - Time.zone.now).to_i / 1.day >= Setting.days_to_renew_domain_before_expire
|
if ((valid_to - Time.zone.now.beginning_of_day).to_i / 1.day) + 1 > Setting.days_to_renew_domain_before_expire
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -298,6 +311,10 @@ class Domain < ActiveRecord::Base
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def force_deletable?
|
||||||
|
domain_statuses.where(value: DomainStatus::FORCE_DELETE).empty?
|
||||||
|
end
|
||||||
|
|
||||||
def registrant_verification_asked?
|
def registrant_verification_asked?
|
||||||
registrant_verification_asked_at.present? && registrant_verification_token.present?
|
registrant_verification_asked_at.present? && registrant_verification_token.present?
|
||||||
end
|
end
|
||||||
|
@ -399,9 +416,34 @@ class Domain < ActiveRecord::Base
|
||||||
self.delete_at = outzone_at + Setting.redemption_grace_period.days
|
self.delete_at = outzone_at + Setting.redemption_grace_period.days
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_force_delete
|
||||||
|
domain_statuses.where(value: DomainStatus::FORCE_DELETE).first_or_create
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_RENEW_PROHIBITED).first_or_create
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_TRANSFER_PROHIBITED).first_or_create
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_UPDATE_PROHIBITED).first_or_create
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_MANUAL_INZONE).first_or_create
|
||||||
|
domain_statuses.where(value: DomainStatus::PENDING_DELETE).first_or_create
|
||||||
|
domain_statuses.where(value: DomainStatus::CLIENT_DELETE_PROHIBITED).destroy_all
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_DELETE_PROHIBITED).destroy_all
|
||||||
|
domain_statuses.reload
|
||||||
|
self.force_delete_at = Time.zone.now + Setting.redemption_grace_period.days unless self.force_delete_at
|
||||||
|
save(validate: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
def unset_force_delete
|
||||||
|
domain_statuses.where(value: DomainStatus::FORCE_DELETE).destroy_all
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_RENEW_PROHIBITED).destroy_all
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_TRANSFER_PROHIBITED).destroy_all
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_UPDATE_PROHIBITED).destroy_all
|
||||||
|
domain_statuses.where(value: DomainStatus::SERVER_MANUAL_INZONE).destroy_all
|
||||||
|
domain_statuses.where(value: DomainStatus::PENDING_DELETE).destroy_all
|
||||||
|
domain_statuses.reload
|
||||||
|
self.force_delete_at = nil
|
||||||
|
save(validate: false)
|
||||||
|
end
|
||||||
|
|
||||||
def manage_automatic_statuses
|
def manage_automatic_statuses
|
||||||
# domain_statuses.create(value: DomainStatus::DELETE_CANDIDATE) if delete_candidateable?
|
# domain_statuses.create(value: DomainStatus::DELETE_CANDIDATE) if delete_candidateable?
|
||||||
|
|
||||||
if domain_statuses.empty? && valid?
|
if domain_statuses.empty? && valid?
|
||||||
domain_statuses.create(value: DomainStatus::OK)
|
domain_statuses.create(value: DomainStatus::OK)
|
||||||
elsif domain_statuses.length > 1 || !valid?
|
elsif domain_statuses.length > 1 || !valid?
|
||||||
|
|
|
@ -73,23 +73,23 @@ class DomainStatus < ActiveRecord::Base
|
||||||
EXPIRED = 'expired'
|
EXPIRED = 'expired'
|
||||||
|
|
||||||
STATUSES = [
|
STATUSES = [
|
||||||
CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD,
|
CLIENT_DELETE_PROHIBITED, SERVER_DELETE_PROHIBITED, CLIENT_HOLD, SERVER_HOLD,
|
||||||
CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
|
CLIENT_RENEW_PROHIBITED, SERVER_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
|
||||||
SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED,
|
SERVER_TRANSFER_PROHIBITED, CLIENT_UPDATE_PROHIBITED, SERVER_UPDATE_PROHIBITED,
|
||||||
INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER,
|
INACTIVE, OK, PENDING_CREATE, PENDING_DELETE, PENDING_RENEW, PENDING_TRANSFER,
|
||||||
PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
|
PENDING_UPDATE, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
|
||||||
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE,
|
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED, FORCE_DELETE,
|
||||||
DELETE_CANDIDATE, EXPIRED
|
DELETE_CANDIDATE, EXPIRED
|
||||||
]
|
]
|
||||||
|
|
||||||
CLIENT_STATUSES = [
|
CLIENT_STATUSES = [
|
||||||
CLIENT_DELETE_PROHIBITED, CLIENT_HOLD, CLIENT_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
|
CLIENT_DELETE_PROHIBITED, CLIENT_HOLD, CLIENT_RENEW_PROHIBITED, CLIENT_TRANSFER_PROHIBITED,
|
||||||
CLIENT_UPDATE_PROHIBITED
|
CLIENT_UPDATE_PROHIBITED
|
||||||
]
|
]
|
||||||
|
|
||||||
SERVER_STATUSES = [
|
SERVER_STATUSES = [
|
||||||
SERVER_DELETE_PROHIBITED, SERVER_HOLD, SERVER_RENEW_PROHIBITED, SERVER_TRANSFER_PROHIBITED,
|
SERVER_DELETE_PROHIBITED, SERVER_HOLD, SERVER_RENEW_PROHIBITED, SERVER_TRANSFER_PROHIBITED,
|
||||||
SERVER_UPDATE_PROHIBITED, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
|
SERVER_UPDATE_PROHIBITED, SERVER_MANUAL_INZONE, SERVER_REGISTRANT_CHANGE_PROHIBITED,
|
||||||
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED
|
SERVER_ADMIN_CHANGE_PROHIBITED, SERVER_TECH_CHANGE_PROHIBITED
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ class DomainStatus < ActiveRecord::Base
|
||||||
case value
|
case value
|
||||||
when 'ok'
|
when 'ok'
|
||||||
'ok (paid and in zone)'
|
'ok (paid and in zone)'
|
||||||
else
|
else
|
||||||
value
|
value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -434,6 +434,8 @@ class Epp::Domain < Domain
|
||||||
|
|
||||||
p = self.class.convert_period_to_time(period, unit)
|
p = self.class.convert_period_to_time(period, unit)
|
||||||
self.valid_to = valid_to + p
|
self.valid_to = valid_to + p
|
||||||
|
self.outzone_at = outzone_at + p
|
||||||
|
self.delete_at = delete_at + p
|
||||||
self.period = period
|
self.period = period
|
||||||
self.period_unit = unit
|
self.period_unit = unit
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
- content_for :actions do
|
- content_for :actions do
|
||||||
= link_to(t(:edit_statuses), edit_admin_domain_path(@domain), class: 'btn btn-primary')
|
= link_to(t(:edit_statuses), edit_admin_domain_path(@domain), class: 'btn btn-primary')
|
||||||
= link_to(t(:history), admin_domain_domain_versions_path(@domain.id), method: :get, class: 'btn btn-primary')
|
= link_to(t(:history), admin_domain_domain_versions_path(@domain.id), method: :get, class: 'btn btn-primary')
|
||||||
|
- if @domain.force_deletable?
|
||||||
|
= link_to(t(:set_force_delete), set_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning')
|
||||||
|
- else
|
||||||
|
= link_to(t(:unset_force_delete), unset_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning')
|
||||||
|
|
||||||
= render 'shared/title', name: @domain.name
|
= render 'shared/title', name: @domain.name
|
||||||
|
|
||||||
.row
|
.row
|
||||||
|
|
|
@ -818,3 +818,5 @@ en:
|
||||||
valid: Valid
|
valid: Valid
|
||||||
category: Zone
|
category: Zone
|
||||||
object_is_not_eligible_for_renewal: 'Object is not eligible for renewal'
|
object_is_not_eligible_for_renewal: 'Object is not eligible for renewal'
|
||||||
|
set_force_delete: 'Set force delete'
|
||||||
|
unset_force_delete: 'Unset force delete'
|
||||||
|
|
|
@ -175,6 +175,10 @@ Rails.application.routes.draw do
|
||||||
|
|
||||||
resources :domains do
|
resources :domains do
|
||||||
resources :domain_versions
|
resources :domain_versions
|
||||||
|
member do
|
||||||
|
post 'set_force_delete'
|
||||||
|
post 'unset_force_delete'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :settings
|
resources :settings
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddForceDeleteAtToDomain < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :domains, :force_delete_at, :datetime
|
||||||
|
end
|
||||||
|
end
|
|
@ -12,7 +12,6 @@
|
||||||
# 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: 20150610112238) do
|
ActiveRecord::Schema.define(version: 20150610112238) 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"
|
||||||
|
|
||||||
|
@ -306,6 +305,7 @@ ActiveRecord::Schema.define(version: 20150610112238) do
|
||||||
t.datetime "registrant_verification_asked_at"
|
t.datetime "registrant_verification_asked_at"
|
||||||
t.string "registrant_verification_token"
|
t.string "registrant_verification_token"
|
||||||
t.json "pending_json"
|
t.json "pending_json"
|
||||||
|
t.datetime "force_delete_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "domains", ["delete_at"], name: "index_domains_on_delete_at", using: :btree
|
add_index "domains", ["delete_at"], name: "index_domains_on_delete_at", using: :btree
|
||||||
|
|
|
@ -1999,7 +1999,8 @@ describe 'EPP Domain', epp: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not renew a domain unless less than 90 days till expiration' do
|
it 'does not renew a domain unless less than 90 days till expiration' do
|
||||||
domain.valid_to = Time.zone.now.to_date + 91.days
|
# both days are inclusive
|
||||||
|
domain.valid_to = Time.zone.now.to_date + 90.days
|
||||||
domain.save
|
domain.save
|
||||||
exp_date = domain.valid_to.to_date
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
|
@ -2013,7 +2014,7 @@ describe 'EPP Domain', epp: true do
|
||||||
response[:results][0][:msg].should == 'Object is not eligible for renewal'
|
response[:results][0][:msg].should == 'Object is not eligible for renewal'
|
||||||
response[:results][0][:result_code].should == '2105'
|
response[:results][0][:result_code].should == '2105'
|
||||||
|
|
||||||
domain.valid_to = Time.zone.now.to_date + 90.days
|
domain.valid_to = Time.zone.now.to_date + 89.days
|
||||||
domain.save
|
domain.save
|
||||||
exp_date = domain.valid_to.to_date
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
|
@ -2069,7 +2070,10 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
it 'should renew a expired domain' do
|
it 'should renew a expired domain' do
|
||||||
domain.valid_to = Time.zone.now - 50.days
|
domain.valid_to = Time.zone.now - 50.days
|
||||||
|
new_valid_to = domain.valid_to + 1.year
|
||||||
domain.outzone_at = Time.zone.now - 50.days
|
domain.outzone_at = Time.zone.now - 50.days
|
||||||
|
new_outzone_at = domain.outzone_at + 1.year
|
||||||
|
new_delete_at = domain.delete_at + 1.year
|
||||||
domain.save
|
domain.save
|
||||||
|
|
||||||
Domain.start_expire_period
|
Domain.start_expire_period
|
||||||
|
@ -2077,6 +2081,7 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
domain.domain_statuses.where(value: DomainStatus::EXPIRED).count.should == 1
|
domain.domain_statuses.where(value: DomainStatus::EXPIRED).count.should == 1
|
||||||
domain.domain_statuses.where(value: DomainStatus::SERVER_HOLD).count.should == 1
|
domain.domain_statuses.where(value: DomainStatus::SERVER_HOLD).count.should == 1
|
||||||
|
domain.domain_statuses.where(value: DomainStatus::OK).count.should == 0
|
||||||
|
|
||||||
exp_date = domain.valid_to.to_date
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
|
@ -2092,6 +2097,12 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
domain.domain_statuses.where(value: DomainStatus::EXPIRED).count.should == 0
|
domain.domain_statuses.where(value: DomainStatus::EXPIRED).count.should == 0
|
||||||
domain.domain_statuses.where(value: DomainStatus::SERVER_HOLD).count.should == 0
|
domain.domain_statuses.where(value: DomainStatus::SERVER_HOLD).count.should == 0
|
||||||
|
domain.domain_statuses.where(value: DomainStatus::OK).count.should == 1
|
||||||
|
|
||||||
|
domain.reload
|
||||||
|
domain.valid_to.should be_within(5).of(new_valid_to)
|
||||||
|
domain.outzone_at.should be_within(5).of(new_outzone_at)
|
||||||
|
domain.delete_at.should be_within(5).of(new_delete_at)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not renew foreign domain' do
|
it 'does not renew foreign domain' do
|
||||||
|
|
|
@ -143,16 +143,32 @@ describe Domain do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should destroy delete candidates' do
|
it 'should destroy delete candidates' do
|
||||||
Fabricate(:domain)
|
d = Fabricate(:domain)
|
||||||
Domain.count.should == 2
|
d.force_delete_at = Time.zone.now
|
||||||
|
d.save
|
||||||
|
|
||||||
@domain.delete_at = Time.zone.now
|
@domain.delete_at = Time.zone.now
|
||||||
@domain.save
|
@domain.save
|
||||||
|
|
||||||
|
Domain.count.should == 2
|
||||||
|
|
||||||
Domain.start_delete_period
|
Domain.start_delete_period
|
||||||
|
|
||||||
Domain.destroy_delete_candidates
|
Domain.destroy_delete_candidates
|
||||||
Domain.count.should == 1
|
Domain.count.should == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should set force delete time' do
|
||||||
|
@domain.set_force_delete
|
||||||
|
|
||||||
|
@domain.domain_statuses.count.should == 6
|
||||||
|
fda = Time.zone.now + Setting.redemption_grace_period
|
||||||
|
@domain.force_delete_at.should be_within(20).of(fda)
|
||||||
|
|
||||||
|
@domain.unset_force_delete
|
||||||
|
|
||||||
|
@domain.domain_statuses.count.should == 1
|
||||||
|
@domain.force_delete_at.should be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'about registrant update confirm' do
|
context 'about registrant update confirm' do
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue