fun isIdent ch = Char.isLower ch orelse Char.isDigit ch orelse ch = #"-"
fun validHost s =
- size s > 0 andalso size s < 20 andalso List.all isIdent (String.explode s)
+ size s > 0 andalso size s < 40 andalso List.all isIdent (String.explode s)
fun validDomain s =
size s > 0 andalso size s < 100 andalso List.all validHost (String.fields (fn ch => ch = #".") s)
fun randomPassword () = Int.toString (Int.abs (Random.randInt (!rnd)))
fun domainDir dom =
- String.concatWith "/" ("/etc/domains" :: String.fields (fn ch => ch = #".") dom)
+ String.concatWith "/" ("/afs/hcoop.net/common/etc/domtool/nodes/deleuze" :: List.rev (String.fields (fn ch => ch = #".") dom))
fun readFile fname =
let
fun mem (x, ls) = List.exists (fn y => y = x) ls
+val allLower = CharVector.map Char.toLower
+
+fun normEmail s = case String.tokens Char.isSpace (allLower s) of
+ s :: _ => s
+ | [] => ""
+
end