static void Main(string[] args) { theEnd = false; clientPool = new ClientPool(); tcpListener = new TcpListener(IPAddress.Any, listenPort); dataBase = new LiteDatabase(dbName); dataBaseCollection = dataBase.GetCollection <User>("users"); JsonClassRequest jcr = new JsonClassRequest(); //BazaInit(); userDatabaseOperations = new UserDatabaseOperations(dataBase, dataBaseCollection); tcpListener.Start(); while (true) { Listener(); if (theEnd == true) { break; } } Console.ReadKey(); tcpListener.Stop(); }
private async void bRegister_Click(object sender, RoutedEventArgs e) { if (String.IsNullOrEmpty(tNazwisko.Text)) { validation = false; } if (String.IsNullOrEmpty(tImie.Text)) { validation = false; } if (String.IsNullOrEmpty(tLogin.Text)) { validation = false; } if (!password.Password.Equals(passwordConfirm.Password)) { validation = false; } if (validation == true) { newUser.PasswordHash = HashPassword(password.Password); JsonClassRequest request = new JsonClassRequest() { RID = 10133, RequestCode = (int)RequestsCodes.REGISTER, Parameters = new List <string>() { newUser.Login, newUser.Name, newUser.SecondName, newUser.PasswordHash } }; string json = JsonConvert.SerializeObject(request); var x = await ConnectToServer(json); var register = JsonConvert.DeserializeObject <JsonClassResponse <string> >(x); MessageBox.Show(register.Response); if (register.Response.Equals("OK")) { this.Close(); } else { MessageBox.Show("Podany login jest już wykorzystywany"); } } else { MessageBox.Show("Niepoprawne dane"); } }
public static string TakeClientRequest(JsonClassRequest jsonRequest, IPAddress ipaddress) { string login = jsonRequest.Parameters[0]; string password = jsonRequest.Parameters[1]; var userLogin = userDatabaseOperations.TryToLoginUser(login, password, ipaddress.ToString()); JsonClassResponse <UserLogin> response = new JsonClassResponse <UserLogin> { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.WELCOME, Response = userLogin, }; return(JsonConvert.SerializeObject(response)); }
public static void Listener() { Console.WriteLine("Połączono"); using (var tcpClient = tcpListener.AcceptTcpClient()) { if (tcpClient.Connected) { while (true) { var stream = tcpClient.GetStream(); var reader = new StreamReader(tcpClient.GetStream(), Encoding.UTF8); var writer = new StreamWriter(tcpClient.GetStream(), Encoding.UTF8); writer.AutoFlush = true; string json = ""; if (reader != null && (json = reader.ReadLine()) != null) { JsonClassRequest jsonRequest = JsonConvert.DeserializeObject <JsonClassRequest>(json); string responseString = ""; if (jsonRequest.RequestCode == (int)RequestsCodes.HELLO) { IPEndPoint ipep = (IPEndPoint)tcpClient.Client.RemoteEndPoint; IPAddress ipa = ipep.Address; responseString = TakeClientRequest(jsonRequest, ipa); } else { responseString = TakeClientRequest(jsonRequest); } Console.WriteLine(responseString); writer.WriteLine(responseString); break; } else { break; } } } } Console.WriteLine("OK"); }
private async void bConnection_Click(object sender, RoutedEventArgs e) { if (!connected) { var selectedFriend = (UserInfo)listFriends.SelectedItem; if (selectedFriend != null) { JsonClassRequest request = new JsonClassRequest() { RID = rnd.Next(1000, 5000), RequestCode = (int)RequestsCodes.CALL, Parameters = new List <string>() { myLogin.SessionID.ToString(), myLogin.Id.ToString(), selectedFriend.Id.ToString() } }; string json = JsonConvert.SerializeObject(request); var x = await ConnectToServer(json); var response = JsonConvert.DeserializeObject <JsonClassResponse <UserInfo> >(x); if (response.RequestCode == (int)RequestsCodes.OK) { send_to_address = IPAddress.Parse(response.Response.ActualIP); StartSendUDP(); StartListenUDP(); } } else { MessageBox.Show("Nie wybrano użytkownika"); } } else { waveSource.StopRecording(); connected = false; bConnection.Content = "Połącz"; } }
private async void bLogin_Click(object sender, RoutedEventArgs e) { JsonClassRequest request = new JsonClassRequest() { RID = rand.Next(1000, 3000), RequestCode = (int)RequestsCodes.HELLO, Parameters = new List <string>() { textNick.Text, HashPassword(passwordBox.Password) } }; string json = JsonConvert.SerializeObject(request); var x = await ConnectToServer(json); if (x.Equals("error")) { MessageBox.Show("Brak połączenia z serwerem"); } else { var login = JsonConvert.DeserializeObject <JsonClassResponse <UserLogin> >(x); UserLogin userLogin = login.Response; myLogin = userLogin; //MessageBox.Show(userLogin.Id.ToString()); if (!userLogin.SessionID.Equals(new Guid())) { this.DialogResult = true; } else { lInfo.Content = "Podano błędne dane"; } } }
/// <summary> /// Przetważa żądanie klietnta wywołując odpowiednią metodę z UserDatabaseOperations. /// </summary> /// <param name="IpAddres">Adres IP klienta</param> /// <param name="data">dane</param> public static string TakeClientRequest(JsonClassRequest jsonRequest) { var userInfoNO_Response = JsonConvert.SerializeObject(new JsonClassResponse <UserInfo>() { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.NO, Response = null }); requestCode = (RequestsCodes)jsonRequest.RequestCode; switch (requestCode) { case RequestsCodes.REGISTER: { string login = jsonRequest.Parameters[0]; string firstName = jsonRequest.Parameters[1]; string secondName = jsonRequest.Parameters[2]; string hashPassword = jsonRequest.Parameters[3]; if (userDatabaseOperations.TryRegisterNewUser(firstName, secondName, login, hashPassword, "")) { return(JsonConvert.SerializeObject(new JsonClassResponse <string> { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.OK, Response = UserDatabaseOperations.RETURN_OK })); } else { return(JsonConvert.SerializeObject(new JsonClassResponse <string> { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.NO, Response = UserDatabaseOperations.RETURN_NO })); } } case RequestsCodes.HELLO: { string login = jsonRequest.Parameters[0]; string password = jsonRequest.Parameters[1]; var userLogin = userDatabaseOperations.TryToLoginUser(login, password); JsonClassResponse <UserLogin> response = new JsonClassResponse <UserLogin> { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.WELCOME, Response = userLogin, }; return(JsonConvert.SerializeObject(response)); } case RequestsCodes.ADD_FRIEND_TO_LIST: { } break; case RequestsCodes.CHANE_USER_DATA: break; case RequestsCodes.CHANGE_USER_PASSWORD: break; case RequestsCodes.LOOK_FOR_USER_BY_NAME: break; case RequestsCodes.LOOK_FOR_USER_BY_LOGIN: { string login = jsonRequest.Parameters[0]; var user = userDatabaseOperations.LookForUser(login); int responseCode = 0; if (user != null) { responseCode = (int)RequestsCodes.OK; } else { responseCode = (int)RequestsCodes.NO; } JsonClassResponse <UserInfo> response = new JsonClassResponse <UserInfo> { RID = jsonRequest.RID, RequestCode = responseCode, Response = user, }; } break; case RequestsCodes.LOGOUT: { Guid sessionId = new Guid(); Guid.TryParse(jsonRequest.Parameters[0], out sessionId); int userId = 0; int.TryParse(jsonRequest.Parameters[1], out userId); int friendId = 0; int.TryParse(jsonRequest.Parameters[2], out friendId); userDatabaseOperations.LogoutUser(sessionId, userId); } break; case RequestsCodes.WELCOME: break; case RequestsCodes.CALL: { Guid sessionId = new Guid(); Guid.TryParse(jsonRequest.Parameters[0], out sessionId); int userId = 0; int.TryParse(jsonRequest.Parameters[1], out userId); int friendId = 0; int.TryParse(jsonRequest.Parameters[2], out friendId); UserInfo friend = userDatabaseOperations.CallToUser(sessionId, userId, friendId); if (friend != null) { if (friend.ActualIP != UserDatabaseOperations.RETURN_NO) { var user = userDatabaseOperations.FindOneUser(sessionId, userId); JsonClassResponse <UserInfo> jsonResponse = new JsonClassResponse <UserInfo> { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.RINGING, Response = UserInfo.Convert(user) }; var friendResponse = Ring(friend.ActualIP, ClientPort, JsonConvert.SerializeObject(jsonResponse)); if (friendResponse == (int)RequestsCodes.OK) { return(JsonConvert.SerializeObject(new JsonClassResponse <UserInfo>() { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.OK, Response = friend })); } else { return(userInfoNO_Response); } } else { return(userInfoNO_Response); } //JsonClassResponse<UserInfo> jsonFriendResponse = JsonConvert.DeserializeObject<JsonClassResponse<UserInfo>>(friendResponse); //if(jsonFriendResponse.RequestCode == (int)RequestsCodes.OK) { // return friendResponse; //} //else { // return //} } else { JsonClassResponse <UserInfo> jsonNOResponse = new JsonClassResponse <UserInfo> { RID = jsonRequest.RID, RequestCode = (int)RequestsCodes.RINGING, Response = null }; return(JsonConvert.SerializeObject(jsonNOResponse)); } } case RequestsCodes.RINGING: break; case RequestsCodes.OK: break; case RequestsCodes.BYE: break; case RequestsCodes.NO: break; default: break; } return("dd"); }