HCoop
/
hcoop
/
domtool2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow single quotes in no_newlines
[hcoop/domtool2.git]
/
src
/
domain.sml
diff --git
a/src/domain.sml
b/src/domain.sml
index
5a43f3c
..
94eb077
100644
(file)
--- 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_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
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;
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 =
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
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
fun yourDomainHost s =
yourDomain s
@@
-131,7
+137,7
@@
val _ = Env.type_one "no_spaces"
val _ = Env.type_one "no_newlines"
Env.string
(CharVector.all (fn ch => Char.isPrint ch andalso ch <> #"\n" andalso ch <> #"\r"
val _ = Env.type_one "no_newlines"
Env.string
(CharVector.all (fn ch => Char.isPrint ch andalso ch <> #"\n" andalso ch <> #"\r"
- andalso ch <> #"\""
andalso ch <> #"'"
))
+ andalso ch <> #"\""))
val _ = Env.type_one "ip"
Env.string
val _ = Env.type_one "ip"
Env.string
@@
-177,10
+183,18
@@
val _ = Env.type_one "readable_path"
Env.string
readablePath
Env.string
readablePath
+val _ = Env.type_one "your_ip"
+ Env.string
+ yourIp
+
val _ = Env.type_one "node"
Env.string
validNode
val _ = Env.type_one "node"
Env.string
validNode
+val _ = Env.registerFunction ("your_ip_to_ip",
+ fn [e] => SOME e
+ | _ => NONE)
+
val _ = Env.registerFunction ("dns_node_to_node",
fn [e] => SOME e
| _ => NONE)
val _ = Env.registerFunction ("dns_node_to_node",
fn [e] => SOME e
| _ => NONE)
@@
-188,10
+202,22
@@
val _ = Env.registerFunction ("dns_node_to_node",
val _ = Env.registerFunction ("mail_node_to_node",
fn [e] => SOME e
| _ => NONE)
val _ = Env.registerFunction ("mail_node_to_node",
fn [e] => SOME e
| _ => NONE)
+
+
open Ast
val dl = ErrorMsg.dummyLoc
open Ast
val dl = ErrorMsg.dummyLoc
+val _ = Env.registerFunction ("end_in_slash",
+ fn [(EString "", _)] => SOME (EString "/", dl)
+ | [(EString s, _)] =>
+ SOME (EString (if String.sub (s, size s - 1) = #"/" then
+ s
+ else
+ s ^ "/"), dl)
+ | _ => NONE)
+
+
val nsD = (EString Config.defaultNs, dl)
val serialD = (EVar "serialAuto", dl)
val refD = (EInt Config.defaultRefresh, dl)
val nsD = (EString Config.defaultNs, dl)
val serialD = (EVar "serialAuto", dl)
val refD = (EInt Config.defaultRefresh, dl)
@@
-880,7
+906,7
@@
fun considerAll ds {node, domain} =
case d of
Filename {filename, heading, showEmpty} =>
if fname = filename then
case d of
Filename {filename, heading, showEmpty} =>
if fname = filename then
- entries := readFile showEmpty ("\n" :: line :: "
:
\n" :: heading :: line :: !entries)
+ entries := readFile showEmpty ("\n" :: line :: "\n" :: heading :: line :: !entries)
else
()
| Extension {extension, heading} =>
else
()
| Extension {extension, heading} =>
@@
-891,7
+917,7
@@
fun considerAll ds {node, domain} =
NONE => ()
| SOME extension' =>
if extension' = extension then
NONE => ()
| SOME extension' =>
if extension' = extension then
- entries := readFile true ("\n" :: line :: "
:
\n" :: heading base :: line :: !entries)
+ entries := readFile true ("\n" :: line :: "\n" :: heading base :: line :: !entries)
else
()
end
else
()
end
@@
-907,7
+933,7
@@
fun considerAll ds {node, domain} =
end
val () = registerDescriber (considerAll [Filename {filename = "soa",
end
val () = registerDescriber (considerAll [Filename {filename = "soa",
- heading = "DNS SOA",
+ heading = "DNS SOA
:
",
showEmpty = false}])
val () = Env.registerAction ("domainHost",
showEmpty = false}])
val () = Env.registerAction ("domainHost",