private void CreateNewUser(Dictionary<string, string> Recv)
{
// Make sure the user doesnt exist already
try
{
using (GamespyDatabase Database = new GamespyDatabase())
{
// Check to see if user exists
if (Database.UserExists(Recv["nick"]))
{
Stream.SendAsync(@"\error\\err\516\fatal\\errmsg\This account name is already in use!\id\1\final\");
Disconnect(5);
return;
}
// We need to decode the Gamespy specific encoding for the password
string Password = GamespyUtils.DecodePassword(Recv["passwordenc"]);
string Cc = (RemoteEndPoint.AddressFamily == AddressFamily.InterNetwork)
? Ip2nation.GetCountryCode(RemoteEndPoint.Address)
: Program.Config.ASP_LocalIpCountryCode;
// Attempt to create account. If Pid is 0, then we couldnt create the account
if ((PlayerId = Database.CreateUser(Recv["nick"], Password, Recv["email"], Cc)) == 0)
{
Stream.SendAsync(@"\error\\err\516\fatal\\errmsg\Error creating account!\id\1\final\");
Disconnect(6);
return;
}
Stream.SendAsync(@"\nur\\userid\{0}\profileid\{0}\id\1\final\", PlayerId);
}
}
catch(Exception e)
{
// Check for invalid query params
if (e is KeyNotFoundException)
{
Stream.SendAsync(@"\error\\err\0\fatal\\errmsg\Invalid Query!\id\1\final\");
}
else
{
Stream.SendAsync(@"\error\\err\516\fatal\\errmsg\Error creating account!\id\1\final\");
GpcmServer.Log("ERROR: [Gpcm.CreateNewUser] An error occured while trying to create a new User account :: " + e.Message);
}
Disconnect(7);
return;
}
}