protected override void HandleRequest() { using (Database db = new Database()) { Account acc = db.Verify(Query["guid"], Query["password"], Program.GameData); if (CheckAccount(acc, db)) { if (acc.VerifiedEmail || !Program.Settings.GetValue<bool>("verifyEmail")) return; string authKey = Database.GenerateRandomString(128); var cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET uuid=@newGuid, authToken=@newAuthToken WHERE uuid=@oldGuid;"; cmd.Parameters.AddWithValue("@newGuid", Query["newGuid"]); cmd.Parameters.AddWithValue("@newAuthToken", authKey); cmd.Parameters.AddWithValue("@oldGuid", Query["guid"]); cmd.Parameters.AddWithValue("@password", Query["password"]); cmd.ExecuteNonQuery(); MailMessage message = new MailMessage(); message.To.Add(Query["newGuid"]); message.IsBodyHtml = true; message.Subject = "Please verify your account."; message.From = new MailAddress(Program.Settings.GetValue<string>("serverEmail", "")); message.Body = "<center>Please verify your email via this <a href=\"" + Program.Settings.GetValue<string>("serverDomain", "localhost") + "/account/validateEmail?authToken=" + authKey + "\" target=\"_blank\">link</a>.</center>"; Program.SendEmail(message, true); } } }
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>Internal error</Error>"); } context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { 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>Duplicated name</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>Internal error</Error>"); } } Context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { using (Database db = new Database()) { try { Account acc = db.Verify(Query["guid"], Query["password"], Program.GameData); string classType = Program.GameData.ObjectTypeToId[ushort.Parse(Query["classType"])]; if (CheckAccount(acc, db)) { int price = Program.GameData.ObjectDescs[ushort.Parse(Query["classType"])].UnlockCost; if (acc.Credits < price) return; db.UpdateCredit(acc, -price); MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "UPDATE unlockedclasses SET available='unrestricted' WHERE accId=@accId AND class=@class;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); cmd.Parameters.AddWithValue("@class", classType); cmd.ExecuteNonQuery(); } } catch (Exception e) { using (StreamWriter wtr = new StreamWriter(Context.Response.OutputStream)) { wtr.WriteLine("<Error>Invalid classType"); wtr.Flush(); wtr.WriteLine(e); } } } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) { status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</Error>"); } else { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "SELECT beginnerPackageTimeLeft FROM accounts WHERE uuid=@uuid"; cmd.Parameters.AddWithValue("@uuid", query["guid"]); object result = cmd.ExecuteScalar(); status = Encoding.UTF8.GetBytes("<BeginnerPackageTimeLeft>" + result + "</BeginnerPackageTimeLeft>"); } 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); } } }
protected override void HandleRequest() { StreamWriter wtr = new StreamWriter(Context.Response.OutputStream); if (Query.AllKeys.Length > 0) { using (Database db = new Database()) { Account acc = db.Verify(Query["guid"], Query["password"], Program.GameData); if (CheckAccount(acc, db, false)) { foreach (ItemCostItem item in Prices) { if (item.Type == Query["skinType"] && item.Puchasable == 1) { if (!acc.OwnedSkins.Contains(int.Parse(Query["skinType"]))) { acc.OwnedSkins.Add(int.Parse(Query["skinType"])); db.UpdateCredit(acc, -item.Price); MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET ownedSkins=@ownedSkins WHERE uuid=@uuid AND password=SHA1(@password)"; cmd.Parameters.AddWithValue("@ownedSkins", Utils.GetCommaSepString(acc.OwnedSkins.ToArray())); cmd.Parameters.AddWithValue("@uuid", Query["guid"]); cmd.Parameters.AddWithValue("@password", Query["password"]); if (cmd.ExecuteNonQuery() == 0) wtr.WriteLine("<Error>Unable to purchase</Error>"); } } } } } } }
protected override void HandleRequest() { using (var db = new Database()) { if (!IsUsername(Query["newGUID"])) WriteErrorLine("Invalid Username"); else { if (db.HasUuid(Query["guid"]) && db.Verify(Query["guid"], "") != null) { if (db.HasUuid(Query["newGUID"])) WriteErrorLine("Username is already taken"); 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) Success(); else WriteErrorLine("Internal Error"); } } else { if (db.Register(Query["newGUID"], Query["newPassword"], false) != null) Success(); else WriteErrorLine("Internal Error"); } } } }
public Chars GetChars(string guid, string password, XmlData data) { using (var db = new Database()) { Account a = db.Verify(guid, password, data); if (a != null) { if (a.Banned) return null; } Chars chrs = new Chars { Characters = new List<Char>(), NextCharId = 2, MaxNumChars = 1, Account = a, }; db.GetCharData(chrs.Account, chrs); db.LoadCharacters(chrs.Account, chrs); chrs.News = db.GetNews(Program.GameData, chrs.Account); chrs.OwnedSkins = Utils.GetCommaSepString(chrs.Account.OwnedSkins.ToArray()); return chrs; } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db1 = new Database()) { chrs = new Chars() { Characters = new List<Char>() { }, NextCharId = 2, MaxNumChars = 1, Account = db1.Verify(query["guid"], query["password"]), Servers = new List<ServerItem>() { new ServerItem() { Name = "EUSouth", Lat = 22.28, Long = 114.16, DNS = db.confreader.getservers(false).ToString(), //127.0.0.1, CHANGE THIS TO LET YOUR FRIENDS CONNECT Usage = 0.2, AdminOnly = false } //new ServerItem() //{ // Name = "Admin Realm", // Lat = 22.28, // Long = 114.16, // DNS = "127.0.0.1", // Usage = 0.2, // AdminOnly = true //} } }; if (chrs.Account != null) { db1.GetCharData(chrs.Account, chrs); db1.LoadCharacters(chrs.Account, chrs); chrs.News = db1.GetNews(chrs.Account); } else { chrs.Account = Database.CreateGuestAccount(query["guid"]); chrs.News = db1.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); } }
protected override void HandleRequest() { string result = ""; using (Database dbx = new Database()) { Account acc = dbx.Verify(Query["guid"], Query["password"], Program.GameData); if (String.IsNullOrEmpty(Query["guid"]) || String.IsNullOrEmpty(Query["password"]) || String.IsNullOrEmpty(Query["type"]) || acc == null) { Context.Response.StatusCode = 400; result = "<Error>Invalid GUID/password combination</Error>"; } else { string[][] ranks = dbx.GetArenaLeaderboards(Query["type"], acc); result += "<ArenaRecords>"; foreach (string[] i in ranks) { MySqlCommand cmd = dbx.CreateQuery(); cmd.CommandText = "select skin, tex1, tex2, items, charType, petId from characters where charid = @charid"; cmd.Parameters.AddWithValue("@charid", i[2]); string skin, tex1, tex2, inventory, cclass, petid; skin = tex1 = tex2 = inventory = cclass = petid = null; using (MySqlDataReader drdr = cmd.ExecuteReader()) { while (drdr.Read()) { skin = drdr.GetString("skin"); tex1 = drdr.GetString("tex1"); tex2 = drdr.GetString("tex2"); inventory = drdr.GetString("items"); cclass = drdr.GetString("charType"); petid = drdr.GetString("petId"); } } var _pet = dbx.GetPet(int.Parse(petid), acc); result += $"<Record><WaveNumber>{i[0]}</WaveNumber><Time>{i[4]}</Time><PlayData><CharacterData>"; if (acc.Guild.Name != null) result += $@"<GuildName>{acc.Guild.Name}</GuildName><GuildRank>{acc.Guild.Rank}</GuildRank>"; result += $"<Id>{i[2]}</Id><Texture>{skin}</Texture><Tex1>{tex1}</Tex1><Tex2>{tex2}</Tex2><Inventory>{inventory}</Inventory><Name>{acc.Name}</Name><Class>{cclass}</Class></CharacterData>"; result += "<Pet name=\"" + _pet.SkinName + "\" type=\"" + _pet.Type + "\" instanceId=\"" + _pet.InstanceId + "\" rarity=\"" + _pet.Rarity + "\" maxAbilityPower=\"" + _pet.MaxAbilityPower + "\" skin=\"" + _pet.Skin + "\" family=\"" + "Farm" + "\"><Abilities>"; for (int e = 0; e < 3; e++) result += "<Ability type=\"" + _pet.Abilities[e].Type + "\" power=\"" + _pet.Abilities[e].Power + "\" points=\"" + _pet.Abilities[e].Points + "\"/>"; result += "</Abilities></Pet></PlayData></Record>"; } result += "</ArenaRecords>"; } } byte[] buf = Encoding.UTF8.GetBytes(result); Context.Response.ContentType = "text/*"; Context.Response.OutputStream.Write(buf, 0, buf.Length); }
protected override void HandleRequest() { string status = "<Error>Internal server error</Error>"; using (Database db = new Database()) { Account acc; if (CheckAccount(acc = db.Verify(Query["guid"], Query["password"], Program.GameData), db)) { if (acc.Rank < 1) { status = "<Error>Only donators can port prod accounts to the private server.</Error>"; } else if (acc.IsProdAccount && acc.Rank < 2) { status = "<Error>You account is already transfered.</Error>"; } else if (!acc.Banned) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(String.Format("http://www.realmofthemadgodhrd.appspot.com/char/list?guid={0}&{1}={2}", Query["prodGuid"], Query["prodGuid"].StartsWith("kongregate:") || Query["prodGuid"].StartsWith("steamworks:") ? "secret" : "password", Query["prodPassword"])); var resp = req.GetResponse(); Chars chrs = new Chars(); chrs.Characters = new List<Char>(); string s; using (StreamReader rdr = new StreamReader(resp.GetResponseStream())) s = rdr.ReadToEnd(); s = s.Replace("False", "false").Replace("True", "true"); try { XmlSerializer serializer = new XmlSerializer(chrs.GetType(), new XmlRootAttribute("Chars") { Namespace = "" }); chrs = (Chars)serializer.Deserialize(new StringReader(s)); if (db.SaveChars(acc.AccountId, new [email protected]().GetChars(Query["guid"], Query["password"], Program.GameData), chrs, Program.GameData)) status = "<Success />"; } catch (Exception e) { Program.logger.Error(e); } } else status = "<Error>Account under Maintenance</Error>"; } else status = "<Error>Account credentials not valid</Error>"; } using (StreamWriter wtr = new StreamWriter(Context.Response.OutputStream)) wtr.Write(status); }
protected override void HandleRequest() { 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); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database(Program.Settings.GetValue("conn"))) { byte[] status; if (!IsUsername(query["newGUID"])) status = Encoding.UTF8.GetBytes("<Error>Invalid username</Error>"); else { if (db.HasUuid(query["guid"]) && db.Verify(query["guid"], "") != null) { if (db.HasUuid(query["newGUID"])) status = Encoding.UTF8.GetBytes("<Error>Duplicate username</Error>"); else if (db.HasEmail(query["email"])) status = Encoding.UTF8.GetBytes("<Error>Duplicate email</Error>"); else { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET uuid=@newUuid, password=SHA1(@password), email=@email, guest=FALSE WHERE uuid=@uuid;"; cmd.Parameters.AddWithValue("@uuid", query["guid"]); cmd.Parameters.AddWithValue("@newUuid", query["newGUID"]); cmd.Parameters.AddWithValue("@password", query["newPassword"]); cmd.Parameters.AddWithValue("@email", query["email"]); if (cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } } else { if (db.HasUuid(query["newGUID"])) { status = Encoding.UTF8.GetBytes("<Error>Duplicate username</Error>"); } else if (db.HasEmail(query["email"])) { status = Encoding.UTF8.GetBytes("<Error>Duplicate email</Error>"); } else { if (db.Register(query["newGUID"], query["newPassword"], query["email"], false) != null) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } } } context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { using (Database db = new Database()) { Account acc = db.Verify(Query["guid"], Query["password"], Program.GameData); byte[] status = new byte[0]; if (CheckAccount(acc, db, false)) { status = Encoding.UTF8.GetBytes(db.SetGuildBoard(Query["board"], acc)); } Context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { using (Database db = new Database()) { Account a = db.Verify(Query["guid"], Query["password"], Program.GameData); if (!CheckAccount(a, db)) return; db.LockAccount(a); Chars chrs = new Chars { Characters = new List<Char>(), NextCharId = 2, MaxNumChars = 1, Account = a, Servers = GetServerList() }; if (chrs.Account != null) { db.GetCharData(chrs.Account, chrs); db.LoadCharacters(chrs.Account, chrs); chrs.News = db.GetNews(Program.GameData, chrs.Account); chrs.OwnedSkins = Utils.GetCommaSepString(chrs.Account.OwnedSkins.ToArray()); db.UnlockAccount(chrs.Account); } else { chrs.Account = Database.CreateGuestAccount(Query["guid"] ?? ""); chrs.News = db.GetNews(Program.GameData, null); } MapPoint p = null; //GetLatLong(Context.Request.RemoteEndPoint.Address); if (p != null) { chrs.Lat = p.Latitude.ToString().Replace(',', '.'); chrs.Long = p.Longitude.ToString().Replace(',', '.'); } chrs.ClassAvailabilityList = GetClassAvailability(chrs.Account); chrs.TOSPopup = chrs.Account.NotAcceptedNewTos; chrs.ClassAvailabilityList = GetClassAvailability(chrs.Account); XmlSerializer serializer = new XmlSerializer(chrs.GetType(), new XmlRootAttribute(chrs.GetType().Name) { Namespace = "" }); XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; xws.Indent = true; xws.IndentChars = " "; XmlWriter xtw = XmlWriter.Create(Context.Response.OutputStream, xws); serializer.Serialize(xtw, chrs, chrs.Namespaces); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); if (query.AllKeys.Length == 0) { string queryString = string.Empty; string currUrl = context.Request.RawUrl; int iqs = currUrl.IndexOf('?'); if (iqs >= 0) { query = HttpUtility.ParseQueryString((iqs < currUrl.Length - 1) ? currUrl.Substring(iqs + 1) : String.Empty); } } using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); int num = Convert.ToInt32(query["num"]); int offset = Convert.ToInt32(query["offset"]); if (num == 0) { num = 50; } byte[] status; if (acc == null) status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</Error>"); else { try { status = Encoding.UTF8.GetBytes(db.HttpGetGuildMembers(num, offset, acc)); } catch { status = Encoding.UTF8.GetBytes("<Error>Guild member error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { 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 { status = Encoding.UTF8.GetBytes(db.SetGuildBoard(Query["board"], acc)); } Context.Response.OutputStream.Write(status, 0, status.Length); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); int charSlots = db.MaxCharSlotPrice(query["guid"]); byte[] status; if (acc == null) { status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</Error>"); } else { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "SELECT fame FROM stats WHERE accId=@accId;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); if ((int) cmd.ExecuteScalar() < charSlots) status = Encoding.UTF8.GetBytes("<Error>Not enough fame</Error>"); else { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE stats SET fame = fame - @price WHERE accId=@accId"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); cmd.Parameters.AddWithValue("@price", charSlots); if (cmd.ExecuteNonQuery() > 0) { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET maxCharSlot = maxCharSlot + 1 WHERE id=@accId"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); if (cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success/>"); else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) { status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</Error>"); } else { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "SELECT COUNT(name) FROM accounts WHERE name=@name;"; cmd.Parameters.AddWithValue("@name", query["name"]); if ((int) (long) cmd.ExecuteScalar() > 0) status = Encoding.UTF8.GetBytes("<Error>Duplicate username</Error>"); else if (query["name"].Length < 3) { status = Encoding.UTF8.GetBytes("<Error>Name too short, minimum 3 letters</Error>"); } else if (query["name"].Contains(" ")) { status = Encoding.UTF8.GetBytes("<Error>Cannot have spaces in username</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>Internal error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { using (Database db = new Database()) { Account acc = db.Verify(Query["guid"], Query["password"], Program.GameData); if (CheckAccount(acc, db)) { XmlSerializer serializer = new XmlSerializer(acc.GetType(), new XmlRootAttribute(acc.GetType().Name) { Namespace = "" }); XmlWriterSettings xws = new XmlWriterSettings(); xws.Indent = true; xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; XmlWriter xtw = XmlWriter.Create(Context.Response.OutputStream, xws); serializer.Serialize(xtw, acc, acc.Namespaces); } } }
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() < 100) status = Encoding.UTF8.GetBytes("<Error>Not enough credits</Error>"); else { cmd = db.CreateQuery(); cmd.CommandText = "UPDATE stats SET credits = credits - 100 WHERE accId=@accId"; 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>Internal Error</Error>"); } else status = Encoding.UTF8.GetBytes("<Error>Internal 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()) { byte[] status; if (0 != 0/*!IsValidEmail(query["newGUID"])*/) status = Encoding.UTF8.GetBytes("<Error>Invalid Username</Error>"); else { if (db.HasUuid(query["guid"]) && db.Verify(query["guid"], "") != null) { if (db.HasUuid(query["newGUID"])) status = Encoding.UTF8.GetBytes("<Error>Username is already taken!</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>Internal Error</Error>"); } } else { if (db.Register(query["newGUID"], query["newPassword"], false) != null) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } } context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { using (var db = new Database()) { Account acc = db.Verify(Query["guid"], Query["password"]); byte[] status = new byte[0]; if (CheckAccount(acc, db)) { 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>Internal error</Error>"); } Context.Response.OutputStream.Write(status, 0, status.Length); } }
protected override void HandleRequest() { using (Database db = new Database()) { Account acc = db.Verify(Query["guid"], Query["password"], Program.GameData); byte[] status = new byte[0]; if (CheckAccount(acc, db)) { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = @"DELETE FROM characters WHERE accId = @accId AND charId = @charId;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); cmd.Parameters.AddWithValue("@charId", Query["charId"]); if (cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } Context.Response.OutputStream.Write(status, 0, status.Length); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); if (query.AllKeys.Length == 0) { string queryString = string.Empty; string currUrl = context.Request.RawUrl; int iqs = currUrl.IndexOf('?'); if (iqs >= 0) { query = HttpUtility.ParseQueryString((iqs < currUrl.Length - 1) ? currUrl.Substring(iqs + 1) : String.Empty); } } using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); if (acc == null) { byte[] status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</Error>"); context.Response.OutputStream.Write(status, 0, status.Length); } else { var serializer = new XmlSerializer(acc.GetType(), new XmlRootAttribute(acc.GetType().Name) {Namespace = ""}); var xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, acc, acc.Namespaces); } } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var 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); } var 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); } var ms = new MemoryStream(); var serializer = new XmlSerializer(chrs.GetType(), new XmlRootAttribute(chrs.GetType().Name) {Namespace = ""}); var xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, chrs, chrs.Namespaces); db.Dispose(); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</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 override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database(Program.Settings.GetValue("conn"))) { Account acc = db.Verify(query["guid"], query["password"]); byte[] status; if (acc == null) status = Encoding.UTF8.GetBytes("<Error>Account credentials not valid</Error>"); else { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = @"DELETE FROM characters WHERE accId = @accId AND charId = @charId;"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); cmd.Parameters.AddWithValue("@charId", query["charId"]); if (cmd.ExecuteNonQuery() > 0) status = Encoding.UTF8.GetBytes("<Success />"); else status = Encoding.UTF8.GetBytes("<Error>Internal Error</Error>"); } context.Response.OutputStream.Write(status, 0, status.Length); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); using (var db = new Database()) { Account 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(); } }