You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by se...@apache.org on 2016/12/16 19:01:59 UTC

incubator-ponymail git commit: stats.lua uses inconsistent email canonicalisation code

Repository: incubator-ponymail
Updated Branches:
  refs/heads/master bc42f8efb -> 57f5b3f54


stats.lua uses inconsistent email canonicalisation code

This fixes #300

Project: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/commit/57f5b3f5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/tree/57f5b3f5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/diff/57f5b3f5

Branch: refs/heads/master
Commit: 57f5b3f540a46817e11c7b39af0d59b1bb5d16be
Parents: bc42f8e
Author: Sebb <se...@apache.org>
Authored: Fri Dec 16 19:01:36 2016 +0000
Committer: Sebb <se...@apache.org>
Committed: Fri Dec 16 19:01:36 2016 +0000

----------------------------------------------------------------------
 CHANGELOG.md       |  1 +
 site/api/stats.lua | 28 ++++++++++++++--------------
 2 files changed, 15 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/57f5b3f5/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37c3941..c05ece2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -68,6 +68,7 @@
 - lib/aaa.lua overwrites local customisations on updates (#292)
 - rights checking should be localised (#293)
 - pminfo.lua does some unnecessary work (#220)
+- stats.lua uses inconsistent email canonicalisation code (#300)
 
 ## CHANGES in 0.9b:
 

http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/57f5b3f5/site/api/stats.lua
----------------------------------------------------------------------
diff --git a/site/api/stats.lua b/site/api/stats.lua
index a77ef12..3226314 100644
--- a/site/api/stats.lua
+++ b/site/api/stats.lua
@@ -66,6 +66,16 @@ local function leapYear(year)
     end
 end
 
+-- extract canonical email address from from field
+local function extractCanonEmail(from)
+    local eml = from:match("<(.-)>") or from:match("%S+@%S+") or nil
+    if eml == nil and from:match(".- at .- %(") then
+        eml = from:match("(.- at .-) %("):gsub(" at ", "@")
+    elseif eml == nil then
+        eml = "unknown"
+    end
+    return eml
+end
 
 function handle(r)
     cross.contentType(r, "application/json")
@@ -359,12 +369,7 @@ function handle(r)
         tnow = r:clock()
         
         for x,y in pairs (doc.aggregations.from.buckets) do
-            local eml = y.key:match("<(.-)>") or y.key:match("%S+@%S+") or nil
-            if eml == nil and y.key:match(".- at .- %(") then
-                eml = y.key:match("(.- at .-) %("):gsub(" at ", "@")
-            elseif eml == nil then
-                eml = "unknown"
-            end
+            local eml = extractCanonEmail(y.key)
             local gravatar = r:md5(eml:lower())
             local name = y.key:match("([^<]+)%s*<.->") or y.key:match("%S+@%S+") or "unknown"
             name = name:gsub("\"", "")
@@ -584,12 +589,7 @@ function handle(r)
             h = h + 1
             
             if not config.slow_count then
-                local eml = email.from:match("<(.-)>") or email.from:match("%S+@%S+") or nil
-                if eml == nil and email.from:match(".- at .- %(") then
-                    eml = email.from:match("(.- at .-) %("):gsub(" at ", "@")
-                elseif eml == nil then
-                    eml = "unknown"
-                end
+                local eml = extractCanonEmail(email.from)
                 local gravatar = r:md5(eml:lower())
                 local name = email.from:match("([^<]+)%s*<.->") or email.from:match("%S+@%S+") or email.from:match("%((.-)%)") or "unknown"
                 email.gravatar = gravatar
@@ -689,8 +689,7 @@ function handle(r)
             end
         elseif config.slow_count then
             for k, v in pairs(top10) do
-                local eml = email.from:match("<(.-)>") or email.from:match("%S+@%S+") or "unknown"
-                if v.email == eml then
+                if v.email == extractCanonEmail(email.from) then
                     v.count = v.count - 1
                 end
             end
@@ -765,6 +764,7 @@ function handle(r)
     tnow = r:clock()
     
     listdata.debug = t
+    listdata.slow_count = config.slow_count -- debug
     
     r:puts(JSON.encode(listdata))