Beispiel #1
0
    private void LoginRequest(int connectionID, int recHostID, Net_LoginRequest lr)
    {
        string     loginToken = Utility.GenerateRandomToken(256);
        DB_Account account    = mdb.LoginAccount(connectionID, recHostID, lr.user, RSA.decrypt(lr.password, connectionKeys[connectionID]), loginToken);

        if (account != null)
        {
            //successful login

            //get appropriate sector ip
            string sectorIP = null;
            switch (account.Sector)
            {
            case SECTOR_CODE.REDSECTOR:
                sectorIP = "127.0.0.1";
                break;

            case SECTOR_CODE.NONE:
            default:
                break;
            }

            //update player connection id
            DB_Player player = mdb.FetchPlayerByUsernameAndDiscriminator(account.Username + "#" + account.Discriminator);
            player.Token = loginToken;
            mdb.updatePlayer(player);

            //respond to client
            SendClient(connectionID, recHostID, new Net_OnLoginRequest(1, account.Username, account.Discriminator, loginToken, sectorIP));
            //server log
            Debug.Log(string.Format("[Login Server]: {0}#{1} logged in.", account.Username, account.Discriminator));
        }
        else
        {
            //invalid login attempt
            //respond to client
            SendClient(connectionID, recHostID, new Net_OnLoginRequest(0, null, null, null, null));
            //respond to client
            Debug.Log(string.Format("[Login Server]: Invalid login attempt ({0}).", lr.user));
        }
    }