protected void LoginButton_Click(object sender, EventArgs e) { try { CryptoClass crypto = new CryptoClass(); String id = userIdTb.Text; String password = crypto.Encrypt(PasswordTb.Text); Assignment5ServiceRefs.Service1Client serviceRef = new Assignment5ServiceRefs.Service1Client(); if (serviceRef.checkUserCredentials(id, password)) { HttpCookie userCookies = new HttpCookie("userInfo"); userCookies["id"] = userIdTb.Text; userCookies.Expires = DateTime.Now.AddMonths(6); Response.Cookies.Add(userCookies); FormsAuthentication.RedirectFromLoginPage(userIdTb.Text, Persistent.Checked); Session["type"] = "member"; userCookies["type"] = "member"; Response.Redirect("~/MemberPages/Member.aspx"); } else { LoginErrorLbl.Text = "Invalid credentials!"; } } catch { LoginErrorLbl.Text = "Invalid credentials!"; } }
protected void LogInButton_Click(object sender, EventArgs e) { try { //Create object of Crypto class CryptoClass crypto = new CryptoClass(); String id = UserNameTb.Text; //Encrypt the password String password = crypto.Encrypt(PasswordTb.Text); //Create object of reference class Assignment5ServiceRefs.Service1Client serviceRef = new Assignment5ServiceRefs.Service1Client(); //get the role from the Staff.xml string role = serviceRef.checkUserCredentialsForStaff(id, password); //if the role is not empty if (!role.Equals("")) { //Create a cookie and store the user id HttpCookie userCookies = new HttpCookie("userInfo"); userCookies["id"] = UserNameTb.Text; //Cookie expires in 6 months userCookies.Expires = DateTime.Now.AddMonths(6); Response.Cookies.Add(userCookies); //Redirect to the staff page after authentication FormsAuthentication.RedirectFromLoginPage(UserNameTb.Text, Persistent.Checked); //Store the role in the session Session["type"] = role; userCookies["type"] = role; //If the role is staff, redirect to the staff page if (role.Equals("staff")) { Response.Redirect("~/StaffPage2/StaffPage.aspx"); } //else if the role is admin, redirect to the admin page else if (role.Equals("admin")) { Response.Redirect("~/StaffPage1/AdminPage.aspx"); } //else redirect to the public default page else { Response.Redirect("~/Default.aspx"); } } //Print error message if the credentials are invalid else { LoginErrorLbl.Text = "Invalid credentials!"; } } catch { LoginErrorLbl.Text = "Invalid credentials!"; } }
protected void signUpButton_Click(object sender, EventArgs e) { try { CryptoClass crypto = new CryptoClass(); Assignment5ServiceRefs.Service1Client serviceRef = new Assignment5ServiceRefs.Service1Client(); if (!UserIdTb.Text.ToString().Equals("") && !NameTb.Text.ToString().Equals("") && !PasswordTb.Text.ToString().Equals("") && !CardNoTb.Text.ToString().Equals("")) { String status = serviceRef.SignUpMembers(UserIdTb.Text, crypto.Encrypt(PasswordTb.Text), NameTb.Text, CardNoTb.Text); if (status.Equals("UserIdTaken")) { UserIdErrorLbl.Text = "User Id is already taken"; } else if (status.Equals("false")) { UserIdErrorLbl.Text = "An exception occured during sign up."; } else { Session["name"] = NameTb.Text; FormsAuthentication.RedirectFromLoginPage(NameTb.Text, true); Response.Redirect("~/MemberPages/Member"); } } else { if (UserIdTb.Text.ToString().Equals("")) { UserIdErrorLbl.Text = "User Id is required"; } if (NameTb.Text.ToString().Equals("")) { NameErrorLbl.Text = "Name is required"; } if (PasswordTb.Text.ToString().Equals("")) { PasswordErrorLbl.Text = "Password is required"; } if (CardNoTb.Text.ToString().Equals("")) { CardErrorLbl.Text = "Card Number is required"; } } } catch { UserIdErrorLbl.Text = "An exception occured during sign up."; } }
// трансляция сообщения подключенным клиентам protected internal void BroadcastMessage(string message, string id) { CryptoClass enc = new CryptoClass(); for (int i = 0; i < clients.Count; i++) { if (clients[i].Id != id) // если id клиента не равно id отправляющего { string en = enc.Encrypt(message, keys[i]); byte[] data = Encoding.Unicode.GetBytes(en); clients[i].Stream.Write(data, 0, data.Length); //передача данных } } }
protected internal void PrivateMessage(string polname, string otprname, string message)//личка { CryptoClass enc = new CryptoClass(); if (message != "") { message = otprname + ":" + message; } else { message = otprname; } int i = usernames.IndexOf(polname); Console.WriteLine(message); string en = enc.Encrypt(message, keys[i]); byte[] data = Encoding.Unicode.GetBytes(en); clients[i].Stream.Write(data, 0, data.Length); }
public void SendMessage(Enum enumElement, string message) { byte[] data; switch (enumElement) { case ClientKeys.FILEINFO: data = Encoding.Unicode.GetBytes(Cr.Encrypt(GetDescription(ClientKeys.FILEINFO) + message, key)); break; case ClientKeys.FILE: data = Encoding.Unicode.GetBytes(Cr.Encrypt(GetDescription(ClientKeys.FILE) + RemoveNulls(message), key)); break; case ClientKeys.FILEREMOVE: data = Encoding.Unicode.GetBytes(Cr.Encrypt(GetDescription(ClientKeys.FILEREMOVE) + message, key)); break; case ClientKeys.FILEACCEPT: data = Encoding.Unicode.GetBytes(Cr.Encrypt(GetDescription(ClientKeys.FILEACCEPT) + message, key)); break; case ClientKeys.FILEREADY: data = Encoding.Unicode.GetBytes(Cr.Encrypt(GetDescription(ClientKeys.FILEREADY), key)); break; case ClientKeys.AUTORISATION: data = Encoding.Unicode.GetBytes((int)ClientKeys.AUTORISATION + message); break; case ClientKeys.NULL: data = new byte[] { }; break; default: data = Encoding.Unicode.GetBytes(Cr.Encrypt(Convert.ToInt32(enumElement) + message, key)); break; } stream.Write(data, 0, data.Length); }
public void Process() { try { Stream = client.GetStream(); // получаем имя пользователя string message = GetMessage(); if (message[0] == '1') //регистрация { message = message.Remove(0, 1); if (!FileWrite(message).Result) //отклонение регистрации { byte[] reject = Encoding.Unicode.GetBytes("0"); Stream.Write(reject, 0, reject.Length); } } if (message[0] == '2') //авторизация { message = message.Remove(0, 1); if (FileRead(message).Result == 2) //обработать несколько юзеров с одним ником { CryptoClass enc = new CryptoClass(); key = enc.GetStringKey(); //генерация ключа server.Keys(key); Console.WriteLine(key); string keymess = "6" + key; byte[] keym = Encoding.Unicode.GetBytes(keymess); Stream.Write(keym, 0, keym.Length); //отправка ключа string[] name = message.Split(';'); //список юзеров userName = name[0]; user = userName; message = "8" + userName;//connect // посылаем сообщение о входе в чат всем подключенным пользователям server.BroadcastMessage(message, this.Id); //список всех юзеров для новоприбывшего string snames = "7"; server.Usernames(user); List <string> unames = server.Usrnms; for (int i = 0; i < unames.Count; i++) { snames += unames[i] + ";"; } snames = snames.Remove(snames.Length - 1); snames = enc.Encrypt(snames, key); byte[] lnames = Encoding.Unicode.GetBytes(snames); Stream.Write(lnames, 0, lnames.Length); Console.WriteLine(message.Remove(0, 1) + " вошёл в чат"); string[] info = new string[3]; //0 получатель файла, 1 имя.расширение файла, 2 размер файла while (true) //обмен сообщениями { try { message = GetMessage(); message = enc.Decrypt(message, key); if (message[0] == '3')//обычное сообщение { message = message.Remove(0, 1); message = String.Format("3" + userName + ":" + message); Console.WriteLine(message); server.BroadcastMessage(message, this.Id); } if (message[0] == '4')//личка { message = message.Remove(0, 1); string PrivateMsg = message.Substring(message.IndexOf(':') + 1); string PrivateName = message.Substring(0, message.IndexOf(':')); Console.WriteLine(this.userName + " для " + PrivateName + ": " + PrivateMsg); server.PrivateMessage(PrivateName, "4" + this.userName, PrivateMsg); } if (message[0] == 'h')//заголовок файла { message = message.Remove(0, 1); info = message.Split(':'); Console.WriteLine("файл от " + this.userName + " для " + info[0] + ": " + info[1] + " " + info[2]); server.PrivateMessage(info[0], "h" + this.userName, info[1] + ":" + info[2]); } if (message[0] == 'a')//принял передачу { message = message.Remove(0, 1); message = RemoveNulls(message); Console.WriteLine(this.userName + " принял файл от " + message); server.PrivateMessage(message, "a" + this.userName, ""); } if (message[0] == 'r')//отклонил передачу { message = message.Remove(0, 1); message = RemoveNulls(message); Console.WriteLine(this.userName + " отклонил файл от " + message); server.PrivateMessage(message, "r" + this.userName, ""); } if (message[0] == 'f')//приём файла { Console.WriteLine("прием"); message = message.Remove(0, 1); //message = RemoveKosyak(message); GetFile(info[1], message); } if (message[0] == 's')//приём файла { Console.WriteLine("отправка"); SendFile(info[0], info[1]); File.Delete(info[1]); } } catch { message = String.Format("9" + userName);//disconnect Console.WriteLine(message.Remove(0, 1) + " покинул чат"); server.BroadcastMessage(message, this.Id); break; } } } } // в бесконечном цикле получаем сообщения от клиента } catch (Exception e) { Console.WriteLine(e.Message); } finally { // в случае выхода из цикла закрываем ресурсы server.RemoveConnection(this.Id); Close(); } }