예제 #1
0
 /*
  * Метод реализует сборку страницы для произведения вычислений на стороне клиента.
  * Идентификатор пользователя берется из значения сессии.
  * Входные параметры:
  * 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"));
     }
 }
예제 #2
0
        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"));
            }
        }