public static void SubPasswordSet(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var pass = packet.ReadString(10).Trim('\0'); packet.Skip(5); var question = packet.ReadInt(); var answer = packet.ReadString(16).Trim('\0'); packet.Skip(112); var changeSub = packet.ReadInt(); var syncServer = client.Metadata["syncServer"] as SyncReceiver; if (changeSub == 0) { SubpassManagement.SetSubPass(syncServer, client.AccountID, pass, question, answer); } else { SubpassManagement.SetSubPass(syncServer, client.AccountID, pass, -1, string.Empty); } builder.New(0x406); { builder += 1; builder += 0; builder += 1; builder += 0; } SubpassManagement.SetSubPassTime(syncServer, client.AccountID, 0); client.Send(builder, "SubPasswordSet"); }
public static void SubPasswordCheck(PacketReader packet, PacketBuilder builder, ClientHandler client, EventHandler events) { var pass = packet.ReadString(10).Trim('\0'); packet.Skip(5); var time = packet.ReadInt(); var syncServer = client.Metadata["syncServer"] as SyncReceiver; var checksub = SubpassManagement.CheckSubPw(syncServer, client.AccountID, pass); var tries = 0; builder.New(0x40A); { if (checksub) { builder += 1; // success builder += (byte)0x00; // failed times client.Metadata["subTries"] = 0; SubpassManagement.SetSubPassTime(syncServer, client.AccountID, time); } else { client.Metadata["subTries"] = (int)client.Metadata["subTries"] + 1; tries = (int)client.Metadata["subTries"]; builder += 0; // failed builder += (byte)tries; // failed times } builder += 0; builder += 1; } client.Send(builder, "SubPasswordCheck"); if ((int)client.Metadata["subTries"] > 3) { client.Disconnect(); } }