diff --git a/rootfs/etc/dovecot/oauth2-userdb.lua b/rootfs/etc/dovecot/oauth2-userdb.lua deleted file mode 100644 index 82791d7..0000000 --- a/rootfs/etc/dovecot/oauth2-userdb.lua +++ /dev/null @@ -1,44 +0,0 @@ -local rapidjson = require('rapidjson') - -local clientId = os.getenv("CLIENT_ID") -local clientSecret = os.getenv("CLIENT_SECRET") -local username = os.getenv("OAUTH_ADMIN_USER") -local password = os.getenv("OAUTH_ADMIN_PASSWORD") -local tokenUrl = os.getenv("GRANT_URL") -local userUrl = os.getenv("USER_URL") - -function os.capture(cmd, raw) - local f = assert(io.popen(cmd, 'r')) - local s = assert(f:read('*a')) - f:close() - - return s -end - -function auth_userdb_lookup(req) - local tokenCmd = "curl -L --silent -X POST -d \"grant_type=password\"" - tokenCmd = tokenCmd .. " -d \"client_id=" .. clientId .. "\"" - tokenCmd = tokenCmd .. " -d \"client_secret=" .. clientSecret .. "\"" - tokenCmd = tokenCmd .. " -d \"username=" .. username .. "\"" - tokenCmd = tokenCmd .. " -d \"password=" .. password .. "\"" - tokenCmd = tokenCmd .. " \"" .. tokenUrl .. "\"" - - local tokenRaw = os.capture(tokenCmd) - local tokenJson = rapidjson.decode(tokenRaw) - local accessToken = tokenJson.access_token - - local userCmd = "curl -L --silent -H \"Authorization: Bearer " .. accessToken .. "\" \"" .. userUrl .. req.username .. "\"" - local userRaw = os.capture(userCmd) - local userJson = rapidjson.decode(userRaw) - - if #userJson == 0 then - return dovecot.auth.USERDB_RESULT_USER_UNKNOWN, "no such user" - end - - if userJson[1].username == req.username then - return dovecot.auth.USERDB_RESULT_OK, "uid=vmail gid=vmail home=/var/lib/vmail/mail/%n" - end - - return dovecot.auth.USERDB_RESULT_USER_UNKNOWN, "no such user" -end -