From 2dd2f9a62f22e500876b1a6958332fc59a607f8a Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 9 Dec 2007 19:26:33 +0000 Subject: [PATCH] Fixes to webbw while getting it parsed in the portal --- src/stats/webbw.sml | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/stats/webbw.sml b/src/stats/webbw.sml index f180683..62ad65f 100644 --- a/src/stats/webbw.sml +++ b/src/stats/webbw.sml @@ -139,18 +139,28 @@ fun doit () = 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 @@ -192,20 +202,20 @@ fun doit () = 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 @@ -229,7 +239,7 @@ fun doit () = 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 @@ -252,7 +262,7 @@ fun doit () = | 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 @@ -263,7 +273,7 @@ fun doit () = 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 @@ -272,7 +282,7 @@ fun doit () = 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 -- 2.20.1