Logging and fix 403 error

This commit is contained in:
Difrex 2016-03-03 15:10:26 +03:00
parent f2e1a425c6
commit c57a6d072f
2 changed files with 27 additions and 9 deletions

View File

@ -3,5 +3,6 @@
"secret_key": "you_secret_key", "secret_key": "you_secret_key",
"auth_uri": "http://radosgw/auth/1.0", "auth_uri": "http://radosgw/auth/1.0",
"rados_uri": "http://radosgw/swift/v1/", "rados_uri": "http://radosgw/swift/v1/",
"bucket": "public" "bucket": "public",
"logfile": "/var/log/nginx/swift.log"
} }

View File

@ -1,11 +1,17 @@
local cjson = require "cjson" local cjson = require("cjson")
local time = require("os")
local ltn12 = require("ltn12")
local io = require("io")
-- Load configuration -- Load configuration
function readConf(file) function readConf()
local file = '/etc/nginx/etc/swift.json'
local f, err = io.open(file, "rb") local f, err = io.open(file, "rb")
local content = f:read("*all") local content = f:read("*all")
f:close() f:close()
return content
local conf = cjson.decode(content)
return conf
end end
-- Print nested tables -- Print nested tables
@ -19,8 +25,15 @@ function content_from_table(tbl)
end end
end end
local json = readConf('/etc/nginx/etc/swift.json') -- Write to log
local conf = cjson.decode(json) function write_to_logfile(string)
local conf = readConf('/etc/nginx/etc/swift.json')
local l, err = io.open(conf.logfile, "a")
l:write(string .. "\n")
l:close()
end
local conf = readConf()
-- Make authentication request to Ceph -- Make authentication request to Ceph
headers_t = {} headers_t = {}
@ -35,7 +48,8 @@ local r, c, h = http.request{
} }
-- Return 403 if not authorized -- Return 403 if not authorized
if c ~= 200 then if c ~= 204 then
write_to_logfile(time.date() .. ' 403')
ngx.exit(ngx.HTTP_FORBIDDEN) ngx.exit(ngx.HTTP_FORBIDDEN)
end end
@ -46,8 +60,8 @@ auth_token = h["x-auth-token"]
content_headers= {} content_headers= {}
content_headers["X-Auth-Token"] = auth_token content_headers["X-Auth-Token"] = auth_token
local ltn12 = require("ltn12") write_to_logfile(time.date() .. " Auth OK. Token is: " .. auth_token)
local io = require("io")
t = {} t = {}
@ -58,8 +72,11 @@ local resp, code, http_st = http.request{
sink = ltn12.sink.table(t) sink = ltn12.sink.table(t)
} }
write_to_logfile(time.date() .. " URI: " .. conf.rados_uri .. conf.bucket .. ngx.var.path)
-- Return 404 if object not found in Ceph -- Return 404 if object not found in Ceph
if code ~= 200 then if code ~= 200 then
write_to_logfile(time.date() .. " Not found")
ngx.exit(ngx.HTTP_NOT_FOUND) ngx.exit(ngx.HTTP_NOT_FOUND)
end end