From 26c7d224e480f20cda9ba110781e2169d0fee4e9 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 18 Nov 2007 17:41:06 +0000 Subject: [PATCH] IP address ACLs --- src/domain.sml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/domain.sml b/src/domain.sml index 5a43f3c..6d7f2ac 100644 --- a/src/domain.sml +++ b/src/domain.sml @@ -48,6 +48,9 @@ fun your_groups () = !your_grps val your_pths = ref SS.empty fun your_paths () = !your_pths +val your_ipss = ref SS.empty +fun your_ips () = !your_ipss + val world_readable = SS.addList (SS.empty, Config.worldReadable) val readable_pths = ref world_readable fun readable_paths () = !readable_pths @@ -66,7 +69,9 @@ fun setUser user = your_grps := Acl.class {user = getUser (), class = "group"}; your_pths := your_paths; - readable_pths := SS.union (your_paths, world_readable) + readable_pths := SS.union (your_paths, world_readable); + your_ipss := Acl.class {user = getUser (), + class = "ip"} end fun validIp s = @@ -97,6 +102,7 @@ fun checkPath paths path = andalso SS.exists (fn s' => path = s' orelse String.isPrefix (s' ^ "/") path) (paths ()) val yourPath = checkPath your_paths val readablePath = checkPath readable_paths +fun yourIp s = SS.member (your_ips (), s) fun yourDomainHost s = yourDomain s @@ -177,6 +183,10 @@ val _ = Env.type_one "readable_path" Env.string readablePath +val _ = Env.type_one "your_ip" + Env.string + yourIp + val _ = Env.type_one "node" Env.string validNode -- 2.20.1