/* * Метод реализует сборку страницы для произведения вычислений на стороне клиента. * Идентификатор пользователя берется из значения сессии. * Входные параметры: * 1) Строка с идентификатором задачи. В строке должно находиться целое неотрицательное число или -1. * По умолчанию стоит -1, что обозначает, что нужный идентификатор не был установлен. * Все прочие значения являются ошибкой. * 2) Строка с именем функции. Имя функции может быть произвольной строкой содержащей печатные символы. * По умолчанию стоит -1, что обозначает, что нужное имя не было установлено. * Все прочие значения являются ошибкой. * Выходные параметры: * ActionResult, с помощью которого пользователь перенаправляется на страницу Master. * Если в ходе работы произошли ошибки, выводится сообщение об этом. * Побочные эффекты: * В ходе выполнения метода: * 1) может модифицироваться файл /App_Data/log.txt; * 2) устанавливается время последней активности пользователя. */ public ActionResult Calculation(string task = "-1", string func = "-1") { try { Models.DatabaseMediator db = new Models.DatabaseMediator(System.Web.HttpContext.Current.Server.MapPath("~")); db.setUserLastActivity((int)System.Web.HttpContext.Current.Session["user_id"], DateTime.UtcNow); db.close(); if (task != "-1" && func != "-1") { string taskFile = "/Content/data/" + task + ".js"; string funcFile = "/Content/func/" + func + ".js"; string html = "<script src=\"" + taskFile + "\"> </script>"; html += "<script src=\"" + funcFile + "\"> </script>"; html += "<script src=\"/Scripts/client_calc.js\"> </script>"; html += "<script> makeCalculation(\"" + task + "\"); </script>"; return(Content(html)); } return(View("Master")); } catch (Exception e) { System.IO.File.AppendAllText(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/log.txt"), e.Message); ViewBag.MessagerFromControl = "Произошла ошибка, зайдите позже."; return(View("Master")); } }
public ActionResult Login(string username, string password) { try { SHA256Managed hash = new SHA256Managed(); byte[] hashBytes = hash.ComputeHash(Encoding.UTF8.GetBytes(username + password)); string hashStr = BitConverter.ToString(hashBytes).Replace("-", ""); System.IO.StreamReader file = new System.IO.StreamReader(new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Users.txt"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)); string line; while ((line = file.ReadLine()) != null) { if (line != "") { string[] logins = line.Split(' '); if (hashStr == logins[1]) { Models.DatabaseMediator db = new Models.DatabaseMediator(System.Web.HttpContext.Current.Server.MapPath("~"));//обращаемся к базе Models.User u = db.getUserByLogin(logins[0]); db.setUserLastActivity(u.getId(), DateTime.UtcNow); System.Web.HttpContext.Current.Session["user_id"] = u.getId(); //выцыганиваем id из базы HttpContext.Response.Cookies["user"].Value = "id=" + u.getId().ToString(); db.close(); //закрыли базу FormsAuthentication.SetAuthCookie(username, false); HttpContext.Response.Cookies["login"].Value = username; System.IO.StreamReader file1 = new System.IO.StreamReader(new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/OnlineUsers.txt"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)); List <KeyValuePair <string, string> > users = new List <KeyValuePair <string, string> >(); string line1; while ((line1 = file1.ReadLine()) != null) { if (line1 != "") { string[] str = line1.Split(' '); users.Add(new KeyValuePair <string, string>(str[0], str[1])); } } file1.Close(); System.IO.StreamWriter file2 = new System.IO.StreamWriter(new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/OnlineUsers.txt"), FileMode.Truncate, FileAccess.ReadWrite, FileShare.ReadWrite)); users.Add(new KeyValuePair <string, string>(username, Request.UserHostAddress)); string result = ""; foreach (var str in users) { result += str.Key + " " + str.Value + "\n"; } file2.Write(result); file2.Close(); file.Close(); return(View("Master")); } } } file.Close(); return(View("Index")); } catch (Exception e) { System.IO.File.AppendAllText(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/log.txt"), e.Message); ViewBag.MessagerFromControl = "Произошла ошибка, зайдите позже."; return(View("Index")); } }