zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Server/Hotfix/Game/Event/ProtoParserErrorEvent.cs

40 lines
1.4 KiB
C#
Executable File

using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Text;
namespace ET
{
public class ProtoParserErrorEvent : AEvent<EventType.ProtoParserError>
{
public override async ETTask Run(EventType.ProtoParserError args)
{
string ip = args.remoteIp;
ForbiddenIP forbiddenIP;
List<ForbiddenIP> list = await DBComponent.Instance.QueryFilter(Builders<ForbiddenIP>.Filter.Eq(t => t.Ip, ip));
if(list ==null || list.Count == 0)
{
forbiddenIP = EntityFactory.Create<ForbiddenIP>(Game.Scene);
forbiddenIP.Ip = ip;
}
else
{
forbiddenIP = list[0];
}
forbiddenIP.count++;
await DBComponent.Instance.Save(forbiddenIP);
//!检查所有帐号
List<Account> accountList = await DBComponent.Instance.QueryFilter(Builders<Account>.Filter.Or(
Builders<Account>.Filter.Eq(t => t.CreateIp, ip),
Builders<Account>.Filter.Eq(t => t.LastIp, ip)
));
if(accountList!=null && accountList.Count != 0)
{
Account account = accountList[0];
account.IsStopSeal = true;
await DBComponent.Instance.Save(account);
}
}
}
}