groups
end handle ex => ref []
+ fun sslTweak s =
+ case rev (String.tokens (fn ch => ch = #".") s) of
+ "ssl" :: rest =>
+ (case rev rest of
+ [] => raise Fail ("SSL goofyness: " ^ s)
+ | first :: rest => first ^ "_ssl." ^ String.concatWith "." rest)
+ | _ => s
+
fun addGroup (group, n, d, d') =
let
val groups' = if List.exists (fn ((x, _), _) => x = group) (!groups) then
- map (fn v as ((gr, ds), n') => if gr = group then ((gr, d ^ ":" ^ d' :: ds), n + n') else v) (!groups)
+ map (fn v as ((gr, ds), n') => if gr = group then ((gr, d' ^ "@" ^ d :: ds), n + n') else v) (!groups)
else
- ((group, [d ^ ":" ^ d']), n) :: (!groups)
+ ((group, [d' ^ "@" ^ d]), n) :: (!groups)
in
groups := groups'
end
fun dodir {node, host} =
let
+ val fullHost = host
+
val file = Config.Webalizer.outputDir ^ "/" ^ node ^ "/" ^ host ^ "/index.html"
in
if not (Posix.FileSys.access (file, [])) then
readEm ()
val ret = readEm ()
+
+ val tokens = String.tokens (fn ch => ch = #".") host
+ val (tokens, ssl) =
+ case rev tokens of
+ "ssl" :: tokens => (rev tokens, true)
+ | _ => (tokens, false)
+ val (host, tokens) =
+ case tokens of
+ host :: tokens => (host, tokens)
+ | _ => raise Fail "Host name too short"
val group =
if host <> Config.Webalizer.defaultHost then
let
- val tokens = String.tokens (fn ch => ch = #".") host
- val (tokens, ssl) =
- case rev tokens of
- "ssl" :: tokens => (rev tokens, true)
- | _ => (tokens, false)
- val (host, tokens) =
- case tokens of
- host :: tokens => (host, tokens)
- | _ => raise Fail "Host name too short"
-
val file = Config.resultRoot ^ "/" ^ node ^ "/" ^ String.concatWith "/" (rev tokens)
^ "/" ^ host ^ "." ^ String.concatWith "." tokens ^ ".vhost"
val file = if ssl then
NONE
in
(case (ret, group) of
- (SOME ret, SOME group) => addGroup (group, ret, node, host)
+ (SOME ret, SOME group) => addGroup (group, ret, node, sslTweak fullHost)
| _ => ());
TextIO.closeIn inf;
ret
| SOME d' =>
case dodir {node = d, host = d'} of
NONE => loop' L
- | SOME n => loop' (((d, d'), n) :: L)
+ | SOME n => loop' (((d, sslTweak d'), n) :: L)
val L =
if d = "main" then
loop L
end
- fun sort ls = ListMergeSort.sort (fn ((_, n1), (_, n2)) => n1 > n2) ls
+ fun sort ls = ListMergeSort.sort (fn ((_, n1), (_, n2)) => n1 < n2) ls
val doms = loop []
val doms = sort doms
val sum = List.foldl (fn ((_, n), s) => s+n) 0 doms
in
print ("TOTAL: " ^ Int.toString sum ^ "\n\n");
- List.app (fn ((d, d'), n) => print (d ^ ":" ^ d' ^ ": " ^ Int.toString n ^ "\n")) doms;
+ List.app (fn ((node, host), n) => print (host ^ "@" ^ node ^ ": " ^ Int.toString n ^ "\n")) doms;
print "\n";
List.app (fn ((d, ds), n) => print (d ^ "[" ^ String.concatWith "," ds ^ "]: " ^ Int.toString n ^ "\n")) groups;
Posix.FileSys.closedir dir