diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index fb9d80ae2..805c983f4 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -56,7 +56,8 @@ class Admin::SettingsController < AdminController :days_to_keep_overdue_invoices_active, :days_to_renew_domain_before_expire, :expire_warning_period, - :redemption_grace_period + :redemption_grace_period, + :expire_pending_confirmation ] floats = [:registry_vat_prc] diff --git a/app/models/domain.rb b/app/models/domain.rb index eca6a66af..e6bf2ea41 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -183,6 +183,27 @@ class Domain < ActiveRecord::Base ) end + def clean_expired_pendings + STDOUT << "#{Time.zone.now.utc} - Clean expired domain pendings\n" unless Rails.env.test? + + expire_at = Setting.expire_pending_confirmation.hours.ago + count = 0 + expired_pending_domains = Domain.where('registrant_verification_asked_at <= ?', expire_at) + expired_pending_domains.each do |domain| + unless domain.pending_update? || domain.pending_delete? + msg = "#{Time.zone.now.utc} - ISSUE: DOMAIN #{domain.id}: #{domain.name} IS IN EXPIRED PENDING LIST, " \ + "but no pendingDelete/pendingUpdate state present!\n" + STDOUT << msg unless Rails.env.test? + next + end + count += 1 + domain.clean_pendings! + end + + STDOUT << "#{Time.zone.now.utc} - Successfully cancelled #{count} domain pendings\n" unless Rails.env.test? + count + end + def start_expire_period STDOUT << "#{Time.zone.now.utc} - Expiring domains\n" unless Rails.env.test? diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml index 95fa3a1a6..85926fcef 100644 --- a/app/views/admin/settings/index.haml +++ b/app/views/admin/settings/index.haml @@ -21,6 +21,7 @@ = render 'setting_row', var: :dnskeys_max_count = render 'setting_row', var: :ns_min_count = render 'setting_row', var: :ns_max_count + = render 'setting_row', var: :expire_pending_confirmation .panel.panel-default .panel-heading.clearfix diff --git a/app/views/domain_mailer/pending_deleted.html.erb b/app/views/domain_mailer/pending_deleted.html.erb index 41f71dceb..972318ee4 100644 --- a/app/views/domain_mailer/pending_deleted.html.erb +++ b/app/views/domain_mailer/pending_deleted.html.erb @@ -4,7 +4,7 @@ Registrisse laekus taotlus domeeni <%= @domain.name %> kustutamiseks. Palun veen

Muudatuse kinnitamiseks külastage palun allolevat võrgulehekülge, kontrollige uuesti üle muudatuse andmed ning vajutage nuppu kinnitan:

-Taotlus on aktiivne 48 tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka.
+Taotlus on aktiivne <%= Setting.expire_pending_confirmation %> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka.
<%= link_to @verification_url, @verification_url %>

Lugupidamisega
@@ -19,7 +19,7 @@ Application for deletion of your domain <%= @domain.name %> has been filed. Plea To confirm the update please visit this website, once again review the data and press approve:
<%= link_to @verification_url, @verification_url %>

-The application will remain in pending status for <48> hrs and will be automaticcally rejected if it is not approved nor rejected before. +The application will remain in pending status for <%= Setting.expire_pending_confirmation %> hrs and will be automaticcally rejected if it is not approved nor rejected before.

Best Regards,
Estonian Internet Foundation diff --git a/app/views/domain_mailer/pending_deleted.text.erb b/app/views/domain_mailer/pending_deleted.text.erb index da9763c55..80e01945a 100644 --- a/app/views/domain_mailer/pending_deleted.text.erb +++ b/app/views/domain_mailer/pending_deleted.text.erb @@ -4,7 +4,7 @@ Registrisse laekus taotlus domeeni <%= @domain.name %> kustutamiseks. Palun veen Muudatuse kinnitamiseks külastage palun allolevat võrgulehekülge, kontrollige uuesti üle muudatuse andmed ning vajutage nuppu kinnitan: -Taotlus on aktiivne <48> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka. +Taotlus on aktiivne <%= Setting.expire_pending_confirmation %> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka. <%= link_to @verification_url, @verification_url %> Lugupidamisega @@ -19,7 +19,7 @@ Application for deletion of your domain <%= @domain.name %> has been filed. Plea To confirm the update please visit this website, once again review the data and press approve: <%= link_to @verification_url, @verification_url %> -The application will remain in pending status for <48> hrs and will be automaticcally rejected if it is not approved nor rejected before. +The application will remain in pending status for <%= Setting.expire_pending_confirmation %> hrs and will be automaticcally rejected if it is not approved nor rejected before. Best Regards, Estonian Internet Foundation diff --git a/app/views/domain_mailer/registrant_pending_updated.html.erb b/app/views/domain_mailer/registrant_pending_updated.html.erb index 9f071df10..2689eff68 100644 --- a/app/views/domain_mailer/registrant_pending_updated.html.erb +++ b/app/views/domain_mailer/registrant_pending_updated.html.erb @@ -13,7 +13,9 @@ Tänav: <%= @domain.registrant_street %>
Linn: <%= @domain.registrant_city %>
Riik: <%= @domain.registrant_country %>

+Taotlus on aktiivne <%= Setting.expire_pending_confirmation %> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka.
Muudatuse kinnitamiseks külastage palun allolevat võrgulehekülge, kontrollige uuesti üle muudatuse andmed ning vajutage nuppu kinnitan:
+ <%= link_to @verification_url, @verification_url %>

Lugupidamisega
@@ -36,6 +38,7 @@ Street: <%= @domain.registrant_street %>
City: <%= @domain.registrant_city %>
Country: <%= @domain.registrant_country %>

+The application will remain in pending status for <%= Setting.expire_pending_confirmation %> hrs and will be automaticcally rejected if it is not approved nor rejected before.
To confirm the update please visit this website, once again review the data and press approve:
<%= link_to @verification_url, @verification_url %>

diff --git a/app/views/domain_mailer/registrant_pending_updated.text.erb b/app/views/domain_mailer/registrant_pending_updated.text.erb index 228c7f0a4..04a85bf5e 100644 --- a/app/views/domain_mailer/registrant_pending_updated.text.erb +++ b/app/views/domain_mailer/registrant_pending_updated.text.erb @@ -13,6 +13,7 @@ Tänav: <%= @domain.registrant_street %> Linn: <%= @domain.registrant_city %> Riik: <%= @domain.registrant_country %> +Taotlus on aktiivne <%= Setting.expire_pending_confirmation %> tundi ja lükatakse automaatselt tagasi kui te seda enne ise ei kinnita või tagasi lükka. Muudatuse kinnitamiseks külastage palun allolevat võrgulehekülge, kontrollige uuesti üle muudatuse andmed ning vajutage nuppu kinnitan: <%= @verification_url %> @@ -36,6 +37,7 @@ Street: <%= @domain.registrant_street %> City: <%= @domain.registrant_city %> Country: <%= @domain.registrant_country %> +The application will remain in pending status for <%= Setting.expire_pending_confirmation %> hrs and will be automaticcally rejected if it is not approved nor rejected before. To confirm the update please visit this website, once again review the data and press approve: <%= @verification_url %> diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index 764a96c18..2cff727b4 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -10,6 +10,7 @@ if con.present? && con.table_exists?('settings') Setting.save_default(:admin_contacts_max_count, 10) Setting.save_default(:tech_contacts_min_count, 1) Setting.save_default(:tech_contacts_max_count, 10) + Setting.save_default(:expire_pending_confirmation, 48) Setting.save_default(:ds_algorithm, 2) Setting.save_default(:ds_data_allowed, true) diff --git a/config/schedule.rb b/config/schedule.rb index 6796ebbde..c418de420 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -16,28 +16,38 @@ every 10.minutes do runner 'ZonefileSetting.generate_zonefiles' end -every 6.months, at: '12pm' do +every 6.months, at: '12:01am' do runner 'Contact.destroy_orphans' end -every :day, at: '12:10pm' do +every :day, at: '12:10am' do runner 'Invoice.cancel_overdue_invoices' end -every :day, at: '12:15pm' do +every :day, at: '12:15am' do runner 'Domain.expire_domains' end +every :day, at: '12:20am' do + runner 'Domain.clean_expired_pendings' +end + every 3.hours do runner 'Certificate.update_crl' end -every :hour do - runner 'Domain.start_expire_period' - runner 'Domain.start_redemption_grace_period' - runner 'Domain.start_delete_period' -end - every 42.minutes do runner 'Domain.destroy_delete_candidates' end + +every 45.minutes do + runner 'Domain.start_expire_period' +end + +every 50.minutes do + runner 'Domain.start_delete_period' +end + +every 52.minutes do + runner 'Domain.start_redemption_grace_period' +end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 161eae0e5..4546ef580 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -94,6 +94,30 @@ describe Domain do @domain.registrant_update_confirmable?('123').should == false end + it 'should not find any domain pendings to clean' do + Domain.clean_expired_pendings.should == 0 + end + + it 'should not find any domains with wrong pendings' do + domain = Fabricate(:domain) + domain.registrant_verification_asked!('frame-str', '1') + domain.registrant_verification_asked_at = 30.days.ago + domain.save + + Domain.clean_expired_pendings.should == 0 + end + + it 'should clean domain pendings' do + domain = Fabricate(:domain) + domain.registrant_verification_asked!('frame-str', '1') + domain.registrant_verification_asked_at = 30.days.ago + domain.pending_delete! + + Domain.clean_expired_pendings.should == 1 + domain.reload.pending_delete?.should == false + domain.pending_json.should == {} + end + it 'should expire domains' do Domain.start_expire_period @domain.statuses.include?(DomainStatus::EXPIRED).should == false