Refactor to have a local dns request type
This commit is contained in:
parent
84ab618b6c
commit
3aad2b6a87
@ -12,6 +12,24 @@
|
|||||||
|
|
||||||
(defun symbolize (str) (-> str string-upcase (intern :KEYWORD)))
|
(defun symbolize (str) (-> str string-upcase (intern :KEYWORD)))
|
||||||
|
|
||||||
|
(defclass dns-request ()
|
||||||
|
((hostname :initarg :hostname)
|
||||||
|
(domain :initarg :domain)
|
||||||
|
(sender :initarg :sender)
|
||||||
|
(msg-id :initarg :msg-id)))
|
||||||
|
|
||||||
|
(defclass request-change-ipv4 (dns-request)
|
||||||
|
((ip-address :initarg :ip-address)))
|
||||||
|
|
||||||
|
(defclass request-change-ipv6 (dns-request)
|
||||||
|
((ip-address :initarg :ip-address)))
|
||||||
|
|
||||||
|
(defclass request-change-sshfp (dns-request)
|
||||||
|
((sshfp :initarg :sshfp)))
|
||||||
|
|
||||||
|
(defclass unknown-dns-request (dns-request)
|
||||||
|
((request-type :initarg :request-type)))
|
||||||
|
|
||||||
(defclass dns-record ()
|
(defclass dns-record ()
|
||||||
((id :col-type integer
|
((id :col-type integer
|
||||||
:col-identity t
|
:col-identity t
|
||||||
@ -50,21 +68,6 @@
|
|||||||
(:table-name domains)
|
(:table-name domains)
|
||||||
(:keys id))
|
(:keys id))
|
||||||
|
|
||||||
(defclass change-request-ipv4 (request)
|
|
||||||
((hostname :initarg :hostname)
|
|
||||||
(domain :initarg :domain)
|
|
||||||
(ip-address :initarg :ip-address)))
|
|
||||||
|
|
||||||
(defclass change-request-ipv6 (request)
|
|
||||||
((hostname :initarg :hostname)
|
|
||||||
(domain :initarg :domain)
|
|
||||||
(ip-address :initarg :ip-address)))
|
|
||||||
|
|
||||||
(defclass change-request-sshfp (request)
|
|
||||||
((hostname :initarg :hostname)
|
|
||||||
(domain :initarg :domain)
|
|
||||||
(sshfp :initarg :sshfp)))
|
|
||||||
|
|
||||||
(defparameter *hostname-rx*
|
(defparameter *hostname-rx*
|
||||||
"(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])")
|
"(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])")
|
||||||
|
|
||||||
@ -170,7 +173,7 @@
|
|||||||
(hostname-extractor-rx sender)
|
(hostname-extractor-rx sender)
|
||||||
hostname)))
|
hostname)))
|
||||||
|
|
||||||
(defmethod handle-message ((message change-request-sshfp))
|
(defmethod backplane-server:handle-message ((message request-change-sshfp))
|
||||||
(with-slots (hostname domain sshfp msg-id) message
|
(with-slots (hostname domain sshfp msg-id) message
|
||||||
(if (not (listp sshfp))
|
(if (not (listp sshfp))
|
||||||
(make-error :msg (format nil "expected list of sshfp records, got: ~A" sshfp)
|
(make-error :msg (format nil "expected list of sshfp records, got: ~A" sshfp)
|
||||||
@ -193,7 +196,7 @@
|
|||||||
text)
|
text)
|
||||||
:msg-id msg-id))))))
|
:msg-id msg-id))))))
|
||||||
|
|
||||||
(defmethod handle-message ((message change-request-ipv4))
|
(defmethod backplane-server:handle-message ((message request-change-ipv4))
|
||||||
(with-slots (hostname domain ip-address msg-id) message
|
(with-slots (hostname domain ip-address msg-id) message
|
||||||
(handler-case
|
(handler-case
|
||||||
(progn (set-host-v4ip hostname domain ip-address)
|
(progn (set-host-v4ip hostname domain ip-address)
|
||||||
@ -213,7 +216,7 @@
|
|||||||
text)
|
text)
|
||||||
:msg-id msg-id)))))
|
:msg-id msg-id)))))
|
||||||
|
|
||||||
(defmethod handle-message ((message change-request-ipv6))
|
(defmethod backplane-server:handle-message ((message request-change-ipv6))
|
||||||
(with-slots (hostname domain ip-address msg-id) message
|
(with-slots (hostname domain ip-address msg-id) message
|
||||||
(handler-case
|
(handler-case
|
||||||
(progn (set-host-v6ip hostname domain ip-address)
|
(progn (set-host-v6ip hostname domain ip-address)
|
||||||
@ -237,34 +240,34 @@
|
|||||||
(:documentation "Parse a DNS service message of type REQUEST"))
|
(:documentation "Parse a DNS service message of type REQUEST"))
|
||||||
|
|
||||||
(defmethod parse-dns-message (sender (request (eql :CHANGE_IPV4)) message msg-id)
|
(defmethod parse-dns-message (sender (request (eql :CHANGE_IPV4)) message msg-id)
|
||||||
(make-instance 'change-request-ipv4
|
(make-instance 'request-change-ipv4
|
||||||
:msg-id msg-id
|
|
||||||
:sender sender
|
:sender sender
|
||||||
:hostname (sender-hostname sender)
|
:hostname (sender-hostname sender)
|
||||||
:domain (cdr (assoc :DOMAIN message))
|
:domain (cdr (assoc :DOMAIN message))
|
||||||
:ip-address (cdr (assoc :IP message))))
|
:ip-address (cdr (assoc :IP message))
|
||||||
|
:msg-id msg-id))
|
||||||
|
|
||||||
(defmethod parse-dns-message (sender (request (eql :CHANGE_IPV6)) message msg-id)
|
(defmethod parse-dns-message (sender (request (eql :CHANGE_IPV6)) message msg-id)
|
||||||
(make-instance 'change-request-ipv6
|
(make-instance 'request-change-ipv6
|
||||||
:msg-id msg-id
|
|
||||||
:sender sender
|
:sender sender
|
||||||
:hostname (sender-hostname sender)
|
:hostname (sender-hostname sender)
|
||||||
:domain (cdr (assoc :DOMAIN message))
|
:domain (cdr (assoc :DOMAIN message))
|
||||||
:ip-address (cdr (assoc :IP message))))
|
:ip-address (cdr (assoc :IP message))
|
||||||
|
:msg-id msg-id))
|
||||||
|
|
||||||
(defmethod parse-dns-message (sender (request (eql :CHANGE_SSHFP)) message msg-id)
|
(defmethod parse-dns-message (sender (request (eql :CHANGE_SSHFP)) message msg-id)
|
||||||
(make-instance 'change-request-sshfp
|
(make-instance 'request-change-sshfp
|
||||||
:msg-id msg-id
|
|
||||||
:sender sender
|
:sender sender
|
||||||
:hostname (sender-hostname sender)
|
:hostname (sender-hostname sender)
|
||||||
:domain (cdr (assoc :DOMAIN message))
|
:domain (cdr (assoc :DOMAIN message))
|
||||||
:sshfp (cdr (assoc :SSHFP message))))
|
:sshfp (cdr (assoc :SSHFP message))
|
||||||
|
:msg-id msg-id))
|
||||||
|
|
||||||
(defmethod parse-dns-message (sender request message msg-id)
|
(defmethod parse-dns-message (sender request message msg-id)
|
||||||
(make-instance 'unknown-request
|
(make-instance 'unknown-request
|
||||||
:msg-id msg-id
|
:sender sender
|
||||||
:sender sender
|
:request-type request
|
||||||
:request request))
|
:msg-id msg-id))
|
||||||
|
|
||||||
(defmethod backplane-server:parse-message (sender (service (eql :DNS)) api-version message msg-id)
|
(defmethod backplane-server:parse-message (sender (service (eql :DNS)) api-version message msg-id)
|
||||||
(parse-dns-message sender (symbolize (cdr (assoc :REQUEST message))) message msg-id))
|
(parse-dns-message sender (symbolize (cdr (assoc :REQUEST message))) message msg-id))
|
||||||
|
Loading…
Reference in New Issue
Block a user