public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (StreamReader rdr = new StreamReader(context.Request.InputStream)) { query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); } int offset = int.Parse(query["offset"]); using (Database dbx = new Database()) { var cmd = dbx.CreateQuery(); cmd.CommandText = "SELECT * FROM info ORDER BY date DESC LIMIT 1 OFFSET @off;"; cmd.Parameters.AddWithValue("@off", offset); using (var rdr = cmd.ExecuteReader()) { rdr.Read(); var page = new PageItem() { }; page.Name = rdr.GetString("name"); List<string> contents = new List<string>(); if (rdr.GetInt32("newsType") == 0) { foreach (var i in rdr.GetString("contents").Split('&')) { contents.Add(i); } page.ContentType = 0; page.ContentLines = contents.ToArray(); } else { foreach (var i in rdr.GetString("contents").Split('&')) contents.Add(i); page.ContentType = rdr.GetInt32("newsType"); page.ContentLines = contents.ToArray(); } DateTime time = rdr.GetDateTime("date"); page.Date = time.ToString("g"); if (!rdr.IsDBNull(rdr.GetOrdinal("link")) && rdr.GetString("link") != "") { page.Link = rdr.GetString("link"); } byte[] fff = Encoding.ASCII.GetBytes(page.ToString()); context.Response.OutputStream.Write(fff, 0, fff.Length); context.Response.Close(); } dbx.Dispose(); } }
public ConventionResult IsSatisfiedBy(DatabaseSpecimen databaseSpecimen) { var resourceName = GetType().FullName + ".sql"; var assembly = GetType().Assembly.GetManifestResourceNames().Contains(resourceName) ? GetType().Assembly : typeof(DatabaseConventionSpecification).Assembly; string script; using (var stream = assembly.GetManifestResourceStream(resourceName)) using (var reader = new StreamReader(stream)) { script = reader.ReadToEnd(); } if (string.IsNullOrWhiteSpace(script)) { throw new InvalidOperationException("Resource identified did not contain any SQL script."); } var failures = new List<string>(); using (IDbConnection dbConnection = new SqlConnection(databaseSpecimen.ConnectionString)) { dbConnection.Open(); var command = dbConnection.CreateCommand(); command.CommandText = script; using (var reader = command.ExecuteReader()) { while (reader.Read()) { failures.Add(reader.GetString(0)); } } } if (failures.Any()) { return ConventionResult.NotSatisfied(DatabaseConventionResultIdentifier, FailureMessage + Environment.NewLine + failures.Aggregate((x, y) => x + Environment.NewLine + y)); } return ConventionResult.Satisfied(DatabaseConventionResultIdentifier); }
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.GetAccount(int.Parse(query["accountId"])); Char chr = db.LoadCharacter(acc, int.Parse(query["charId"])); MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = @"SELECT time, killer, firstBorn FROM death WHERE accId=@accId AND chrId=@charId;"; cmd.Parameters.AddWithValue("@accId", query["accountId"]); cmd.Parameters.AddWithValue("@charId", query["charId"]); int time; string killer; bool firstBorn; using (MySqlDataReader rdr = cmd.ExecuteReader()) { rdr.Read(); time = Database.DateTimeToUnixTimestamp(rdr.GetDateTime("time")); killer = rdr.GetString("killer"); firstBorn = rdr.GetBoolean("firstBorn"); } using (var wtr = new StreamWriter(context.Response.OutputStream)) wtr.Write(chr.FameStats.Serialize(Program.GameData, acc, chr, time, killer, firstBorn)); } }
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); } } byte[] status = null; string span = ""; switch (query["timespan"]) { case "week": span = "(time >= DATE_SUB(NOW(), INTERVAL 1 WEEK))"; break; case "month": span = "(time >= DATE_SUB(NOW(), INTERVAL 1 MONTH))"; break; case "all": span = "TRUE"; break; default: status = Encoding.UTF8.GetBytes("<Error>Invalid fame list</Error>"); break; } string ac = "FALSE"; if (query["accountId"] != null) ac = "(accId=@accId AND chrId=@charId)"; if (status == null) { XmlDocument doc = new XmlDocument(); var root = doc.CreateElement("FameList"); var spanAttr = doc.CreateAttribute("timespan"); spanAttr.Value = query["timespan"]; root.Attributes.Append(spanAttr); doc.AppendChild(root); using (var db = new Database(Program.Settings.GetValue("conn"))) { var cmd = db.CreateQuery(); cmd.CommandText = @"SELECT * FROM death WHERE " + span + @" OR " + ac + @" ORDER BY totalFame DESC LIMIT 10;"; if (query["accountId"] != null) { cmd.Parameters.AddWithValue("@accId", query["accountId"]); cmd.Parameters.AddWithValue("@charId", query["charId"]); } using (var rdr = cmd.ExecuteReader()) { while (rdr.Read()) { var elem = doc.CreateElement("FameListElem"); var accIdAttr = doc.CreateAttribute("accountId"); accIdAttr.Value = rdr.GetInt32("accId").ToString(); elem.Attributes.Append(accIdAttr); var chrIdAttr = doc.CreateAttribute("charId"); chrIdAttr.Value = rdr.GetInt32("chrId").ToString(); elem.Attributes.Append(chrIdAttr); root.AppendChild(elem); var nameElem = doc.CreateElement("Name"); nameElem.InnerText = rdr.GetString("name"); elem.AppendChild(nameElem); var objTypeElem = doc.CreateElement("ObjectType"); objTypeElem.InnerText = rdr.GetString("charType"); elem.AppendChild(objTypeElem); var tex1Elem = doc.CreateElement("Tex1"); tex1Elem.InnerText = rdr.GetString("tex1"); elem.AppendChild(tex1Elem); var tex2Elem = doc.CreateElement("Tex2"); tex2Elem.InnerText = rdr.GetString("tex2"); elem.AppendChild(tex2Elem); var skinElem = doc.CreateElement("Skin"); skinElem.InnerText = rdr.GetString("skin"); elem.AppendChild(skinElem); var equElem = doc.CreateElement("Equipment"); equElem.InnerText = rdr.GetString("items"); elem.AppendChild(equElem); var fameElem = doc.CreateElement("TotalFame"); fameElem.InnerText = rdr.GetString("totalFame"); elem.AppendChild(fameElem); } } } XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter wtr = XmlWriter.Create(context.Response.OutputStream)) doc.Save(wtr); } }
public void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); byte[] status = null; string span = ""; switch (query["timespan"]) { case "week": span = "(time >= DATE_SUB(NOW(), INTERVAL 1 WEEK))"; break; case "month": span = "(time >= DATE_SUB(NOW(), INTERVAL 1 MONTH))"; break; case "all": span = "TRUE"; break; default: status = Encoding.UTF8.GetBytes("<Error>Invalid fame list</Error>"); break; } string ac = "FALSE"; if (query["accountId"] != null) ac = "(accId=@accId AND chrId=@charId)"; if (status == null) { var doc = new XmlDocument(); XmlElement root = doc.CreateElement("FameList"); XmlAttribute spanAttr = doc.CreateAttribute("timespan"); spanAttr.Value = query["timespan"]; root.Attributes.Append(spanAttr); doc.AppendChild(root); using (var db = new Database()) { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = @"SELECT * FROM death WHERE " + span + @" OR " + ac + @" ORDER BY totalFame DESC LIMIT 20;"; if (query["accountId"] != null) { cmd.Parameters.AddWithValue("@accId", query["accountId"]); cmd.Parameters.AddWithValue("@charId", query["charId"]); } using (MySqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { XmlElement elem = doc.CreateElement("FameListElem"); XmlAttribute accIdAttr = doc.CreateAttribute("accountId"); accIdAttr.Value = rdr.GetInt32("accId").ToString(); elem.Attributes.Append(accIdAttr); XmlAttribute chrIdAttr = doc.CreateAttribute("charId"); chrIdAttr.Value = rdr.GetInt32("chrId").ToString(); elem.Attributes.Append(chrIdAttr); root.AppendChild(elem); XmlElement nameElem = doc.CreateElement("Name"); nameElem.InnerText = rdr.GetString("name"); elem.AppendChild(nameElem); XmlElement objTypeElem = doc.CreateElement("ObjectType"); objTypeElem.InnerText = rdr.GetString("charType"); elem.AppendChild(objTypeElem); XmlElement tex1Elem = doc.CreateElement("Tex1"); tex1Elem.InnerText = rdr.GetString("tex1"); elem.AppendChild(tex1Elem); XmlElement tex2Elem = doc.CreateElement("Tex2"); tex2Elem.InnerText = rdr.GetString("tex2"); elem.AppendChild(tex2Elem); XmlElement equElem = doc.CreateElement("Equipment"); equElem.InnerText = rdr.GetString("items"); elem.AppendChild(equElem); XmlElement fameElem = doc.CreateElement("TotalFame"); fameElem.InnerText = rdr.GetString("totalFame"); elem.AppendChild(fameElem); } } db.Dispose(); } var settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter wtr = XmlWriter.Create(context.Response.OutputStream)) doc.Save(wtr); } }
public override void HandleRequest(HttpListenerContext context) { NameValueCollection query; using (var rdr = new StreamReader(context.Request.InputStream)) query = HttpUtility.ParseQueryString(rdr.ReadToEnd()); MD5 md5Hash = MD5.Create(); string url = Program.Settings.GetValue("webUrl"); string accessKey = "name:" + query["guid"] + "pass:"******"password"]; string hash = GetMd5Hash(md5Hash, accessKey); using (var db = new Database(Program.Settings.GetValue("conn"))) { db.InsertEmail(query["guid"], query["password"], hash); MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "SELECT id, uuid, name, email FROM accounts WHERE uuid=@uuid"; cmd.Parameters.AddWithValue("@uuid", query["guid"]); using (MySqlDataReader rdr = cmd.ExecuteReader()) { if (!rdr.HasRows) return; rdr.Read(); string to = rdr.GetString("email").ToLower(); string from = "*****@*****.**"; var message = new MailMessage(from, to); message.Subject = "Email Verification for : " + rdr.GetString("uuid"); string htmlBody = @" <html> <body style='font-family: 'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif;font-size: 13px;line-height: 20px;color: #333;margin:0;padding:0;'> <table cellspacing='0' cellpadding='0' border='0' width='100%'> <tr style='background: #3f3f3f'> <td class='navbar navbar-inverse' align='center'> <table width='650px' cellspacing='0' cellpadding='3' class='container' style='width:auto;margin:0;padding:0;'> <tr class='navbar navbar-inverse'> <td><a style='margin:0px -3px;text-decoration:none;display: block;padding: 20px;font-size: 20px;font-weight: 200;color: rgb(241,241,241);text-shadow: 0px -1px 1px rgba(0, 0, 0, 0.55);' href='http://forum.kithio.com'>Forums</a></li></ul></td> </tr> </table> </td> </tr> <tr style='background: #d6d6d6;'> <td align='center'> <table width='650px' cellspacing='0' cellpadding='3' class='container' style='width:960px;margin-top:15px;'> <tr> <th colspan='2'><h1 style='margin: 10px 0px;font-family: inherit;font-weight: bold;line-height: 40px;font-size: 36px;color: inherit;text-rendering: optimizelegibility;margin-bottom: 35px;'>Email Verification</h1></th> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>Account Name : </p></td><td style='width:58%;'><b>" + rdr.GetString("uuid") + @"</b></td> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>Character Name : </p></td><td style='width:58%;'><b>" + rdr.GetString("name") + @"</b></td> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>Email Address : </p></td><td style='width:58%;'><b style='color:#0063CA;text-decoration:none;'>" + rdr.GetString("email") + @"</b></td> </tr> <tr> <td colspan='2' align='center'> <hr style='margin: 10px 0px;margin-top:35px;border-right: 0px none;border-left: 0px none;-moz-border-top-colors: none;-moz-border-right-colors: none;-moz-border-bottom-colors: none;-moz-border-left-colors: none;border-image: none;border-width: 1px 0px;border-style: solid none;border-color: #EEE -moz-use-text-color #FFF;'> <p style='line-height: 20px;color: #333;font-size: 13px;'> <a style='color: #0063CA;text-decoration: none;' href='http://" + url + @"/verify.php?email=" + rdr.GetString("email").Replace("@", "%40") + @"&key=" + hash + @"'> <b><h3 style='font-size: 24px;line-height: 40px;margin-top: 30px;margin-bottom:20px;'>Click Here to Verify your Email Address</h3></b> </a> </p> </td> </tr> </table> </td> </tr> <tr style='background: #d6d6d6;'> <td align='center'> <table width='650px' cellspacing='0' cellpadding='3' class='container' style='width:960px;'> <tr> <td align='center' style='font-size:12pt;'> <hr style='border-right: 0px none;border-left: 0px none;-moz-border-top-colors: none;-moz-border-right-colors: none;-moz-border-bottom-colors: none;-moz-border-left-colors: none;border-image: none;border-width: 1px 0px;border-style: solid none;border-color: #EEE -moz-use-text-color #FFF;'> <p style='height:80px;margin-bottom:35px;'><b>Copyright © 2014 | <a style='color: #0063CA;text-decoration:none;' href='http://forum.kithio.com'>Kithio</a></b></p> </td> </tr> </table> </td> </tr> </table> </body> </html> "; message.Body = htmlBody; message.IsBodyHtml = true; var client = new SmtpClient(); // Credentials are necessary if the server requires the client // to authenticate before it will send e-mail on the client's behalf. client.Port = 587; client.Host = "smtp.mandrillapp.com"; client.Credentials = new NetworkCredential("*****@*****.**", "xI7YXXrmtLC5BdwIEzsG0w"); try { client.Send(message); } catch (Exception e) { Console.WriteLine(e); } } } }
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); }*/ OfferList list = new OfferList(); using (var db = new Database(Program.Settings.GetValue("conn"))) { var acc = db.Verify(query["guid"], query["password"]); var cmd = db.CreateQuery(); cmd.CommandText = "SELECT * FROM market WHERE status=0 ORDER BY id DESC"; if (acc != null && query["filter"] == "mine") { cmd.CommandText = "SELECT * FROM market WHERE accId=@accId ORDER BY id DESC"; cmd.Parameters.AddWithValue("@accId", acc.AccountId); } ushort[] offerSearch = new ushort[0]; ItemData[] offerSearchD = new ItemData[0]; if (query["offerItems"] != null && query["offerItems"] != "") { offerSearch = Utils.FromCommaSepString16(query["offerItems"]); offerSearchD = new ItemData[offerSearch.Length]; if (query["offerData"] != "") offerSearchD = ItemDataList.CreateData(query["offerData"]); } ushort[] reqSearch = new ushort[0]; ItemData[] reqSearchD = new ItemData[0]; if (query["requestItems"] != null && query["requestItems"] != "") { reqSearch = Utils.FromCommaSepString16(query["requestItems"]); reqSearchD = new ItemData[reqSearch.Length]; if (query["requestData"] != "") reqSearchD = ItemDataList.CreateData(query["requestData"]); } using (var rdr = cmd.ExecuteReader()) if (rdr.HasRows) { while(rdr.Read()) { if (offerSearch.Length > 0) { List<ushort> offerItems = new List<ushort>(Utils.FromCommaSepString16(rdr.GetString("offerItems"))); ItemData[] offerData = ItemDataList.CreateData(rdr.GetString("offerData")); bool success = false; for (int i = 0; i < offerSearch.Length; i++) { int res = -1; if ((res = offerItems.IndexOf(offerSearch[i])) == -1) continue; if (offerSearchD[i] != null) { bool offerDataE = offerData[res] != null; if((offerSearchD[i].Strange && (!offerDataE || !offerData[res].Strange)) || (!offerSearchD[i].Strange && offerDataE && offerData[res].Strange)) continue; if (!offerSearchD[i].Strange && offerSearchD[i].NamePrefix != "") if (!offerDataE || (offerDataE && offerData[res].NamePrefix != offerSearchD[i].NamePrefix)) continue; if (offerSearchD[i].Effect != "" && (!offerDataE || (offerData[res].Effect != offerSearchD[i].Effect))) continue; } else if (offerData[res] != null) if (offerData[res].Strange || offerData[res].NamePrefix != "" || offerData[res].Effect != "") continue; success = true; break; } if (!success) continue; } if (reqSearch.Length > 0) { List<ushort> reqItems = new List<ushort>(Utils.FromCommaSepString16(rdr.GetString("requestItems"))); ItemData[] reqData = ItemDataList.CreateData(rdr.GetString("requestData")); bool success = false; for (int i = 0; i < reqSearch.Length; i++) { int res = -1; if ((res = reqItems.IndexOf(reqSearch[i])) == -1) continue; if (reqSearchD[i] != null) { bool reqDataE = reqData[res] != null; if ((reqSearchD[i].Strange && (!reqDataE || !reqData[res].Strange)) || (!reqSearchD[i].Strange && reqDataE && reqData[res].Strange)) continue; if (!reqSearchD[i].Strange && reqSearchD[i].NamePrefix != "") if (!reqDataE || (reqDataE && reqData[res].NamePrefix != reqSearchD[i].NamePrefix)) continue; if (reqSearchD[i].Effect != "" && (!reqDataE || (reqData[res].Effect != reqSearchD[i].Effect))) continue; } else if (reqData[res] != null) if (reqData[res].Strange || reqData[res].NamePrefix != "" || reqData[res].Effect != "") continue; success = true; break; } if (!success) continue; } list.Offers.Add(new Offer { Id = rdr.GetInt32("id"), AccId = rdr.GetInt32("accId"), Mine = acc != null ? rdr.GetInt32("accId") == acc.AccountId : false, Status = rdr.GetInt32("status"), _OfferItems = rdr.GetString("offerItems"), _OfferData = rdr.GetString("offerData"), _RequestItems = rdr.GetString("requestItems"), _RequestData = rdr.GetString("requestData") }); } } } if(query["filter"] != "mine" && query["filter"] != "searched") if (list.Offers.Count > 50) list.Offers.RemoveRange(50, list.Offers.Count - 50); var ms = new MemoryStream(); var serializer = new XmlSerializer(list.GetType(), new XmlRootAttribute("Offers") { Namespace = "" }); var xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; xws.Indent = true; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, list, list.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"))) { var cmd = db.CreateQuery(); string user = query["guid"]; string owner = ""; bool isOwner = false; cmd.CommandText = "SELECT guid FROM sprites WHERE id=@id LIMIT 1"; cmd.Parameters.AddWithValue("@id", query["id"]); using (MySqlDataReader rdr = cmd.ExecuteReader()) { if (!rdr.HasRows) return; rdr.Read(); owner = rdr.GetString("guid"); if (user == owner) { isOwner = true; } } byte[] status = Encoding.UTF8.GetBytes("<Error>You can't delete this sprite</Error>"); if (isOwner) { cmd = db.CreateQuery(); cmd.CommandText = "DELETE FROM sprites WHERE(id=@id AND guid=@guid) LIMIT 1"; cmd.Parameters.AddWithValue("@id", query["id"]); cmd.Parameters.AddWithValue("@guid", owner); if (cmd.ExecuteNonQuery() > 0) { status = Encoding.UTF8.GetBytes("<Success/>"); } context.Response.OutputStream.Write(status, 0, status.Length); return; } 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); } } Pics pics = new Pics(); pics.Offset = query["offset"] != null ? Convert.ToInt32(query["offset"]) : 0; pics.Pictures = new List<Pic>(); int count = 0; using(var db = new Database(Program.Settings.GetValue("conn"))) { var cmd = db.CreateQuery(); cmd.CommandText = "SELECT COUNT(id) FROM sprites"; count = ((int) (long) cmd.ExecuteScalar()); cmd = db.CreateQuery(); cmd.CommandText = "SELECT * FROM sprites"; using (MySqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { int id = rdr.GetInt32("id"); string guid = rdr.GetString("guid"); string name = rdr.GetString("name"); int dataType = rdr.GetInt32("dataType"); string[] tags = rdr.GetString("tags").Split(','); if (query["tags"] != null) { List<string> tagList = new List<string>(tags); bool succeded = true; foreach (var i in query["tags"].Trim().Split(',')) { if (!tagList.Contains(i.Trim())) succeded = false; } if (!succeded) continue; } if (query["dataType"] != null && Convert.ToInt32(query["dataType"]) != dataType) continue; if (query["guid"] != null) { //if (query["guid"] == "Admin") // continue; if (query["guid"] != guid) continue; } var pic = new Pic { Id = id, DataType = dataType, PicName = name, Tags = string.Join(",", tags) }; if (query["myGUID"] == guid) { pic.Mine = ""; } pics.Pictures.Add(pic); } } } int num = 0; if (query["offset"] != null) pics.Pictures.RemoveRange(0, (Convert.ToInt32(query["offset"]) > count) ? count : Convert.ToInt32(query["offset"])); if (query["num"] != null) if ((num = Convert.ToInt32(query["num"])) < count) pics.Pictures.RemoveRange(num, count - num); var ms = new MemoryStream(); var serializer = new XmlSerializer(pics.GetType(), new XmlRootAttribute(pics.GetType().Name) { Namespace = "" }); var xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; xws.Indent = true; XmlWriter xtw = XmlWriter.Create(context.Response.OutputStream, xws); serializer.Serialize(xtw, pics, pics.Namespaces); }
//download commands from the database private void download_commands() { MySqlConnection connection = new MySqlConnection(); connection.ConnectionString = ConnectionInfo.mysqlLogin; MySqlDataReader reader = null; MySqlCommand command = new MySqlCommand("SELECT * FROM `BotCommands`", connection); try { connection.Open(); reader = command.ExecuteReader(); while (reader.Read()) { list_of_commands.Add(new chat_command(reader.GetString(1), reader.GetString(2))); } } catch (MySql.Data.MySqlClient.MySqlException ex) { } finally { if (reader != null) { reader.Close(); } if (connection != null) { connection.Close(); } } }
public override void HandleRequest(HttpListenerContext context) { var rand = new Random(); 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; var password = CreatePassword(rand.Next(8, 12)); if (!db.HasEmail(query["email"])) status = Encoding.UTF8.GetBytes("<Error>Account not found</Error>"); else if (!IsValidEmail(query["email"])) status = Encoding.UTF8.GetBytes("<Error>Invalid email address</Error>"); else { MySqlCommand cmd = db.CreateQuery(); cmd.CommandText = "UPDATE accounts SET password=SHA1(@password) WHERE email=@email;"; cmd.Parameters.AddWithValue("@email", query["email"]); cmd.Parameters.AddWithValue("@password", password); if (cmd.ExecuteNonQuery() == 0) status = Encoding.UTF8.GetBytes("<Error>Could not reset account password!</Error>"); else { cmd = db.CreateQuery(); cmd.CommandText = "SELECT id, uuid, name, email FROM accounts WHERE email=@email"; cmd.Parameters.AddWithValue("@email", query["email"]); using (MySqlDataReader rdr = cmd.ExecuteReader()) { if (!rdr.HasRows) return; rdr.Read(); var to = rdr.GetString("email").ToLower(); const string @from = "*****@*****.**"; var message = new MailMessage(from, to) { Subject = "Email Verification for : " + rdr.GetString("name") }; string htmlBody = @" <html> <body style='font-family: 'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif;font-size: 13px;line-height: 20px;color: #333;margin:0;padding:0;'> <table cellspacing='0' cellpadding='0' border='0' width='100%'> <tr style='background: #3f3f3f'> <td class='navbar navbar-inverse' align='center'> <table width='650px' cellspacing='0' cellpadding='3' class='container' style='width:auto;margin:0;padding:0;'> <tr class='navbar navbar-inverse'> <td><a style='margin:0px -3px;text-decoration:none;display: block;padding: 20px;font-size: 20px;font-weight: 200;color: rgb(241,241,241);text-shadow: 0px -1px 1px rgba(0, 0, 0, 0.55);' class='brand' href='http://zerorealms.com'>Home Page</a></td> <td><a style='margin:0px -3px;text-decoration:none;display: block;padding: 20px;font-size: 20px;font-weight: 200;color: rgb(241,241,241);text-shadow: 0px -1px 1px rgba(0, 0, 0, 0.55);' href='http://forum.zerorealms.com'>Forums</a></li></ul></td> </tr> </table> </td> </tr> <tr style='background: #d6d6d6;'> <td align='center'> <table width='650px' cellspacing='0' cellpadding='3' class='container' style='width:960px;margin-top:15px;'> <tr> <th colspan='2'><h1 style='margin: 10px 0px;font-family: inherit;font-weight: bold;line-height: 40px;font-size: 36px;color: inherit;text-rendering: optimizelegibility;margin-bottom: 35px;'>Forgot Password</h1></th> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>Account Name : </p></td><td style='width:58%;'><b>" + rdr.GetString("uuid") + @"</b></td> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>Character Name : </p></td><td style='width:58%;'><b>" + rdr.GetString("name") + @"</b></td> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>Email Address : </p></td><td style='width:58%;'><b style='color:#0063CA;text-decoration:none;'>" + rdr.GetString("email") + @"</b></td> </tr> <tr style='height:80px;'> <td colspan='2' align='center' style='width:100%;'><p style='font-weight:600;color:#474747;'>A password reset has been requested for the account described above.<br />We've generated a new password for your account that is active immediately.<br />Please use the password shown below when you login.</p></td> </tr> <tr style='height:40px;'> <td align='right' style='width:42%;'><p style='font-weight:600;color:#474747;'>New Password : </p></td><td style='width:58%;'><b style='color:#0063CA;text-decoration:none;'>" + password + @"</b></td> </tr> </table> </td> </tr> <tr style='background: #d6d6d6;'> <td align='center'> <table width='650px' cellspacing='0' cellpadding='3' class='container' style='width:960px;'> <tr> <td align='center' style='font-size:12pt;'> <hr style='border-right: 0px none;border-left: 0px none;-moz-border-top-colors: none;-moz-border-right-colors: none;-moz-border-bottom-colors: none;-moz-border-left-colors: none;border-image: none;border-width: 1px 0px;border-style: solid none;border-color: #EEE -moz-use-text-color #FFF;'> <p style='height:80px;margin-bottom:35px;'><b>Copyright © 2013-2014 | <a style='color: #0063CA;text-decoration:none;' href='http://zerorealms.com'>ZeroRealms.com</a> - Lucifer</b></p> </td> </tr> </table> </td> </tr> </table> </body> </html>"; message.Body = htmlBody; message.IsBodyHtml = true; var client = new SmtpClient { Port = 587, Host = "smtp.mandrillapp.com", Credentials = new NetworkCredential("*****@*****.**", "xI7YXXrmtLC5BdwIEzsG0w") }; // Credentials are necessary if the server requires the client // to authenticate before it will send e-mail on the client's behalf. try { client.Send(message); return; } catch { return; } } } } 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.GetAccount(int.Parse(query["accountId"])); var chr = db.LoadCharacter(acc, int.Parse(query["charId"])); var cmd = db.CreateQuery(); cmd.CommandText = @"SELECT time, killer, firstBorn FROM death WHERE accId=@accId AND chrId=@charId;"; cmd.Parameters.AddWithValue("@accId", query["accountId"]); cmd.Parameters.AddWithValue("@charId", query["charId"]); int time; string killer; bool firstBorn; using (var rdr = cmd.ExecuteReader()) { rdr.Read(); time = Database.DateTimeToUnixTimestamp(rdr.GetDateTime("time")); killer = rdr.GetString("killer"); firstBorn = rdr.GetBoolean("firstBorn"); } using (StreamWriter wtr = new StreamWriter(context.Response.OutputStream)) wtr.Write(chr.FameStats.Serialize(acc, chr, time, killer, firstBorn)); } }