From 82ae6dbc33ac2ee1fff0fc10f97aabaeea1f278f Mon Sep 17 00:00:00 2001 From: Jeltz Date: Tue, 6 Sep 2022 17:19:45 +0200 Subject: [PATCH] Loosen JSON list parsing --- config.ml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/config.ml b/config.ml index 46855e5..614f939 100644 --- a/config.ml +++ b/config.ml @@ -38,9 +38,11 @@ module Addrs = struct &> (str |> name) end +let to_list_loose = function `List list -> list | _ -> [] + let to_int_list json = let open Yojson.Basic.Util in - json |> to_list |> List.map to_int + json |> to_list_loose |> List.map to_int module PayloadRule = struct module Tcp = struct @@ -74,9 +76,7 @@ module PayloadRule = struct | _ -> assert false end -let to_addr_list json = - let open Yojson.Basic.Util in - json |> to_list |> List.map Addrs.of_json +let to_addr_list json = json |> to_list_loose |> List.map Addrs.of_json module Rule = struct type t = { src : Addrs.t list; dest : Addrs.t list; payload : PayloadRule.t } @@ -98,5 +98,7 @@ let zones_of_json json = let of_json json = let open Yojson.Basic.Util in let zones = json |> member "zones" |> zones_of_json in - let rules = json |> member "rules" |> to_list |> List.map Rule.of_json in + let rules = + json |> member "rules" |> to_list_loose |> List.map Rule.of_json + in { zones; rules }