add authmod in conf

This commit is contained in:
Cloud Wu
2016-06-15 17:58:58 +08:00
parent ffa2bbf1e4
commit 2aef994aa4

View File

@@ -84,11 +84,15 @@ end
local function mongo_auth(mongoc) local function mongo_auth(mongoc)
local user = rawget(mongoc, "username") local user = rawget(mongoc, "username")
local pass = rawget(mongoc, "password") local pass = rawget(mongoc, "password")
local authmod = rawget(mongoc, "authmod") or "scram_sha1"
authmod = "auth_" .. authmod
return function() return function()
if user ~= nil and pass ~= nil then if user ~= nil and pass ~= nil then
-- assert(mongoc:auth(user, pass)) -- autmod can be "mongodb_cr" or "scram_sha1"
assert(mongoc:auth_scram_sha1(user, pass)) local auth_func = mongoc[authmod]
assert(auth_func , "Invalid authmod")
assert(auth_func(mongoc,user, pass))
end end
local rs_data = mongoc:runCommand("ismaster") local rs_data = mongoc:runCommand("ismaster")
if rs_data.ok == 1 then if rs_data.ok == 1 then
@@ -124,6 +128,7 @@ function mongo.client( conf )
port = first.port or 27017, port = first.port or 27017,
username = first.username, username = first.username,
password = first.password, password = first.password,
authmod = first.authmod,
} }
obj.__id = 0 obj.__id = 0
@@ -174,7 +179,7 @@ function mongo_client:runCommand(...)
return self.admin:runCommand(...) return self.admin:runCommand(...)
end end
function mongo_client:auth(user,password) function mongo_client:auth_mongodb_cr(user,password)
local password = md5.sumhexa(string.format("%s:mongo:%s",user,password)) local password = md5.sumhexa(string.format("%s:mongo:%s",user,password))
local result= self:runCommand "getnonce" local result= self:runCommand "getnonce"
if result.ok ~=1 then if result.ok ~=1 then