Get a zone.
This commit is contained in:
parent
1df35ad4c3
commit
9449ba336f
@ -46,6 +46,13 @@ class DNSManager::Client < IPC
|
|||||||
parse_message [ Response::Success ], read
|
parse_message [ Response::Success ], read
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Get a zone.
|
||||||
|
def user_zone_get(domain : String)
|
||||||
|
request = DNSManager::Request::GetZone.new domain
|
||||||
|
send_now request
|
||||||
|
parse_message [ Response::Zone ], read
|
||||||
|
end
|
||||||
|
|
||||||
# Get user domain list.
|
# Get user domain list.
|
||||||
def user_domain_list()
|
def user_domain_list()
|
||||||
request = DNSManager::Request::UserDomains.new
|
request = DNSManager::Request::UserDomains.new
|
||||||
|
@ -37,8 +37,10 @@ class Actions
|
|||||||
|
|
||||||
# Maintenance
|
# Maintenance
|
||||||
@the_call["admin-maintenance"] = ->admin_maintenance
|
@the_call["admin-maintenance"] = ->admin_maintenance
|
||||||
|
|
||||||
@the_call["user-zone-add"] = ->user_zone_add
|
@the_call["user-zone-add"] = ->user_zone_add
|
||||||
@the_call["user-zone-del"] = ->user_zone_del
|
@the_call["user-zone-del"] = ->user_zone_del
|
||||||
|
@the_call["user-zone-get"] = ->user_zone_get
|
||||||
@the_call["user-domain-list"] = ->user_domain_list
|
@the_call["user-domain-list"] = ->user_domain_list
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -93,6 +95,18 @@ class Actions
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def user_zone_get
|
||||||
|
domains = Context.args.not_nil!
|
||||||
|
domains.each do |domain|
|
||||||
|
begin
|
||||||
|
pp! domain
|
||||||
|
pp! @dnsmanagerd.user_zone_get domain
|
||||||
|
rescue e
|
||||||
|
puts "error for user_zone_get: #{e.message}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def user_domain_list
|
def user_domain_list
|
||||||
response = @dnsmanagerd.user_domain_list
|
response = @dnsmanagerd.user_domain_list
|
||||||
case response
|
case response
|
||||||
|
@ -128,6 +128,13 @@ def parsing_cli(authd_config : Baguette::Configuration::Auth)
|
|||||||
unrecognized_args_to_context_args.call parser, nil, 1
|
unrecognized_args_to_context_args.call parser, nil, 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
parser.on("get", "Get a zone.") do
|
||||||
|
Baguette::Log.info "get zone."
|
||||||
|
Context.command = "user-zone-get"
|
||||||
|
parser.banner = "COMMAND: user zone get domain [domain...]"
|
||||||
|
unrecognized_args_to_context_args.call parser, nil, 1
|
||||||
|
end
|
||||||
|
|
||||||
parser.on("list", "List all domains.") do
|
parser.on("list", "List all domains.") do
|
||||||
Baguette::Log.info "List domains."
|
Baguette::Log.info "List domains."
|
||||||
Context.command = "user-domain-list"
|
Context.command = "user-domain-list"
|
||||||
|
@ -31,7 +31,21 @@ class DNSManager::Request
|
|||||||
end
|
end
|
||||||
DNSManager.requests << DeleteZone
|
DNSManager.requests << DeleteZone
|
||||||
|
|
||||||
IPC::JSON.message UserDomains, 12 do
|
IPC::JSON.message GetZone, 12 do
|
||||||
|
property domain : String
|
||||||
|
|
||||||
|
def initialize(@domain)
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event) : IPC::JSON
|
||||||
|
user = dnsmanagerd.get_logged_user event
|
||||||
|
raise NotLoggedException.new if user.nil?
|
||||||
|
dnsmanagerd.storage.get_zone user.uid, @domain
|
||||||
|
end
|
||||||
|
end
|
||||||
|
DNSManager.requests << GetZone
|
||||||
|
|
||||||
|
IPC::JSON.message UserDomains, 13 do
|
||||||
def initialize()
|
def initialize()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -15,7 +15,20 @@ class DNSManager::Response
|
|||||||
end
|
end
|
||||||
DNSManager.responses << DomainChanged
|
DNSManager.responses << DomainChanged
|
||||||
|
|
||||||
IPC::JSON.message DomainList, 12 do
|
IPC::JSON.message Zone, 12 do
|
||||||
|
property zone : Storage::Zone
|
||||||
|
def initialize(@zone)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
DNSManager.responses << Zone
|
||||||
|
|
||||||
|
IPC::JSON.message UnknownZone, 13 do
|
||||||
|
def initialize()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
DNSManager.responses << UnknownZone
|
||||||
|
|
||||||
|
IPC::JSON.message DomainList, 14 do
|
||||||
property domains : Array(String)
|
property domains : Array(String)
|
||||||
def initialize(@domains)
|
def initialize(@domains)
|
||||||
end
|
end
|
||||||
|
@ -121,6 +121,31 @@ class DNSManager::Storage
|
|||||||
Response::Error.new "error while deleting the domain #{domain}"
|
Response::Error.new "error while deleting the domain #{domain}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_zone(user_id : Int32, domain : String) : IPC::JSON
|
||||||
|
# User must exist.
|
||||||
|
user_data = user_data_by_uid.get? user_id.to_s
|
||||||
|
unless user_data
|
||||||
|
Baguette::Log.warning "unknown user #{user_id} tries to get zone #{domain}"
|
||||||
|
return Response::UnknownUser.new
|
||||||
|
end
|
||||||
|
|
||||||
|
# User must own the domain.
|
||||||
|
unless user_data.domains.includes? domain
|
||||||
|
Baguette::Log.warning "user #{user_id} tries to get zone #{domain} but doesn't own it"
|
||||||
|
return Response::NoOwnership.new
|
||||||
|
end
|
||||||
|
|
||||||
|
zone = zones_by_domain.get? domain
|
||||||
|
unless zone
|
||||||
|
return Response::UnknownZone.new
|
||||||
|
end
|
||||||
|
|
||||||
|
Response::Zone.new zone
|
||||||
|
rescue e
|
||||||
|
Baguette::Log.error "trying to get a zone #{domain}: #{e}"
|
||||||
|
Response::Error.new "error while accessing a zone #{domain}"
|
||||||
|
end
|
||||||
|
|
||||||
def user_domains(user_id : Int32) : IPC::JSON
|
def user_domains(user_id : Int32) : IPC::JSON
|
||||||
# User must exist.
|
# User must exist.
|
||||||
user_data = user_data_by_uid.get? user_id.to_s
|
user_data = user_data_by_uid.get? user_id.to_s
|
||||||
|
Loading…
Reference in New Issue
Block a user