summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2024-10-23 18:50:46 -0500
committerJohn Estabrook <jestabro@vyos.io>2024-10-27 21:17:35 -0500
commita2781efcf74f4ffedd35ca48a742b215351487ac (patch)
treed0d057bb55d712c41cdb5cc21c6b535f6dc34c74
parent1e4123ccc673690c46c00e93453e32f0402f5c0b (diff)
downloadvyconf-a2781efcf74f4ffedd35ca48a742b215351487ac.tar.gz
vyconf-a2781efcf74f4ffedd35ca48a742b215351487ac.zip
T6718: restrict directory existence check to validators dir
-rw-r--r--src/directories.ml13
-rw-r--r--src/directories.mli2
-rw-r--r--src/startup.ml6
-rw-r--r--src/startup.mli2
-rw-r--r--src/vyconfd.ml2
5 files changed, 21 insertions, 4 deletions
diff --git a/src/directories.ml b/src/directories.ml
index 3b7156f..c28f055 100644
--- a/src/directories.ml
+++ b/src/directories.ml
@@ -33,12 +33,19 @@ let make basepath conf =
We do not try to check if they are readable at this point, it's just to fail early
if they don't even exist and we shouldn't bother trying
*)
+
+let check_dir d =
+ if FU.test FU.Is_dir d then ()
+ else raise (Failure (Printf.sprintf "%s does not exist or is not a directory" d))
+
let test dirs =
- let check_dir d =
- if FU.test FU.Is_dir d then ()
- else raise (Failure (Printf.sprintf "%s does not exist or is not a directory" d)) in
let l = [dirs.components; dirs.validators; dirs.migrators;
dirs.component_definitions; dirs.interface_definitions] in
try
List.iter check_dir l; Ok ()
with Failure msg -> Error msg
+
+let test_validators_dir dirs =
+ try
+ check_dir dirs.validators; Ok ()
+ with Failure msg -> Error msg
diff --git a/src/directories.mli b/src/directories.mli
index 9a7a376..fb01f16 100644
--- a/src/directories.mli
+++ b/src/directories.mli
@@ -9,3 +9,5 @@ type t = {
val make : string -> Vyconf_config.t -> t
val test : t -> (unit, string) result
+
+val test_validators_dir : t -> (unit, string) result
diff --git a/src/startup.ml b/src/startup.ml
index 7418a81..beb125e 100644
--- a/src/startup.ml
+++ b/src/startup.ml
@@ -46,6 +46,12 @@ let check_dirs dirs =
| Ok _ -> ()
| Error err -> panic err
+let check_validators_dir dirs =
+ let res = Vyconfd_config.Directories.test_validators_dir dirs in
+ match res with
+ | Ok _ -> ()
+ | Error err -> panic err
+
let delete_socket_if_exists sockfile =
try
let _ = Unix.stat sockfile in
diff --git a/src/startup.mli b/src/startup.mli
index ab0e0f2..84fb99e 100644
--- a/src/startup.mli
+++ b/src/startup.mli
@@ -6,6 +6,8 @@ val load_daemon_config : string -> Vyconfd_config.Vyconf_config.t
val check_dirs : Vyconfd_config.Directories.t -> unit
+val check_validators_dir : Vyconfd_config.Directories.t -> unit
+
val create_socket : string -> Lwt_unix.file_descr Lwt.t
val create_server :
diff --git a/src/vyconfd.ml b/src/vyconfd.ml
index af7c309..7c66aa0 100644
--- a/src/vyconfd.ml
+++ b/src/vyconfd.ml
@@ -221,7 +221,7 @@ let () =
let vc = Startup.load_daemon_config !config_file in
let () = Lwt_log.load_rules ("* -> " ^ vc.log_level) in
let dirs = Directories.make !basepath vc in
- Startup.check_dirs dirs;
+ Startup.check_validators_dir dirs;
let world = make_world vc dirs in
let config = Startup.load_config_failsafe
(FP.concat vc.config_dir vc.primary_config)