示例#1
0
        //TCP client method sends tcp packet from server program to client program
        private void TCPClientMethod(Client client)
        {
            Packet packet;

            try
            {
                //while client is reading data
                while ((packet = client.TCPRead()) != null)
                {
                    switch (packet.mPacketType)
                    {
                    //sends login packet to allow connection to server
                    case PacketType.login:
                        LoginPacket loginPacket = (LoginPacket)packet;
                        client.mEndPoint = loginPacket.mEndPoint;
                        foreach (Client onlineClient in clients)
                        {
                            onlineClient.TCPSend(packet);
                        }
                        break;
                    }
                }
            }
            //if try catch fails send error message
            catch (Exception e)
            {
                Console.WriteLine("Error:" + e.Message);
            }
            //close client and remove from concurrent bag
            finally
            {
                client.Close();
                clients.TryTake(out client);
            }
        }
        private void VerifyLogin(Client client, LoginPacket loginPacket)
        {
            bool foundMatch = false;

            foreach (Client c in _clients)
            {
                if (c.Username == loginPacket.Username)
                {
                    foundMatch = true;
                }
            }
            LoginVerificationPacket loginVP = new LoginVerificationPacket();

            if (foundMatch)
            {
                loginVP.Granted = false;
                SendPacket(client, loginVP);
            }
            else
            {
                loginVP.Granted     = true;
                client.Username     = loginPacket.Username;
                client.ClientStatus = ClientStatus.Online;

                SendPacket(client, loginVP);

                ClientLoggedIn(client);
                Console.WriteLine(String.Format("Client({0}) logged in with name: {1}", client.ID, loginPacket.Username));
            }
        }
示例#3
0
        public string CreateLoginPacket(string accountNumber)
        {
            IPacket packet = new LoginPacket();

            packet.SetValue(accountNumber, (listenerPort.ToString()));
            return(packet.Body);
        }
示例#4
0
        public void OnLogin(LoginPacket packet)
        {
            var client = ServerTcpHandler.GetClient(packet.ClientId);

            try
            {
                var user = AccountService.Login(packet.Login, packet.Password);
                Log.Info("Sending Login Response");

                client.Send(new LoginResponsePacket()
                {
                    SessionId = user.SessionId,
                    UserId    = user.UserId,
                    xLocation = user.X,
                    yLocation = user.Y
                });

                ServerEvents.Call(new PlayerLoginEvent()
                {
                    Player = user,
                    Client = client
                });
            }
            catch (AccountError e)
            {
                Log.Info("Sending Login Error");
                client.Send(new DialogPacket()
                {
                    Message = e.ErrorMessage
                });
            }
        }
        public override async Task Process(LoginPacket packet, IPacketContext context)
        {
            var identityResult = await UserManager.AddLoginAsync(packet.Username, packet.Password);

            var errors      = (identityResult.Errors != null) ? identityResult.Errors.ToArray() : new string[0];
            var replyPacket = new LoginReplyPacket(identityResult.Success, errors);

            context.Sender.Send(replyPacket);

            if (replyPacket.Accepted)
            {
                var user = await UserManager.UserStorage.FindByNameAsync(packet.Username);

                var userConnection = TcpConnections.FindByEndpoint(context.Sender.EndPoint);
                userConnection.UserTag = user;

                NetPeer.OnClientConnected(user);

                this.NetPeer.Logger.LogInformation("User '{username}' authenticated ({address}).",
                                                   packet.Username, context.Sender.EndPoint.ToString());
            }
            else
            {
                this.NetPeer.Logger.LogInformation("User '{username}' failed to authenticated ({address}).",
                                                   packet.Username, context.Sender.EndPoint.ToString());
            }
        }
示例#6
0
        private void ReceiveData(IAsyncResult ar)
        {
            try
            {
                // Receive all data
                this.clientSocket.EndReceive(ar);

                // Initialise a packet object to store the received data
                LoginPacket receivedData = new LoginPacket(dataStream);



                // Update display through a delegate
                if (receivedData.ChatMessage != null)
                {
                    this.Dispatcher.BeginInvoke(this.displayMessageDelegate, new object[] { receivedData.ChatMessage });
                }



                // Reset data stream
                this.dataStream = new byte[1024];

                // Continue listening for broadcasts

                clientSocket.BeginReceiveFrom(this.dataStream, 0, this.dataStream.Length, SocketFlags.None, ref epServer, new AsyncCallback(this.ReceiveData), null);



                this.displayMessageDelegate = new DisplayMessageDelegate(DisplayMessage);
            }
            catch (Exception e)
            {
            }
        }
示例#7
0
        public ResponseCode Login(string email, string pass)
        {
            LoginPacket packet = new LoginPacket()
            {
                Email    = email,
                Password = pass
            };

            UdpClient receiver = new UdpClient((int)Port.Client_ResponseReceive);

            SendPacket(Crypto.SimEncrypt(packet.BuildPacket()));

            string[] response = ReceiveResponse(receiver).Split('%');
            receiver.Close();

            switch (GetResponseCode(response[1]))
            {
            case ResponseCode.Login_Success:
                sessionID    = response[2].Split('&')[0];
                sessionLogin = response[2].Split('&')[1];
                return(ResponseCode.Login_Success);

            case ResponseCode.Login_Fail_AccoundBanned:
                string banReason = response[2].Split('&')[0];
                string banDate   = response[2].Split('&')[1];
                responseString = $"Login error. Account banned.\nReason: {banReason}\nDate: {banDate}";
                return(ResponseCode.Login_Fail_AccoundBanned);

            default:
                return(GetResponseCode(response[1]));
            }
        }
        //processes server responce
        private void TCPProcessServerResponse()
        {
            int numberOfBytes;

            //if connected to server
            while (isConnected == true)
            {
                //read data from server and deserialize
                if ((numberOfBytes = reader.ReadInt32()) != 0)
                {
                    byte[]       buffer          = reader.ReadBytes(numberOfBytes);
                    MemoryStream _stream         = new MemoryStream(buffer);
                    Packet       recievedPackage = formatter.Deserialize(_stream) as Packet;

                    //if packet type is...
                    switch (recievedPackage.mPacketType)
                    {
                    //send message to all
                    case PacketType.login:
                        LoginPacket loginPacket = (LoginPacket)recievedPackage;
                        break;
                    }
                }
            }

            //close TCP connection
            reader.Close();
            writer.Close();
            tcpClient.Close();
        }
    public void SignUp(string email, string username, string password)
    {
        LoginPacket packet = new LoginPacket(email, password);

        packet.setUsername(username);
        Emit("createAccount", new JSONObject(JsonUtility.ToJson(packet)));
    }
示例#10
0
        static void Main()
        {
            CryptEngine.Initialize(new Byte[] { 00 });
            LoginPacket.InitializeCryptoService(new Byte[] { 00, 00, 00, 00, 00, 00, 00, 00 });

            /* var server = new AAAuthServer();
             * server.Start(IPAddress.Any, 2106);*/

            /*var client = new AAAuthClient("admin", "test123");
             * client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2106));
             *
             * while (true)
             * {
             *  client.Process();
             *  System.Threading.Thread.Sleep(1500);
             * }*/


            /*var server = new TRAuthServer();
             * server.Start(IPAddress.Any, 2106);*/

            /*var client = new TRAuthClient("admin", "test123");
             * client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2106));
             *
             * while (true)
             * {
             *  client.Process();
             *  System.Threading.Thread.Sleep(1500);
             * }*/

            Console.ReadLine();
        }
示例#11
0
        private void LoginScreen_Loginbtn_event(string message)
        {
            this.ClientID = this.LoginScreen.IDboxString;
            if (this.ClientID.Length > 12)
            {
                MessageBox.Show("한글 6자 영문 12자 이상은 아이디로 사용하 실 수 없습니다.");
                return;
            }

            //this.indianPokerClient = new IndianPokerClient("127.0.0.1", 10000, this.ClientID);
            this.indianPokerClient = new IndianPokerClient("192.168.2.42", 10000, this.ClientID);

            if (this.indianPokerClient.ConnectedServer())
            {
                LoginPacket loginPacket = new LoginPacket();
                loginPacket.clientID = this.ClientID;
                loginPacket.isLogin  = true;

                indianPokerClient.SendMessage(Header.Login, loginPacket, indianPokerClient.ao.WorkingSocket);
            }
            else
            {
                MessageBox.Show("서버와 연결이 되지 않습니다.");
            }
        }
示例#12
0
    // Update is called once per frame


    public void ConnectionToLoginServer()
    {
        StartCoroutine(Login());

        LoginPacket NewLogin = new LoginPacket();

        NewLogin.ChatName           = username.text.ToString() + "\n" + "Password: "******"74.80.233.85");

        server = new IPEndPoint(serverIP, 4546);


        epServer = (EndPoint)server;

        byte[] data = NewLogin.GetDataStream();


        clientSocket.BeginSendTo(data, 0, data.Length, SocketFlags.None, epServer, new AsyncCallback(this.SendData), null);


        clientSocket.BeginReceiveFrom(this.dataStream, 0, this.dataStream.Length, SocketFlags.None, ref epServer, new AsyncCallback(this.ReceiveData), null);



        Debug.Log(server);

        Debug.Log(NewLogin.ChatName);
    }
示例#13
0
        private void LoginTile_Click(object sender, EventArgs e)
        {
            if (UsernameTextBox.Text.Length < 4 || PasswordTextBox.Text.Length < 4)
            {
                return;
            }

            LoginTile.Enabled       = false;
            UsernameTextBox.Enabled = false;
            PasswordTextBox.Enabled = false;

            string authenticationToken = NetworkUtil.GetAuthenticationToken(UsernameTextBox.Text, PasswordTextBox.Text);

            if (authenticationToken == null)
            {
                LoginTile.Enabled       = true;
                UsernameTextBox.Enabled = true;
                PasswordTextBox.Enabled = true;

                Notify("The username or password is incorrect.");
                return;
            }

            MapleConnection.Instance.Send(LoginPacket.Login(PasswordTextBox.Text, authenticationToken));
        }
        private void OnLogin(NetworkMessage netMsg)
        {
            LoginPacket packet = netMsg.ReadMessage <LoginPacket>();

            if (packet != null)
            {
                if (packet.username == Program.username && packet.password == Program.password)
                {
                    DbManager.AddUser(netMsg.conn.connectionId);
                    var has = false;
                    if (File.Exists(Program.path_to_firewall_up_org))
                    {
                        lock (LockFile)
                        {
                            string firewall = File.ReadAllText(Program.path_to_firewall_up_org).Replace("#REPLACE_IP", netMsg.conn.IP);
                            File.WriteAllText(Program.path_to_firewall_up, firewall);
                        }
                        has = true;
                    }
                    Log.Info("Client [" + netMsg.conn.IP + "] Logged in.");
                    netMsg.conn.Send(NetworkConstants.LOGIN, new ReLogin()
                    {
                        response = (uint)(has ? SUCCESS : FAILURE)
                    });
                }
                else
                {
                    netMsg.conn.Send(NetworkConstants.LOGIN, new ReLogin()
                    {
                        response = WRONG_LOGIN
                    });
                }
            }
        }
示例#15
0
        /// <summary>
        /// 登录
        ///     <remark>abu 2008-03-06 </remark>
        /// </summary>
        public void Login()
        {
            Check.Require(QQClient.LoginServerHost, "LoginServerHost", Check.NotNull);
            if (QQClient.LoginPort == 0)
            {
                if (QQUser.IsUdp)
                {
                    QQClient.LoginPort = QQGlobal.QQ_PORT_UDP;
                }
                else
                {
                    QQClient.LoginPort = QQGlobal.QQ_PORT_TCP;
                }
            }
            OutPacket outPacket = null;

            if (QQClient.QQUser.LoginToken == null)
            {
                outPacket = new RequestLoginTokenPacket(QQClient.QQUser);
            }
            else
            {
                outPacket = new LoginPacket(QQClient.QQUser);
            }
            QQClient.PacketManager.SendPacketAnyway(outPacket, QQPort.Main.Name);
        }
示例#16
0
        public static void CHECK_CHAR_NAME(MapleClient c, InPacket p)
        {
            var name     = p.ReadMapleString();
            var nameused = DatabaseHelper.CheckNameUsed(c, name);

            c.Send(LoginPacket.CharNameResponse(name, nameused));
        }
示例#17
0
        protected void MsgLogin(BinaryReader reader)
        {
            var packet = new LoginPacket();

            packet.Unserialize(reader);

            IPacket s;

            if (Server.ValidateLogin(this, packet.UserName, packet.Password, packet.Subscription, packet.CDKey))
            {
                s = new LoginOkPacket
                {
                    SessionId1 = SessionId1,
                    SessionId2 = SessionId2
                };

                if (Server.OnConnect != null)
                {
                    Server.OnConnect(this);
                }
            }
            else
            {
                s = new LoginFailPacket
                {
                    ResultCode = 1
                };

                _disconnect = true;
            }

            var data = CreatePacket(s);

            Socket.BeginSend(data, 0, data.Length, EndSend, true);
        }
示例#18
0
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here
            base.Initialize();
            _networkClient = new NetworkClient("127.0.0.1", 7000);
            _networkClient.StartClient();
            var packet = new LoginPacket()
            {
                MsgType  = (byte)Packets.LoginPacket,
                Username = Encoding.UTF8.GetBytes("test"),
                Password = Encoding.UTF8.GetBytes("test")
            };

            _networkClient.EnqueuePacket(packet);
            _networkClient.OnLoginResponsePacket += OnLoginResponsePacket;
            //_networkClient.OnNewPlayerPacket += OnNewPlayerPacket;
            //_networkClient.OnEntitySpawnPacket += OnEntitySpawnPacket;
            //// Send a login packet to server
            //var packet = new LoginPacket()
            //{
            //    MsgType = (byte)Packets.LOGIN_PACKET,
            //    Username = "******".AsSpan(),
            //    PlayerId = _networkClient.PlayerId
            //};
            //_networkClient.EnqueuePacket(packet);
        }
示例#19
0
        public static void LOGIN_AUTH(MapleClient c, InPacket p)
        {
            var username = p.ReadMapleString();
            var password = p.ReadMapleString();

            var result = DatabaseHelper.Login(c, username, password);

            switch (result)
            {
            case DatabaseHelper.LoginResultCode.GenderNeeded:
                c.State = LoginStateType.WaitingForDetail;
                c.Send(LoginPacket.GenderNeeded(username));
                break;

            case DatabaseHelper.LoginResultCode.Success:
                c.State = LoginStateType.LoggedIn;
                var userLogged = new List <int>(ServerSettings.ChannelCount);
                MasterServer.Instance.ChannelServers.ForEach(x => userLogged.Add(x.UserLogged));
                c.Send(LoginPacket.AuthSuccess(username, c.Account.Id, c.Account.Gender != null && c.Account.Gender.Value));
                c.State = LoginStateType.LoggedIn;
                c.Send(LoginPacket.ServerList(userLogged.ToArray()));
                c.Send(LoginPacket.ServerListEnd());
                break;

            default:
                c.Send(LoginPacket.AuthAccountFailed((int)result));
                break;
            }
        }
示例#20
0
        public static LoginPacket Parse(NetworkMessage message)
        {
            LoginPacket packet = new LoginPacket();

            packet.Os      = message.GetUInt16(); // OS
            packet.Version = message.GetUInt16(); // version

            message.RSADecrypt();

            message.GetByte(); // should be zero

            packet.XteaKey    = new uint[4];
            packet.XteaKey[0] = message.GetUInt32();
            packet.XteaKey[1] = message.GetUInt32();
            packet.XteaKey[2] = message.GetUInt32();
            packet.XteaKey[3] = message.GetUInt32();

            packet.GmMode        = message.GetByte();
            packet.AccountName   = message.GetString();
            packet.CharacterName = message.GetString();
            packet.Password      = message.GetString();

            message.SkipBytes(6); // 841 specific (according to OT)

            return(packet);
        }
示例#21
0
        /// <summary>
        /// Handles player logins and the according callbacks
        /// </summary>
        /// <param name="peer">connected peer</param>
        /// <param name="reader">Netpacket without 1st byte</param>
        private void HandlePlayerLogin(NetPeer peer, NetPacketReader reader)
        {
            LoginPacket loginPacket        = new LoginPacket(reader);
            PlayerConnectedEventArgs args1 = new PlayerConnectedEventArgs();

            switch ((LoginMsg)loginPacket.LoginMsgType)
            {
            case LoginMsg.INIT:
                args1.NetPeer       = peer;
                args1.hasSelected   = false;
                args1.PlayerFaction = (Faction)loginPacket.Faction;
                args1.PlayerName    = loginPacket.PlayerName;
                break;

            case LoginMsg.FACTIONSELECT:
                args1.NetPeer       = peer;
                args1.hasSelected   = true;
                args1.PlayerFaction = (Faction)loginPacket.Faction;
                args1.PlayerName    = loginPacket.PlayerName;
                break;
            }
            //TODO: Change Debug
            //Console Output
            //Console.WriteLine("Player {0} login successful. Faction: {1}", loginPacket.PlayerName, (Faction)loginPacket.Faction);

            //Invoke Event
            OnPlayerConnected(args1);
        }
示例#22
0
        public void UDPSendLocalEP(EndPoint clientEP)
        {
            UDPSocket.Connect(clientEP);
            Packet sendPacket = new LoginPacket(UDPSocket.LocalEndPoint);

            TCPSend(sendPacket);
        }
        private void VerifyLogin(byte[] initialBuffer)
        {
            LoginPacket lp = (LoginPacket)ReadPacket(new LoginPacket(), initialBuffer);
            AccountDAO  l  = new AccountDAO(Server.ServerInstance.Database);

            if (l.VerifyLogin(lp.Username, lp.Password))
            {
                Tuple <bool, bool> banStatus = l.BanStatus(lp.Username);
                if (banStatus.Item1)
                {
                    SendPacket(banStatus.Item2
                                   ? new LoginFailPacket(PermaBannedMessage)
                                   : new LoginFailPacket(TempBannedMessage));
                    return;
                }

                if (AuthQueue.Add(lp.Username, _sessionId))
                {
                    SendPacket(new LoginOkPacket(_sessionId));
                }
                else
                {
                    SendPacket(new LoginFailPacket(AlreadyLoggedInMessage));
                }
            }
            else
            {
                SendPacket(new LoginFailPacket(WrongPasswordMessage));
            }
            Disconnect("Completed");
        }
示例#24
0
        public void SendLogInInfoToPlayer(NetPeer netConnection, string playerName, Faction[] factions)
        {
            LoginPacket   packet = new LoginPacket(playerName, factions);
            NetDataWriter msg    = new NetDataWriter();

            packet.Encode(msg);
            SendMessageToConnection(netConnection, msg);
        }
示例#25
0
        public LoginPacket LoginPacket(EndPoint endPoint)
        {
            LoginPacket loginPacket = new LoginPacket(endPoint);

            loginPacket.type     = PacketType.LOGIN;
            loginPacket.endPoint = endPoint;
            return(loginPacket);
        }
示例#26
0
        public static void SERVER_LIST_REQUEST(MapleClient c, InPacket p)
        {
            var userLogged = new List <int>(ServerSettings.ChannelCount);

            MasterServer.Instance.ChannelServers.ForEach(x => userLogged.Add(x.UserLogged));
            c.Send(LoginPacket.ServerList(userLogged.ToArray()));
            c.Send(LoginPacket.ServerListEnd());
        }
示例#27
0
    public void Login(LoginPacket packet)
    {
        var _packet = PacketFactory.requestMap(0);

        request(_packet);
        playerId         = packet.movableId;
        IsRequestMapSent = true;
    }
示例#28
0
        private void SelectGameScreen_CloseGameEvent()
        {
            LoginPacket loginPacket = new LoginPacket();

            loginPacket.clientID = this.ClientID;
            loginPacket.isLogin  = false;
            indianPokerClient.SendMessage(Header.Login, loginPacket, indianPokerClient.ao.WorkingSocket);
            this.Close();
        }
示例#29
0
        public static void OnGENDER_RESULT(MapleClient c, InPacket p)
        {
            var gender   = p.ReadByte();        //00 男 01女
            var username = p.ReadMapleString(); //username

            DatabaseHelper.ChangeGender(c, username, gender);
            c.Send(LoginPacket.GenderChanged(username, c.Account.Id.ToString()));
            c.Send(LoginPacket.LicenseRequest());
        }
示例#30
0
 public static void CHARLIST_REQUEST(MapleClient c, InPacket p)
 {
     if (c.State == LoginStateType.LoggedIn)
     {
         c.WorldId   = p.ReadByte();
         c.ChannelId = p.ReadByte();
         c.Send(LoginPacket.GetCharList(c));
     }
 }