public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { var acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) status = Encoding.UTF8.GetBytes("<Error>Bad login</Error>"); else { try { status = Encoding.UTF8.GetBytes(db.HTTPGetGuildMembers(Convert.ToInt32(query["num"]), Convert.ToInt32(query["offset"]), acc)); } catch { status = Encoding.UTF8.GetBytes("<Error>Guild member error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); context.Response.Close(); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { var acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) { status = Encoding.UTF8.GetBytes("<Error>Bad login</Error>"); } else { var cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET password=SHA1(@password) WHERE id=@accId;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); cmd.Parameters.AddWithValue("@password", query["newPassword"]); if (cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>ChangePassword.cs error</Error>"); } context.Response.OutputStream.Write(status, 0, status.Length); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { var acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) status = Encoding.UTF8.GetBytes("<Error>Bad login</Error>"); else { try { status = Encoding.UTF8.GetBytes(db.GetGuildBoard(acc)); } catch (Exception e) { status = Encoding.UTF8.GetBytes("<Error>" + e.Message + "</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { var acc = db.Verify(query["guid"], query["password"]); if (acc == null) { var status = Encoding.UTF8.GetBytes("<Error>Bad login</Error>"); context.Response.OutputStream.Write(status, 0, status.Length); } else { XmlSerializer serializer = new XmlSerializer(acc.GetType(), new XmlRootAttribute(acc.GetType().Name) { Namespace = "" }); XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, acc, acc.Namespaces); } } }
//fame = fame II gold = credits public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { var acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) { status = Encoding.UTF8.GetBytes("<Error>Bad login</Error>"); } else { var cmd = db.CreateQuery(); cmd.CommandText = "SELECT credits FROM stats WHERE accId=@accId;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); if ((int)cmd.ExecuteScalar() < 0) status = Encoding.UTF8.GetBytes("<Error>Not enough gold</Error>"); else { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE stats SET credits = credits - 1000 WHERE accId=@accId"; //gold=credits fame=fame NOTE: the "- 1000" takes away 1000 of whatever currency, but to be able to get it to show up as 1000 in the client, edit Database.cs cmd.Parameters.AddWithValue("@accId", acc.AccountId); if ((int)cmd.ExecuteNonQuery() > 0) { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET maxCharSlot = maxCharSlot + 1 WHERE id=@accId"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); if ((int)cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success/>"); else status = Encoding.UTF8.GetBytes("<Error>CharSlot.cs error</Error>"); } else status = Encoding.UTF8.GetBytes("<Error>CharSlot.cs Error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
//public bool IsValidEmail(string strIn) //{ // var invalid = false; // if (String.IsNullOrEmpty(strIn)) // return false; // MatchEvaluator DomainMapper = match => // { // IdnMapping class with default property values. // IdnMapping idn = new IdnMapping(); // string domainName = match.Groups[2].Value; // try // { // domainName = idn.GetAscii(domainName); // } // catch (ArgumentException) // { // invalid = false; //should be false // } // return match.Groups[1].Value + domainName; // }; // Use IdnMapping class to convert Unicode domain names. // strIn = Regex.Replace(strIn, @"(@)(.+)$", DomainMapper); // if (invalid) // return false; // Return true if strIn is in valid e-mail format. // return Regex.IsMatch(strIn, // @"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + // @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$", // RegexOptions.IgnoreCase); //} public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { byte[] status; if (0 != 0 /*!IsValidEmail(query["newGUID"])*/) status = Encoding.UTF8.GetBytes("<Error>Invalid Email</Error>"); else { if (db.HasUuid(query["guid"]) && db.Verify(query["guid"], "") != null) { if (db.HasUuid(query["newGUID"])) status = Encoding.UTF8.GetBytes("<Error>Email is already in use!</Error>"); else { var cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET uuid=@newUuid, name=@newUuid, password=SHA1(@password), guest=FALSE WHERE uuid=@uuid, name=@name;"; cmd.Parameters.AddWithValue("@uuid", query["guid"]); cmd.Parameters.AddWithValue("@newUuid", query["newGUID"]); cmd.Parameters.AddWithValue("@password", query["newPassword"]); if (cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Register.cs error</Error>"); } } else { if (db.Register(query["newGUID"], query["newPassword"], false) != null) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Register.cs error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { var acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) { status = Encoding.UTF8.GetBytes("<Error>Bad login</Error>"); } else { var cmd = db.CreateQuery(); object exescala; cmd.CommandText = "SELECT COUNT(name) FROM accounts WHERE name=@name;"; cmd.Parameters.AddWithValue("@name", query["name"]); exescala = cmd.ExecuteScalar(); if (int.Parse(exescala.ToString()) > 0) status = Encoding.UTF8.GetBytes("<Error>Name in use</Error>"); else { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET name=@name, namechosen=TRUE WHERE id=@accId;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); cmd.Parameters.AddWithValue("@name", query["name"]); if (cmd.ExecuteNonQuery() != 0) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>SetName.cs error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { List<ServerItem> filteredServers = null; Account a = db.Verify(query["guid"], query["password"]); if (a != null) { if (a.Banned) { filteredServers = YoureBanned(); } else { filteredServers = GetServersForRank(a.Rank); } } else { filteredServers = GetServersForRank(0); } Chars chrs = new Chars() { Characters = new List<Char>() { }, NextCharId = 2, MaxNumChars = 1, Account = db.Verify(query["guid"], query["password"]), Servers = filteredServers }; Account dvh = null; if (chrs.Account != null) { db.GetCharData(chrs.Account, chrs); db.LoadCharacters(chrs.Account, chrs); chrs.News = db.GetNews(chrs.Account); dvh = chrs.Account; } else { chrs.Account = Database.CreateGuestAccount(query["guid"]); chrs.News = db.GetNews(null); } MemoryStream ms = new MemoryStream(); XmlSerializer serializer = new XmlSerializer(chrs.GetType(), new XmlRootAttribute(chrs.GetType().Name) { Namespace = "" }); XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, chrs, chrs.Namespaces); //returns error if hosting on hamachi, non-existent network connection } }
void ProcessHelloPacket(HelloPacket pkt) { if (isGuest) Disconnect(); db = new Database(); if ((account = db.Verify(pkt.GUID, pkt.Password)) == null) { Console.WriteLine("Account not verified."); account = Database.CreateGuestAccount(pkt.GUID); if (account == null) { Console.WriteLine("Account is null!"); SendPacket(new svrPackets.FailurePacket() { Message = "Invalid account." }); Disconnect(); return; } } Console.WriteLine("Client is connecting!"); ConnectedBuild = pkt.BuildVersion; if (!RealmManager.TryConnect(this)) { if (CheckAccountInUse(account.AccountId) != false) { Console.WriteLine("Account in use: " + account.AccountId + " " + account.Name); account = null; SendPacket(new svrPackets.FailurePacket() { Message = "Account in use! Retrying..." }); Disconnect(); return; } account = null; SendPacket(new svrPackets.FailurePacket() { Message = "Failed to connect." }); Disconnect(); Console.WriteLine("Failed to connect."); return; } else { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Client loading world"); World world = RealmManager.GetWorld(pkt.GameId); if (world == null) { SendPacket(new svrPackets.FailurePacket() { Message = "Invalid world." }); Disconnect(); Console.WriteLine("Invalid world"); } Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Client joined world " + world.Id.ToString()); if (world.Id == -6) //Test World (world as realm.worlds.Test).LoadJson(pkt.MapInfo); else if (world.IsLimbo) world = world.GetInstance(this); var seed = (uint)((long)Environment.TickCount * pkt.GUID.GetHashCode()) % uint.MaxValue; Random = new wRandom(seed); targetWorld = world.Id; SendPacket(new MapInfoPacket() { Width = world.Map.Width, Height = world.Map.Height, Name = world.Name, Seed = seed, Background = world.Background, AllowTeleport = world.AllowTeleport, ShowDisplays = world.ShowDisplays, //Music = world.GetMusic(Random), ClientXML = world.ClientXML, ExtraXML = world.ExtraXML }); stage = ProtocalStage.Handshaked; } }