Exemplo n.º 1
0
        public Server(int port)
        {
            this.port    = port;
            activeTasks  = new List <Task>();
            usersHandler = new OnlineUsersHandler();
            isStarted    = false;

            try
            {
                certificate = SslTools.CreateCertificate(typeof(Server), "Server.Certificate.cert.pfx");
            }
            catch (CertificateException e)
            {
                log.Error("Can't create certificate. Server will not start.", e);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Try to login into user account.
        /// </summary>
        /// <param name="login">users login.</param>
        /// <param name="password">users password.</param>
        /// <returns>server's response.</returns>
        /// <exception cref="ConnectionInterruptedException"></exception>
        /// <exception cref="CertificateException"></exception>
        public async Task <LoginRegisterResponse> Login(string login, string password)
        {
            if (isLoggedIn)
            {
                return(LoginRegisterResponse.Error);
            }

            // certificate
            X509Certificate2 cert = SslTools.CreateCertificate(typeof(Client), "CryptoMessenger.Certificate.cert.pfx");

            await client.ConnectWithTimeoutAsync(ip, port, cert, Properties.Settings.Default.WaitServerConnectionDelayMsec);

            LoginRegisterResponseMessage serverResp;

            try
            {
                // send login request
                client.SendMessage(new LoginRequestMessage
                {
                    Login    = login,
                    Password = password
                });

                // async wait for server's response
                serverResp = (LoginRegisterResponseMessage)await client.ReceiveMessageAsync();
            }
            catch (ConnectionInterruptedException)
            {
                client.Close();
                throw;
            }

            // dont disconnect if login success
            if (LoginRegisterResponse.Success.Equals(serverResp.Response))
            {
                isLoggedIn = true;
                Name       = login;
            }
            else
            {
                client.Close();
            }

            return(serverResp.Response);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Try to register client on the server.
        /// </summary>
        /// <param name="login">users login.</param>
        /// <param name="password">users password.</param>
        /// <returns>server's response.</returns>
        /// <exception cref="ConnectionInterruptedException"></exception>
        /// <exception cref="CertificateException"></exception>
        public async Task <LoginRegisterResponse> Register(string login, string password)
        {
            if (isLoggedIn)
            {
                return(LoginRegisterResponse.Error);
            }

            // certificate
            X509Certificate2 cert = SslTools.CreateCertificate(typeof(Client), "CryptoMessenger.Certificate.cert.pfx");

            await client.ConnectWithTimeoutAsync(ip, port, cert, 5000);

            LoginRegisterResponseMessage serverResp;

            try
            {
                // send register request
                client.SendMessage(new RegisterRequestMessage
                {
                    Login    = login,
                    Password = password
                });

                // async wait for server's response
                serverResp = (LoginRegisterResponseMessage)await client.ReceiveMessageAsync();
            }
            catch (ConnectionInterruptedException)
            {
                throw;
            }
            finally
            {
                client.Close();
            }

            return(serverResp.Response);
        }