Exemplo n.º 1
0
 public static void ExportToIP(string path, TeacherVM teacher)
 {
     IPConverter.Convert(Context.EntitiesVmRegistry, path, teacher);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Returns true when succesful, false otherwise
        /// </summary>
        /// <param name="gametime"></param>
        /// <returns></returns>
        private async Task <LoginResult> Login(IGameTimeService gametime, int maxNumTries = 5)
        {
            int numTries = 0;

            _loggingIn = true;
#if DEVELOPMENT
            if (Debugging.Autologin)
            {
                await Task.Delay(8000);

                Username     = Debugging.AutoLoginName;
                Password     = Debugging.AutoLoginPassword;
                ReadyToLogin = true;
                Console.WriteLine("Autologin attempt as " + Debugging.AutoLoginName);
            }
            else
            {
                Console.Write("ENTER USERNAME: "******"ENTER PASSWORD: "******"Logging in...";


                string response = await _clientManager.ConnectToURI(_buildLoginRequest(_loginConfig.LoginIP, _loginConfig.LoginPort, Username, Password));

                if (response == null)
                {
                    //Something went wrong...figure out how to deal with this later, if necessary
                    LoginDisplayMessage = "Something went wrong...";
                    _isLoggedIn         = false;
                    _loggingIn          = false;
                    return(LoginResult.UnknownFailure);
                }
                else if (response == "timeout")
                {
                    //Response timed out, try again
                    numTries++;
                }
                else
                {
                    LoginResponse lr = JsonConvert.DeserializeObject <LoginResponse>(response);
                    EncryptionKey = lr.Key;
                    EncryptionIV  = lr.IV;
                    Console.WriteLine("Login Response, " + lr.Result);

                    if (lr.Result == LoginResult.Success)
                    {
                        string IPAddress = IPConverter.Convert(lr.ServerIP);
                        bool   connected = false;


                        await Task.Run(() =>
                        {
                            //_clientManager.ConnectToMasterServer(_loginConfig.MasterServerIP, _loginConfig.MasterServerPort);
                            connected = _clientManager.ConnectToSlaveServer(IPAddress, lr.ServerPort, lr.HailMessage, Username, Password, 2000);
                        });

                        if (!connected)
                        {
                            _loggingIn          = false;
                            ReadyToLogin        = false;
                            LoginDisplayMessage = "Could not connect to server.";
                            Console.WriteLine("Could not connect to slave. Connection refused? Ensure that networking is being updated.");
                        }

                        _loggingIn   = false;
                        _isLoggedIn  = true;
                        ReadyToLogin = false;
                        return(LoginResult.Success);
                    }
                    else
                    {
                        if (lr.Result == LoginResult.InvalidUsernameOrPassword)
                        {
                            LoginDisplayMessage = "Invalid username or password.";
                        }
                        else if (lr.Result == LoginResult.AlreadyLoggedOn)
                        {
                            LoginDisplayMessage = "User is already logged on!";
                        }
                        else if (lr.Result == LoginResult.AlreadyPending)
                        {
                            //Ideally the user won't ever see this case...
                            LoginDisplayMessage = "User is already attempting to log on!";
                        }

                        _loggingIn   = false;
                        ReadyToLogin = false;
                        return(lr.Result);
                    }
                }
            }


            //All requests timed out, reset state
            _loggingIn          = false;
            ReadyToLogin        = false;
            LoginDisplayMessage = "Request timeout. Check your internet connection.";
            return(LoginResult.MaxTimeoutsExceeded);
        }