private void HandleLogin(object incoming)
{
Stopwatch sw = Stopwatch.StartNew();
var data = (byte[]) incoming;
if (data[0] != ProtocolVersion)
{
SendKick("Invalid Protocol version!");
return;
}
Username = Asen.GetString(data, 1, 64).Trim();
string hash = Asen.GetString(data, 65, 32).Trim();
byte type = data[129];
Average1.Add(sw.ElapsedTicks);
sw = Stopwatch.StartNew();
if (Configuration.VERIFY && _ip != "127.0.0.1")
{
if (PlayerHandler.Players.Count >= Configuration.MAXPLAYERS)
{
SendKick("Server is full!");
}
if (hash != BitConverter.ToString(md5.ComputeHash(Asen.GetBytes(Configuration.ServerSalt + Username))).Replace("-", "").ToLower().TrimStart('0'))
{
SendKick("Account could not be verified, try again.");
Server.Log(Server.HeartBeat._hash + "", LogTypesEnum.Debug);
Server.Log("'" + hash + "' != '" + BitConverter.ToString(md5.ComputeHash(Asen.GetBytes(Configuration.ServerSalt + Username))).Replace("-", "").ToLower().TrimStart('0') + "'", LogTypesEnum.Debug);
return;
}
}
Average2.Add(sw.ElapsedTicks);
sw = Stopwatch.StartNew();
pdb = PDB.Find(Username.Trim().ToLower());
if(pdb == null)
{
var dbData = new object[] {Username, "", _ip, (byte) 0, 0, false, false};
try
{
UID = Server.users.NewRow(dbData);
}
catch (Exception e)
{
throw new Exception("FUCK");
}
//UID = Server.users.NewRow(dbData);
pdb = new PDB(UID, dbData);
}
else
{
UID = pdb.UID;
}
Average3.Add(sw.ElapsedTicks);
sw = Stopwatch.StartNew();
SendGlobalMessage(Username + " Logged In.");
PlayerHandler.Connections.Remove(this);
UserId = FreeId();
PlayerHandler.Players.Add(UserId, this);
Average4.Add(sw.ElapsedTicks);
SendMap();
_isLoggedIn = true;
}