Exemplo n.º 1
0
        private static unsafe void ProcessLogin(byte[] packet, Customer customer, ClientSocket client)
        {
            fixed(byte *p = packet)
            {
                var msgLogin = (MsgLogin *)p;

                var(user, pass) = msgLogin->GetUserPass();
                var id = msgLogin->UniqueId;

                Console.WriteLine(user + " " + pass + " " + id);

                customer = new Customer
                {
                    Username = user,
                    Password = pass
                };

                client.StateObject = customer;
                customer.Socket    = client;

                if (Db.Authenticate(ref customer))
                {
                    msgLogin->UniqueId = (uint)customer.CustomerId;
                }
                else if (Db.AddCustomer(customer))
                {
                    msgLogin->UniqueId = (uint)customer.CustomerId;
                }

                customer.Send(*msgLogin);

                var domains = customer.Subdomains.Aggregate("", (c, s) => c + (s.Name + " " + s.IP + "#"));

                customer.Send(MsgDomainList.Create(domains));
            }
        }