From 4170554ca16254c46e374a22929429336affb8ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Fri, 22 Jan 2021 16:51:09 +0200 Subject: [PATCH] Bulk NS change: Verify CSV integrity --- .../registrar/nameservers_controller.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/controllers/registrar/nameservers_controller.rb b/app/controllers/registrar/nameservers_controller.rb index 3eb23cd48..a45077a1c 100644 --- a/app/controllers/registrar/nameservers_controller.rb +++ b/app/controllers/registrar/nameservers_controller.rb @@ -7,11 +7,12 @@ class Registrar ipv6 = params[:ipv6].split("\r\n") domains = domain_list_from_csv + return csv_list_empty_guard if domains == [] uri = URI.parse("#{ENV['repp_url']}registrar/nameservers") request = Net::HTTP::Put.new(uri, 'Content-Type' => 'application/json') request.body = { data: { type: 'nameserver', id: params[:old_hostname], - domains: domains, + domains: domains || [], attributes: { hostname: params[:new_hostname], ipv4: ipv4, ipv6: ipv6 } } }.to_json @@ -42,12 +43,20 @@ class Registrar notices.join(', ') end + def csv_list_empty_guard + notice = 'CSV scoped domain list seems empty. Make sure that domains are added and ' \ + '"domain_name" header is present.' + redirect_to(registrar_domains_url, flash: { notice: notice }) + end + def domain_list_from_csv - return [] if params[:puny_file].blank? + return if params[:puny_file].blank? domains = [] - CSV.read(params[:puny_file].path, headers: true).each { |b| domains << b['domain_name'] } - domains + CSV.read(params[:puny_file].path, headers: true).map { |b| domains << b['domain_name'] } + domains.compact + rescue CSV::MalformedCSVError + [] end end end