Exemple #1
0
        public async Task <Player> GetOrCreateAsync(PlayerCredentials playerCredentials)
        {
            using (var dbContext = _dbContextFactory.CreateDbContext())
            {
                var playerInDatabase = await GetAsync(playerCredentials.Username, dbContext);

                if (playerInDatabase == null)
                {
                    var defaultPlayer = new Player
                    {
                        Username   = playerCredentials.Username,
                        Password   = playerCredentials.Password,
                        Position   = new Position(3333, 3333, 0),
                        Appearance = Appearance.DefaultAppearance
                    };
                    dbContext.Attach(defaultPlayer);
                    dbContext.Add(defaultPlayer.Position);
                    dbContext.Add(defaultPlayer);
                    await dbContext.SaveChangesAsync();

                    return(defaultPlayer);
                }
                return(playerInDatabase);
            }
        }
Exemple #2
0
    public void LoginRequest(PlayerCredentials cred)
    {
        string data = JsonUtility.ToJson(cred);

        socket.Emit("player login", new JSONObject(data));
        Debug.Log("emit player login " + data);
    }
Exemple #3
0
    public void CreateAccountRequest(PlayerCredentials cred)
    {
        string data = JsonUtility.ToJson(cred);

        socket.Emit("player create_account", new JSONObject(data));
        Debug.Log("emit player create_account " + data);
    }
Exemple #4
0
    public async Task <bool> Login()
    {
        try
        {
            playerCredentials = GameObject.Find("Login").GetComponent <UserManager>().playerLoginCredentials;
            string              jsonText = JsonConvert.SerializeObject(playerCredentials);
            StringContent       data     = new StringContent(jsonText, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("Login", data);

            response.EnsureSuccessStatusCode();
            var tokenTemp = await response.Content.ReadAsStringAsync();

            if (tokenTemp != null)
            {
                if (token != string.Empty)
                {
                    client.DefaultRequestHeaders.Remove("Token");
                }
                token = tokenTemp;
                this.SetToken();
                Debug.Log("Successfull");
            }
            await this.GetPlayerID();

            return(true);
        }
        catch
        {
            Debug.Log("Login not successfull");
            return(false);
        }
    }
Exemple #5
0
        static void Main(string[] args)
        {
            InstalledGame     installedGame = new InstalledGame("D:\\Games\\MTGA");
            PlayerCredentials credentials   = new PlayerCredentials(installedGame.GetRefreshToken());

            // PlayerCredentials credentials = new PlayerCredentials("username", "password");
            Console.WriteLine("Authenticating...");
            bool verified = credentials.VerifyAsyncTask().GetAwaiter().GetResult();

            if (verified)
            {
                Console.WriteLine("Logged in!");
                _ticket = credentials.AccessToken;
                installedGame.SaveRefreshToken(credentials.RefreshToken);
            }
            else
            {
                Console.WriteLine("Invalid credentials!");
                Console.ReadKey();
                return;
            }

            DoYourThing();
            Console.ReadKey();
        }
        public ClientData RegisterPlayer(PlayerCredentials credentials)
        {
            ClientData player = new ClientData(Guid.NewGuid().ToString(), credentials.Name, credentials.Password);

            this.AllRegisteredPlayers.Add(player);

            return(player);
        }
Exemple #7
0
        private void ValidateUser(string name, byte[] passwordHash, Action <PlayerCredentials> callback)
        {
            PlayerCredentials credetials = GetCredentials(name);

            if (credetials == null)
            {
                callback(null);
                return;
            }
            callback(Equals(credetials.PasswordHash, passwordHash) ? credetials : null);
        }
Exemple #8
0
        public ServerLogic.ClientData RegisterPlayer(PlayerCredentials player)
        {
            if (this.manager.AllRegisteredPlayers.Any(client => client.Name == player.Name) || player.Name == string.Empty || player.Name == null || player.Password == string.Empty || player.Password == null)
            {
                // already registered or name/password not valid
                return(null);
            }

            var playermodel = this.manager.RegisterPlayer(player);

            return(playermodel);
        }
        public ActionResult <string> RegisterPlayer([FromBody] PlayerCredentials credentials)
        {
            this.UpdateData();
            ServerLogic.ClientData player = this.service.RegisterPlayer(credentials);
            if (player != null)
            {
                this.rep.RegisterPlayer(player);
                return(player.ID);
            }

            return(string.Empty);
        }
Exemple #10
0
        private void ValidateUser(string name, string password, Action <PlayerCredentials> callback)
        {
            PlayerCredentials credetials = GetCredentials(name);

            if (credetials == null)
            {
                callback(null);
                return;
            }

            byte[] passwordHash = GenerateHash(Encoding.UTF8.GetBytes(password), credetials.Salt, credetials.Iterations, HASH_LENGTH);
            callback(Equals(credetials.PasswordHash, passwordHash) ? credetials : null);
        }
Exemple #11
0
        public void CreatePlayer(Guid guid, string name, string password, Action <Error, Player, byte[]> callback)
        {
            PlayerCredentials credentials = GetCredentials(name);

            if (credentials != null)
            {
                callback(new Error(StatusCode.AlreadyExists), null, null);
                return;
            }

            if (string.IsNullOrWhiteSpace(password) || password.Length < 1)
            {
                callback(new Error(StatusCode.NotAllowed)
                {
                    Message = "Password required"
                }, null, new byte[0]);
                return;
            }

            byte[] salt = GenerateSalt(SALT_LENGTH);
            byte[] pwd  = GenerateHash(Encoding.UTF8.GetBytes(password), salt, ITERATIONS, HASH_LENGTH);

            const string sql = "INSERT INTO Player(PlayerId, Name, Password, Salt, Iterations) VALUES (@PlayerId, @Name, @Password, @Salt, @Iterations)";

            try
            {
                Db.Begin.ExecuteNonQuery(null, null, sql,
                                         Db.Get.Parameter("@PlayerId", guid),
                                         Db.Get.Parameter("@Name", name),
                                         Db.Get.Parameter("@Password", pwd),
                                         Db.Get.Parameter("@Salt", salt),
                                         Db.Get.Parameter("@Iterations", ITERATIONS));
                callback(new Error(StatusCode.OK),
                         new Player
                {
                    Name      = name,
                    BotType   = BotType.None,
                    Id        = guid,
                    Victories = 0,
                },
                         pwd);
            }
            catch (Exception e)
            {
                callback(new Error(StatusCode.UnhandledException)
                {
                    Message = e.ToString()
                }, null, new byte[0]);
            }
        }
        public ActionResult <string> LoginPlayer([FromBody] PlayerCredentials credentials)
        {
            this.UpdateData();
            string token = Guid.NewGuid().ToString();

            if (this.service.LoginPlayer(credentials, token) && this.rep.CheckIfPlayerExist(credentials.Name, credentials.Password, token))
            {
                this.rep.SetAllRegisteredPlayer(this.service.GetAllPlayers());
                this.UpdateData();
                return(token);
            }


            return(BadRequest(400));
        }
Exemple #13
0
    private async Task <bool> Register()
    {
        try
        {
            playerCredentials = GameObject.Find("Register").GetComponent <UserManager>().playerRegisterCredentials;
            string              jsonText = JsonConvert.SerializeObject(playerCredentials);
            StringContent       data     = new StringContent(jsonText, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("Register", data);

            response.EnsureSuccessStatusCode();
            string content = await response.Content.ReadAsStringAsync();

            playerCredentials.ID = content;
            return(true);
        }
        catch
        {
            Debug.Log("Register not successfull");
            return(false);
        }
    }
Exemple #14
0
    private PlayerCredentials LoadPlayer()
    {
        if (!File.Exists(SAVE_FILE))
        {
            return(null);
        }

        var parts = File.ReadAllLines(SAVE_FILE);

        if (parts.Length != 2)
        {
            return(null);
        }

        var playerCredentials = new PlayerCredentials();

        playerCredentials.ChilliConnectId     = parts[0];
        playerCredentials.ChilliConnectSecret = parts[1];

        return(playerCredentials);
    }
Exemple #15
0
        static async Task Login()
        {
            InstalledGame game  = new InstalledGame("");
            string        token = game.GetRefreshToken();

            PlayerCredentials credentials;

            if (token != null)
            {
                credentials = new PlayerCredentials(token);
            }
            else
            {
                Console.WriteLine("Please login (or try to launch the game once)");
                Console.Write("Email: ");
                string email = Console.ReadLine();
                Console.Write("Password: "******"[!] Authentication failed!");

                // if we tried to login using a token, it's probably expired
                if (token != null)
                {
                    Console.WriteLine("Please launch your game, login once and then run this tool again!");
                }

                Console.ReadKey();
                Environment.Exit(0);
            }

            _ticket = credentials.AccessToken;
        }
        public bool LoginPlayer(PlayerCredentials credentials, string token)
        {
            ClientData player = this.AllRegisteredPlayers.Where(x => x.Name == credentials.Name && x.Password == credentials.Password).FirstOrDefault();

            if (player == null)
            {
                return(false);
            }

            this.AllRegisteredPlayers.Where(x => x.Name == credentials.Name && x.Password == credentials.Password).FirstOrDefault().Token = token;

            if (this.LoggedPlayers.Where(x => x.Name == credentials.Name && x.Password == credentials.Password).FirstOrDefault() != null)
            {
                this.LoggedPlayers.Where(x => x.Name == credentials.Name && x.Password == credentials.Password).FirstOrDefault().Token = token;
                return(true);
            }

            player.Token = token;
            this.LoggedPlayers.Add(player);

            return(true);
        }
 // Start is called before the first frame update
 void Start()
 {
     this.playerLoginCredentials    = new PlayerCredentials();
     this.playerRegisterCredentials = new PlayerCredentials();
 }
Exemple #18
0
 public bool LoginPlayer(PlayerCredentials player, string token)
 {
     return(this.manager.LoginPlayer(player, token));
 }
Exemple #19
0
        /// <summary>
        /// Decodes the payload state.
        /// </summary>
        /// <param name="ctx">The ctx.</param>
        /// <param name="buffer">The buffer.</param>
        /// <param name="output">The output.</param>
        private void DecodePayload(IChannelHandlerContext ctx, IByteBuffer buffer, List <object> output)
        {
            if (buffer.ReadableBytes >= _loginLength)
            {
                IByteBuffer payload = buffer.ReadBytes(_loginLength);
                var         version = 255 - payload.ReadByte();

                var release = payload.ReadShort();

                var memoryStatus = payload.ReadByte();
                if (memoryStatus != 0 && memoryStatus != 1)
                {
                    _logger.Information("Login memoryStatus ({0}) not in expected range of [0, 1].", memoryStatus);
                    WriteResponseCode(ctx, LoginStatus.StatusLoginServerRejectedSession);
                    return;
                }

                var lowMemory = memoryStatus == 1;

                var crcs = new int[Constants.ArchiveCount];
                for (var index = 0; index < Constants.ArchiveCount; index++)
                {
                    crcs[index] = payload.ReadInt();
                }

                var length = payload.ReadByte();
                if (length != _loginLength - 41)
                {
                    _logger.Information("Login packet unexpected length ({0})", length);
                    WriteResponseCode(ctx, LoginStatus.StatusLoginServerRejectedSession);
                    return;
                }

                /*
                 * var secureBytes = payload.ReadBytes(length);
                 * var value = new BigInteger(secureBytes.Array.Take(length).ToArray());
                 *
                 * RSA?
                 * value = BigInteger.ModPow(value, Constants.RSA_MODULUS, Constants.RSA_EXPONENT);
                 * var secureBuffer = Unpooled.WrappedBuffer(value.ToByteArray());
                 */


                var id = payload.ReadByte();
                if (id != 10)
                {
                    _logger.Information("Unable to read id from secure payload.");
                    WriteResponseCode(ctx, LoginStatus.StatusLoginServerRejectedSession);
                    return;
                }


                var clientSeed   = payload.ReadLong();
                var reportedSeed = payload.ReadLong();
                if (reportedSeed != _serverSeed)
                {
                    _logger.Information("Reported seed differed from server seed.");
                    WriteResponseCode(ctx, LoginStatus.StatusLoginServerRejectedSession);
                    return;
                }

                var uid           = payload.ReadInt();
                var username      = payload.ReadString();
                var password      = payload.ReadString();
                var socketAddress = (IPEndPoint)ctx.Channel.RemoteAddress;
                var hostAddress   = socketAddress.Address.ToString();

                var seed = new int[4];
                seed[0] = (int)(clientSeed >> 32);
                seed[1] = (int)clientSeed;
                seed[2] = (int)(_serverSeed >> 32);
                seed[3] = (int)_serverSeed;

                var decodingRandom = new IsaacRandom(seed);
                for (int index = 0; index < seed.Length; index++)
                {
                    seed[index] += 50;
                }

                var encodingRandom = new IsaacRandom(seed);

                var credentials = new PlayerCredentials
                {
                    Username        = username,
                    Password        = password,
                    EncodedUsername = _usernameHash,
                    Uid             = uid,
                    HostAddress     = hostAddress,
                };

                var randomPair = new IsaacRandomPair(encodingRandom, decodingRandom);
                var request    = new Rs2LoginRequest
                {
                    Credentials   = credentials,
                    RandomPair    = randomPair,
                    Reconnecting  = _reconnecting,
                    LowMemory     = lowMemory,
                    ReleaseNumber = release,
                    ArchiveCrcs   = crcs,
                    ClientVersion = version,
                    OnResult      = (loginTask) => WriteProcessorResponseAsync(loginTask, ctx, randomPair)
                };

                _loginProcessor.Enqueue(request);
            }
        }
Exemple #20
0
 async Task <Player> IPlayerRepository.GetOrCreateAsync(PlayerCredentials playerCredentials)
 {
     return(await GetOrCreateAsync(playerCredentials));
 }