/************************************** * Validate开头的函数会抛出错误信息 * **************************************/ /// <summary> /// 验证记录的内容合法性 /// </summary> /// <param name="content">记录的内容</param> /// <returns></returns> private bool ValidateDoingContent(string content) { if (string.IsNullOrEmpty(content)) { Context.ThrowError(new EmptyDoingContentError("content")); return(false); } if (StringUtil.GetByteCount(content) > Consts.Doing_Length) { Context.ThrowError(new InvalidDoingContentLengthError("content", content, Consts.Doing_Length)); return(false); } ContentKeywordSettings keywords = AllSettings.Current.ContentKeywordSettings; string keyword = null; if (keywords.BannedKeywords.IsMatch(content, out keyword)) { ThrowError(new DoingContentBannedKeywordsError("content", keyword)); return(false); } return(true); }
private bool ValidateText(string text) { int maxLength = 100; if (string.IsNullOrEmpty(text)) { ThrowError(new ImpressionTextEmptyError("text")); return(false); } if (StringUtil.GetByteCount(text) > maxLength) { ThrowError(new ImpressionTextLengthError("text", text, maxLength)); return(false); } ContentKeywordSettings keywords = AllSettings.Current.ContentKeywordSettings; string keyword = null; if (keywords.BannedKeywords.IsMatch(text, out keyword)) { ThrowError(new ImpressionTextBannedKeywordsError("text", keyword)); return(false); } return(true); }
protected override bool SetSettingItemValue(SettingBase setting, System.Reflection.PropertyInfo property) { bool result = base.SetSettingItemValue(setting, property); if (property.Name == "BannedKeywords") { ContentKeywordSettings keywordSettings = (ContentKeywordSettings)setting; keywordSettings.BannedKeywords.SetValue(SecurityUtil.Base64Decode(keywordSettings.BannedKeywords.GetValue())); } else if (property.Name == "ReplaceKeywords") { ContentKeywordSettings keywordSettings = (ContentKeywordSettings)setting; keywordSettings.ReplaceKeywords.SetValue(SecurityUtil.Base64Decode(keywordSettings.ReplaceKeywords.GetValue())); } else if (property.Name == "ApprovedKeywords") { ContentKeywordSettings keywordSettings = (ContentKeywordSettings)setting; keywordSettings.ApprovedKeywords.SetValue(SecurityUtil.Base64Decode(keywordSettings.ApprovedKeywords.GetValue())); } return(result); }
/// <summary> /// 发送一个对话消息,并且根据指定参数决定是否需要同时返回最新消息 /// </summary> /// <param name="operatorID">发送者</param> /// <param name="targetUserID">接受者</param> /// <param name="contentWithoutEncode">未经html编码的内容</param> /// <param name="ip">发送者IP</param> /// <param name="processContent">是否处理内容</param> /// <param name="getNewMessages">是否需要同时返回最新消息</param> /// <param name="lastMessageID">如果需要返回最新消息,则传入客户端</param> /// <returns></returns> public ChatMessageCollection SendMessage(int operatorID, int targetUserID, string contentWithoutEncode, string ip, bool processContent, bool getNewMessages, int lastMessageID) { #if !Passport PassportClientConfig settings = Globals.PassportClient; if (settings.EnablePassport) { ChatMessageProxy[] chatMessages; APIResult result = null; string content = ProcessChatContent(operatorID, contentWithoutEncode); content = content.Replace("{$root}", Globals.FullAppRoot); try { result = settings.PassportService.Chat_SendMessage(operatorID, targetUserID, content, ip, getNewMessages, lastMessageID, out chatMessages); } catch (Exception ex) { ThrowError(new APIError(ex.Message)); return(new ChatMessageCollection()); } if (result.ErrorCode == Consts.ExceptionCode) { if (result.Messages.Length > 0) { ThrowError(new CustomError("远程服务器错误, 请稍后重试." + (result.Messages.Length > 0 ? result.Messages[0] : string.Empty))); } return(new ChatMessageCollection()); } else if (result.IsSuccess == false) { ThrowError <CustomError>(new CustomError("", result.Messages[0])); return(new ChatMessageCollection()); } ChatMessageCollection messages = new ChatMessageCollection(); foreach (ChatMessageProxy m in chatMessages) { messages.Add(GetChatMessage(m)); } return(messages); } else #endif { if (!AllSettings.Current.ChatSettings.EnableChatFunction) { return(new ChatMessageCollection()); } if (operatorID <= 0) { ThrowError(new NotLoginError()); return(new ChatMessageCollection()); } if (targetUserID <= 0) { ThrowError(new UserNotExistsError("targetUserID", targetUserID)); return(new ChatMessageCollection()); } if (operatorID == targetUserID) { ThrowError(new CustomError("targetUserID", "您不能和自己交谈")); //临时的 return(new ChatMessageCollection()); } if (string.IsNullOrEmpty(contentWithoutEncode) || (contentWithoutEncode = contentWithoutEncode.Trim()) == string.Empty) { ThrowError(new EmptyMessageContentError("contentWithoutEncode")); return(new ChatMessageCollection()); } if (contentWithoutEncode.Length > MaxContentLength) { ThrowError(new MessageContentLengthError("contentWithoutEncode", contentWithoutEncode, MaxContentLength)); return(new ChatMessageCollection()); } if (FriendBO.Instance.InMyBlacklist(targetUserID, operatorID)) { ThrowError(new InBlackListError()); return(new ChatMessageCollection()); } //if (AllSettings.Current.UserPermissionSet.Can(operatorID, UserPermissionSet.Action.UseMessage) == false) //{ // ThrowError(new NoPermissionUseMessageError()); // return false; //} string content = contentWithoutEncode; if (processContent) { content = ProcessChatContent(operatorID, content); } ContentKeywordSettings keywords = AllSettings.Current.ContentKeywordSettings; string keyword = null; if (keywords.BannedKeywords.IsMatch(content, out keyword)) { ThrowError(new ChatMessageBannedKeywordsError("content", keyword)); return(null); } ChatMessageCollection newMessages = ChatDao.Instance.SendMessage(operatorID, targetUserID, content, ip, getNewMessages, lastMessageID); AuthUser user = UserBO.Instance.GetUserFromCache <AuthUser>(targetUserID); if (user != null) { user.UnreadMessages++; } if (OnUsersMessageCountChanged != null) { if (user == null) { user = UserBO.Instance.GetAuthUser(targetUserID); } if (user != null) { Dictionary <int, int> counts = new Dictionary <int, int>(); counts.Add(user.UserID, user.UnreadMessages); OnUsersMessageCountChanged(counts); } } ProcessKeyword(newMessages, ProcessKeywordMode.TryUpdateKeyword); return(newMessages); } }