mirror of
https://github.com/internetee/registry.git
synced 2025-07-04 18:23:35 +02:00
Merge branch 'master' into alpha
This commit is contained in:
commit
05ba870385
46 changed files with 2178 additions and 1001 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
08.06.2015
|
||||||
|
|
||||||
|
* Add sk service name to application.yml
|
||||||
|
* Renew zonefile procedure
|
||||||
|
|
||||||
02.06.2015
|
02.06.2015
|
||||||
|
|
||||||
* Added possibility to overwrite legal document types at application.yml level.
|
* Added possibility to overwrite legal document types at application.yml level.
|
||||||
|
|
4
Gemfile
4
Gemfile
|
@ -55,7 +55,7 @@ gem 'money-rails', '~> 1.3.0' # Money helpers
|
||||||
|
|
||||||
# deploy
|
# deploy
|
||||||
gem 'whenever', '~> 0.9.4', require: false
|
gem 'whenever', '~> 0.9.4', require: false
|
||||||
gem 'data_migrate',
|
gem 'data_migrate',
|
||||||
github: 'gitlabeu/data_migrate',
|
github: 'gitlabeu/data_migrate',
|
||||||
ref: '35d22b09ff37a4e9d61ab326ad5d8eb0edf1fc81'
|
ref: '35d22b09ff37a4e9d61ab326ad5d8eb0edf1fc81'
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ gem 'digidoc_client', '~> 0.2.1'
|
||||||
|
|
||||||
# epp
|
# epp
|
||||||
gem 'epp', '~> 1.4.2', github: 'gitlabeu/epp'
|
gem 'epp', '~> 1.4.2', github: 'gitlabeu/epp'
|
||||||
gem 'epp-xml', '~> 1.0.1' # EPP XMLs
|
gem 'epp-xml', '~> 1.0.2' # EPP XMLs
|
||||||
gem 'uuidtools', '~> 2.1.4' # For unique IDs (used by the epp gem)
|
gem 'uuidtools', '~> 2.1.4' # For unique IDs (used by the epp gem)
|
||||||
|
|
||||||
# for importing legacy db
|
# for importing legacy db
|
||||||
|
|
|
@ -171,7 +171,7 @@ GEM
|
||||||
nokogiri (>= 1.4.0)
|
nokogiri (>= 1.4.0)
|
||||||
savon (>= 2.4.0)
|
savon (>= 2.4.0)
|
||||||
docile (1.1.5)
|
docile (1.1.5)
|
||||||
epp-xml (1.0.1)
|
epp-xml (1.0.2)
|
||||||
activesupport (~> 4.1)
|
activesupport (~> 4.1)
|
||||||
builder (~> 3.2)
|
builder (~> 3.2)
|
||||||
equalizer (0.0.11)
|
equalizer (0.0.11)
|
||||||
|
@ -529,7 +529,7 @@ DEPENDENCIES
|
||||||
devise (~> 3.4.1)
|
devise (~> 3.4.1)
|
||||||
digidoc_client (~> 0.2.1)
|
digidoc_client (~> 0.2.1)
|
||||||
epp (~> 1.4.2)!
|
epp (~> 1.4.2)!
|
||||||
epp-xml (~> 1.0.1)
|
epp-xml (~> 1.0.2)
|
||||||
fabrication (~> 2.12.2)
|
fabrication (~> 2.12.2)
|
||||||
faker (~> 1.3.0)
|
faker (~> 1.3.0)
|
||||||
figaro (~> 1.1.0)
|
figaro (~> 1.1.0)
|
||||||
|
|
|
@ -57,6 +57,7 @@ class Admin::AdminUsersController < AdminController
|
||||||
end
|
end
|
||||||
|
|
||||||
def admin_user_params
|
def admin_user_params
|
||||||
params.require(:admin_user).permit(:username, :password, :password_confirmation, :identity_code, :email, :country_code, { roles: [] })
|
params.require(:admin_user).permit(:username,
|
||||||
|
:password, :password_confirmation, :identity_code, :email, :country_code, { roles: [] })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -39,6 +39,7 @@ class Admin::PricelistsController < AdminController
|
||||||
end
|
end
|
||||||
|
|
||||||
def pricelist_params
|
def pricelist_params
|
||||||
params.require(:pricelist).permit(:category, :name, :duration, :price, :valid_from, :valid_to)
|
params.require(:pricelist).permit(:operation_category, :category, :price_category,
|
||||||
|
:duration, :price, :valid_from, :valid_to)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -118,6 +118,9 @@ class Epp::ContactsController < EppController
|
||||||
contact_org_disabled
|
contact_org_disabled
|
||||||
fax_disabled
|
fax_disabled
|
||||||
status_editing_disabled
|
status_editing_disabled
|
||||||
|
if params[:parsed_frame].css('ident').present?
|
||||||
|
epp_errors << { code: '2306', msg: "#{I18n.t(:ident_update_error)} [ident]" }
|
||||||
|
end
|
||||||
requires 'id'
|
requires 'id'
|
||||||
@prefix = nil
|
@prefix = nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -70,7 +70,7 @@ class Domain < ActiveRecord::Base
|
||||||
after_save :update_whois_record
|
after_save :update_whois_record
|
||||||
|
|
||||||
validates :name_dirty, domain_name: true, uniqueness: true
|
validates :name_dirty, domain_name: true, uniqueness: true
|
||||||
validates :name_puny, length: { maximum: 66 }
|
validates :puny_label, length: { maximum: 63 }
|
||||||
validates :period, numericality: { only_integer: true }
|
validates :period, numericality: { only_integer: true }
|
||||||
validates :registrant, :registrar, presence: true
|
validates :registrant, :registrar, presence: true
|
||||||
|
|
||||||
|
@ -146,6 +146,12 @@ class Domain < ActiveRecord::Base
|
||||||
{ admin_contacts: :registrar }
|
{ admin_contacts: :registrar }
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def expire_domains
|
||||||
|
Domain.where('valid_to <= ?', Time.zone.now).each do |x|
|
||||||
|
x.domain_statuses.create(value: DomainStatus::EXPIRED) if x.expirable?
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def name=(value)
|
def name=(value)
|
||||||
|
@ -160,6 +166,10 @@ class Domain < ActiveRecord::Base
|
||||||
"EIS-#{id}"
|
"EIS-#{id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def puny_label
|
||||||
|
name_puny.to_s.split('.').first
|
||||||
|
end
|
||||||
|
|
||||||
def registrant_typeahead
|
def registrant_typeahead
|
||||||
@registrant_typeahead || registrant.try(:name) || nil
|
@registrant_typeahead || registrant.try(:name) || nil
|
||||||
end
|
end
|
||||||
|
@ -174,6 +184,11 @@ class Domain < ActiveRecord::Base
|
||||||
)).empty?
|
)).empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def expirable?
|
||||||
|
return false if valid_to > Time.zone.now
|
||||||
|
domain_statuses.where(value: DomainStatus::EXPIRED).empty?
|
||||||
|
end
|
||||||
|
|
||||||
def pending_update?
|
def pending_update?
|
||||||
(domain_statuses.pluck(:value) & %W(
|
(domain_statuses.pluck(:value) & %W(
|
||||||
#{DomainStatus::PENDING_UPDATE}
|
#{DomainStatus::PENDING_UPDATE}
|
||||||
|
|
|
@ -143,7 +143,6 @@ class Epp::Contact < Contact
|
||||||
at.deep_merge!(self.class.attrs_from(frame.css('rem'), 'rem'))
|
at.deep_merge!(self.class.attrs_from(frame.css('rem'), 'rem'))
|
||||||
at.deep_merge!(self.class.attrs_from(frame.css('add')))
|
at.deep_merge!(self.class.attrs_from(frame.css('add')))
|
||||||
at.deep_merge!(self.class.attrs_from(frame.css('chg')))
|
at.deep_merge!(self.class.attrs_from(frame.css('chg')))
|
||||||
at.merge!(self.class.ident_attrs(frame.css('ident').first))
|
|
||||||
legal_frame = frame.css('legalDocument').first
|
legal_frame = frame.css('legalDocument').first
|
||||||
at[:legal_documents_attributes] = self.class.legal_document_attrs(legal_frame)
|
at[:legal_documents_attributes] = self.class.legal_document_attrs(legal_frame)
|
||||||
self.deliver_emails = true # turn on email delivery for epp
|
self.deliver_emails = true # turn on email delivery for epp
|
||||||
|
|
|
@ -34,7 +34,6 @@ class Epp::Domain < Domain
|
||||||
max: Setting.ns_max_count
|
max: Setting.ns_max_count
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
[:period, :out_of_range, { value: { obj: 'period', val: period } }],
|
|
||||||
[:dnskeys, :out_of_range,
|
[:dnskeys, :out_of_range,
|
||||||
{
|
{
|
||||||
min: Setting.dnskeys_min_count,
|
min: Setting.dnskeys_min_count,
|
||||||
|
@ -56,7 +55,7 @@ class Epp::Domain < Domain
|
||||||
],
|
],
|
||||||
'2005' => [ # Parameter value syntax error
|
'2005' => [ # Parameter value syntax error
|
||||||
[:name_dirty, :invalid, { obj: 'name', val: name_dirty }],
|
[:name_dirty, :invalid, { obj: 'name', val: name_dirty }],
|
||||||
[:name_puny, :too_long, { obj: 'name', val: name_puny }]
|
[:puny_label, :too_long, { obj: 'name', val: name_puny }]
|
||||||
],
|
],
|
||||||
'2201' => [ # Authorisation error
|
'2201' => [ # Authorisation error
|
||||||
[:auth_info, :wrong_pw]
|
[:auth_info, :wrong_pw]
|
||||||
|
@ -69,6 +68,7 @@ class Epp::Domain < Domain
|
||||||
[:base, :domain_status_prohibits_operation]
|
[:base, :domain_status_prohibits_operation]
|
||||||
],
|
],
|
||||||
'2306' => [ # Parameter policy error
|
'2306' => [ # Parameter policy error
|
||||||
|
[:period, :out_of_range, { value: { obj: 'period', val: period } }],
|
||||||
[:base, :ds_data_with_key_not_allowed],
|
[:base, :ds_data_with_key_not_allowed],
|
||||||
[:base, :ds_data_not_allowed],
|
[:base, :ds_data_not_allowed],
|
||||||
[:base, :key_data_not_allowed],
|
[:base, :key_data_not_allowed],
|
||||||
|
@ -429,6 +429,13 @@ class Epp::Domain < Domain
|
||||||
def renew(cur_exp_date, period, unit = 'y')
|
def renew(cur_exp_date, period, unit = 'y')
|
||||||
# TODO: Check how much time before domain exp date can it be renewed
|
# TODO: Check how much time before domain exp date can it be renewed
|
||||||
validate_exp_dates(cur_exp_date)
|
validate_exp_dates(cur_exp_date)
|
||||||
|
|
||||||
|
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
|
||||||
|
add_epp_error('2105', nil, nil, I18n.t('object_is_not_eligible_for_renewal'))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return false if errors.any?
|
return false if errors.any?
|
||||||
|
|
||||||
p = self.class.convert_period_to_time(period, unit)
|
p = self.class.convert_period_to_time(period, unit)
|
||||||
|
|
|
@ -3,9 +3,11 @@ class Pricelist < ActiveRecord::Base
|
||||||
|
|
||||||
monetize :price_cents
|
monetize :price_cents
|
||||||
|
|
||||||
validates :price_cents, :price_currency, :valid_from, :category, presence: true
|
validates :price_cents, :price_currency, :price,
|
||||||
|
:valid_from, :category, :operation_category, :duration, presence: true
|
||||||
|
|
||||||
CATEGORIES = %w(ee com.ee fie.ee pri.ee med.ee)
|
CATEGORIES = %w(ee pri.ee fie.ee med.ee com.ee)
|
||||||
|
OPERATION_CATEGORIES = %w(new renew)
|
||||||
DURATIONS = %w(1year 2years 3years)
|
DURATIONS = %w(1year 2years 3years)
|
||||||
|
|
||||||
after_initialize :init_values
|
after_initialize :init_values
|
||||||
|
@ -13,4 +15,8 @@ class Pricelist < ActiveRecord::Base
|
||||||
return unless new_record?
|
return unless new_record?
|
||||||
self.valid_from = Time.zone.now.beginning_of_year
|
self.valid_from = Time.zone.now.beginning_of_year
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def name
|
||||||
|
"#{operation_category} #{category}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,4 @@
|
||||||
class DomainNameValidator < ActiveModel::EachValidator
|
class DomainNameValidator < ActiveModel::EachValidator
|
||||||
# TODO
|
|
||||||
# validates lenght of 2-63
|
|
||||||
# validates/honours Estonian additional letters zäõüö
|
|
||||||
# honours punicode and all interfces honors utf8
|
|
||||||
# validates lower level domains (.pri.ee, edu.ee etc)
|
|
||||||
# lower level domains are fixed for .ee and can add statically into settings
|
|
||||||
|
|
||||||
def validate_each(record, attribute, value)
|
def validate_each(record, attribute, value)
|
||||||
if !self.class.validate_format(value)
|
if !self.class.validate_format(value)
|
||||||
record.errors[attribute] << (options[:message] || record.errors.generate_message(attribute, :invalid))
|
record.errors[attribute] << (options[:message] || record.errors.generate_message(attribute, :invalid))
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
.row
|
.row
|
||||||
.col-md-6
|
.col-md-6
|
||||||
|
.form-group
|
||||||
|
= f.label :operation_category
|
||||||
|
= f.select(:operation_category, Pricelist::OPERATION_CATEGORIES, {}, { class: 'form-control' })
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :category, t(:category)
|
= f.label :category, t(:category)
|
||||||
= f.select(:category, Pricelist::CATEGORIES, {}, { class: 'form-control' })
|
= f.select(:category, Pricelist::CATEGORIES, {}, { class: 'form-control' })
|
||||||
.form-group
|
|
||||||
= f.label :name
|
|
||||||
= f.text_field(:name, class: 'form-control')
|
|
||||||
.form-group
|
.form-group
|
||||||
= f.label :duration
|
= f.label :duration
|
||||||
= f.select(:duration, Pricelist::DURATIONS, {}, { class: 'form-control' })
|
= f.select(:duration, Pricelist::DURATIONS, {}, { class: 'form-control' })
|
||||||
|
|
|
@ -5,20 +5,6 @@
|
||||||
%h2.text-right.text-center-xs
|
%h2.text-right.text-center-xs
|
||||||
= link_to(t(:new), new_admin_pricelist_path, class: 'btn btn-primary')
|
= link_to(t(:new), new_admin_pricelist_path, class: 'btn btn-primary')
|
||||||
|
|
||||||
%hr
|
|
||||||
-# .row
|
|
||||||
-# .col-md-12
|
|
||||||
-# = form_tag admin_pricelists_path, html: { class: 'form-horizontal' } do
|
|
||||||
-# .col-md-11
|
|
||||||
-# .form-group
|
|
||||||
-# = search_field_tag :name_cont, class: 'form-control'
|
|
||||||
-# .col-md-1.text-right.text-center-xs
|
|
||||||
-# .form-group
|
|
||||||
-# %button.btn.btn-primary
|
|
||||||
-#
|
|
||||||
-# %span.glyphicon.glyphicon-search
|
|
||||||
-#
|
|
||||||
|
|
||||||
%hr
|
%hr
|
||||||
.row
|
.row
|
||||||
.col-md-12
|
.col-md-12
|
||||||
|
@ -29,9 +15,9 @@
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'category', t(:category))
|
= sort_link(@q, 'category', t(:category))
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'duration', t(:duration))
|
= sort_link(@q, 'operation_category', t(:operation))
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'name', t(:name))
|
= sort_link(@q, 'duration', t(:duration))
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
= sort_link(@q, 'price', t(:price))
|
= sort_link(@q, 'price', t(:price))
|
||||||
%th{class: 'col-xs-2'}
|
%th{class: 'col-xs-2'}
|
||||||
|
@ -45,8 +31,8 @@
|
||||||
- @pricelists.each do |pricelist|
|
- @pricelists.each do |pricelist|
|
||||||
%tr
|
%tr
|
||||||
%td= pricelist.category
|
%td= pricelist.category
|
||||||
|
%td= pricelist.operation_category
|
||||||
%td= pricelist.duration
|
%td= pricelist.duration
|
||||||
%td= pricelist.name
|
|
||||||
%td= pricelist.price
|
%td= pricelist.price
|
||||||
%td= l(pricelist.valid_from, format: :ydate)
|
%td= l(pricelist.valid_from, format: :ydate)
|
||||||
%td= l(pricelist.valid_to, format: :ydate)
|
%td= l(pricelist.valid_to, format: :ydate)
|
||||||
|
|
|
@ -55,7 +55,7 @@ xml.epp_head do
|
||||||
end
|
end
|
||||||
if can? :view_full_info, @contact, @password
|
if can? :view_full_info, @contact, @password
|
||||||
xml.tag!('extension') do
|
xml.tag!('extension') do
|
||||||
xml.tag!('eis:extdata', 'xmlns:eis' => 'urn:ee:eis:xml:epp:eis-1.0') do
|
xml.tag!('eis:extdata', 'xmlns:eis' => 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd') do
|
||||||
xml.tag!('eis:ident', @contact.ident,
|
xml.tag!('eis:ident', @contact.ident,
|
||||||
type: @contact.ident_type, cc: @contact.ident_country_code)
|
type: @contact.ident_type, cc: @contact.ident_country_code)
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,7 +11,7 @@ xml.epp_head do
|
||||||
xml.objURI 'urn:ietf:params:xml:ns:keyrelay-1.0'
|
xml.objURI 'urn:ietf:params:xml:ns:keyrelay-1.0'
|
||||||
xml.svcExtension do
|
xml.svcExtension do
|
||||||
xml.extURI 'urn:ietf:params:xml:ns:secDNS-1.1'
|
xml.extURI 'urn:ietf:params:xml:ns:secDNS-1.1'
|
||||||
xml.extURI 'urn:ee:eis:xml:epp:eis-1.0'
|
xml.extURI 'https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
</contact:create>
|
</contact:create>
|
||||||
</create>
|
</create>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:ident type="bic" cc="EE">123</eis:ident>
|
<eis:ident type="bic" cc="EE">123</eis:ident>
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</contact:delete>
|
</contact:delete>
|
||||||
</delete>
|
</delete>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
</eis:legalDocument>
|
</eis:legalDocument>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
</contact:update>
|
</contact:update>
|
||||||
</update>
|
</update>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
</eis:legalDocument>
|
</eis:legalDocument>
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
</secDNS:create>
|
</secDNS:create>
|
||||||
</extension>
|
</extension>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
</eis:legalDocument>
|
</eis:legalDocument>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
</domain:delete>
|
</domain:delete>
|
||||||
</delete>
|
</delete>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
</eis:legalDocument>
|
</eis:legalDocument>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</domain:transfer>
|
</domain:transfer>
|
||||||
</transfer>
|
</transfer>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
</eis:legalDocument>
|
</eis:legalDocument>
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
</secDNS:update>
|
</secDNS:update>
|
||||||
</extension>
|
</extension>
|
||||||
<extension>
|
<extension>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">
|
<eis:legalDocument type="pdf">
|
||||||
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==
|
||||||
</eis:legalDocument>
|
</eis:legalDocument>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<ext:relative>P1D</ext:relative>
|
<ext:relative>P1D</ext:relative>
|
||||||
</ext:expiry>
|
</ext:expiry>
|
||||||
</ext:keyrelay>
|
</ext:keyrelay>
|
||||||
<eis:extdata xmlns:eis="urn:ee:eis:xml:epp:eis-1.0">
|
<eis:extdata xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd">
|
||||||
<eis:legalDocument type="pdf">JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==</eis:legalDocument>
|
<eis:legalDocument type="pdf">JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp==</eis:legalDocument>
|
||||||
</eis:extdata>
|
</eis:extdata>
|
||||||
<ext:clTRID>1422542244</ext:clTRID>
|
<ext:clTRID>1422542244</ext:clTRID>
|
||||||
|
|
|
@ -31,6 +31,7 @@ if con.present? && con.table_exists?('settings')
|
||||||
Setting.save_default(:invoice_number_min, '131050')
|
Setting.save_default(:invoice_number_min, '131050')
|
||||||
Setting.save_default(:invoice_number_max, '149999')
|
Setting.save_default(:invoice_number_max, '149999')
|
||||||
Setting.save_default(:days_to_keep_overdue_invoices_active, 30)
|
Setting.save_default(:days_to_keep_overdue_invoices_active, 30)
|
||||||
|
Setting.save_default(:days_to_renew_domain_before_expire, 90)
|
||||||
end
|
end
|
||||||
|
|
||||||
# dev only setting
|
# dev only setting
|
||||||
|
|
|
@ -4,7 +4,7 @@ module I18n
|
||||||
class << self
|
class << self
|
||||||
alias_method :original_localize, :localize
|
alias_method :original_localize, :localize
|
||||||
|
|
||||||
def localize object, options = {}
|
def localize(object, options = {})
|
||||||
object.present? ? original_localize(object, options) : ''
|
object.present? ? original_localize(object, options) : ''
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -64,7 +64,7 @@ en:
|
||||||
invalid: 'Domain name is invalid'
|
invalid: 'Domain name is invalid'
|
||||||
reserved: 'Domain name is reserved or restricted'
|
reserved: 'Domain name is reserved or restricted'
|
||||||
taken: 'Domain name already exists'
|
taken: 'Domain name already exists'
|
||||||
name_puny:
|
puny_label:
|
||||||
too_long: 'Domain name is too long (maximum is 63 characters)'
|
too_long: 'Domain name is too long (maximum is 63 characters)'
|
||||||
registrant:
|
registrant:
|
||||||
blank: 'Registrant is missing'
|
blank: 'Registrant is missing'
|
||||||
|
@ -505,6 +505,7 @@ en:
|
||||||
crt_revoked: 'CRT (revoked)'
|
crt_revoked: 'CRT (revoked)'
|
||||||
contact_org_error: 'Parameter value policy error. Org must be blank'
|
contact_org_error: 'Parameter value policy error. Org must be blank'
|
||||||
contact_fax_error: 'Parameter value policy error. Fax must be blank'
|
contact_fax_error: 'Parameter value policy error. Fax must be blank'
|
||||||
|
ident_update_error: 'Parameter value policy error. Update of ident data not allowed'
|
||||||
invoices: 'Invoices'
|
invoices: 'Invoices'
|
||||||
no_such_user: 'No such user'
|
no_such_user: 'No such user'
|
||||||
log_in: 'Log in'
|
log_in: 'Log in'
|
||||||
|
@ -816,3 +817,4 @@ en:
|
||||||
new_pricelist: New Pricelist
|
new_pricelist: New Pricelist
|
||||||
valid: Valid
|
valid: Valid
|
||||||
category: Zone
|
category: Zone
|
||||||
|
object_is_not_eligible_for_renewal: 'Object is not eligible for renewal'
|
||||||
|
|
|
@ -24,6 +24,10 @@ every :day, at: '12:10pm' do
|
||||||
runner 'Invoice.cancel_overdue_invoices'
|
runner 'Invoice.cancel_overdue_invoices'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
every :day, at: '12:15pm' do
|
||||||
|
runner 'Domain.expire_domains'
|
||||||
|
end
|
||||||
|
|
||||||
every 3.hours do
|
every 3.hours do
|
||||||
runner 'Certificate.update_crl'
|
runner 'Certificate.update_crl'
|
||||||
end
|
end
|
||||||
|
|
9
db/data/20150609093515_add_renew_setting.rb
Normal file
9
db/data/20150609093515_add_renew_setting.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
class AddRenewSetting < ActiveRecord::Migration
|
||||||
|
def self.up
|
||||||
|
Setting.days_to_renew_domain_before_expire = 90
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.down
|
||||||
|
raise ActiveRecord::IrreversibleMigration
|
||||||
|
end
|
||||||
|
end
|
6
db/migrate/20150609103333_update_pricelist_chema.rb
Normal file
6
db/migrate/20150609103333_update_pricelist_chema.rb
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
class UpdatePricelistChema < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :pricelists, :operation_category, :string
|
||||||
|
rename_column :pricelists, :name, :desc
|
||||||
|
end
|
||||||
|
end
|
47
db/schema.rb
47
db/schema.rb
|
@ -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: 20150603212659) do
|
ActiveRecord::Schema.define(version: 20150609103333) 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"
|
||||||
|
@ -19,7 +19,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
create_table "account_activities", force: :cascade do |t|
|
create_table "account_activities", force: :cascade do |t|
|
||||||
t.integer "account_id"
|
t.integer "account_id"
|
||||||
t.integer "invoice_id"
|
t.integer "invoice_id"
|
||||||
t.decimal "sum", precision: 10, scale: 2
|
t.decimal "sum", precision: 8, scale: 2
|
||||||
t.string "currency"
|
t.string "currency"
|
||||||
t.integer "bank_transaction_id"
|
t.integer "bank_transaction_id"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
|
@ -36,7 +36,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
create_table "accounts", force: :cascade do |t|
|
create_table "accounts", force: :cascade do |t|
|
||||||
t.integer "registrar_id"
|
t.integer "registrar_id"
|
||||||
t.string "account_type"
|
t.string "account_type"
|
||||||
t.decimal "balance", precision: 10, scale: 2, default: 0.0, null: false
|
t.decimal "balance", precision: 8, scale: 2, default: 0.0, null: false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "currency"
|
t.string "currency"
|
||||||
|
@ -98,7 +98,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
t.string "buyer_name"
|
t.string "buyer_name"
|
||||||
t.string "document_no"
|
t.string "document_no"
|
||||||
t.string "description"
|
t.string "description"
|
||||||
t.decimal "sum", precision: 10, scale: 2
|
t.decimal "sum", precision: 8, scale: 2
|
||||||
t.string "reference_no"
|
t.string "reference_no"
|
||||||
t.datetime "paid_at"
|
t.datetime "paid_at"
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
|
@ -114,7 +114,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
t.string "vk_rec_id"
|
t.string "vk_rec_id"
|
||||||
t.string "vk_stamp"
|
t.string "vk_stamp"
|
||||||
t.string "vk_t_no"
|
t.string "vk_t_no"
|
||||||
t.decimal "vk_amount", precision: 10, scale: 2
|
t.decimal "vk_amount", precision: 8, scale: 2
|
||||||
t.string "vk_curr"
|
t.string "vk_curr"
|
||||||
t.string "vk_rec_acc"
|
t.string "vk_rec_acc"
|
||||||
t.string "vk_rec_name"
|
t.string "vk_rec_name"
|
||||||
|
@ -328,10 +328,10 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
|
|
||||||
create_table "invoice_items", force: :cascade do |t|
|
create_table "invoice_items", force: :cascade do |t|
|
||||||
t.integer "invoice_id"
|
t.integer "invoice_id"
|
||||||
t.string "description", null: false
|
t.string "description", null: false
|
||||||
t.string "unit"
|
t.string "unit"
|
||||||
t.integer "amount"
|
t.integer "amount"
|
||||||
t.decimal "price", precision: 10, scale: 2
|
t.decimal "price", precision: 8, scale: 2
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "creator_str"
|
t.string "creator_str"
|
||||||
|
@ -341,20 +341,20 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
add_index "invoice_items", ["invoice_id"], name: "index_invoice_items_on_invoice_id", using: :btree
|
add_index "invoice_items", ["invoice_id"], name: "index_invoice_items_on_invoice_id", using: :btree
|
||||||
|
|
||||||
create_table "invoices", force: :cascade do |t|
|
create_table "invoices", force: :cascade do |t|
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "invoice_type", null: false
|
t.string "invoice_type", null: false
|
||||||
t.datetime "due_date", null: false
|
t.datetime "due_date", null: false
|
||||||
t.string "payment_term"
|
t.string "payment_term"
|
||||||
t.string "currency", null: false
|
t.string "currency", null: false
|
||||||
t.string "description"
|
t.string "description"
|
||||||
t.string "reference_no"
|
t.string "reference_no"
|
||||||
t.decimal "vat_prc", precision: 10, scale: 2, null: false
|
t.decimal "vat_prc", precision: 8, scale: 2, null: false
|
||||||
t.datetime "paid_at"
|
t.datetime "paid_at"
|
||||||
t.integer "seller_id"
|
t.integer "seller_id"
|
||||||
t.string "seller_name", null: false
|
t.string "seller_name", null: false
|
||||||
t.string "seller_reg_no"
|
t.string "seller_reg_no"
|
||||||
t.string "seller_iban", null: false
|
t.string "seller_iban", null: false
|
||||||
t.string "seller_bank"
|
t.string "seller_bank"
|
||||||
t.string "seller_swift"
|
t.string "seller_swift"
|
||||||
t.string "seller_vat_no"
|
t.string "seller_vat_no"
|
||||||
|
@ -368,7 +368,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
t.string "seller_email"
|
t.string "seller_email"
|
||||||
t.string "seller_contact_name"
|
t.string "seller_contact_name"
|
||||||
t.integer "buyer_id"
|
t.integer "buyer_id"
|
||||||
t.string "buyer_name", null: false
|
t.string "buyer_name", null: false
|
||||||
t.string "buyer_reg_no"
|
t.string "buyer_reg_no"
|
||||||
t.string "buyer_country_code"
|
t.string "buyer_country_code"
|
||||||
t.string "buyer_state"
|
t.string "buyer_state"
|
||||||
|
@ -382,7 +382,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
t.string "updator_str"
|
t.string "updator_str"
|
||||||
t.integer "number"
|
t.integer "number"
|
||||||
t.datetime "cancelled_at"
|
t.datetime "cancelled_at"
|
||||||
t.decimal "sum_cache", precision: 10, scale: 2
|
t.decimal "sum_cache", precision: 8, scale: 2
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "invoices", ["buyer_id"], name: "index_invoices_on_buyer_id", using: :btree
|
add_index "invoices", ["buyer_id"], name: "index_invoices_on_buyer_id", using: :btree
|
||||||
|
@ -886,17 +886,18 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
add_index "people", ["reset_password_token"], name: "index_people_on_reset_password_token", unique: true, using: :btree
|
add_index "people", ["reset_password_token"], name: "index_people_on_reset_password_token", unique: true, using: :btree
|
||||||
|
|
||||||
create_table "pricelists", force: :cascade do |t|
|
create_table "pricelists", force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "desc"
|
||||||
t.string "category"
|
t.string "category"
|
||||||
t.decimal "price_cents", precision: 8, scale: 2, default: 0.0, null: false
|
t.decimal "price_cents", precision: 8, scale: 2, default: 0.0, null: false
|
||||||
t.string "price_currency", default: "EUR", null: false
|
t.string "price_currency", default: "EUR", null: false
|
||||||
t.datetime "valid_from"
|
t.datetime "valid_from"
|
||||||
t.datetime "valid_to"
|
t.datetime "valid_to"
|
||||||
t.string "creator_str"
|
t.string "creator_str"
|
||||||
t.string "updator_str"
|
t.string "updator_str"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "duration"
|
t.string "duration"
|
||||||
|
t.string "operation_category"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "registrant_verifications", force: :cascade do |t|
|
create_table "registrant_verifications", force: :cascade do |t|
|
||||||
|
@ -982,7 +983,7 @@ ActiveRecord::Schema.define(version: 20150603212659) do
|
||||||
t.text "crt"
|
t.text "crt"
|
||||||
t.string "type"
|
t.string "type"
|
||||||
t.string "registrant_ident"
|
t.string "registrant_ident"
|
||||||
t.string "encrypted_password", default: ""
|
t.string "encrypted_password", default: "", null: false
|
||||||
t.datetime "remember_created_at"
|
t.datetime "remember_created_at"
|
||||||
t.integer "failed_attempts", default: 0, null: false
|
t.integer "failed_attempts", default: 0, null: false
|
||||||
t.datetime "locked_at"
|
t.datetime "locked_at"
|
||||||
|
|
|
@ -16,5 +16,15 @@ Our implementation supports following protocols:
|
||||||
[RFC5910 - DNSSEC Mapping](http://tools.ietf.org/html/rfc5910)
|
[RFC5910 - DNSSEC Mapping](http://tools.ietf.org/html/rfc5910)
|
||||||
[RFC3735 - Guidelines for Extending the EPP](http://tools.ietf.org/html/rfc3735)
|
[RFC3735 - Guidelines for Extending the EPP](http://tools.ietf.org/html/rfc3735)
|
||||||
|
|
||||||
|
Related XML Schema Definitions (may differ from policies applied to registry):
|
||||||
|
|
||||||
|
[contact-1.0.xsd](schemas/contact-1.0.xsd)
|
||||||
|
[domain-1.0.xsd](schemas/domain-1.0.xsd)
|
||||||
|
[eis-1.0.xsd](schemas/eis-1.0.xsd)
|
||||||
|
[epp-1.0.xsd](schemas/epp-1.0.xsd)
|
||||||
|
[eppcom-1.0.xsd](schemas/eppcom-1.0.xsd)
|
||||||
|
[host-1.0.xsd](schemas/host-1.0.xsd)
|
||||||
|
[secDNS-1.1.xsd](schemas/secDNS-1.1.xsd)
|
||||||
|
|
||||||
More info about The Extensible Provisioning Protocol (EPP):<br>
|
More info about The Extensible Provisioning Protocol (EPP):<br>
|
||||||
http://en.wikipedia.org/wiki/Extensible_Provisioning_Protocol
|
http://en.wikipedia.org/wiki/Extensible_Provisioning_Protocol
|
||||||
|
|
1918
doc/epp-examples.md
1918
doc/epp-examples.md
File diff suppressed because it is too large
Load diff
|
@ -26,7 +26,7 @@ Contact Mapping protocol short version:
|
||||||
<contact:voice> 1 Phone number in format \+ddd.d+
|
<contact:voice> 1 Phone number in format \+ddd.d+
|
||||||
<contact:email> 1 E-mail
|
<contact:email> 1 E-mail
|
||||||
<extension> 1
|
<extension> 1
|
||||||
<eis:extdata> 1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:ident> 1 Contact identificator
|
<eis:ident> 1 Contact identificator
|
||||||
Attribute: "type"
|
Attribute: "type"
|
||||||
"bic" # Business registry code
|
"bic" # Business registry code
|
||||||
|
@ -62,7 +62,7 @@ Contact Mapping protocol short version:
|
||||||
<contact:authInfo> 0-1 Required if registrar is not the owner of the contact.
|
<contact:authInfo> 0-1 Required if registrar is not the owner of the contact.
|
||||||
<contact:pw> 1 Contact password. Attribute: roid="String"
|
<contact:pw> 1 Contact password. Attribute: roid="String"
|
||||||
<extension> 0-1
|
<extension> 0-1
|
||||||
<eis:extdata> 0-1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:ident> 0-1 Contact identificator
|
<eis:ident> 0-1 Contact identificator
|
||||||
Attribute: "type"
|
Attribute: "type"
|
||||||
"bic" # Business registry code
|
"bic" # Business registry code
|
||||||
|
@ -87,7 +87,7 @@ Contact Mapping protocol short version:
|
||||||
<contact:authInfo> 0-1 Required if registrar is not the owner of the contact.
|
<contact:authInfo> 0-1 Required if registrar is not the owner of the contact.
|
||||||
<contact:pw> 1 Contact password. Attribute: roid="String"
|
<contact:pw> 1 Contact password. Attribute: roid="String"
|
||||||
<extension> 0-1
|
<extension> 0-1
|
||||||
<eis:extdata> 0-1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:legalDocument> 0-1 Base64 encoded document.
|
<eis:legalDocument> 0-1 Base64 encoded document.
|
||||||
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
||||||
<clTRID> 0-1 Client transaction id
|
<clTRID> 0-1 Client transaction id
|
||||||
|
|
|
@ -35,7 +35,7 @@ Domain name mapping protocol short version:
|
||||||
<secDNS:protocol> 1 Allowed values: 3
|
<secDNS:protocol> 1 Allowed values: 3
|
||||||
<secDNS:alg> 1 Allowed values: 3, 5, 6, 7, 8, 252, 253, 254, 255
|
<secDNS:alg> 1 Allowed values: 3, 5, 6, 7, 8, 252, 253, 254, 255
|
||||||
<secDNS:pubKey> 1 Public key
|
<secDNS:pubKey> 1 Public key
|
||||||
<eis:extdata> 1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:legalDocument> 1 Base64 encoded document.
|
<eis:legalDocument> 1 Base64 encoded document.
|
||||||
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
||||||
<clTRID> 0-1 Client transaction id
|
<clTRID> 0-1 Client transaction id
|
||||||
|
@ -82,7 +82,7 @@ Domain name mapping protocol short version:
|
||||||
<secDNS:rem> 0-1
|
<secDNS:rem> 0-1
|
||||||
<secDNS:keyData> 1-n
|
<secDNS:keyData> 1-n
|
||||||
<secDNS:pubKey> 1 Public key
|
<secDNS:pubKey> 1 Public key
|
||||||
<eis:extdata> 0-1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:legalDocument> 0-1 Base64 encoded document. Required if registrant is changing.
|
<eis:legalDocument> 0-1 Base64 encoded document. Required if registrant is changing.
|
||||||
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
||||||
<clTRID> 0-1 Client transaction id
|
<clTRID> 0-1 Client transaction id
|
||||||
|
@ -98,7 +98,7 @@ Domain name mapping protocol short version:
|
||||||
Optional attribute: verified="yes/no"
|
Optional attribute: verified="yes/no"
|
||||||
<domain:name> 1 Domain name. Can contain unicode characters.
|
<domain:name> 1 Domain name. Can contain unicode characters.
|
||||||
<extension> 1
|
<extension> 1
|
||||||
<eis:extdata> 1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:legalDocument> 1 Base64 encoded document.
|
<eis:legalDocument> 1 Base64 encoded document.
|
||||||
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
||||||
<clTRID> 0-1 Client transaction id
|
<clTRID> 0-1 Client transaction id
|
||||||
|
@ -130,7 +130,7 @@ Domain name mapping protocol short version:
|
||||||
<domain:period> 1 Registration period for domain.
|
<domain:period> 1 Registration period for domain.
|
||||||
Must add up to 1 / 2 / 3 years. Attribute: unit="y/m/d"
|
Must add up to 1 / 2 / 3 years. Attribute: unit="y/m/d"
|
||||||
<extension> 0-1
|
<extension> 0-1
|
||||||
<eis:extdata> 0-1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:legalDocument> 0-1 Base64 encoded document.
|
<eis:legalDocument> 0-1 Base64 encoded document.
|
||||||
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
||||||
<clTRID> 0-1 Client transaction id
|
<clTRID> 0-1 Client transaction id
|
||||||
|
@ -147,7 +147,7 @@ Domain name mapping protocol short version:
|
||||||
<domain:authInfo> 1
|
<domain:authInfo> 1
|
||||||
<domain:pw> 1 Domain password. Attribute: roid="String"
|
<domain:pw> 1 Domain password. Attribute: roid="String"
|
||||||
<extension> 0-1
|
<extension> 0-1
|
||||||
<eis:extdata> 0-1 Attribute: xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
<eis:extdata> 0-1 Attribute: xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
<eis:legalDocument> 0-1 Base64 encoded document.
|
<eis:legalDocument> 0-1 Base64 encoded document.
|
||||||
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
Attribute: type="pdf/bdoc/ddoc/zip/rar/gz/tar/7z"
|
||||||
<clTRID> 0-1 Client transaction id
|
<clTRID> 0-1 Client transaction id
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
-->
|
-->
|
||||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="doc/schemas/eppcom-1.0.xsd"/>
|
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="doc/schemas/eppcom-1.0.xsd"/>
|
||||||
<import namespace="urn:ietf:params:xml:ns:epp-1.0" schemaLocation="doc/schemas/epp-1.0.xsd"/>
|
<import namespace="urn:ietf:params:xml:ns:epp-1.0" schemaLocation="doc/schemas/epp-1.0.xsd"/>
|
||||||
<import namespace="urn:ietf:params:xml:ns:eis-1.0" schemaLocation="doc/schemas/eis-1.0.xsd"/>
|
|
||||||
|
|
||||||
<annotation>
|
<annotation>
|
||||||
<documentation>
|
<documentation>
|
||||||
|
@ -73,23 +72,6 @@
|
||||||
</restriction>
|
</restriction>
|
||||||
</simpleType>
|
</simpleType>
|
||||||
|
|
||||||
<complexType name="identType">
|
|
||||||
<simpleContent>
|
|
||||||
<extension base="eppcom:clIDType">
|
|
||||||
<attribute name="type" type="contact:identAttrType"/>
|
|
||||||
</extension>
|
|
||||||
</simpleContent>
|
|
||||||
</complexType>
|
|
||||||
|
|
||||||
<simpleType name="identAttrType">
|
|
||||||
<restriction base="token">
|
|
||||||
<enumeration value="ico"/>
|
|
||||||
<enumeration value="op"/>
|
|
||||||
<enumeration value="passport"/>
|
|
||||||
<enumeration value="birthday"/>
|
|
||||||
</restriction>
|
|
||||||
</simpleType>
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Child elements of the <create> command.
|
Child elements of the <create> command.
|
||||||
-->
|
-->
|
||||||
|
@ -103,8 +85,6 @@
|
||||||
<element name="fax" type="contact:e164Type"
|
<element name="fax" type="contact:e164Type"
|
||||||
minOccurs="0"/>
|
minOccurs="0"/>
|
||||||
<element name="email" type="eppcom:minTokenType"/>
|
<element name="email" type="eppcom:minTokenType"/>
|
||||||
<element name="ident" type="contact:identType"
|
|
||||||
minOccurs="0"/>
|
|
||||||
<element name="authInfo" type="contact:authInfoType" minOccurs="0"/>
|
<element name="authInfo" type="contact:authInfoType" minOccurs="0"/>
|
||||||
|
|
||||||
</sequence>
|
</sequence>
|
||||||
|
@ -220,8 +200,6 @@
|
||||||
minOccurs="0"/>
|
minOccurs="0"/>
|
||||||
<element name="email" type="eppcom:minTokenType"
|
<element name="email" type="eppcom:minTokenType"
|
||||||
minOccurs="0"/>
|
minOccurs="0"/>
|
||||||
<element name="ident" type="contact:identType"
|
|
||||||
minOccurs="0"/>
|
|
||||||
<element name="authInfo" type="contact:authInfoType"
|
<element name="authInfo" type="contact:authInfoType"
|
||||||
minOccurs="0"/>
|
minOccurs="0"/>
|
||||||
</sequence>
|
</sequence>
|
||||||
|
|
366
doc/schemas/contact-eis-1.0.xsd
Normal file
366
doc/schemas/contact-eis-1.0.xsd
Normal file
|
@ -0,0 +1,366 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<schema targetNamespace="urn:ietf:params:xml:ns:contact-1.0"
|
||||||
|
xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
|
||||||
|
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||||
|
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||||
|
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Import common element types.
|
||||||
|
-->
|
||||||
|
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="doc/schemas/eppcom-1.0.xsd"/>
|
||||||
|
<import namespace="urn:ietf:params:xml:ns:epp-1.0" schemaLocation="doc/schemas/epp-1.0.xsd"/>
|
||||||
|
<import namespace="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" schemaLocation="doc/schemas/eis-1.0.xsd"/>
|
||||||
|
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
Extensible Provisioning Protocol v1.0
|
||||||
|
contact provisioning schema.
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements found in EPP commands.
|
||||||
|
-->
|
||||||
|
<element name="check" type="contact:mIDType"/>
|
||||||
|
<element name="create" type="contact:createType"/>
|
||||||
|
<element name="delete" type="contact:authIDType"/>
|
||||||
|
<element name="info" type="contact:authIDType"/>
|
||||||
|
<element name="transfer" type="contact:authIDType"/>
|
||||||
|
<element name="update" type="contact:updateType"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Utility types.
|
||||||
|
-->
|
||||||
|
<simpleType name="ccType">
|
||||||
|
<restriction base="token">
|
||||||
|
<length value="2"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
<complexType name="e164Type">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="contact:e164StringType">
|
||||||
|
<attribute name="x" type="token"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="e164StringType">
|
||||||
|
<restriction base="token">
|
||||||
|
<!--<pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/> -->
|
||||||
|
<maxLength value="17"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<simpleType name="pcType">
|
||||||
|
<restriction base="token">
|
||||||
|
<maxLength value="16"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<simpleType name="postalLineType">
|
||||||
|
<restriction base="normalizedString">
|
||||||
|
<minLength value="1"/>
|
||||||
|
<maxLength value="255"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<simpleType name="optPostalLineType">
|
||||||
|
<restriction base="normalizedString">
|
||||||
|
<maxLength value="255"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <create> command.
|
||||||
|
-->
|
||||||
|
<complexType name="createType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType" minOccurs="0"/>
|
||||||
|
<element name="postalInfo" type="contact:postalInfoType"
|
||||||
|
maxOccurs="2"/>
|
||||||
|
<element name="voice" type="contact:e164Type"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="fax" type="contact:e164Type"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="email" type="eppcom:minTokenType"/>
|
||||||
|
<element name="authInfo" type="contact:authInfoType" minOccurs="0"/>
|
||||||
|
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="postalInfoType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="contact:postalLineType"/>
|
||||||
|
<element name="org" type="contact:optPostalLineType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="addr" type="contact:addrType"/>
|
||||||
|
</sequence>
|
||||||
|
<attribute name="type" type="contact:postalInfoEnumType"/>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="postalInfoEnumType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="loc"/>
|
||||||
|
<enumeration value="int"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<complexType name="addrType">
|
||||||
|
<sequence>
|
||||||
|
<element name="street" type="contact:optPostalLineType"
|
||||||
|
minOccurs="0" maxOccurs="3"/>
|
||||||
|
<element name="city" type="contact:postalLineType"/>
|
||||||
|
<element name="sp" type="contact:optPostalLineType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="pc" type="contact:pcType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="cc" type="contact:ccType"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="authInfoType">
|
||||||
|
<choice>
|
||||||
|
<element name="pw" type="eppcom:pwAuthInfoType"/>
|
||||||
|
<element name="ext" type="eppcom:extAuthInfoType"/>
|
||||||
|
</choice>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="intLocType">
|
||||||
|
<attribute name="type" type="contact:postalInfoEnumType"
|
||||||
|
use="required"/>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child element of commands that require only an identifier.
|
||||||
|
-->
|
||||||
|
<complexType name="sIDType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child element of commands that accept multiple identifiers.
|
||||||
|
-->
|
||||||
|
<complexType name="mIDType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <info> and <transfer> commands.
|
||||||
|
-->
|
||||||
|
<complexType name="authIDType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"/>
|
||||||
|
<element name="authInfo" type="contact:authInfoType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <update> command.
|
||||||
|
-->
|
||||||
|
<complexType name="updateType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"/>
|
||||||
|
<element name="add" type="contact:addRemType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="rem" type="contact:addRemType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="chg" type="contact:chgType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Data elements that can be added or removed.
|
||||||
|
-->
|
||||||
|
<complexType name="addRemType">
|
||||||
|
<sequence>
|
||||||
|
<element name="status" type="contact:statusType"
|
||||||
|
maxOccurs="7"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Data elements that can be changed.
|
||||||
|
-->
|
||||||
|
<complexType name="chgType">
|
||||||
|
<sequence>
|
||||||
|
<element name="postalInfo" type="contact:chgPostalInfoType"
|
||||||
|
minOccurs="0" maxOccurs="2"/>
|
||||||
|
<element name="voice" type="contact:e164Type"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="fax" type="contact:e164Type"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="email" type="eppcom:minTokenType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="authInfo" type="contact:authInfoType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="chgPostalInfoType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="contact:postalLineType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="org" type="contact:optPostalLineType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="addr" type="contact:addrType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
<attribute name="type" type="contact:postalInfoEnumType"/>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child response elements.
|
||||||
|
-->
|
||||||
|
<element name="chkData" type="contact:chkDataType"/>
|
||||||
|
<element name="creData" type="contact:creDataType"/>
|
||||||
|
<element name="infData" type="contact:infDataType"/>
|
||||||
|
<element name="panData" type="contact:panDataType"/>
|
||||||
|
<element name="trnData" type="contact:trnDataType"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<check> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="chkDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="cd" type="contact:checkType"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="checkType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="contact:checkIDType"/>
|
||||||
|
<element name="reason" type="eppcom:reasonType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="checkIDType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="eppcom:clIDType">
|
||||||
|
<attribute name="avail" type="boolean"
|
||||||
|
use="required"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<create> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="creDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"/>
|
||||||
|
<element name="crDate" type="dateTime"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<info> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="infDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"/>
|
||||||
|
<element name="roid" type="eppcom:roidType"/>
|
||||||
|
<element name="status" type="contact:statusType"
|
||||||
|
maxOccurs="7"/>
|
||||||
|
<element name="postalInfo" type="contact:postalInfoType"
|
||||||
|
maxOccurs="2"/>
|
||||||
|
<element name="voice" type="contact:e164Type"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="fax" type="contact:e164Type"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="email" type="eppcom:minTokenType"/>
|
||||||
|
<element name="clID" type="eppcom:clIDType"/>
|
||||||
|
<element name="crID" type="eppcom:clIDType"/>
|
||||||
|
<element name="crDate" type="dateTime"/>
|
||||||
|
<element name="upID" type="eppcom:clIDType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="upDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="trDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="authInfo" type="contact:authInfoType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Status is a combination of attributes and an optional human-readable
|
||||||
|
message that may be expressed in languages other than English.
|
||||||
|
-->
|
||||||
|
<complexType name="statusType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="normalizedString">
|
||||||
|
<attribute name="s" type="contact:statusValueType"
|
||||||
|
use="required"/>
|
||||||
|
<attribute name="lang" type="language"
|
||||||
|
default="en"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="statusValueType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="clientDeleteProhibited"/>
|
||||||
|
<enumeration value="clientTransferProhibited"/>
|
||||||
|
<enumeration value="clientUpdateProhibited"/>
|
||||||
|
<enumeration value="linked"/>
|
||||||
|
<enumeration value="ok"/>
|
||||||
|
<enumeration value="pendingCreate"/>
|
||||||
|
<enumeration value="pendingDelete"/>
|
||||||
|
<enumeration value="pendingTransfer"/>
|
||||||
|
<enumeration value="pendingUpdate"/>
|
||||||
|
<enumeration value="serverDeleteProhibited"/>
|
||||||
|
<enumeration value="serverTransferProhibited"/>
|
||||||
|
<enumeration value="serverUpdateProhibited"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Pending action notification response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="panDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="contact:paCLIDType"/>
|
||||||
|
<element name="paTRID" type="epp:trIDType"/>
|
||||||
|
<element name="paDate" type="dateTime"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="paCLIDType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="eppcom:clIDType">
|
||||||
|
<attribute name="paResult" type="boolean"
|
||||||
|
use="required"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<transfer> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="trnDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="id" type="eppcom:clIDType"/>
|
||||||
|
<element name="trStatus" type="eppcom:trStatusType"/>
|
||||||
|
<element name="reID" type="eppcom:clIDType"/>
|
||||||
|
<element name="reDate" type="dateTime"/>
|
||||||
|
<element name="acID" type="eppcom:clIDType"/>
|
||||||
|
<element name="acDate" type="dateTime"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
End of schema.
|
||||||
|
-->
|
||||||
|
</schema>
|
|
@ -15,7 +15,6 @@
|
||||||
<import namespace="urn:ietf:params:xml:ns:epp-1.0" schemaLocation="doc/schemas/epp-1.0.xsd"/>
|
<import namespace="urn:ietf:params:xml:ns:epp-1.0" schemaLocation="doc/schemas/epp-1.0.xsd"/>
|
||||||
<import namespace="urn:ietf:params:xml:ns:host-1.0" schemaLocation="doc/schemas/host-1.0.xsd"/>
|
<import namespace="urn:ietf:params:xml:ns:host-1.0" schemaLocation="doc/schemas/host-1.0.xsd"/>
|
||||||
<import namespace="urn:ietf:params:xml:ns:secDNS-1.1" schemaLocation="doc/schemas/secDNS-1.1.xsd"/>
|
<import namespace="urn:ietf:params:xml:ns:secDNS-1.1" schemaLocation="doc/schemas/secDNS-1.1.xsd"/>
|
||||||
<import namespace="urn:ietf:params:xml:ns:eis-1.0" schemaLocation="doc/schemas/eis-1.0.xsd"/>
|
|
||||||
|
|
||||||
<annotation>
|
<annotation>
|
||||||
<documentation>
|
<documentation>
|
||||||
|
|
451
doc/schemas/domain-eis-1.0.xsd
Normal file
451
doc/schemas/domain-eis-1.0.xsd
Normal file
|
@ -0,0 +1,451 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<schema targetNamespace="urn:ietf:params:xml:ns:domain-1.0"
|
||||||
|
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
|
||||||
|
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
|
||||||
|
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||||
|
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||||
|
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
|
elementFormDefault="qualified">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Import common element types.
|
||||||
|
-->
|
||||||
|
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="doc/schemas/eppcom-1.0.xsd"/>
|
||||||
|
<import namespace="urn:ietf:params:xml:ns:epp-1.0" schemaLocation="doc/schemas/epp-1.0.xsd"/>
|
||||||
|
<import namespace="urn:ietf:params:xml:ns:host-1.0" schemaLocation="doc/schemas/host-1.0.xsd"/>
|
||||||
|
<import namespace="urn:ietf:params:xml:ns:secDNS-1.1" schemaLocation="doc/schemas/secDNS-1.1.xsd"/>
|
||||||
|
<import namespace="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd" schemaLocation="doc/schemas/eis-1.0.xsd"/>
|
||||||
|
|
||||||
|
<annotation>
|
||||||
|
<documentation>
|
||||||
|
Extensible Provisioning Protocol v1.0
|
||||||
|
domain provisioning schema.
|
||||||
|
</documentation>
|
||||||
|
</annotation>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements found in EPP commands.
|
||||||
|
-->
|
||||||
|
<element name="check" type="domain:mNameType"/>
|
||||||
|
<element name="create" type="domain:createType"/>
|
||||||
|
<element name="delete" type="domain:sNameType"/>
|
||||||
|
<element name="info" type="domain:infoType"/>
|
||||||
|
<element name="renew" type="domain:renewType"/>
|
||||||
|
<element name="transfer" type="domain:transferType"/>
|
||||||
|
<element name="update" type="domain:updateType"/>
|
||||||
|
<!--
|
||||||
|
Child elements of the <create> command.
|
||||||
|
-->
|
||||||
|
<complexType name="createType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="period" type="domain:periodType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="ns" type="domain:nsType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="registrant" type="eppcom:clIDType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="contact" type="domain:contactType"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<element name="authInfo" type="domain:authInfoType" minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="periodType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="domain:pLimitType">
|
||||||
|
<attribute name="unit" type="domain:pUnitType"
|
||||||
|
use="required"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="pLimitType">
|
||||||
|
<restriction base="unsignedShort">
|
||||||
|
<minInclusive value="1"/>
|
||||||
|
<maxInclusive value="1095"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<simpleType name="pUnitType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="y"/>
|
||||||
|
<enumeration value="m"/>
|
||||||
|
<enumeration value="d"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<complexType name="nsType">
|
||||||
|
<choice>
|
||||||
|
<element name="hostObj" type="eppcom:labelType"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
<element name="hostAttr" type="domain:hostAttrType"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</choice>
|
||||||
|
</complexType>
|
||||||
|
<!--
|
||||||
|
Name servers are either host objects or attributes.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<complexType name="hostAttrType">
|
||||||
|
<sequence>
|
||||||
|
<element name="hostName" type="eppcom:labelType"/>
|
||||||
|
<element name="hostAddr" type="host:addrType"
|
||||||
|
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
<!--
|
||||||
|
If attributes, addresses are optional and follow the
|
||||||
|
structure defined in the host mapping.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<complexType name="contactType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="eppcom:clIDType">
|
||||||
|
<attribute name="type" type="domain:contactAttrType"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="contactAttrType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="admin"/>
|
||||||
|
<enumeration value="billing"/>
|
||||||
|
<enumeration value="tech"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<complexType name="authInfoType">
|
||||||
|
<choice>
|
||||||
|
<element name="pw" type="eppcom:pwAuthInfoType"/>
|
||||||
|
<element name="ext" type="eppcom:extAuthInfoType"/>
|
||||||
|
</choice>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child element of commands that require a single name.
|
||||||
|
-->
|
||||||
|
<complexType name="sNameType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
<!--
|
||||||
|
Child element of commands that accept multiple names.
|
||||||
|
-->
|
||||||
|
<complexType name="mNameType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <info> command.
|
||||||
|
-->
|
||||||
|
<complexType name="infoType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="domain:infoNameType"/>
|
||||||
|
<element name="authInfo" type="domain:authInfoType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="infoNameType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base = "eppcom:labelType">
|
||||||
|
<attribute name="hosts" type="domain:hostsType"
|
||||||
|
default="all"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="hostsType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="all"/>
|
||||||
|
<enumeration value="del"/>
|
||||||
|
<enumeration value="none"/>
|
||||||
|
<enumeration value="sub"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <renew> command.
|
||||||
|
-->
|
||||||
|
<complexType name="renewType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="curExpDate" type="date"/>
|
||||||
|
<element name="period" type="domain:periodType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <transfer> command.
|
||||||
|
-->
|
||||||
|
<complexType name="transferType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="period" type="domain:periodType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="authInfo" type="domain:authInfoType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child elements of the <update> command.
|
||||||
|
-->
|
||||||
|
<complexType name="updateType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="add" type="domain:addRemType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="rem" type="domain:addRemType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="chg" type="domain:chgType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Data elements that can be added or removed.
|
||||||
|
-->
|
||||||
|
<complexType name="addRemType">
|
||||||
|
<sequence>
|
||||||
|
<element name="ns" type="domain:nsType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="contact" type="domain:contactType"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<element name="status" type="domain:statusType"
|
||||||
|
minOccurs="0" maxOccurs="11"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Data elements that can be changed.
|
||||||
|
-->
|
||||||
|
<complexType name="chgType">
|
||||||
|
<sequence>
|
||||||
|
<element name="registrant" type="domain:clIDChgType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="authInfo" type="domain:authInfoChgType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Allow the registrant value to be nullified by changing the
|
||||||
|
minLength restriction to "0".
|
||||||
|
-->
|
||||||
|
|
||||||
|
<complexType name="clIDChgType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="domain:clIDChgSimpleType">
|
||||||
|
<attribute name="verified" type="domain:verifiedType"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="clIDChgSimpleType">
|
||||||
|
<restriction base="token">
|
||||||
|
<minLength value="0"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<simpleType name="verifiedType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="yes"/>
|
||||||
|
<enumeration value="no"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Allow the authInfo value to be nullified by including an
|
||||||
|
empty element within the choice.
|
||||||
|
-->
|
||||||
|
<complexType name="authInfoChgType">
|
||||||
|
<choice>
|
||||||
|
<element name="pw" type="eppcom:pwAuthInfoType"/>
|
||||||
|
<element name="ext" type="eppcom:extAuthInfoType"/>
|
||||||
|
<element name="null"/>
|
||||||
|
</choice>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Child response elements.
|
||||||
|
-->
|
||||||
|
<element name="chkData" type="domain:chkDataType"/>
|
||||||
|
<element name="creData" type="domain:creDataType"/>
|
||||||
|
<element name="infData" type="domain:infDataType"/>
|
||||||
|
<element name="panData" type="domain:panDataType"/>
|
||||||
|
<element name="renData" type="domain:renDataType"/>
|
||||||
|
<element name="trnData" type="domain:trnDataType"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<check> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="chkDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="cd" type="domain:checkType"
|
||||||
|
maxOccurs="unbounded"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="checkType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="domain:checkNameType"/>
|
||||||
|
<element name="reason" type="eppcom:reasonType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="checkNameType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="eppcom:labelType">
|
||||||
|
<attribute name="avail" type="boolean"
|
||||||
|
use="required"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<create> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="creDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="crDate" type="dateTime"/>
|
||||||
|
<element name="exDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<info> response elements.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<complexType name="infDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="roid" type="eppcom:roidType"/>
|
||||||
|
<element name="status" type="domain:statusType"
|
||||||
|
minOccurs="0" maxOccurs="11"/>
|
||||||
|
<element name="registrant" type="eppcom:clIDType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="contact" type="domain:contactType"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<element name="ns" type="domain:nsType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="host" type="eppcom:labelType"
|
||||||
|
minOccurs="0" maxOccurs="unbounded"/>
|
||||||
|
<element name="clID" type="eppcom:clIDType"/>
|
||||||
|
<element name="crID" type="eppcom:clIDType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="crDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="upID" type="eppcom:clIDType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="upDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="exDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="trDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
<element name="authInfo" type="domain:authInfoType"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Status is a combination of attributes and an optional
|
||||||
|
human-readable message that may be expressed in languages other
|
||||||
|
than English.
|
||||||
|
-->
|
||||||
|
<complexType name="statusType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="normalizedString">
|
||||||
|
<attribute name="s" type="domain:statusValueType"
|
||||||
|
use="required"/>
|
||||||
|
<attribute name="lang" type="language"
|
||||||
|
default="en"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<simpleType name="statusValueType">
|
||||||
|
<restriction base="token">
|
||||||
|
<enumeration value="clientDeleteProhibited"/>
|
||||||
|
<enumeration value="clientHold"/>
|
||||||
|
<enumeration value="clientRenewProhibited"/>
|
||||||
|
<enumeration value="clientTransferProhibited"/>
|
||||||
|
<enumeration value="clientUpdateProhibited"/>
|
||||||
|
<enumeration value="inactive"/>
|
||||||
|
<enumeration value="ok"/>
|
||||||
|
<enumeration value="pendingCreate"/>
|
||||||
|
<enumeration value="pendingDelete"/>
|
||||||
|
<enumeration value="pendingRenew"/>
|
||||||
|
<enumeration value="pendingTransfer"/>
|
||||||
|
<enumeration value="pendingUpdate"/>
|
||||||
|
<enumeration value="serverDeleteProhibited"/>
|
||||||
|
<enumeration value="serverHold"/>
|
||||||
|
<enumeration value="serverRenewProhibited"/>
|
||||||
|
<enumeration value="serverTransferProhibited"/>
|
||||||
|
<enumeration value="serverUpdateProhibited"/>
|
||||||
|
</restriction>
|
||||||
|
</simpleType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Pending action notification response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="panDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="domain:paNameType"/>
|
||||||
|
<element name="paTRID" type="epp:trIDType"/>
|
||||||
|
<element name="paDate" type="dateTime"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<complexType name="paNameType">
|
||||||
|
<simpleContent>
|
||||||
|
<extension base="eppcom:labelType">
|
||||||
|
<attribute name="paResult" type="boolean"
|
||||||
|
use="required"/>
|
||||||
|
</extension>
|
||||||
|
</simpleContent>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<renew> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="renDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="exDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<transfer> response elements.
|
||||||
|
-->
|
||||||
|
<complexType name="trnDataType">
|
||||||
|
<sequence>
|
||||||
|
<element name="name" type="eppcom:labelType"/>
|
||||||
|
<element name="trStatus" type="eppcom:trStatusType"/>
|
||||||
|
<element name="reID" type="eppcom:clIDType"/>
|
||||||
|
<element name="reDate" type="dateTime"/>
|
||||||
|
<element name="acID" type="eppcom:clIDType"/>
|
||||||
|
<element name="acDate" type="dateTime"/>
|
||||||
|
<element name="exDate" type="dateTime"
|
||||||
|
minOccurs="0"/>
|
||||||
|
</sequence>
|
||||||
|
</complexType>
|
||||||
|
<!--
|
||||||
|
End of schema.
|
||||||
|
-->
|
||||||
|
</schema>
|
|
@ -1,39 +1,39 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<schema
|
<schema
|
||||||
targetNamespace="urn:ee:eis:xml:epp:eis-1.0"
|
targetNamespace="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
xmlns:eis="urn:ee:eis:xml:epp:eis-1.0"
|
xmlns:eis="https://raw.githubusercontent.com/internetee/registry/alpha/doc/schemas/eis-1.0.xsd"
|
||||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||||
elementFormDefault="qualified">
|
elementFormDefault="qualified">
|
||||||
|
|
||||||
<annotation>
|
<annotation>
|
||||||
<documentation>
|
<documentation>
|
||||||
EIS Extensible Provisioning Protocol v1.0
|
EIS Extensible Provisioning Protocol v1.0 extension schema.
|
||||||
extension schema.
|
|
||||||
</documentation>
|
</documentation>
|
||||||
</annotation>
|
</annotation>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Child elements found in EPP commands.
|
Child elements found in EPP commands.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<element name="extdata" type="eis:legalDocAndIdentType"/>
|
<element name="extdata" type="eis:legalDocAndIdentType"/>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Child elements supporting either the
|
Child elements supporting ident and legal documents.
|
||||||
dsData or the keyData interface.
|
-->
|
||||||
-->
|
|
||||||
<complexType name="legalDocAndIdentType">
|
<complexType name="legalDocAndIdentType">
|
||||||
<sequence>
|
<sequence>
|
||||||
<element name="legalDocument" type="eis:legalDocType"
|
<element name="ident" type="eis:identType" minOccurs="0" maxOccurs="1"/>
|
||||||
minOccurs="0" maxOccurs="1"/>
|
<element name="legalDocument" type="eis:legalDocType" minOccurs="0" maxOccurs="1"/>
|
||||||
<element name="ident" type="eis:identType"
|
|
||||||
minOccurs="0" maxOccurs="1"/>
|
|
||||||
</sequence>
|
</sequence>
|
||||||
</complexType>
|
</complexType>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Child elements of extdata
|
Child elements of extdata
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Legal document, encoded in base64
|
||||||
|
-->
|
||||||
<complexType name="legalDocType">
|
<complexType name="legalDocType">
|
||||||
<simpleContent>
|
<simpleContent>
|
||||||
<extension base="base64Binary">
|
<extension base="base64Binary">
|
||||||
|
@ -55,6 +55,9 @@
|
||||||
</restriction>
|
</restriction>
|
||||||
</simpleType>
|
</simpleType>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Ident with type and country code
|
||||||
|
-->
|
||||||
<complexType name="identType">
|
<complexType name="identType">
|
||||||
<simpleContent>
|
<simpleContent>
|
||||||
<extension base="normalizedString">
|
<extension base="normalizedString">
|
||||||
|
@ -66,10 +69,9 @@
|
||||||
|
|
||||||
<simpleType name="identEnumType">
|
<simpleType name="identEnumType">
|
||||||
<restriction base="token">
|
<restriction base="token">
|
||||||
<enumeration value="pic"/>
|
<enumeration value="bic"/>
|
||||||
<enumeration value="priv"/>
|
<enumeration value="priv"/>
|
||||||
<enumeration value="birthday"/>
|
<enumeration value="birthday"/>
|
||||||
<enumeration value="passport"/>
|
|
||||||
</restriction>
|
</restriction>
|
||||||
</simpleType>
|
</simpleType>
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace :zonefile do
|
||||||
ret text;
|
ret text;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- define filters
|
-- define filters
|
||||||
include_filter = '%' || i_origin;
|
include_filter = '%.' || i_origin;
|
||||||
|
|
||||||
-- for %.%.%
|
-- for %.%.%
|
||||||
IF i_origin ~ '\\.' THEN
|
IF i_origin ~ '\\.' THEN
|
||||||
|
|
|
@ -2,7 +2,7 @@ require 'rails_helper'
|
||||||
|
|
||||||
describe 'EPP Contact', epp: true do
|
describe 'EPP Contact', epp: true do
|
||||||
before :all do
|
before :all do
|
||||||
@xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-1.0.xsd'))
|
@xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-eis-1.0.xsd'))
|
||||||
@registrar1 = Fabricate(:registrar1)
|
@registrar1 = Fabricate(:registrar1)
|
||||||
@registrar2 = Fabricate(:registrar2)
|
@registrar2 = Fabricate(:registrar2)
|
||||||
@epp_xml = EppXml::Contact.new(cl_trid: 'ABC-12345')
|
@epp_xml = EppXml::Contact.new(cl_trid: 'ABC-12345')
|
||||||
|
@ -15,13 +15,19 @@ describe 'EPP Contact', epp: true do
|
||||||
@contact = Fabricate(:contact, registrar: @registrar1)
|
@contact = Fabricate(:contact, registrar: @registrar1)
|
||||||
|
|
||||||
@extension = {
|
@extension = {
|
||||||
legalDocument: {
|
|
||||||
value: 'dGVzdCBmYWlsCg==',
|
|
||||||
attrs: { type: 'pdf' }
|
|
||||||
},
|
|
||||||
ident: {
|
ident: {
|
||||||
value: '37605030299',
|
value: '37605030299',
|
||||||
attrs: { type: 'priv', cc: 'EE' }
|
attrs: { type: 'priv', cc: 'EE' }
|
||||||
|
},
|
||||||
|
legalDocument: {
|
||||||
|
value: 'dGVzdCBmYWlsCg==',
|
||||||
|
attrs: { type: 'pdf' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@update_extension = {
|
||||||
|
legalDocument: {
|
||||||
|
value: 'dGVzdCBmYWlsCg==',
|
||||||
|
attrs: { type: 'pdf' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -106,13 +112,13 @@ describe 'EPP Contact', epp: true do
|
||||||
|
|
||||||
it 'successfully saves ident type with legal document' do
|
it 'successfully saves ident type with legal document' do
|
||||||
extension = {
|
extension = {
|
||||||
legalDocument: {
|
|
||||||
value: 'dGVzdCBmYWlsCg==',
|
|
||||||
attrs: { type: 'pdf' }
|
|
||||||
},
|
|
||||||
ident: {
|
ident: {
|
||||||
value: '1990-22-12',
|
value: '1990-22-12',
|
||||||
attrs: { type: 'birthday', cc: 'US' }
|
attrs: { type: 'birthday', cc: 'US' }
|
||||||
|
},
|
||||||
|
legalDocument: {
|
||||||
|
value: 'dGVzdCBmYWlsCg==',
|
||||||
|
attrs: { type: 'pdf' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response = create_request({}, extension)
|
response = create_request({}, extension)
|
||||||
|
@ -272,7 +278,7 @@ describe 'EPP Contact', epp: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_request(overwrites = {}, extension = {}, options = {})
|
def update_request(overwrites = {}, extension = {}, options = {})
|
||||||
extension = @extension if extension.blank?
|
extension = @update_extension if extension.blank?
|
||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
id: { value: 'asd123123er' },
|
id: { value: 'asd123123er' },
|
||||||
|
@ -394,22 +400,23 @@ describe 'EPP Contact', epp: true do
|
||||||
@contact.reload.code.should == 'FIRST0:SH8013'
|
@contact.reload.code.should == 'FIRST0:SH8013'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should update ident' do
|
it 'should not be able to update ident' do
|
||||||
extension = {
|
extension = {
|
||||||
legalDocument: {
|
|
||||||
value: 'dGVzdCBmYWlsCg==',
|
|
||||||
attrs: { type: 'pdf' }
|
|
||||||
},
|
|
||||||
ident: {
|
ident: {
|
||||||
value: '1990-22-12',
|
value: '1990-22-12',
|
||||||
attrs: { type: 'birthday', cc: 'US' }
|
attrs: { type: 'birthday', cc: 'US' }
|
||||||
|
},
|
||||||
|
legalDocument: {
|
||||||
|
value: 'dGVzdCBmYWlsCg==',
|
||||||
|
attrs: { type: 'pdf' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response = update_request({ id: { value: 'FIRST0:SH8013' } }, extension)
|
response = update_request({ id: { value: 'FIRST0:SH8013' } }, extension)
|
||||||
response[:msg].should == 'Command completed successfully'
|
response[:msg].should ==
|
||||||
response[:result_code].should == '1000'
|
'Parameter value policy error. Update of ident data not allowed [ident]'
|
||||||
|
response[:result_code].should == '2306'
|
||||||
|
|
||||||
Contact.find_by(code: 'FIRST0:SH8013').ident_type.should == 'birthday'
|
Contact.find_by(code: 'FIRST0:SH8013').ident_type.should == 'priv'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return parameter value policy errror for org update' do
|
it 'should return parameter value policy errror for org update' do
|
||||||
|
|
|
@ -2,7 +2,7 @@ require 'rails_helper'
|
||||||
|
|
||||||
describe 'EPP Domain', epp: true do
|
describe 'EPP Domain', epp: true do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
@xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-1.0.xsd'))
|
@xsd = Nokogiri::XML::Schema(File.read('doc/schemas/domain-eis-1.0.xsd'))
|
||||||
@epp_xml = EppXml.new(cl_trid: 'ABC-12345')
|
@epp_xml = EppXml.new(cl_trid: 'ABC-12345')
|
||||||
@registrar1 = Fabricate(:registrar1, code: 'REGDOMAIN1')
|
@registrar1 = Fabricate(:registrar1, code: 'REGDOMAIN1')
|
||||||
@registrar2 = Fabricate(:registrar2, code: 'REGDOMAIN2')
|
@registrar2 = Fabricate(:registrar2, code: 'REGDOMAIN2')
|
||||||
|
@ -193,7 +193,7 @@ describe 'EPP Domain', epp: true do
|
||||||
xml = domain_create_xml(name: { value: "#{'ä' * 63}.ee" })
|
xml = domain_create_xml(name: { value: "#{'ä' * 63}.ee" })
|
||||||
|
|
||||||
response = epp_plain_request(xml)
|
response = epp_plain_request(xml)
|
||||||
response[:msg].should == 'Domain name is too long (maximum is 63 characters) [name_puny]'
|
response[:msg].should == 'Domain name is too long (maximum is 63 characters) [puny_label]'
|
||||||
response[:result_code].should == '2005'
|
response[:result_code].should == '2005'
|
||||||
response[:clTRID].should == 'ABC-12345'
|
response[:clTRID].should == 'ABC-12345'
|
||||||
end
|
end
|
||||||
|
@ -326,7 +326,7 @@ describe 'EPP Domain', epp: true do
|
||||||
})
|
})
|
||||||
|
|
||||||
response = epp_plain_request(xml)
|
response = epp_plain_request(xml)
|
||||||
response[:results][0][:result_code].should == '2004'
|
response[:results][0][:result_code].should == '2306'
|
||||||
response[:results][0][:msg].should == 'Period must add up to 1, 2 or 3 years [period]'
|
response[:results][0][:msg].should == 'Period must add up to 1, 2 or 3 years [period]'
|
||||||
response[:results][0][:value].should == '367'
|
response[:results][0][:value].should == '367'
|
||||||
end
|
end
|
||||||
|
@ -1949,7 +1949,10 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
### RENEW ###
|
### RENEW ###
|
||||||
it 'renews a domain' do
|
it 'renews a domain' do
|
||||||
exp_date = 1.year.since.to_date
|
domain.valid_to = Time.zone.now.to_date + 10.days
|
||||||
|
domain.save
|
||||||
|
|
||||||
|
exp_date = domain.valid_to.to_date
|
||||||
xml = @epp_xml.domain.renew(
|
xml = @epp_xml.domain.renew(
|
||||||
name: { value: domain.name },
|
name: { value: domain.name },
|
||||||
curExpDate: { value: exp_date.to_s },
|
curExpDate: { value: exp_date.to_s },
|
||||||
|
@ -1979,7 +1982,9 @@ describe 'EPP Domain', epp: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns an error when period is invalid' do
|
it 'returns an error when period is invalid' do
|
||||||
exp_date = (1.year.since.to_date)
|
domain.valid_to = Time.zone.now.to_date + 10.days
|
||||||
|
domain.save
|
||||||
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
xml = @epp_xml.domain.renew(
|
xml = @epp_xml.domain.renew(
|
||||||
name: { value: domain.name },
|
name: { value: domain.name },
|
||||||
|
@ -1989,10 +1994,59 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
response = epp_plain_request(xml)
|
response = epp_plain_request(xml)
|
||||||
response[:results][0][:msg].should == 'Period must add up to 1, 2 or 3 years [period]'
|
response[:results][0][:msg].should == 'Period must add up to 1, 2 or 3 years [period]'
|
||||||
response[:results][0][:result_code].should == '2004'
|
response[:results][0][:result_code].should == '2306'
|
||||||
response[:results][0][:value].should == '4'
|
response[:results][0][:value].should == '4'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not renew a domain unless less than 90 days till expiration' do
|
||||||
|
domain.valid_to = Time.zone.now.to_date + 91.days
|
||||||
|
domain.save
|
||||||
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
|
xml = @epp_xml.domain.renew(
|
||||||
|
name: { value: domain.name },
|
||||||
|
curExpDate: { value: exp_date.to_s },
|
||||||
|
period: { value: '1', attrs: { unit: 'y' } }
|
||||||
|
)
|
||||||
|
|
||||||
|
response = epp_plain_request(xml)
|
||||||
|
response[:results][0][:msg].should == 'Object is not eligible for renewal'
|
||||||
|
response[:results][0][:result_code].should == '2105'
|
||||||
|
|
||||||
|
domain.valid_to = Time.zone.now.to_date + 90.days
|
||||||
|
domain.save
|
||||||
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
|
xml = @epp_xml.domain.renew(
|
||||||
|
name: { value: domain.name },
|
||||||
|
curExpDate: { value: exp_date.to_s },
|
||||||
|
period: { value: '1', attrs: { unit: 'y' } }
|
||||||
|
)
|
||||||
|
|
||||||
|
response = epp_plain_request(xml)
|
||||||
|
response[:results][0][:msg].should == 'Command completed successfully'
|
||||||
|
response[:results][0][:result_code].should == '1000'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not renew a domain unless less than 90 days till expiration' do
|
||||||
|
Setting.days_to_renew_domain_before_expire = 0
|
||||||
|
|
||||||
|
domain.valid_to = Time.zone.now.to_date + 5.years
|
||||||
|
domain.save
|
||||||
|
exp_date = domain.valid_to.to_date
|
||||||
|
|
||||||
|
xml = @epp_xml.domain.renew(
|
||||||
|
name: { value: domain.name },
|
||||||
|
curExpDate: { value: exp_date.to_s },
|
||||||
|
period: { value: '1', attrs: { unit: 'y' } }
|
||||||
|
)
|
||||||
|
|
||||||
|
response = epp_plain_request(xml)
|
||||||
|
response[:results][0][:msg].should == 'Command completed successfully'
|
||||||
|
response[:results][0][:result_code].should == '1000'
|
||||||
|
Setting.days_to_renew_domain_before_expire = 90
|
||||||
|
end
|
||||||
|
|
||||||
it 'does not renew foreign domain' do
|
it 'does not renew foreign domain' do
|
||||||
login_as :registrar2 do
|
login_as :registrar2 do
|
||||||
exp_date = 1.year.since.to_date
|
exp_date = 1.year.since.to_date
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
Fabricator(:pricelist) do
|
Fabricator(:pricelist) do
|
||||||
active_from 1.year.ago
|
valid_from 1.year.ago
|
||||||
active_until 1.year.since
|
valid_to 1.year.since
|
||||||
category '.ee'
|
category '.ee'
|
||||||
|
duration '1year'
|
||||||
|
operation_category 'new'
|
||||||
|
price 10
|
||||||
end
|
end
|
||||||
|
|
|
@ -85,6 +85,17 @@ describe Domain do
|
||||||
@domain.registrant_update_confirmable?('123').should == false
|
@domain.registrant_update_confirmable?('123').should == false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should expire domains' do
|
||||||
|
Domain.expire_domains
|
||||||
|
@domain.domain_statuses.where(value: DomainStatus::EXPIRED).count.should == 0
|
||||||
|
|
||||||
|
@domain.valid_to = Time.zone.now - 10.days
|
||||||
|
@domain.save
|
||||||
|
|
||||||
|
Domain.expire_domains
|
||||||
|
@domain.domain_statuses.where(value: DomainStatus::EXPIRED).count.should == 1
|
||||||
|
end
|
||||||
|
|
||||||
context 'about registrant update confirm' do
|
context 'about registrant update confirm' do
|
||||||
before :all do
|
before :all do
|
||||||
@domain.registrant_verification_token = 123
|
@domain.registrant_verification_token = 123
|
||||||
|
@ -237,7 +248,7 @@ describe Domain do
|
||||||
d.valid?
|
d.valid?
|
||||||
d.errors.full_messages.should match_array([
|
d.errors.full_messages.should match_array([
|
||||||
"Domain name Domain name is invalid",
|
"Domain name Domain name is invalid",
|
||||||
"Domain name Domain name is too long (maximum is 63 characters)"
|
"Puny label Domain name is too long (maximum is 63 characters)"
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -247,7 +258,15 @@ describe Domain do
|
||||||
d.valid?
|
d.valid?
|
||||||
d.errors.full_messages.should match_array([
|
d.errors.full_messages.should match_array([
|
||||||
"Domain name Domain name is invalid",
|
"Domain name Domain name is invalid",
|
||||||
"Domain name Domain name is too long (maximum is 63 characters)"
|
"Puny label Domain name is too long (maximum is 63 characters)"
|
||||||
|
])
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be valid when name length is 63 characters' do
|
||||||
|
d = Fabricate.build(:domain,
|
||||||
|
name: "õäöüšžõäöüšžõäöüšžõäöüšžõäöüšžõäöüšžõäöüšžab123.pri.ee")
|
||||||
|
d.valid?
|
||||||
|
d.errors.full_messages.should match_array([
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -255,7 +274,7 @@ describe Domain do
|
||||||
d = Fabricate.build(:domain, name: "#{'ä' * 63}.ee")
|
d = Fabricate.build(:domain, name: "#{'ä' * 63}.ee")
|
||||||
d.valid?
|
d.valid?
|
||||||
d.errors.full_messages.should == [
|
d.errors.full_messages.should == [
|
||||||
"Domain name Domain name is too long (maximum is 63 characters)"
|
"Puny label Domain name is too long (maximum is 63 characters)"
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -264,7 +283,7 @@ describe Domain do
|
||||||
d.valid?
|
d.valid?
|
||||||
d.errors.full_messages.should match_array([
|
d.errors.full_messages.should match_array([
|
||||||
"Domain name Domain name is invalid",
|
"Domain name Domain name is invalid",
|
||||||
"Domain name Domain name is too long (maximum is 63 characters)"
|
"Puny label Domain name is too long (maximum is 63 characters)"
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -272,7 +291,7 @@ describe Domain do
|
||||||
d = Fabricate.build(:domain, name: "#{'ä' * 63}.pri.ee")
|
d = Fabricate.build(:domain, name: "#{'ä' * 63}.pri.ee")
|
||||||
d.valid?
|
d.valid?
|
||||||
d.errors.full_messages.should match_array([
|
d.errors.full_messages.should match_array([
|
||||||
"Domain name Domain name is too long (maximum is 63 characters)"
|
"Puny label Domain name is too long (maximum is 63 characters)"
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@ describe Pricelist do
|
||||||
it 'should not be valid' do
|
it 'should not be valid' do
|
||||||
@pricelist.valid?
|
@pricelist.valid?
|
||||||
@pricelist.errors.full_messages.should match_array([
|
@pricelist.errors.full_messages.should match_array([
|
||||||
"Valid from is missing",
|
"Category is missing",
|
||||||
"Active until is missing",
|
"Duration is missing",
|
||||||
"Category is missing"
|
"Operation category is missing"
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -32,6 +32,11 @@ describe Pricelist do
|
||||||
it 'should not have any versions' do
|
it 'should not have any versions' do
|
||||||
@pricelist.versions.should == []
|
@pricelist.versions.should == []
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should not have name' do
|
||||||
|
@pricelist.name.should == ' '
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with valid attributes' do
|
context 'with valid attributes' do
|
||||||
|
@ -50,10 +55,14 @@ describe Pricelist do
|
||||||
@pricelist.errors.full_messages.should match_array([])
|
@pricelist.errors.full_messages.should match_array([])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should have name' do
|
||||||
|
@pricelist.name.should == 'new .ee'
|
||||||
|
end
|
||||||
|
|
||||||
it 'should have one version' do
|
it 'should have one version' do
|
||||||
with_versioning do
|
with_versioning do
|
||||||
@pricelist.versions.reload.should == []
|
@pricelist.versions.reload.should == []
|
||||||
@pricelist.name = 'New name'
|
@pricelist.price = 11
|
||||||
@pricelist.save
|
@pricelist.save
|
||||||
@pricelist.errors.full_messages.should match_array([])
|
@pricelist.errors.full_messages.should match_array([])
|
||||||
@pricelist.versions.size.should == 1
|
@pricelist.versions.size.should == 1
|
||||||
|
|
|
@ -24,7 +24,7 @@ describe ZonefileSetting do
|
||||||
master_nameserver: 'ns.tld.ee'
|
master_nameserver: 'ns.tld.ee'
|
||||||
}).first_or_create!
|
}).first_or_create!
|
||||||
|
|
||||||
d = Fabricate(:domain_with_dnskeys)
|
d = Fabricate(:domain_with_dnskeys, name: 'testpri.ee')
|
||||||
d.nameservers << Nameserver.new({
|
d.nameservers << Nameserver.new({
|
||||||
hostname: "ns.#{d.name}",
|
hostname: "ns.#{d.name}",
|
||||||
ipv4: '123.123.123.123',
|
ipv4: '123.123.123.123',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue