odhcp-script: unique subdirectory names for each parsed address

This commit is contained in:
Daniel Barlow 2023-09-10 12:15:34 +01:00
parent 22275f311c
commit 3ff55d3aad
2 changed files with 25 additions and 16 deletions

View file

@ -1,4 +1,4 @@
(local { : split : merge } (require :anoia))
(local { : split : merge : hash : base64url } (require :anoia))
(local { : view } (require :fennel))
(local { : mktree : rmtree } (require :anoia.fs))
@ -26,9 +26,18 @@
(fn write-addresses [prefix addresses]
(each [_ a (ipairs (split " " addresses))]
(let [address (parse-address a)
keydir (.. prefix (-> address.address
(: :gsub "::$" "")
(: :gsub ":" "-")))]
suffix (base64url (string.pack "n" (hash a)))
;; keydir should be a function of all the address
;; attributes: we want it to change whenever anything changes
;; so that clients can see which addresses are new without
;; deep table comparisons
keydir (..
prefix
(-> address.address
(: :gsub "::$" "")
(: :gsub ":" "-"))
"_"
suffix)]
(mktree (.. state-directory "/" keydir))
(each [k v (pairs address)]
(write-value (.. keydir "/" k) v)))))