mirror of
https://github.com/internetee/registry.git
synced 2025-06-07 13:15:40 +02:00
58 lines
2 KiB
Ruby
58 lines
2 KiB
Ruby
module Repp
|
|
module V1
|
|
module Domains
|
|
class DnssecController < BaseController
|
|
before_action :set_domain, only: %i[index create destroy]
|
|
|
|
def_param_group :dns_keys_apidoc do
|
|
param :flags, String, required: true, desc: '256 (KSK) or 257 (ZSK)'
|
|
param :protocol, String, required: true, desc: 'Key protocol (3)'
|
|
param :alg, String, required: true, desc: 'DNSSEC key algorithm (3,5,6,7,8,10,13,14)'
|
|
param :public_key, String, required: true, desc: 'DNSSEC public key'
|
|
end
|
|
|
|
api :GET, '/repp/v1/domains/:domain_name/dnssec'
|
|
desc "View specific domain's DNSSEC keys"
|
|
def index
|
|
dnssec_keys = @domain.dnskeys
|
|
data = { dns_keys: dnssec_keys.as_json(only: %i[flags alg protocol public_key]) }
|
|
render_success(data: data)
|
|
end
|
|
|
|
api :POST, '/repp/v1/domains/:domain_name/dnssec'
|
|
desc 'Create a new DNSSEC key(s) for domain'
|
|
param :dns_keys, Array, required: true, desc: 'Array of new DNSSEC keys' do
|
|
param_group :dns_keys_apidoc, DnssecController
|
|
end
|
|
def create
|
|
cta('add')
|
|
end
|
|
|
|
api :DELETE, 'repp/v1/domains/:domain_name/dnssec'
|
|
param :dns_keys, Array, required: true, desc: 'Array of new DNSSEC keys' do
|
|
param_group :dns_keys_apidoc, DnssecController
|
|
end
|
|
def destroy
|
|
cta('rem')
|
|
end
|
|
|
|
def cta(action = 'add')
|
|
params[:dns_keys].each { |n| n[:action] = action }
|
|
action = Actions::DomainUpdate.new(@domain, dnssec_params, false)
|
|
|
|
# rubocop:disable Style/AndOr
|
|
(handle_errors(@domain) and return) unless action.call
|
|
# rubocop:enable Style/AndOr
|
|
|
|
render_success(data: { domain: { name: @domain.name } })
|
|
end
|
|
|
|
private
|
|
|
|
def dnssec_params
|
|
params.permit(:domain_id, dns_keys: [%i[action flags protocol alg public_key]])
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|