From 32099b75419b201bd1f7cef06fc849ad62294dbd Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Thu, 26 Sep 2024 22:05:13 +0100 Subject: [PATCH] parse command-line for options instead of hardcoding note port is still hardcoded --- main.fnl | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/main.fnl b/main.fnl index d44dcc5..6321494 100644 --- a/main.fnl +++ b/main.fnl @@ -36,9 +36,37 @@ (fn slurp [filename] (with-open [f (io.open filename "r")] (f:read "*a"))) -(local ca-key (pkey.new (slurp "ca.key"))) -(local ca-crt (x509.new (slurp "ca.crt"))) -(local psk (with-open [f (io.open "psk" "r")] (f:read "l"))) +(fn read-line [filename] + (with-open [f (io.open filename "r")] (f:read "l"))) + +(fn assoc [tbl k v & more] + (tset tbl k v) + (case more + [k v] (assoc tbl k v) + _ tbl)) + +(fn parse-args [args] + (match args + ["--certificate" f & rest] + (assoc (parse-args rest) :certificate (slurp f)) + ["--private-key" f & rest] + (assoc (parse-args rest) :private-key (slurp f)) + ["--challenge-password" f & rest] + (assoc (parse-args rest) :challenge-password (read-line f)) + [peer] { : peer } + _ {})) + +(local options + (doto + (parse-args arg) + (case + {: certificate : private-key : challenge-password : peer} + true + _ + (assert nil "missing required command line params")))) + +(local ca-key (pkey.new options.private-key)) +(local ca-crt (x509.new options.certificate)) (fn new-crt [csr] (let [crt @@ -56,7 +84,7 @@ (let [attr (csr:getAttributes)] (accumulate [found false _ v (ipairs (. attr "challengePassword"))] - (or found (= v psk))))) + (or found (= v options.challenge-password))))) (fn handle-sign-csr [out]