コード例 #1
0
        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");
        }
コード例 #2
0
        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();
            }
        }