Exemplo n.º 1
0
 public SecurityViolationEventArgs(ChannelClient offender, IncidentSeverityLevel level, string report, string stacktrace)
 {
     this.Client      = offender;
     this.Level       = level;
     this.Report      = report;
     this.StackReport = stacktrace;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Logs incident, increases ban points, and bans account if appropriate.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="level"></param>
        /// <param name="report"></param>
        /// <param name="stacktrace"></param>
        public static void Incident(ChannelClient client, IncidentSeverityLevel level, string report, string stacktrace = null)
        {
            if (client.Account == null)
            {
                return;
            }

            switch (level)
            {
            case IncidentSeverityLevel.Mild: client.Account.AutobanScore += ChannelServer.Instance.Conf.Autoban.MildAmount; break;

            case IncidentSeverityLevel.Moderate: client.Account.AutobanScore += ChannelServer.Instance.Conf.Autoban.ModerateAmount; break;

            case IncidentSeverityLevel.Severe: client.Account.AutobanScore += ChannelServer.Instance.Conf.Autoban.SevereAmount; break;

            default:
                Log.Warning("Autoban.Incident: Unknown severity level {0}", level);
                goto case IncidentSeverityLevel.Mild;
            }

            Log.Info("Account '{0}' total ban score: {1}", client.Account.Id, client.Account.AutobanScore);

            client.Account.LastAutobanReduction = DateTime.Now;

            if (client.Account.AutobanScore >= ChannelServer.Instance.Conf.Autoban.BanAt)
            {
                Ban(client);
            }
        }
Exemplo n.º 3
0
		public SecurityViolationEventArgs(ChannelClient offender, IncidentSeverityLevel level, string report, string stacktrace)
		{
			this.Client = offender;
			this.Level = level;
			this.Report = report;
			this.StackReport = stacktrace;
		}
Exemplo n.º 4
0
        protected SecurityViolationException(IncidentSeverityLevel lvl, string report)
        {
            this.Level = lvl;

            var stacktrace = new StackTrace(2);             // Skip 2 frames for this and calling ctor

            this.StackReport = string.Join(" --> ",
                                           stacktrace.GetFrames()
                                           .Take(_stackDepth)
                                           .Reverse()
                                           .Select(n => n.GetMethod().DeclaringType.Name + "." + n.GetMethod().Name));

            _message = string.Format("{0}: {1}", stacktrace.GetFrame(0).GetMethod().Name, report);
        }
Exemplo n.º 5
0
		protected SecurityViolationException(IncidentSeverityLevel lvl, string report)
		{
			this.Level = lvl;

			var stacktrace = new StackTrace(2); // Skip 2 frames for this and calling ctor

			this.StackReport = string.Join(" --> ",
				stacktrace.GetFrames()
				.Take(_stackDepth)
				.Reverse()
				.Select(n => n.GetMethod().DeclaringType.Name + "." + n.GetMethod().Name));

			_message = string.Format("{0}: {1}", stacktrace.GetFrame(0).GetMethod().Name, report);
		}
Exemplo n.º 6
0
		/// <summary>
		/// Logs incident, increases ban points, and bans account if appropriate.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="level"></param>
		/// <param name="report"></param>
		/// <param name="stacktrace"></param>
		public static void Incident(ChannelClient client, IncidentSeverityLevel level, string report, string stacktrace = null)
		{
			if (client.Account == null)
				return;

			switch (level)
			{
				case IncidentSeverityLevel.Mild: client.Account.AutobanScore += ChannelServer.Instance.Conf.Autoban.MildAmount; break;
				case IncidentSeverityLevel.Moderate: client.Account.AutobanScore += ChannelServer.Instance.Conf.Autoban.ModerateAmount; break;
				case IncidentSeverityLevel.Severe: client.Account.AutobanScore += ChannelServer.Instance.Conf.Autoban.SevereAmount; break;
				default:
					Log.Warning("Autoban.Incident: Unknown severity level {0}", level);
					goto case IncidentSeverityLevel.Mild;
			}

			Log.Info("Account '{0}' total ban score: {1}", client.Account.Id, client.Account.AutobanScore);

			client.Account.LastAutobanReduction = DateTime.Now;

			if (client.Account.AutobanScore >= ChannelServer.Instance.Conf.Autoban.BanAt)
				Ban(client);
		}