static void HandleRegisterPacket(Client c, string name, string pass, string email)
{
string n = name.Trim();
if (n.Length == 0 || n.Length > 16 || pass.Length != 40 || !IsValidName(n) || email.Length == 0 || email.Length > 256)
{
byte[] fail = Packer.Serialize((byte)ServerPacket.Register, false);
c.Send(fail);
return;
}
MySqlCommand q = new MySqlCommand("SELECT Count(*) FROM users WHERE Username=@Username", SQL);
q.Parameters.AddWithValue("@Username", n);
MySqlDataReader r = q.ExecuteReader();
bool available = r.Read() && (r.GetInt16(0) == 0);
r.Close();
if (available)
{
MySqlCommand q2 = new MySqlCommand(string.Empty, SQL);
q2.CommandText = "INSERT INTO users VALUES (@Username,@Password,@Email,0,0,0,0,\"\",\"\",\"\");";
q2.Parameters.AddWithValue("@Username", n);
q2.Parameters.AddWithValue("@Password", pass);
q2.Parameters.AddWithValue("@Email", email);
//If registration fails, this will return false.
bool success = (q2.ExecuteNonQuery() != 0);
if (success)
{
c.Value.Username = name;
c.Value.Email = email;
SendEmail(email, n);
}
byte[] data = Packer.Serialize((byte)ServerPacket.Register, success);
c.Send(data);
}
else
{
byte[] data = Packer.Serialize((byte)ServerPacket.Register, false);
c.Send(data);
}
}