public void PrepareEvent(SendEventBase eventBase) { var eventObj = eventBase; // нормализация данных eventObj.TypeDisplayName = GetGoodString(eventBase.TypeDisplayName, DisplayNameMaxLength); eventObj.TypeSystemName = GetGoodString(eventBase.TypeSystemName, SystemNameMaxLength); eventObj.Message = GetGoodString(eventBase.Message, MessageMaxLength); eventObj.Count = FixEventCount(eventObj.Count); // установим время, если оно не задано явно if (eventObj.StartDate == null) { eventObj.StartDate = DateTime.Now; eventObj.IsServerTime = false; } // обрежем слишком жирные свойства TrimProperties(eventObj.Properties); eventObj.TypeSystemName = FixEventTypeSystemName(eventObj.TypeSystemName, eventObj.TypeDisplayName); eventObj.JoinInterval = FixEventJoinTime(eventObj.JoinInterval, eventObj.EventCategory); eventObj.JoinKey = FixEventJoinKey(eventObj); eventObj.Message = FixEventMessage(eventObj.Message, eventObj.TypeSystemName, eventObj.TypeDisplayName); if (eventObj.Version == null) { eventObj.Version = eventObj.ComponentControl.Version; } eventObj.Version = FixVersion(eventObj.Version); }
public void Prepare(SendEventBase eventObj) { try { // Если UserAgent не указан, то не будем ничего делать, // это либо роботы, либо псевдо-хакеры // Игнорируем также проверки от самого Zidium if (HttpContext.Current != null) { var userAgent = HttpContext.Current.Request.UserAgent; if (string.IsNullOrEmpty(userAgent) || string.Equals(userAgent, "Zidium", StringComparison.OrdinalIgnoreCase) || UserAgentHelper.IsBot(userAgent)) { eventObj.Ignore = true; return; } } } catch { // Request доступен не для всех событий } HttpContextHelper.SetProperties(eventObj.Properties); var user = UserHelper.CurrentUser; if (user != null) { eventObj.Properties.Set("UserId", user.Id); eventObj.Properties.Set("UserLogin", user.Login); eventObj.Properties.Set("UserName", user.Name); eventObj.Properties.Set("AccountId", user.AccountId); eventObj.Properties.Set("AccountName", user.AccountName); } // Игнорирование некоторых ошибок if (eventObj.EventCategory == SendEventCategory.ApplicationError) { if ( // Несуществующий метод контроллера eventObj.TypeSystemName.StartsWith("HttpException в Controller.HandleUnknownAction(String)", StringComparison.OrdinalIgnoreCase) || eventObj.TypeSystemName.StartsWith("HttpException at Controller.HandleUnknownAction(String)", StringComparison.OrdinalIgnoreCase) || // Несуществующий контроллер eventObj.TypeSystemName.StartsWith("HttpException в DefaultControllerFactory.GetControllerInstance(RequestContext, Type)", StringComparison.OrdinalIgnoreCase) || eventObj.TypeSystemName.StartsWith("HttpException at DefaultControllerFactory.GetControllerInstance(RequestContext, Type)", StringComparison.OrdinalIgnoreCase) || // Неверный токен eventObj.TypeSystemName.StartsWith("HttpAntiForgeryException", StringComparison.OrdinalIgnoreCase) || // Недопустимые символы в Url eventObj.TypeSystemName.IndexOf("HttpRequest.ValidateInputIfRequiredByConfig()", StringComparison.OrdinalIgnoreCase) >= 0 ) { eventObj.Ignore = true; } } }
public static void InitRandomEvent(SendEventBase eventBase) { eventBase.Message = "test comment " + PasswordHelper.GetRandomPassword(3000); eventBase.StartDate = DateTime.Now; eventBase.Importance = GetRandomEventImportance(); eventBase.JoinInterval = TimeSpan.FromSeconds(RandomHelper.GetRandomInt32(0, 1000000)); eventBase.JoinKey = RandomHelper.GetRandomInt64(0, 100000000000); InitRandomProperties(eventBase.Properties); }
protected long FixEventJoinKey(SendEventBase data) { if (data.JoinKey.HasValue) { return(data.JoinKey.Value); } var joinKey = data.TypeCode + data.Message; foreach (var prop in data.Properties) { joinKey += prop.Name + prop.Value.Value; } return(HashHelper.GetInt64(joinKey)); }
public static SendEventRequestDtoData GetSendEventData(SendEventBase data) { return(new SendEventRequestDtoData() { ComponentId = data.ComponentControl.Info.Id, Category = data.EventCategory, StartDate = data.StartDate, Importance = data.Importance, JoinIntervalSeconds = GetSeconds(data.JoinInterval), JoinKey = data.JoinKey, Message = data.Message, TypeDisplayName = data.TypeDisplayName, TypeSystemName = data.TypeSystemName, TypeCode = data.TypeCode, Version = data.Version, Properties = GetExtentionPropertyDtos(data.Properties), Count = data.Count }); }
public static void CheckEvent(SendEventBase eventBase, Api.EventInfo info) { Assert.Equal(eventBase.ComponentControl.Info.Id, info.OwnerId); //Assert.Equal(eventBase.Count, info.Count); Assert.Equal(eventBase.EventCategory.ToString(), info.Category.ToString()); Assert.Equal(eventBase.Importance, info.Importance); Assert.Equal(eventBase.TypeSystemName, info.TypeSystemName); if (eventBase.TypeDisplayName == null) { Assert.Equal(info.TypeSystemName, info.TypeDisplayName); } else { Assert.Equal(eventBase.TypeDisplayName, info.TypeDisplayName); } Assert.Equal(eventBase.Version, info.Version); //CheckDateTimesEqualBySeconds(eventBase.StartDate, info.StartDate); //CheckDateTimesEqualBySeconds(eventBase.EndDate, info.EndDate); Assert.Equal(eventBase.JoinKey, info.JoinKeyHash);//todo переименовать, чтобы ыбло одинаково Assert.Equal(eventBase.Message, info.Message); CheckExtentionProperties(eventBase.Properties, info.Properties); }
public void Prepare(SendEventBase eventObj) { _events.Add(eventObj); }
public void Prepare(SendEventBase eventObj) { HttpContextHelper.SetProperties(eventObj.Properties); }