mirror of
https://github.com/internetee/registry.git
synced 2025-05-28 16:39:55 +02:00
Merge branch 'master' of github.com:internetee/registry
Conflicts: app/models/nameserver.rb
This commit is contained in:
commit
dd8410248e
12 changed files with 113 additions and 79 deletions
|
@ -28,7 +28,7 @@ class Client::DomainTransfersController < ClientController
|
|||
end
|
||||
|
||||
@domain_transfer = @domain.domain_transfers.create(domain_transfer_params)
|
||||
@domain_transfer.approve_as_server if SettingGroup.domain_general.setting(:transfer_wait_time).value.to_i == 0
|
||||
@domain_transfer.approve_as_server if Setting.transfer_wait_time == 0
|
||||
|
||||
if @domain_transfer.approved?
|
||||
flash[:notice] = I18n.t('shared.domain_transfer_approved')
|
||||
|
|
|
@ -167,22 +167,25 @@ module Epp::DomainsHelper
|
|||
|
||||
## SHARED
|
||||
def find_domain(secure = { secure: true })
|
||||
domain = Epp::EppDomain.find_by(name: @ph[:name])
|
||||
domain = Epp::EppDomain.find_by(name: @ph[:name].strip.downcase)
|
||||
|
||||
unless domain
|
||||
epp_errors << {
|
||||
code: '2303',
|
||||
msg: I18n.t('errors.messages.epp_domain_not_found'),
|
||||
value: { obj: 'name', val: @ph[:name] }
|
||||
value: { obj: 'name', val: @ph[:name].strip.downcase }
|
||||
}
|
||||
return nil
|
||||
end
|
||||
|
||||
if domain.registrar != current_epp_user.registrar && secure[:secure] == true
|
||||
@ph[:authInfo] ||= {}
|
||||
return domain if domain.auth_info == @ph[:authInfo][:pw]
|
||||
|
||||
if (domain.registrar != current_epp_user.registrar && secure[:secure] == true) &&
|
||||
epp_errors << {
|
||||
code: '2302',
|
||||
msg: I18n.t('errors.messages.domain_exists_but_belongs_to_other_registrar'),
|
||||
value: { obj: 'name', val: @ph[:name] }
|
||||
value: { obj: 'name', val: @ph[:name].strip.downcase }
|
||||
}
|
||||
return nil
|
||||
end
|
||||
|
|
|
@ -82,6 +82,7 @@ class Domain < ActiveRecord::Base
|
|||
|
||||
def name=(value)
|
||||
value.strip!
|
||||
value.downcase!
|
||||
self[:name] = SimpleIDN.to_unicode(value)
|
||||
self[:name_puny] = SimpleIDN.to_ascii(value)
|
||||
self[:name_dirty] = value
|
||||
|
|
|
@ -477,6 +477,8 @@ class Epp::EppDomain < Domain
|
|||
|
||||
res = []
|
||||
domains.each do |x|
|
||||
x.strip!
|
||||
x.downcase!
|
||||
unless DomainNameValidator.validate_format(x)
|
||||
res << { name: x, avail: 0, reason: 'invalid format' }
|
||||
next
|
||||
|
|
|
@ -13,6 +13,8 @@ class Nameserver < ActiveRecord::Base
|
|||
# archiving
|
||||
has_paper_trail class_name: 'NameserverVersion'
|
||||
|
||||
before_validation :normalize_attributes
|
||||
|
||||
def epp_code_map
|
||||
{
|
||||
'2302' => [
|
||||
|
@ -37,6 +39,12 @@ class Nameserver < ActiveRecord::Base
|
|||
}
|
||||
end
|
||||
|
||||
def normalize_attributes
|
||||
self.hostname = hostname.try(:strip).try(:downcase)
|
||||
self.ipv4 = ipv4.try(:strip)
|
||||
self.ipv6 = ipv6.try(:strip).try(:upcase)
|
||||
end
|
||||
|
||||
def to_s
|
||||
hostname
|
||||
end
|
||||
|
|
|
@ -24,23 +24,19 @@ xml.epp_head do
|
|||
|
||||
xml.tag!('domain:ns') do
|
||||
@domain.nameservers.each do |x|
|
||||
if x.ipv4.present? || x.ipv6.present?
|
||||
xml.tag!('domain:hostAttr') do
|
||||
xml.tag!('domain:hostName', x.hostname)
|
||||
xml.tag!('domain:hostAddr', x.ipv4, 'ip' => 'v4') if x.ipv4.present?
|
||||
xml.tag!('domain:hostAddr', x.ipv6, 'ip' => 'v6') if x.ipv6.present?
|
||||
end
|
||||
else
|
||||
xml.tag!('domain:hostObj', x.hostname)
|
||||
xml.tag!('domain:hostAttr') do
|
||||
xml.tag!('domain:hostName', x.hostname)
|
||||
xml.tag!('domain:hostAddr', x.ipv4, 'ip' => 'v4') if x.ipv4.present?
|
||||
xml.tag!('domain:hostAddr', x.ipv6, 'ip' => 'v6') if x.ipv6.present?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
## TODO Find out what this domain:host is all about
|
||||
|
||||
xml.tag!('domain:clID', @domain.owner_contact_code)
|
||||
xml.tag!('domain:clID', @domain.registrar_name)
|
||||
|
||||
xml.tag!('domain:crID', @domain.registrar_name) if @domain.registrar #TODO Registrar has to be specified
|
||||
xml.tag!('domain:crID', @domain.versions.first.try(:reify).try(:registrar) || @domain.registrar) #TODO Registrar has to be specified
|
||||
|
||||
xml.tag!('domain:crDate', @domain.created_at)
|
||||
|
||||
|
|
52
bin/robot
52
bin/robot
|
@ -1,18 +1,60 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Update repo
|
||||
# Build and run for automatic tests
|
||||
#
|
||||
|
||||
# fail later
|
||||
set -o pipefail
|
||||
|
||||
# default locations
|
||||
export LANGUAGE=en_US.UTF-8
|
||||
export LANG=en_US.UTF-8
|
||||
export LC_ALL=en_US.UTF-8
|
||||
export RAILS_ENV=test
|
||||
|
||||
# cd to Rails root directory
|
||||
cd "$(dirname "$0")"; cd ..
|
||||
|
||||
git pull origin master &> /dev/null
|
||||
git reset --hard &> /dev/null
|
||||
unset GIT_DIR GIT_WORK_TREE
|
||||
# cp config/secrets-example.yml config/secrets.yml
|
||||
# create manually config/database.yml
|
||||
|
||||
bin/robot-audit
|
||||
bundle install
|
||||
|
||||
RAILS_ENV=test bundle exec rake db:drop
|
||||
RAILS_ENV=test bundle exec rake db:create
|
||||
RAILS_ENV=test bundle exec rake db:schema:load &> /dev/null
|
||||
RAILS_ENV=test bundle exec rake db:seed
|
||||
RAILS_ENV=test bundle exec rake assets:precompile
|
||||
|
||||
echo "GIT_LAST_COMMITS"
|
||||
git log origin/master -n 10 --pretty=oneline | sed -r '/^.{40} Merge branch/d' | sed -r 's/^.{40}/Latest: /'
|
||||
echo "END_OF_GIT_LAST_COMMITS"
|
||||
|
||||
echo "RUBOCOP_RESULTS"
|
||||
bundle exec rubocop -D
|
||||
RCODE=$?
|
||||
echo "END_OF_RUBOCOP_RESULTS"
|
||||
|
||||
echo "TEST_RESULTS"
|
||||
ROBOT=true bundle exec rake test
|
||||
TCODE=$?
|
||||
TCODE=0 # tmp
|
||||
echo "END_OF_TEST_RESULTS"
|
||||
|
||||
echo "SECURITY_RESULTS"
|
||||
bundle exec bundle-audit update
|
||||
bundle exec bundle-audit
|
||||
BCODE=$?
|
||||
BCODE=0 # tmp
|
||||
bundle exec brakeman
|
||||
echo "END_OF_SECURITY_RESULTS"
|
||||
|
||||
# update code review
|
||||
bundle exec rubycritic app lib
|
||||
|
||||
if [ $RCODE == 0 ] && [ $TCODE == 0 ] &&[ $BCODE == 0 ]; then
|
||||
exit 0
|
||||
else
|
||||
echo "ROBOTEXITWITHFAILURE"
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Build and run for automatic tests
|
||||
#
|
||||
|
||||
# fail later
|
||||
set -o pipefail
|
||||
|
||||
# cp config/secrets-example.yml config/secrets.yml
|
||||
# create manually config/database.yml
|
||||
|
||||
bundle install
|
||||
|
||||
RAILS_ENV=test bundle exec rake db:drop
|
||||
RAILS_ENV=test bundle exec rake db:create
|
||||
RAILS_ENV=test bundle exec rake db:schema:load &> /dev/null
|
||||
RAILS_ENV=test bundle exec rake db:seed
|
||||
RAILS_ENV=test bundle exec rake assets:precompile
|
||||
|
||||
echo "GIT_LAST_COMMITS"
|
||||
git log origin/master -n 10 --pretty=oneline | sed -r '/^.{40} Merge branch/d' | sed -r 's/^.{40}/Latest: /'
|
||||
echo "END_OF_GIT_LAST_COMMITS"
|
||||
|
||||
echo "RUBOCOP_RESULTS"
|
||||
bundle exec rubocop -D
|
||||
RCODE=$?
|
||||
echo "END_OF_RUBOCOP_RESULTS"
|
||||
|
||||
echo "TEST_RESULTS"
|
||||
ROBOT=true bundle exec rake test
|
||||
TCODE=$?
|
||||
TCODE=0 # tmp
|
||||
echo "END_OF_TEST_RESULTS"
|
||||
|
||||
echo "SECURITY_RESULTS"
|
||||
bundle exec bundle-audit update
|
||||
bundle exec bundle-audit
|
||||
BCODE=$?
|
||||
BCODE=0 # tmp
|
||||
bundle exec brakeman
|
||||
echo "END_OF_SECURITY_RESULTS"
|
||||
|
||||
# update code review
|
||||
bundle exec rubycritic app lib
|
||||
|
||||
if [ $RCODE == 0 ] && [ $TCODE == 0 ] &&[ $BCODE == 0 ]; then
|
||||
exit 0
|
||||
else
|
||||
echo "ROBOTEXITWITHFAILURE"
|
||||
exit 1
|
||||
fi
|
11
bin/update-repo
Executable file
11
bin/update-repo
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Update repo
|
||||
#
|
||||
|
||||
# cd to Rails root directory
|
||||
cd "$(dirname "$0")"; cd ..
|
||||
|
||||
git pull origin master &> /dev/null
|
||||
git reset --hard &> /dev/null
|
||||
unset GIT_DIR GIT_WORK_TREE
|
|
@ -325,7 +325,7 @@ describe 'EPP Domain', epp: true do
|
|||
expect(response[:results][0][:value]).to eq '192.0.2.2.invalid'
|
||||
expect(response[:results][1][:result_code]).to eq '2005'
|
||||
expect(response[:results][1][:msg]).to eq 'IPv6 is invalid'
|
||||
expect(response[:results][1][:value]).to eq 'invalid_ipv6'
|
||||
expect(response[:results][1][:value]).to eq 'INVALID_IPV6'
|
||||
expect(Domain.count).to eq(0)
|
||||
expect(Nameserver.count).to eq(0)
|
||||
end
|
||||
|
@ -743,7 +743,9 @@ describe 'EPP Domain', epp: true do
|
|||
|
||||
d.save
|
||||
|
||||
response = epp_request(domain_info_xml, :xml)
|
||||
xml = domain_info_xml(name_value: 'Example.ee')
|
||||
|
||||
response = epp_request(xml, :xml)
|
||||
expect(response[:results][0][:result_code]).to eq('1000')
|
||||
expect(response[:results][0][:msg]).to eq('Command completed successfully')
|
||||
|
||||
|
@ -758,14 +760,16 @@ describe 'EPP Domain', epp: true do
|
|||
|
||||
expect(admin_contacts_from_request).to eq(admin_contacts_existing)
|
||||
|
||||
hosts_from_request = inf_data.css('hostObj').map(&:text)
|
||||
hosts_existing = d.nameservers.where(ipv4: nil).pluck(:hostname)
|
||||
hosts_from_request = inf_data.css('hostName').map(&:text)
|
||||
hosts_existing = d.nameservers.pluck(:hostname)
|
||||
|
||||
expect(hosts_from_request).to eq(hosts_existing)
|
||||
|
||||
expect(inf_data.css('hostName').first.text).to eq('ns1.example.com')
|
||||
expect(inf_data.css('hostAddr').first.text).to eq('192.168.1.1')
|
||||
expect(inf_data.css('hostAddr').last.text).to eq('1080:0:0:0:8:800:200C:417A')
|
||||
ns1 = inf_data.css('hostAttr').last
|
||||
|
||||
expect(ns1.css('hostName').last.text).to eq('ns1.example.com')
|
||||
expect(ns1.css('hostAddr').first.text).to eq('192.168.1.1')
|
||||
expect(ns1.css('hostAddr').last.text).to eq('1080:0:0:0:8:800:200C:417A')
|
||||
expect(inf_data.css('crDate').text).to eq(d.created_at.to_time.utc.to_s)
|
||||
expect(inf_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s)
|
||||
expect(inf_data.css('pw').text).to eq(d.auth_info)
|
||||
|
@ -865,6 +869,7 @@ describe 'EPP Domain', epp: true do
|
|||
expect(d.dnskeys.count).to eq(2)
|
||||
|
||||
response = epp_request(xml, :xml)
|
||||
|
||||
expect(response[:results][0][:result_code]).to eq('2302')
|
||||
expect(response[:results][0][:msg]).to eq('Nameserver already exists on this domain')
|
||||
expect(response[:results][0][:value]).to eq('ns1.example.com')
|
||||
|
|
|
@ -62,6 +62,24 @@ describe Domain do
|
|||
expect(d.errors.messages[:nameservers]).to eq(['Nameservers count must be between 2-7'])
|
||||
end
|
||||
|
||||
it 'downcases domain' do
|
||||
d = Domain.new(name: 'TesT.Ee')
|
||||
expect(d.name).to eq('test.ee')
|
||||
expect(d.name_puny).to eq('test.ee')
|
||||
expect(d.name_dirty).to eq('test.ee')
|
||||
end
|
||||
|
||||
it 'normalizes ns attrs' do
|
||||
d = Fabricate(:domain)
|
||||
d.nameservers.build(hostname: 'BLA.EXAMPLE.EE', ipv4: ' 192.168.1.1', ipv6: '1080:0:0:0:8:800:200c:417a')
|
||||
d.save
|
||||
|
||||
ns = d.nameservers.last
|
||||
expect(ns.hostname).to eq('bla.example.ee')
|
||||
expect(ns.ipv4).to eq('192.168.1.1')
|
||||
expect(ns.ipv6).to eq('1080:0:0:0:8:800:200C:417A')
|
||||
end
|
||||
|
||||
it 'does not create a reserved domain' do
|
||||
Fabricate(:reserved_domain)
|
||||
expect(Fabricate.build(:domain, name: '1162.ee').valid?).to be false
|
||||
|
|
|
@ -14,7 +14,6 @@ module General
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
RSpec.configure do |c|
|
||||
c.include General
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue