Delegation: WIP.
This commit is contained in:
		
							parent
							
								
									a448b68fcc
								
							
						
					
					
						commit
						09a97386a9
					
				
					 3 changed files with 43 additions and 0 deletions
				
			
		
							
								
								
									
										21
									
								
								src/requests/delegation.cr
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/requests/delegation.cr
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
class DNSManager::Request
 | 
			
		||||
	IPC::JSON.message DelegateDomain, 25 do
 | 
			
		||||
		property domain : String
 | 
			
		||||
		property nameserver1 : String
 | 
			
		||||
		property nameserver2 : String
 | 
			
		||||
		def initialize(@domain, @nameserver1, @nameserver2)
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def to_s(io : IO)
 | 
			
		||||
			super io
 | 
			
		||||
			io << " (domain: #{@domain}, ns1: #{@nameserver1}, ns2: #{@nameserver2}"
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def handle(dnsmanagerd : DNSManager::Service, event : IPC::Event) : IPC::JSON
 | 
			
		||||
			user = dnsmanagerd.get_logged_user event
 | 
			
		||||
			return Response::ErrorUserNotLogged.new unless user
 | 
			
		||||
			dnsmanagerd.storage.delegate_domain user.uid, @domain, @nameserver1, @nameserver2
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	DNSManager.requests << DelegateDomain
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -204,4 +204,18 @@ class DNSManager::Response
 | 
			
		|||
		end
 | 
			
		||||
	end
 | 
			
		||||
	DNSManager.responses << FoundDomains
 | 
			
		||||
 | 
			
		||||
	IPC::JSON.message DomainDelegated, 26 do
 | 
			
		||||
		property domain : String
 | 
			
		||||
		property nameserver1 : String
 | 
			
		||||
		property nameserver2 : String
 | 
			
		||||
		def initialize(@domain, @nameserver1, @nameserver2)
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def to_s(io : IO)
 | 
			
		||||
			super io
 | 
			
		||||
			io << " (domain: #{@domain}, ns1: #{@nameserver1}, ns2: #{@nameserver2})"
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	DNSManager.responses << DomainDelegated
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -433,6 +433,14 @@ class DNSManager::Storage
 | 
			
		|||
		Response::Zone.new zone
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	# TODO, FIXME: verifications + actually delegate the domain.
 | 
			
		||||
	def delegate_domain(user_id : UserDataID, domain : String, nameserver1 : String, nameserver2 : String) : IPC::JSON
 | 
			
		||||
		zone = zone_must_exist! domain
 | 
			
		||||
		user_should_own! user_id, domain
 | 
			
		||||
 | 
			
		||||
		Response::DomainDelegated.new domain, nameserver1, nameserver2
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	# Removes user data.
 | 
			
		||||
	def wipe_user_data(user_id : UserDataID) : Nil
 | 
			
		||||
		domains_by_owners.get(user_id.to_s).each do |domain|
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue