From 432aa2587e034970d8273d0e39062952196b8fcf Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Thu, 24 Apr 2008 19:28:07 +0000 Subject: [PATCH] Add single-user Apache bandwidth report on front page --- portal.mlt | 11 +++++++++++ stats.sig | 3 +++ stats.sml | 13 ++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/portal.mlt b/portal.mlt index 8f0f553..7fb59ee 100644 --- a/portal.mlt +++ b/portal.mlt @@ -46,4 +46,15 @@ end %> <% end end; +val {total, vhosts} = Stats.getWebbwUser {user = Init.getUserName (), last = 0}; +switch vhosts of + _ :: _ => + %>

Your web traffic this month

+ <% + foreach e in vhosts do %> + + <% end %> +
Site Data transferred (kB)
<% #hostname (#host e) %><% if #ssl (#host e) then %> (SSL)<% end %> [detail]<% #size e %>
+<% end; + @footer [] %> diff --git a/stats.sig b/stats.sig index cbca44b..a8ca8d1 100644 --- a/stats.sig +++ b/stats.sig @@ -12,6 +12,9 @@ sig * vhosts to kilobytes, and a mapping from usernames to their vhosts and bandwidth * totals. *) + val getWebbwUser : {user : string, last : int} -> {total : int, + vhosts : {host : host, size : int} list} + type disk = {uname : string, (* UNIX username *) kbs : int} (* Number of kilobytes space used *) diff --git a/stats.sml b/stats.sml index 72b5836..51f23f8 100644 --- a/stats.sml +++ b/stats.sml @@ -89,7 +89,18 @@ struct before TextIO.closeIn inf end - type disk = {uname : string, + fun getWebbwUser {user, last} = + let + val {vhosts, users, ...} = getWebbw last + in + case List.find (fn {user = u, ...} => u = user) users of + NONE => {total = 0, vhosts = []} + | SOME {hosts, size, ...} => + {total = size, vhosts = List.filter (fn {host, ...} => List.exists (fn host' => host' = host) hosts) vhosts} + end + + + type disk = {uname : string, kbs : int} structure StringKey = struct -- 2.20.1