summaryrefslogtreecommitdiffstats
path: root/weblog-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2009-09-04 14:55:05 +0000
committerTed Trask <ttrask01@yahoo.com>2009-09-04 14:55:05 +0000
commit8044a8225aa46c9cb7cbc39920fabf5edd782b59 (patch)
treecad598daf9b6b25f23e22dade5890ed488a24504 /weblog-model.lua
parent138ae855953c6ba7dadd62a092d53feb46777579 (diff)
downloadacf-weblog-8044a8225aa46c9cb7cbc39920fabf5edd782b59.tar.bz2
acf-weblog-8044a8225aa46c9cb7cbc39920fabf5edd782b59.tar.xz
Added code to display short reason from DG log and shorten URI and fixed bug with empty reason. Bumped to 0.4.0v0.4.0
Required new shortreason field in several tables which breaks backward compatibility. Full reason and full URI available by hovering.
Diffstat (limited to 'weblog-model.lua')
-rw-r--r--weblog-model.lua46
1 files changed, 23 insertions, 23 deletions
diff --git a/weblog-model.lua b/weblog-model.lua
index 5cced4b..1d67739 100644
--- a/weblog-model.lua
+++ b/weblog-model.lua
@@ -20,10 +20,10 @@ local config = format.parse_ini_file(configcontent, "") or {}
local database_creation_script = {
"CREATE TABLE dbhistlog (logdatetime timestamp(0) without time zone NOT NULL, msgtext text)",
- "CREATE TABLE pubblocklog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(3) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer)",
- "CREATE TABLE blocklog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(0) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer)",
- "CREATE TABLE pubweblog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(3) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer)",
- "CREATE TABLE weblog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(3) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer)",
+ "CREATE TABLE pubblocklog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(3) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer, shortreason text)",
+ "CREATE TABLE blocklog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(0) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer, shortreason text)",
+ "CREATE TABLE pubweblog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(3) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer, shortreason text)",
+ "CREATE TABLE weblog(sourcename character varying(40), clientip inet NOT NULL, clientuserid character varying(64) NOT NULL, logdatetime timestamp(3) without time zone NOT NULL, uri text NOT NULL, bytes integer NOT NULL, reason text, score integer, shortreason text)",
"CREATE TABLE source (sourcename character varying(40) NOT NULL, method character varying(100) NOT NULL, userid character varying(32), passwd character varying(255), source character varying(255) NOT NULL, tzislocal boolean, enabled boolean)",
"CREATE TABLE usagestat (sourcename character varying(40) NOT NULL, date timestamp(0) without time zone NOT NULL, numrequest integer, numblock integer)",
"CREATE TABLE watchlist (clientuserid character varying(64) NOT NULL, expiredatetime timestamp(0) without time zone NOT NULL)",
@@ -41,12 +41,12 @@ local database_creation_script = {
"CREATE INDEX weblogclientidx ON weblog USING btree (clientip, clientuserid)",
"CREATE INDEX weblogclientipidx ON weblog USING btree (clientip)",
"CREATE INDEX weblogclientuserididx ON weblog USING btree (clientuserid)",
- "GRANT SELECT ON dbhistlog TO webloguser",
- "GRANT SELECT ON pubblocklog TO webloguser",
- "GRANT SELECT ON pubweblog TO webloguser",
- "GRANT SELECT, UPDATE, INSERT, DELETE ON source TO webloguser",
- "GRANT SELECT ON usagestat TO webloguser",
- "GRANT SELECT, UPDATE, INSERT, DELETE ON watchlist TO webloguser",
+ "GRANT SELECT ON dbhistlog TO "..DatabaseUser,
+ "GRANT SELECT ON pubblocklog TO "..DatabaseUser,
+ "GRANT SELECT ON pubweblog TO "..DatabaseUser,
+ "GRANT SELECT, UPDATE, INSERT, DELETE ON source TO "..DatabaseUser,
+ "GRANT SELECT ON usagestat TO "..DatabaseUser,
+ "GRANT SELECT, UPDATE, INSERT, DELETE ON watchlist TO "..DatabaseUser,
}
-- ################################################################################
@@ -189,9 +189,9 @@ end
local importdglog = function(logentries, sourcename)
for i,entry in pairs(logentries) do
- local sql = string.format("INSERT INTO blocklog VALUES ('%s', '0.0.0.0', '%s', '%s', '%s', '%s', '%s', '%s')",
- escape(sourcename), escape(entry.clientuserid:lower()), escape(entry.logdatetime),
- escape(entry.URL), escape(entry.bytes), escape(entry.reason), escape(entry.score or "0"))
+ local sql = string.format("INSERT INTO blocklog VALUES ('%s', '0.0.0.0', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
+ escape(sourcename), escape(entry.clientuserid:lower()), escape(entry.logdatetime), escape(entry.URL),
+ escape(entry.bytes), escape(entry.reason), escape(entry.score or "0"), escape(entry.shortreason))
local res = assert (con:execute(sql))
end
end
@@ -277,7 +277,7 @@ end
local importpubweblog = function()
-- Merge equal blocks into weblog
sql = "update weblog set reason=blocklog.reason, " ..
- "score=blocklog.score from blocklog where " ..
+ "score=blocklog.score, shortreason=blocklog.shortreason from blocklog where " ..
"blocklog.logdatetime >= date_trunc('second', weblog.logdatetime) and " ..
"blocklog.logdatetime < (weblog.logdatetime + INTERVAL '45' second) and " ..
"blocklog.sourcename=weblog.sourcename and "..
@@ -436,7 +436,7 @@ local listlogentries = function(logname, clientuserid, starttime, endtime, clien
cur = assert (con:execute(sql))
row = cur:fetch ({}, "a")
while row do
- entries[#entries+1] = {sourcename=row.sourcename, clientip=row.clientip, clientuserid=row.clientuserid, logdatetime=row.logdatetime, uri=row.uri, bytes=row.bytes, reason=row.reason, score=row.score}
+ entries[#entries+1] = {sourcename=row.sourcename, clientip=row.clientip, clientuserid=row.clientuserid, logdatetime=row.logdatetime, uri=row.uri, bytes=row.bytes, reason=row.reason, score=row.score, shortreason=row.shortreason}
row = cur:fetch (row, "a")
end
-- close everything
@@ -544,15 +544,15 @@ end
local parsedglog = function(logdata)
local logentries = {}
for line in string.gmatch(logdata, "[^\n]+") do
- local words = {}
- for word in string.gmatch(line, "[^\t]+") do
- words[#words+1] = word
+ local words = format.string_to_table(line, "\t")
+ local logentry = {logdatetime=words[1], clientuserid=words[2], clientip=words[3], URL=words[4], reason=words[5], method=words[6], bytes=words[7], shortreason=words[9]}
+ if logentry.reason ~= "" then
+ if logentry.shortreason == "" then logentry.shortreason = logentry.reason end
+ logentry.score = string.match(logentry.reason, "^.*: ([0-9]*) ")
+ logentry.logdatetime = string.gsub(logentry.logdatetime, "%.", "-")
+
+ logentries[#logentries+1] = logentry
end
- local logentry = {logdatetime=words[1], clientuserid=words[2], clientip=words[3], URL=words[4], reason=words[5], method=words[6], bytes=words[7]}
- logentry.score = string.match(logentry.reason, "^.*: ([0-9]*) ")
- logentry.logdatetime = string.gsub(logentry.logdatetime, "%.", "-")
-
- logentries[#logentries+1] = logentry
end
return logentries
end