From ece03922d6cb82e31debbf9c87c8a8101e33896d Mon Sep 17 00:00:00 2001 From: Unbit Date: Sat, 6 Apr 2013 15:09:01 +0200 Subject: [PATCH] added gridfs authentication --- plugins/gridfs/gridfs.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/gridfs/gridfs.cc b/plugins/gridfs/gridfs.cc index 1ca838d8..df28836c 100644 --- a/plugins/gridfs/gridfs.cc +++ b/plugins/gridfs/gridfs.cc @@ -19,6 +19,8 @@ struct uwsgi_gridfs_mountpoint { uint16_t itemname_len; char *skip_slash; uint16_t prefix_len; + char *username; + char *password; }; struct uwsgi_gridfs { @@ -40,6 +42,15 @@ static void uwsgi_gridfs_do(struct wsgi_request *wsgi_req, struct uwsgi_gridfs_m try { mongo::scoped_ptr conn( mongo::ScopedDbConnection::getScopedDbConnection(ugm->server, ugm->timeout) ); try { + if (ugm->username && ugm->password) { + std::string errmsg; + if ((*conn).conn().auth(ugm->db, ugm->username, ugm->password, errmsg)) { + uwsgi_log("[uwsgi-gridfs]: %s\n", errmsg.c_str()); + (*conn).done(); + uwsgi_403(wsgi_req); + return; + } + } mongo::GridFS gridfs((*conn).conn(), ugm->db); mongo::GridFile gfile = gridfs.findFile(itemname); if (need_free) { @@ -131,6 +142,8 @@ static struct uwsgi_gridfs_mountpoint *uwsgi_gridfs_add_mountpoint(char *arg, si "etag", &ugm->etag, "itemname", &ugm->itemname, "item", &ugm->itemname, + "username", &ugm->username, + "password", &ugm->password, NULL)) { uwsgi_log("invalid gridfs mountpoint syntax\n"); free(ugm);