diff options
author | John Estabrook <jestabro@vyos.io> | 2024-10-23 18:50:46 -0500 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2024-10-27 21:17:35 -0500 |
commit | a2781efcf74f4ffedd35ca48a742b215351487ac (patch) | |
tree | d0d057bb55d712c41cdb5cc21c6b535f6dc34c74 | |
parent | 1e4123ccc673690c46c00e93453e32f0402f5c0b (diff) | |
download | vyconf-a2781efcf74f4ffedd35ca48a742b215351487ac.tar.gz vyconf-a2781efcf74f4ffedd35ca48a742b215351487ac.zip |
T6718: restrict directory existence check to validators dir
-rw-r--r-- | src/directories.ml | 13 | ||||
-rw-r--r-- | src/directories.mli | 2 | ||||
-rw-r--r-- | src/startup.ml | 6 | ||||
-rw-r--r-- | src/startup.mli | 2 | ||||
-rw-r--r-- | src/vyconfd.ml | 2 |
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) |