/// <summary> /// Remove A User From Admin database /// </summary> /// <param name="strUser">UserName</param> public static void RemoveUserFromSystem(String strUser, Boolean IsAdmin) { MongoServer mongoSvr = SystemManager.GetCurrentServer(); MongoCollection users; if (IsAdmin) { users = mongoSvr.GetDatabase(DATABASE_NAME_ADMIN).GetCollection(MongoDBHelper.COLLECTION_NAME_USER); } else { users = SystemManager.GetCurrentDataBase().GetCollection(MongoDBHelper.COLLECTION_NAME_USER); } users.Remove(MongoDB.Driver.Builders.Query.EQ("user", strUser)); }
/// <summary> /// get current Server Information /// </summary> /// <returns></returns> public static String GetCurrentSvrInfo() { String rtnSvrInfo = String.Empty; MongoServer mongosvr = SystemManager.GetCurrentServer(); rtnSvrInfo = "IsArbiter:" + mongosvr.Instance.IsArbiter + Environment.NewLine; rtnSvrInfo += "IsPrimary:" + mongosvr.Instance.IsPrimary + Environment.NewLine; rtnSvrInfo += "IsSecondary:" + mongosvr.Instance.IsSecondary + Environment.NewLine; rtnSvrInfo += "Address:" + mongosvr.Instance.Address + Environment.NewLine; if (mongosvr.Instance.BuildInfo != null) { //Before mongo2.0.2 BuildInfo will be null rtnSvrInfo += "VersionString:" + mongosvr.Instance.BuildInfo.VersionString + Environment.NewLine; rtnSvrInfo += "SysInfo:" + mongosvr.Instance.BuildInfo.SysInfo + Environment.NewLine; } return(rtnSvrInfo); }
/// <summary> /// 当前对象的MONGO命令 /// </summary> /// <param name="cmd">命令对象</param> /// <returns></returns> public static void ExecuteMongoCommand(MongoCommand cmd) { var Command = new CommandDocument { { cmd.CommandString, 1 } }; List <CommandResult> ResultCommandList = new List <CommandResult>(); CommandResult rtn = new CommandResult(); try { switch (cmd.RunLevel) { case PathLv.CollectionLV: rtn = ExecuteMongoColCommand(cmd.CommandString, SystemManager.GetCurrentCollection()); break; case PathLv.DatabaseLV: rtn = ExecuteMongoDBCommand(Command, SystemManager.GetCurrentDataBase()); break; case PathLv.ServerLV: rtn = ExecuteMongoSvrCommand(Command, SystemManager.GetCurrentServer()); break; default: break; } ResultCommandList.Add(rtn); MyMessageBox.ShowMessage(cmd.CommandString, cmd.CommandString + " Result", MongoDBHelper.ConvertCommandResultlstToString(ResultCommandList), true); } catch (System.IO.IOException ex) { MyMessageBox.ShowMessage(cmd.CommandString, "IOException,Try to set Socket TimeOut more long at connection config", ex.ToString(), true); } catch (Exception ex) { SystemManager.ExceptionDeal(ex, cmd.CommandString); } }
//这里有个漏洞,对于数据库来说,对于local的验证和对于admin的验证是相同的。 //如果是加入用户到服务器中,是加入到local还是admin,需要考虑一下。 /// <summary> /// AddUserToSystem /// </summary> /// <param name="newUserEx">用户信息</param> /// <param name="IsAdmin">是否是Admin</param> public static void AddUserToSystem(MongoUserEx newUserEx, Boolean IsAdmin) { MongoServer mongoSvr = SystemManager.GetCurrentServer(); //必须使用MongoCredentials来添加用户,不然的话,Password将使用明文登入到数据库中! //这样的话,在使用MongoCredentials登入的时候,会发生密码错误引发的认证失败 MongoCollection users; if (IsAdmin) { users = mongoSvr.GetDatabase(DATABASE_NAME_ADMIN).GetCollection(MongoDBHelper.COLLECTION_NAME_USER); } else { users = SystemManager.GetCurrentDataBase().GetCollection(MongoDBHelper.COLLECTION_NAME_USER); } //以下代码 1.Ver2.4以前的有ReadOnly,FindUser需要寻找ReadOnly字段 // 2.这个其实不用检查,有的话修改,没有的话,新建 //if (users.Database.FindUser(newUserEx.Username) == null) //{ AddUserEx(users, newUserEx); //} }
/// <summary> /// 当前对象的MONGO命令 /// </summary> /// <param name="mMongoCommand">命令对象</param> /// <param name="ShowMsgBox"></param> /// <returns></returns> public static CommandResult ExecuteMongoCommand(MongoCommand mMongoCommand, Boolean ShowMsgBox = true) { List <CommandResult> ResultCommandList = new List <CommandResult>(); CommandResult mCommandResult = new CommandResult(new BsonDocument()); try { switch (mMongoCommand.RunLevel) { case PathLv.CollectionLV: if (String.IsNullOrEmpty(mMongoCommand.CommandString)) { mCommandResult = ExecuteMongoColCommand(mMongoCommand.cmdDocument, SystemManager.GetCurrentCollection()); } else { mCommandResult = ExecuteMongoColCommand(mMongoCommand.CommandString, SystemManager.GetCurrentCollection()); } break; case PathLv.DatabaseLV: mCommandResult = ExecuteMongoDBCommand(mMongoCommand.cmdDocument, SystemManager.GetCurrentDataBase()); break; case PathLv.InstanceLV: mCommandResult = ExecuteMongoSvrCommand(mMongoCommand.cmdDocument, SystemManager.GetCurrentServer()); break; default: break; } ResultCommandList.Add(mCommandResult); if (ShowMsgBox) { MyMessageBox.ShowMessage(mMongoCommand.CommandString, mMongoCommand.CommandString + " Result", MongoDBHelper.ConvertCommandResultlstToString(ResultCommandList), true); } } catch (System.IO.IOException ex) { SystemManager.ExceptionDeal(ex, mMongoCommand.CommandString, "IOException,Try to set Socket TimeOut more long at connection config"); } catch (Exception ex) { SystemManager.ExceptionDeal(ex, mMongoCommand.CommandString); } return(mCommandResult); }