Ejemplo n.º 1
0
 public void OnLoginResponse(LoginResponsePacket packet)
 {
     UnityClient.Player.SessionId = packet.SessionId;
     UnityClient.Player.UID       = packet.UserId;
     Debug.Log("Logged in userid " + packet.UserId);
     LoginScreen.Kill();
 }
Ejemplo n.º 2
0
        private void MsgLoginResponse(LoginResponsePacket packet)
        {
            if (packet.Response == CommLoginReason.Success)
            {
                Logger.WriteLog(LogType.Network, "Successfully authenticated with the Auth server!");
                return;
            }

            AuthCommunicator?.Close();
            AuthCommunicator = null;

            Logger.WriteLog(LogType.Error, "Could not authenticate with the Auth server! Shutting down internal communication!");
        }
Ejemplo n.º 3
0
        void ServerConnection_OnPacket(LoginResponsePacket packet)
        {
            LoginResponse resp = ((LoginResponsePacket)packet).LoginResponse;

            InvokeOnMessage("Admin Login {1}: {0}", resp, resp == LoginResponse.OK ? "Success" : "Failed");
            if (resp != LoginResponse.OK)
            {
                UOClient.Disconnect();
            }
            else
            {
                RunGetServerInfo();
            }
        }
Ejemplo n.º 4
0
 private void handleLoginResponse(LoginResponsePacket packet)
 {
     if (packet.success)
     {
         Console.WriteLine("You are now logged in!");
         // User succeed to login
         UIManager.Instance.loginForm.Close();
         ChatManager.Instance.Launch(packet.token, packet.rank, packet.username);
         Client.Instance.registerToken(packet.token);
     }
     else
     {
         UIManager.Instance.loginForm.ErrorLogin(packet.message);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="packet"></param>
        private void OnLoginPacket(object sender, LoginPacketArgs loginPacketArgs)
        {
            var packet   = loginPacketArgs.Packet;
            var username = Encoding.UTF8.GetString(packet.Username);
            var password = Encoding.UTF8.GetString(packet.Password);

            if (IsValidLogin(username, password))
            {
                // Send a LoginResponse packet to the client, broadcast a NewPlayer packet to the server
                var response = new LoginResponsePacket
                {
                    MsgType           = (byte)Packets.LoginResponsePacket,
                    LoginResponseCode = (byte)LoginResponseCode.Success
                };
                NetworkServer.SendResponsePacket(loginPacketArgs.NetEvent.Peer, response);
            }
        }
Ejemplo n.º 6
0
        internal object HandleRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, LoginRequestPacket packet)
        {
            string errMsg  = Program.ChatServerModel.Login(packet.Username, serverConnectorContext);
            bool   retcode = errMsg == null;

            if (retcode == true)
            {
                Program.ChatServerModel.JoinGroup("Lobby", serverConnectorContext.Id.ToString());
            }

            var resPacket = new LoginResponsePacket()
            {
                RetCode = retcode,
                Message = retcode ? "Login OK" : errMsg
            };

            return(resPacket);
        }
Ejemplo n.º 7
0
 private void Authenticate(ErrorsType type, LoginRequestDataPacket request)
 {
     if (type == ErrorsType.NoError)
     {
         Id = request.Identifier;
         LoginResponsePacket packet = new LoginResponsePacket();
         SendPacket(packet);
         LogFactory.GetLog(server.Name).LogInfo($"[SESSION] [AUTHENTICATE STATUS: {type.ToString()}].");
     }
     else
     {
         LoginErrorResponsePacket packet = new LoginErrorResponsePacket {
             Identifier = 0, Error = type
         };
         SendPacket(packet);
         LogFactory.GetLog(server.Name).LogInfo($"[SESSION] [AUTHENTICATE STATUS: {type.ToString()}].");
     }
 }
Ejemplo n.º 8
0
    private void handleLoginResponsePacket(LoginResponsePacket loginResponsePacket)
    {
        if (loginResponsePacket.status == Enums.ResponseStatus.OK &&
            loginResponsePacket.pid > 0)
        {
            Debug.LogWarning("Succeed to login LangQuat server");
            // make a referrence to the CubeiaClient
            GameApplication.cubeia = this;

            GameApplication.user    = new User();
            GameApplication.user.id = loginResponsePacket.pid;

            // TODO: for test
            sendSelectGame();

            // go to the next scene
//			Application.LoadLevel("LobbyScene");
        }
    }
        private void handleLogin(LoginPacket p, Client client)
        {
            LoginResponsePacket packet = new LoginResponsePacket();

            try
            {
                // Log in with username password
                packet.token = UserManager.Instance.tryConnectUser(p.username, p.password, client);

                try
                {
                    packet.rank     = UserManager.Instance.getUserRank(packet.token);
                    packet.message  = "";
                    packet.username = p.username;
                    packet.success  = true;
                }
                catch (Exception e)
                {
                    packet.success = false;
                    packet.message = e.Message;
                    packet.rank    = -1;
                }
            } catch (Exception e)
            {
                if (e is WrongCredentialsException)
                {
                    e = (WrongCredentialsException)e;
                }

                else if (e is TokenExistingException)
                {
                    e = (TokenExistingException)e;
                }

                Console.WriteLine("[Auth] Failed to connect client : " + p.username);
                Console.WriteLine("[ERROR] " + e.Message);
                packet.success = false;
                packet.message = e.Message;
                packet.token   = "";
            }
            client.SendPacket(packet);
        }
Ejemplo n.º 10
0
		private void btnLogin_Click(object sender, EventArgs e) {
			if (this.txtPassword.Text.Length == 0 || this.txtUsername.Text.Length == 0) {
				MessageBox.Show("Neither the username nor password field may be blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
				return;
			}

			Client.getClient().connect();
			Packet p = new LoginPacket(txtUsername.Text, txtPassword.Text);
			Client.getClient().getConnection().send(p);
            while (!Client.getClient().getRequestManager().hasResponse()) ;
            LoginResponsePacket r = (LoginResponsePacket)Client.getClient().getRequestManager().getResponse();
			if(r.getResponse().Equals(LoginResponsePacket.LoginResponse.SUCCESS)){
				this.Hide();
				Client.getClient().setUser(txtUsername.Text);
				Client.getClient().setUserId(r.getUserId());
				new frmSearch().ShowDialog();
			}else{
				MessageBox.Show("Invalid username or password.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
			}
		}
Ejemplo n.º 11
0
        async Task HandleRakNetPacket(RakNetPacket rakPacket, IPEndPoint endpoint)
        {
            if (!Clients.ContainsKey(endpoint))
            {
                return;
            }

            var Client = Clients[endpoint];

            Client.LastUpdate = DateTime.Now;
            if (!rakPacket.IsACKorNAK)
            {
                Client.Sequence = rakPacket.SequenceNumber;
            }

            foreach (var enclosing in rakPacket.Enclosing)
            {
                switch (enclosing.MessageID)
                {
                case RakPacketType.ConnectedPong: {
                    Console.WriteLine("[<=] PONG!");
                    break;
                }

                case RakPacketType.ConnectedPing: { await Send(Client, ConnectedPongPacket.FromPing(enclosing.Get <ConnectedPingPacket>(), StartTime)); break; }

                case RakPacketType.ConnectionRequest: {
                    var request = enclosing.Get <ConnectionRequestPacket>();
                    Client.Player     = new Player();
                    Client.Player.CID = request.ClientGuid;
                    await Send(Client, ConnectionRequestAcceptedPacket.FromRequest(request, endpoint));

                    break;
                }

                case RakPacketType.LoginRequest: {
                    var request = enclosing.Get <LoginRequestPacket>();
                    var status  = request.StatusFor(14);

                    Client.Player.Username = request.Username;
                    if (Client.Player.Username == "server" ||            // Don't impersonate the server.
                        World.GetPlayerByName(request.Username) != null) // Don't log in if there's a player already in game.
                    {
                        await Send(Client, LoginResponsePacket.FromRequest(request, Status.ClientOutdated));

                        break;
                    }

                    // StartGame is when the Client gets it's own EntityID.
                    Client.Player.EID = World.LastEID++;

                    //TODO(atipls): More checks, check if a the player name is already logged in.
                    await Send(Client, LoginResponsePacket.FromRequest(request, status),
                               status == Status.VersionsMatch?new StartGamePacket(request.ReliableNum.IntValue, Client.Player.EID) : null
                               );

                    await World.AddPlayer(Client);

                    Console.WriteLine("Players:");
                    foreach (var player in World.Players)
                    {
                        Console.WriteLine($"{{ EID: {player.Player.EID} CID: {player.Player.CID} Name: {player.Player.Username} }}");
                    }

                    break;
                }

                case RakPacketType.Ready: {
                    // Notify the new client about existing players.
                    foreach (var P in World.Players)
                    {
                        if (P == Client)
                        {
                            continue;
                        }
                        await Send(Client, new AddPlayerPacket(P.Player));
                    }
                    break;
                }

                case RakPacketType.NewIncomingConnection: {
                    Console.WriteLine($"[ +] {endpoint}");
                    break;
                }

                case RakPacketType.Message: {
                    await SendToEveryone(enclosing.Get <MessagePacket>());

                    break;
                }

                case RakPacketType.MovePlayer: {
                    var packet = enclosing.Get <MovePlayerPacket>();
                    Console.WriteLine($"MovePlayer: {{ ID: {packet.ID} (== {Client.Player.EID} OR == {Client.Player.CID}) }}");
                    await World.MovePlayer(Client, packet.Position, packet.Pitch, packet.Yaw);

                    break;
                }

                case RakPacketType.PlayerDisconnect: {
                    // Let the client updater thread disconnect the player.
                    Client.ForceInvalidate = true;
                    break;
                }

                default:
                    Console.WriteLine($"Unhandled RakPacket: {enclosing.MessageID}");
                    break;
                }
            }

            if (!rakPacket.IsACKorNAK)
            {
                var ackPacket = rakPacket.CreateACK();
                var ackData   = ackPacket.Serialize();
                await UdpServer.SendAsync(ackData, ackData.Length, endpoint);
            }
        }
Ejemplo n.º 12
0
        private void run()
        {
            this.thread = Thread.CurrentThread;
            while (this.running)
            {
                foreach (Connection c in Server.getSingleton().getConnectionManager().getConnections().Values)
                {
                    if (c.isClosed())
                    {
                        Server.getSingleton().getConnectionManager().getConnections().Remove(c.getAddress());
                    }
                    else
                    {
                        try {
                            if (c.dataRemaining())
                            {
                                Packet p        = c.readData();
                                Packet response = null;

                                if (p.getType().Equals(PacketType.LOGIN))
                                {
                                    LoginPacket packet = new LoginPacket(p);
                                    //MySqlDataReader r = Server.getSingleton().getDbManager().executeReader("select `id` from `users` where `user`=\"" + packet.getUser() + "\" and `pass`=\"" + packet.getPasswordHash() + "\"");
                                    MySqlDataReader r = Server.getSingleton().getDbManager().prepareCommand("select `id` from `users` where `user`=?User and `pass`=?Password;", KVFactory.obj("?User", packet.getUser()), KVFactory.obj("?Password", packet.getPasswordHash())).ExecuteReader();
                                    if (r.Read())
                                    {
                                        response = new LoginResponsePacket(LoginResponsePacket.LoginResponse.SUCCESS, r.GetInt32("id").ToString());
                                    }
                                    else
                                    {
                                        response = new LoginResponsePacket(LoginResponsePacket.LoginResponse.FAILURE);
                                    }
                                    r.Close();
                                }
                                else if (p.getType().Equals(PacketType.FETCH_DATA))
                                {
                                    FetchPacket packet = new FetchPacket(p);
                                    //MySqlDataReader reader = Server.getSingleton().getDbManager().executeReader("select * from `players` where `serverId`=(select `serverId` from `servers` where `serverName`=\"" + packet.getServer() + "\") and `playerName` like \"" + packet.getName() + "\";");
                                    MySqlDataReader reader = Server.getSingleton().getDbManager().prepareCommand("select * from `players` where `serverId`=(select `serverId` from `servers` where `serverName`=?Server) and `playerName` like ?Name;", KVFactory.obj("?Server", packet.getServer()), KVFactory.obj("?Name", packet.getName())).ExecuteReader();
                                    if (reader.Read())
                                    {
                                        response = new DataResponsePacket(reader.GetString("playerName"), packet.getServer(), reader.GetString("notes"), reader.GetString("violations"), UserViolationLevel.getViolationLevelFromByte(reader.GetByte("violationLevel")), reader.GetInt32("id").ToString(), reader.GetInt32("serverId").ToString());
                                    }
                                    else
                                    {
                                        reader.Close();
                                        //MySqlDataReader r = Server.getSingleton().getDbManager().executeReader("select `serverId` from `servers` where `serverName`=\"" + packet.getServer() + "\"");
                                        MySqlDataReader r = Server.getSingleton().getDbManager().prepareCommand("select `serverId` from `servers` where `serverName`=", KVFactory.obj("?Server", packet.getServer())).ExecuteReader();
                                        r.Read();
                                        int serverId = r.GetInt32("serverId");
                                        r.Close();
                                        //Server.getSingleton().getDbManager().executeNonQuery("insert into `players` (`serverId`, `playerName`, `notes`, `violations`, `violationLevel`) values(" + serverId + ", \"" + packet.getName() + "\", \"\", \"\", " + UserViolationLevel.GOOD.getByteIdentity() + ")");
                                        Server.getSingleton().getDbManager().prepareCommand("insert into `players` (`serverId`, `playerName`, `notes`, `violations`, `violationLevel`) values(?ServerId, ?Name, ?Notes, ?Violations, ?ViolationLevel);", KVFactory.obj("?ServerId", serverId), KVFactory.obj("?Name", packet.getName()), KVFactory.obj("?Notes", ""), KVFactory.obj("?Violations", ""), KVFactory.obj("?ViolationLevel", UserViolationLevel.GOOD.getByteIdentity())).ExecuteNonQuery();
                                        //MySqlDataReader z = Server.getSingleton().getDbManager().executeReader("select `id`,`serverId` from `players` where `serverId`=" + serverId + " and `playerName`=\"" + packet.getName() + "\"");
                                        MySqlDataReader z = Server.getSingleton().getDbManager().prepareCommand("select `id`,`serverId` from `players` where `serverId`=" + serverId + " and `playerName`=\"" + packet.getName() + "\"").ExecuteReader();
                                        z.Read();
                                        response = new DataResponsePacket(packet.getName(), packet.getServer(), "", "", UserViolationLevel.GOOD, z.GetInt32("id").ToString(), z.GetInt32("serverId").ToString());
                                        z.Close();
                                    }
                                    reader.Close();
                                }
                                else if (p.getType().Equals(PacketType.LIST_REQUEST))
                                {
                                    List <string>   servers = new List <string>();
                                    MySqlDataReader reader  = Server.getSingleton().getDbManager().executeReader("select * from `servers`");
                                    while (reader.Read())
                                    {
                                        servers.Add(reader.GetString("serverName"));
                                    }
                                    response = new ServerListResponsePacket(servers);
                                    reader.Close();
                                }
                                else if (p.getType().Equals(PacketType.REGISTRATION))
                                {
                                    RegistrationPacket packet = new RegistrationPacket(p);
                                    //MySqlDataReader reader = Server.getSingleton().getDbManager().executeReader("select `serverAccess` from `registrationKeys` where `key`=\"" + packet.getRegistrationKey() + "\"");
                                    MySqlDataReader reader = Server.getSingleton().getDbManager().prepareCommand("select `serverAccess` from `registrationKeys` where `key`=?Key", KVFactory.obj("?Key", packet.getRegistrationKey())).ExecuteReader();
                                    if (reader.Read())
                                    {
                                        //Server.getSingleton().getDbManager().executeScalar("insert into `users` (`firstName`, `lastName`, `user`, `pass`, `serverAccess`) values(\"" + packet.getFirstName() + "\", \"" + packet.getLastName() + "\", \"" + packet.getUsername() + "\", \"" + packet.getPasswordHash() + "\", \"" + reader.GetString("serverAccess") + "\");");
                                        Server.getSingleton().getDbManager().prepareCommand("insert into `users` (`firstName`, `lastName`, `user`, `pass`, `serverAccess`) values(?FirstName, ?LastName, ?Username, ?Password, ?AccessString);", new KeyValuePair <string, object>("?", packet.getFirstName()), new KeyValuePair <string, object>("?", packet.getLastName()), new KeyValuePair <string, object>("?", packet.getPasswordHash()), new KeyValuePair <string, object>("?", reader.GetString("serverAccess"))).ExecuteScalar();
                                    }
                                }
                                else if (p.getType().Equals(PacketType.DATA_UPDATE))
                                {
                                    DataUpdatePacket packet = new DataUpdatePacket(p);
                                    //Server.getSingleton().getDbManager().executeNonQuery("update `players` set `playerName`=\"" + packet.getPlayer() + "\", `notes`=\"" + packet.getNotes() + "\", `violations`=\"" + packet.getViolations() + "\", `violationLevel`=" + packet.getViolationLevel().getByteIdentity() + " where `id`=" + packet.getID() + ";");
                                    Server.getSingleton().getDbManager().prepareCommand("update `players` set `playerName`=?Player, `notes`=?Notes, `violations`=?Violations, `violationLevel`=?ViolationLevel where `id`=?Id;", KVFactory.obj("?Player", packet.getPlayer()), KVFactory.obj("?Notes", packet.getNotes()), KVFactory.obj("?Violations", packet.getViolations()), KVFactory.obj("?ViolationLevel", packet.getViolationLevel().getByteIdentity()), KVFactory.obj("?Id", packet.getID())).ExecuteNonQuery();
                                }
                                else if (p.getType().Equals(PacketType.ATTACHMENT_LIST_REQ))
                                {
                                    AttachmentListRequestPacket packet      = new AttachmentListRequestPacket(p);
                                    List <Attachment>           attachments = new List <Attachment>();
                                    MySqlDataReader             r           = Server.getSingleton().getDbManager().prepareCommand("select `screenshotId`,`uploadDate`,`uploadingUserId` from `screenshots` where `playerId`=?PlayerId and `serverId`=?ServerId",
                                                                                                                                  KVFactory.obj("?PlayerId", packet.getPlayerId()),
                                                                                                                                  KVFactory.obj("?ServerId", packet.getServerId())).ExecuteReader();

                                    while (r.Read())
                                    {
                                        attachments.Add(new Attachment(r.GetDateTime("uploadDate"), r.GetInt32("screenshotId").ToString(), r.GetInt32("uploadingUserId").ToString()));
                                    }
                                    response = new AttachmentListResponsePacket(attachments);
                                    r.Close();
                                }
                                else if (p.getType().Equals(PacketType.UPLOAD_ATTACHMENT))
                                {
                                    UploadAttachmentPacket packet = new UploadAttachmentPacket(p);
                                    MySqlCommand           cmd    = Server.getSingleton().getDbManager().prepareCommand("insert into `screenshots` (`playerId`, `serverId`, `data`, `uploadDate`, `uploadingUserId`, `dataLength`) values(?playerId, ?serverId, ?attachmentData, ?dateTime, ?userId)",
                                                                                                                        KVFactory.obj("?PlayerId", packet.getPlayerId()),
                                                                                                                        KVFactory.obj("?ServerId", packet.getServerId()),
                                                                                                                        KVFactory.obj("?AttachmentData", packet.getAttachmentData()),
                                                                                                                        KVFactory.obj("?dateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
                                                                                                                        KVFactory.obj("?userId", packet.getUserId()));

                                    cmd.ExecuteNonQuery();
                                }
                                else if (p.getType().Equals(PacketType.ATTACHMENT_REQUEST))
                                {
                                    AttachmentRequestPacket packet = new AttachmentRequestPacket(p);
                                    MySqlDataReader         r      = Server.getSingleton().getDbManager().executeReader("select `data`,`dataLength` from `screenshots` where `screenshotId`=" + packet.getId());
                                    r.Read();
                                    byte[] buffer = (byte[])r.GetValue(0);
                                    response = new AttachmentResponsePacket(buffer);
                                    r.Close();
                                }
                                if (response != null)
                                {
                                    response.sendData(c);
                                }
                            }
                        } catch (InvalidPacketException e) {
                            Server.getLogger().error(e.Message);
                        }
                    }
                }
                Thread.Sleep(SLEEP_DURATION);
            }
        }
        public static Packet RenderPacket(PacketType type, string payload)
        {
            switch (type)
            {
            case PacketType.Exit:
            {
                ExitPacket p = JsonConvert.DeserializeObject <ExitPacket>(payload);
                return(p);
            }

            case PacketType.Error:
            {
                ErrorPacket p = JsonConvert.DeserializeObject <ErrorPacket>(payload);
                return(p);
            }

            case PacketType.VersionRequest:
            {
                VersionPacket p = JsonConvert.DeserializeObject <VersionPacket>(payload);
                return(p);
            }

            case PacketType.VersionResponse:
            {
                VersionPacket p = JsonConvert.DeserializeObject <VersionPacket>(payload);
                return(p);
            }

            case PacketType.LoginRequest:
            {
                LoginRequestPacket p = JsonConvert.DeserializeObject <LoginRequestPacket>(payload);
                return(p);
            }

            case PacketType.LoginResponse:
            {
                LoginResponsePacket p = JsonConvert.DeserializeObject <LoginResponsePacket>(payload);
                return(p);
            }

            case PacketType.PlayerListRequest:
            {
                PlayerListRequestPacket p = JsonConvert.DeserializeObject <PlayerListRequestPacket>(payload);
                return(p);
            }

            case PacketType.PlayerListResponse:
            {
                LoginResponsePacket p = JsonConvert.DeserializeObject <LoginResponsePacket>(payload);
                return(p);
            }

            case PacketType.CreateLobbyRequest:
            {
                CreateLobbyRequestPacket p = JsonConvert.DeserializeObject <CreateLobbyRequestPacket>(payload);
                return(p);
            }

            case PacketType.CreateLobbyResponse:
            {
                CreateLobbyResponsePacket p = JsonConvert.DeserializeObject <CreateLobbyResponsePacket>(payload);
                return(p);
            }

            default:
                Console.WriteLine("packet type not found.");
                return(new Packet());
            }
        }