Example #1
0
        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();
        }
Example #2
0
        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");
            }
        }
Example #3
0
        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));
        }
Example #4
0
        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";
                }
            }
        }
Example #7
0
        /// <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");
        }