aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2022-03-13 11:40:09 -0300
committerSean Whitton <spwhitton@spwhitton.name>2022-03-22 11:14:08 -0700
commit293e1b299445e73f9149b6e6950dcefdd3c9c299 (patch)
tree14693790a877dfa81d3d26ce975d0c1332b381b8 /src
parent0550b8faf77b056e383ad332abbb4304acb8c512 (diff)
downloadconsfigurator-293e1b299445e73f9149b6e6950dcefdd3c9c299.tar.gz
add VALID-HOSTNAME-P
Initial intended application is checking data source IDEN1. This could be done as a one-liner with a more complex regex, but that seems harder to debug. Signed-off-by: David Bremner <david@tethera.net>
Diffstat (limited to 'src')
-rw-r--r--src/package.lisp1
-rw-r--r--src/util.lisp11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/package.lisp b/src/package.lisp
index 6197c12..4d27970 100644
--- a/src/package.lisp
+++ b/src/package.lisp
@@ -122,6 +122,7 @@
#:lambda-ignoring-args
#:parse-cidr
#:random-alphanumeric
+ #:valid-hostname-p
#:*consfigurator-debug-level*
#:with-indented-inform
diff --git a/src/util.lisp b/src/util.lisp
index 63ca21a..d1658d3 100644
--- a/src/util.lisp
+++ b/src/util.lisp
@@ -399,6 +399,17 @@ expansion as a starting point for your own DEFPACKAGE form for your consfig."
(with-standard-io-syntax
(write object :stream fifo) (terpri fifo) (finish-output fifo)))
+(defun valid-hostname-p (string)
+ "Test whether STRING looks like a valid hostname, as defined by RFCs 952 and
+1123."
+ (and
+ (<= (length string) 253)
+ (let ((parts (split-string string :separator ".")))
+ (every (lambda (part)
+ (and (<= (length part) 63)
+ (re:scan "^[a-zA-Z0-9][a-zA-Z0-9-]*$" part)))
+ parts))))
+
;;;; Progress & debug printing