Beispiel #1
0
        public override bool Execute(string[] args)
        {
            if (args.Length <= 0)
            {
                chatMessage = Lang["errArg"];
                return(false);
            }
            int ID;

            if (!int.TryParse(args[0], out ID))
            {
                chatMessage = Lang["errArg"];
                return(false);
            }
            PhotonPlayer target = PhotonPlayer.Find(ID);

            if (target == null)
            {
                chatMessage = Lang["errArg"];
                return(false);
            }
            string killer = args.Length > 1 ? args[1] : "Kill";

            return(Abuse.Kill(target, killer));
        }
Beispiel #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            string strAbuseResourceFileID = Request.Params["r"];
            string strAbuseURL            = Request.Params["url"];
            Member member = (Member)Session["Member"];

            if (strAbuseResourceFileID != null && member != null)
            {
                if (strAbuseURL == null)
                {
                    strAbuseURL = string.Empty;
                }

                Abuse abuse = new Abuse();
                abuse.MemberID       = member.MemberID;
                abuse.ResourceFileID = strAbuseResourceFileID;
                abuse.DTCreated      = DateTime.Now;
                abuse.URL            = strAbuseURL;
                abuse.Save();
                AbuseCompleted = true;
            }
        }
    }
Beispiel #3
0
        // [MasterClientOnly]
        public void KillCMD(ChatCommandContext ctx)
        {
            if (ctx.Arguments.Length <= 0)
            {
                ctx.SendLocalMessage(Lang["errArg"]);
                return;
            }
            int ID;

            if (!int.TryParse(ctx.Arguments[0], out ID))
            {
                ctx.SendLocalMessage(Lang["errArg"]);
                return;
            }
            PhotonPlayer target = PhotonPlayer.Find(ID);

            if (target == null)
            {
                ctx.SendLocalMessage(Lang["errArg"]);
                return;
            }
            if (target.IsTitan)
            {
                // string message = $"{PhotonNetwork.player.GameObject.GetComponent<HERO>().checkBoxLeft.GetComponent<TriggerColliderWeapon>().gameObject.GetPhotonView().viewID}";
                //  ctx.SendLocalMessage(message == "" ? "No view" : message);
                ctx.SendLocalMessage("isTITAN");
                if (target.GameObject.GetComponent <TITAN>())
                {
                    ctx.SendLocalMessage("TITAN object found");
                    int view = ctx.Arguments.Length > 1 ? Convert.ToInt32(ctx.Arguments[1]) : PhotonNetwork.player.GameObject.GetComponent <HERO>().checkBoxLeft.GetComponent <TriggerColliderWeapon>().gameObject.GetPhotonView().viewID;
                    target.GameObject.GetComponent <TITAN>().BasePV.RPC("titanGetHit", target, new object[]
                    {
                        view,
                        69
                    });
                }
                else
                {
                    ctx.SendLocalMessage("No TITAN object found");
                }
            }
            else
            {
                string killer = ctx.Arguments.Length > 1 ? ctx.Arguments[1] : "Kill";
                Abuse.Kill(target, killer);
            }
        }
        protected virtual void HandleAbuseCommand(CommandMatch cmd, IChannelMessageEventArgs message)
        {
            if (!EnsureOp(message))
            {
                return;
            }

            TimeSpan?banTime      = null;
            TimeSpan?cooldownTime = null;

            foreach (KeyValuePair <string, object> option in cmd.Options)
            {
                if (option.Key == "-b" || option.Key == "--ban-time")
                {
                    if (banTime.HasValue)
                    {
                        ConnectionManager.SendChannelMessage(
                            message.Channel,
                            $"{message.SenderNickname}: -b/--ban-time may not be specified more than once (in total)."
                            );
                        return;
                    }

                    banTime = TimeUtil.TimeSpanFromString((string)option.Value);
                    if (!banTime.HasValue)
                    {
                        ConnectionManager.SendChannelMessage(
                            message.Channel,
                            $"{message.SenderNickname}: Invalid time span specified for {option.Key}."
                            );
                        return;
                    }
                }
                else if (option.Key == "-c" || option.Key == "--cooldown-time")
                {
                    if (cooldownTime.HasValue)
                    {
                        ConnectionManager.SendChannelMessage(
                            message.Channel,
                            $"{message.SenderNickname}: -c/--cooldown-time may not be specified more than once (in total)."
                            );
                        return;
                    }

                    cooldownTime = TimeUtil.TimeSpanFromString((string)option.Value);
                    if (!cooldownTime.HasValue)
                    {
                        ConnectionManager.SendChannelMessage(
                            message.Channel,
                            $"{message.SenderNickname}: Invalid time span specified for {option.Key}."
                            );
                        return;
                    }
                }
            }

            if (!banTime.HasValue)
            {
                banTime = TimeSpan.FromMinutes(Config.AbuseBanMinutes);
            }
            if (!cooldownTime.HasValue)
            {
                cooldownTime = TimeSpan.FromMinutes(Config.AbuseLockMinutes);
            }

            var bannerNickname = (string)cmd.Arguments[0];
            var criterionName  = (string)cmd.Arguments[1];

            Criterion crit;
            Ban       ban;
            Abuse     abuse;

            using (var ctx = GetNewContext())
            {
                // identify the criterion
                crit = ctx.Criteria
                       .FirstOrDefault(c => c.Name == criterionName && c.Channel == message.Channel);
                if (crit == null)
                {
                    ConnectionManager.SendChannelMessage(message.Channel, $"{message.SenderNickname}: Unknown criterion.");
                    return;
                }

                // find the last relevant ban
                ban = ctx.Bans
                      .Where(b => b.CriterionID == crit.ID)
                      .Where(b => b.BannerNickname == bannerNickname)
                      .OrderByDescending(b => b.Timestamp)
                      .FirstOrDefault();

                if (ban == null)
                {
                    ConnectionManager.SendChannelMessage(message.Channel, $"{message.SenderNickname}: No relevant ban found.");
                    return;
                }

                // find if it has been sanctioned yet
                bool sanctioned = ctx.Abuses
                                  .Any(a => a.BanID == ban.ID);
                if (sanctioned)
                {
                    ConnectionManager.SendChannelMessage(message.Channel, $"{message.SenderNickname}: This abuse has already been sanctioned.");
                    return;
                }

                // lift the running ban
                ban.Lifted = true;

                // burn
                abuse = new Abuse
                {
                    BanID      = ban.ID,
                    OpNickname = message.SenderNickname,
                    OpUsername = ConnectionManager.RegisteredNameForNick(message.SenderNickname),
                    Timestamp  = DateTimeOffset.Now,
                    BanUntil   = DateTimeOffset.Now.Add(banTime.Value),
                    LockUntil  = DateTimeOffset.Now.Add(cooldownTime.Value),
                    Lifted     = (banTime.Value.Ticks == 0)
                };
                ctx.Abuses.Add(abuse);
                ctx.SaveChanges();
            }

            Logger.LogDebug(
                "{OpNickname} is sanctioning {BannerNickname} for abusing criterion {CriterionID} ({CriterionName}) " +
                "in channel {Channel} banning {OffenderNickname} (ban {BanID}), creating abuse entry {AbuseID}",
                message.SenderNickname, ban.BannerNickname, ban.CriterionID, crit.Name, message.Channel,
                ban.OffenderNickname, ban.ID, abuse.ID
                );

            ConnectionManager.ChangeChannelMode(message.Channel, $"-b {ban.OffenderNickname}!*@*");
            if (banTime.Value.Ticks > 0)
            {
                ConnectionManager.ChangeChannelMode(message.Channel, $"+b {ban.BannerNickname}!*@*");
                ConnectionManager.KickChannelUser(
                    message.Channel,
                    ban.BannerNickname,
                    $"demoderation abuse sanctioned by {message.SenderNickname}"
                    );
            }
        }