Пример #1
0
        public bool IsBlocked(Int32 c)
        {
            Pair <Int32, Warning> obj = ObjOfIndex(c);

            lock (_lock)
                if (obj != null && obj.Second != null) // here we must lock first.
                {
                    return(Warning.GetLevel(obj.Second) >= 5);
                }
            return(false);
        }
Пример #2
0
        private void HandleHeartBeat()
        {
            int indexOfPacketByte = Array.LastIndexOf <byte>(buff, (byte)CmdPacket.HeartBeat);

            if (indexOfPacketByte < 10) // This is a limited check for some.. years or time, needs to be specific
            {
                if (indexOfPacketByte < 0)
                {
                    Disconnect("Spoof Packet recieved from: {0}", ipport);
                }
                else
                {
                    Disconnect("Spoof Packet recieved, Beat found at: {0}", indexOfPacketByte);
                }
            }
            else
            {
                DateTime now  = DateTime.UtcNow;
                byte[]   sync = SyncClock(indexOfPacketByte);
                if (sync == null)
                {
                    Disconnect("Fake SyncClock from: {0}", ipport);
                    return;
                }

                DateTime PacketSyncData = new DateTime(BitConverter.ToInt64(sync, 0));
                //Log.Write("OneWayPing (Milliseconds): {0} Of Client: {1}", now.Subtract(testme).Milliseconds.ToString(), ip);

                if (PacketSyncData.AddSeconds(Globals.MaxOneWayRoundTime) <= now)
                {
                    Warning.AddWarningToClient(warning);
                    string msg = "Client Lagging or Faking SyncClock: {0}, Now: {1}, Client: {2}";
                    if (Warning.GetLevel(warning) > 3)
                    {
                        Disconnect(msg, PacketSyncData.ToString(), now.ToString(), ipport);
                    }
                    else
                    {
                        Log.Write(msg, PacketSyncData.ToString(), now.ToString(), ipport);
                    }
                }
                else
                {
                    lastPingOneWay = (now - PacketSyncData).Milliseconds.ToString();
                    lastheartbeat  = DateTime.UtcNow;
                }
            }
        }
Пример #3
0
 private static void ListOnClients()
 {
     if (Globals.Clients.Count < 1)
     {
         Utils.Log.SYS("No Clients Online!");
         return;
     }
     Globals.Clients.ForEach(c => Utils.Log.SYS("IP: {0}, LastTime: {1}, User: {2}, WarningLevel: {3}, KeyLevel: {4}, PingOneWay: {5} Milli. Seconds", c.ipport, c.lastheartbeat, c.userid, Warning.GetLevel(c.warning), Warning.GetKeyErrors(c.warning), c.lastPingOneWay));
 }