Beispiel #1
0
 public void Restart()
 {
     IsDone          = false;
     IsLoginSucceess = false;
     IsOffInternet   = false;
     result          = null;
 }
Beispiel #2
0
        private async Task <LoginResp> Login(string loginName, string password, string authCode, byte clientType, string clientId, bool regist = false)
        {
            var resp = new LoginResp();

            var ip      = Request.GetClientIP();
            var website = Request.GetReferer();

            var result = await _userService.Login(loginName, password, ip, website, clientType, clientId);

            if (result.NonzeroCode)
            {
                return(resp.Fail(result.Msg));
            }

            // 生成本次登录的标识
            string loginId = $"__{ip}_{DateTime.Now.ToString("yyMMddHHmmssfffffff")}";

            // 生成 Token
            var token = new JwtTokenBuilder()
                        .AddSecurityKey(JwtSecurityKey.Create(_jwtOptions.Secret))
                        .AddIssuer(_jwtOptions.Issuer)
                        .AddAudience(_jwtOptions.Audience)
                        .AddClaim(Constants.LOGINNAME, loginName)
                        .AddClaim(Constants.LOGINID, loginId)
                        .AddExpiry(_jwtOptions.Expiry)
                        .Build();

            // 写入缓存,以便 TokenSessionFilter使用
            await _redisClient.GetDatabase().StringSetAsync(loginName, loginId, TimeSpan.FromMinutes(_jwtOptions.Expiry));

            resp.AccessToken = token.Value;
            resp.TokenType   = "Bearer";
            return(resp);
        }
Beispiel #3
0
    IEnumerator loginCoroutine(string username, string password)
    {
        WWWForm form = new WWWForm();

        form.AddField("username", username);
        form.AddField("password", password);
        UnityWebRequest request = UnityWebRequest.Post("https://arx-noctis-backend.herokuapp.com/authenticate", form);

        yield return(request.Send());

        LoginResp resp = JsonUtility.FromJson <LoginResp>(request.downloadHandler.text);

        loadingIndicator.SetActive(false);
        if (resp.resp)
        {
            PlayerPrefs.SetString("playerName", resp.characterName);
            PlayerPrefs.SetString("playerID", "#" + resp.playerID.ToString().PadLeft(6, '0'));
            PlayerPrefs.SetString("playerStats", resp.stats);
            PlayerPrefs.SetString("characterAppearance", resp.characterAppearance);
            submitButton.GetComponent <Button>().interactable = true;
            setUntaggeds(true);
            SceneManager.LoadScene("oaklore_center");
        }
        else
        {
            errorDisplay.GetComponent <Text>().text           = errors[resp.failCode];
            submitButton.GetComponent <Button>().interactable = true;
            yield break;
        }
    }
Beispiel #4
0
 public LoginResp Login(LoginRequestDto loginRequest)
 {
     using (var client = new SqlConnection(connString))
         using (var com = new SqlCommand())
         {
             com.CommandText = "select * from Salt where saltID=@id";
             com.Parameters.AddWithValue("id", 1);
             client.Open();
             com.Connection = client;
             var dr = com.ExecuteReader();
             dr.Read();
             var saltc = dr["salt"].ToString();
             loginRequest.password = PasswordGenerator.Create(loginRequest.password, saltc);
             com.CommandText       = "select * from student where Indexnumber=@index and password=@pass";
             com.Parameters.AddWithValue("pass", loginRequest.password);
             com.Parameters.AddWithValue("index", loginRequest.login);
             dr.Close();
             var dr2 = com.ExecuteReader();
             if (!dr2.Read())
             {
                 return(null);
             }
             var response = new LoginResp();
             response.login = dr2["IndexNumber"].ToString();
             response.name  = dr2["LastName"].ToString();
             return(response);
         }
 }
Beispiel #5
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="client"></param>
        /// <param name="buffer"></param>
        private void ProLogin(CommuTcpClient client, byte[] buffer)
        {
            Login login = new Login(buffer);

            OnRaiseMsgRecvEvent(client, login.ToString());
            LoginResp loginResp = new LoginResp(login.Header.Sequence_Id);
            //验证登陆
            ResultMsg msg      = LoginValidate(login.Body, out int nodeId, out decimal pDian, out decimal vDian);
            var       chatRate = pXinDb.GetTchatRate(0, nodeId, 3);//查询自己的倍率

            if (!msg.Success)
            {
                //验证失败
                loginResp.Body.Status    = 0;
                loginResp.Body.LoginDesc = msg.Message;
            }
            else
            {
                //登陆成功
                loginResp.Body.Status       = 1;
                loginResp.Body.LoginDesc    = "登录成功";
                loginResp.Body.VDianBalance = vDian;
                loginResp.Body.PDianBalance = pDian;
                loginResp.Body.Rate         = chatRate.Id == 0 ? 1 : chatRate.Rate;
                client.Nodeid = nodeId;
                string[] identitys = CommuClient.Values.Where(c => c.Nodeid == nodeId && c.Identity != client.Identity).Select(c => c.Identity).ToArray();
                foreach (var item in identitys)
                {
                    CommuClient[item].Close("抛弃旧连接");
                }
            }
            client.SendData(loginResp.ToBytes());
        }
    public override void Callback(byte[] data)
    {
        LoginResp response = null;

        try
        {
            response = Serializer.Deserialize <LoginResp>(new MemoryStream(data));
        }
        catch (Exception)
        {
            Debug.LogError("LoginResp parse error");
            ShowMessage(ErrorCode.EC_PARSE_DATA_ERROR);
        }

        if (response != null)
        {
            switch (response.code)
            {
            case "0":
            {
                DataHelper.GetInstance().SaveProfile(dbManager, response);
                SceneManager.LoadScene("home");
                break;
            }

            default:
            {
                ShowMessage(response.code);
                break;
            }
            }
        }
    }
Beispiel #7
0
        private void ProWt_LoginResp()
        {
            LoginResp loginResp = new LoginResp(_buffer);

            OnRaiseMsgRecvEvent(loginResp.Header.Command_Id, loginResp, "接收消息:" + loginResp.ToString());
            TimerInit();
        }
Beispiel #8
0
    IEnumerator registerCoroutine(string username, string password, string characterName, string appearance)
    {
        WWWForm form = new WWWForm();

        form.AddField("username", username);
        form.AddField("password", password);
        form.AddField("characterName", characterName);
        form.AddField("characterAppearance", appearance);
        UnityWebRequest request = UnityWebRequest.Post("https://arx-noctis-backend.herokuapp.com/register", form);

        yield return(request.Send());

        LoginResp resp = JsonUtility.FromJson <LoginResp>(request.downloadHandler.text);

        loadingIndicator.SetActive(false);
        if (resp.resp)
        {
            errorDisplay.GetComponent <Text>().text = "Thanks for signing up! Please verify your email.";
            StartCoroutine(waitToLogin(3.0f));
        }
        else
        {
            errorDisplay.GetComponent <Text>().text           = errors[resp.failCode];
            submitButton.GetComponent <Button>().interactable = true;
        }
    }
 private bool LOBBY2CLIENT_LOGIN_SUCCESS_Handler(Observers.Interfaces.INotification note)
 {
     if (IsTutorialOpen)
     {
         LoginResp loginResp             = note.Body as LoginResp;
         int       lastTutorialChapterID = loginResp.guideNo > 0 ? loginResp.guideNo : TutorialChapterData.GetFirstTutorialChapterData().id;
         TutorialProxy.instance.Init(lastTutorialChapterID);
         _initialized = true;
     }
     return(true);
 }
Beispiel #10
0
        public void SaveProfile(SimpleSQLManager dbManager, LoginResp response)
        {
            dbManager.BeginTransaction();
            dbManager.Execute("DELETE FROM SessionRow WHERE Id = 1");
            SessionRow row = new SessionRow();

            row.Id       = 1;
            row.Token    = response.token;
            row.Mobile   = response.mobile;
            row.Status   = response.status;
            row.NickName = response.nickName;
            dbManager.Insert(row);
            dbManager.Commit();
        }
Beispiel #11
0
    // confirm to Login
    void cfmClick()
    {
        tip       = canvas.transform.Find("tipPanel/Text").gameObject;
        tip_panel = canvas.transform.Find("tipPanel").gameObject;
        // check infomations
        // get user information
        string phone_num = GameObject.Find("Canvas/LoginDialog/phoneLog/Text").GetComponent <Text>().text;
        string pass_word = GameObject.Find("Canvas/LoginDialog/passwordLog").GetComponent <InputField>().text;
        // send to backend and get response
        //       ........
        LogInfo user = new LogInfo();

        user.number   = phone_num;
        user.password = pass_word;

        string json      = JsonConvert.SerializeObject(user);
        string post_url  = "http://39.106.107.66:3000/login";
        string resp_json = postData(post_url, json);

        LoginResp resp = JsonConvert.DeserializeObject <LoginResp>(resp_json);

        if (resp.result_status == 0)
        {
            tip.GetComponent <Text>().text = "手机号或密码错误";
            tip_panel.SetActive(true);
            Invoke("hideTips", 0.8f);
        }
        else
        {
            tip.GetComponent <Text>().text = "登陆成功";
            tip_panel.SetActive(true);
            Invoke("hideTips", 0.8f);
            // if right
            // set user info cache
            PlayerPrefs.SetString("phone_number", phone_num);
            PlayerPrefs.SetInt("my_rank", resp.curr_rank);
            PlayerPrefs.SetInt("my_best", resp.best_score);
            PlayerPrefs.SetInt("is_log", 1);
            // close Dialog
            LoginDialogObj.SetActive(false);
            loginBtnObj.SetActive(false);
            Invoke("showLogoutBtn", 0.3f);
            Invoke("showTitle", 0.3f);
        }
    }
Beispiel #12
0
        public static LoginResp Login(string key)
        {
            var json = doapi("login", new Dictionary <string, string>()
            {
                { "code", key }
            });
            var rsp = Serialize.FromJson <LoginResp>(json);

            if (rsp == null)
            {
                rsp = new LoginResp();
            }
            if (rsp.issucc)
            {
                uk = rsp.ukey;
            }
            return(rsp);
        }
Beispiel #13
0
 public IHttpActionResult Register([FromBody] User user)
 {
     if (!UserExist(user))
     {
         usercntxt.Users.Add(user);
         usercntxt.SaveChanges();
         LoginResp resp = new LoginResp
         {
             UserInfo = user,
             Token    = TokenGenerator.GenerateTokenJwt(user.Email)
         };
         return(Ok(resp));
     }
     else
     {
         return(Conflict());
     }
 }
Beispiel #14
0
    private void LoginByTokenCallback(byte[] data)
    {
        dataType = 0;
        LoginResp response = null;

        try
        {
            response = Serializer.Deserialize <LoginResp>(new MemoryStream(data));
        }
        catch (Exception)
        {
            Debug.LogError("LoginResponse parse error");
            ShowMessage(ErrorCode.EC_PARSE_DATA_ERROR);
        }

        if (response != null)
        {
            switch (response.code)
            {
            case "0":
            {
                DataHelper.GetInstance().SaveProfile(dbManager, response);
                if (response.status != 99 && "".Equals(response.nickName))
                {
                    SceneManager.LoadScene("nickname");
                    break;
                }
                dataType = 2;
                QueryDiamonAmount();
                break;
            }

            default:
            {
                Debug.LogError("LoginByTokenCallback:" + response.code);
                ShowMessage(response.code);
                break;
            }
            }
        }
    }
Beispiel #15
0
        void _client_MsgRecvHandler(object sender, EventMessage e)
        {
            TcpClient client = sender as TcpClient;

            Log.MessageInfo("接收-" + client._identity + ":" + e.Msg);
            rtbText(e.Msg);
            if (e.CommandType == PXin_COMMAND_TYPE.LoginResp)
            {
                string    msg  = string.Empty;
                LoginResp resp = e.Package as LoginResp;
                if (resp.Body.Status == 0)
                {
                    msg = "登陆失败";
                }
                else
                {
                    msg = "登陆成功";
                }
                rtbTextState(this.rtbState, msg);
            }
        }
Beispiel #16
0
        public IHttpActionResult Login(LoginReq req)
        {
            if (req == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            if (CheckUser(req))
            {
                LoginResp resp = new LoginResp
                {
                    UserInfo = usercntxt.Users.Where(u => u.Email == req.Email).FirstOrDefault(),
                    Token    = TokenGenerator.GenerateTokenJwt(req.Email)
                };
                return(Ok(resp));
            }
            else
            {
                return(Unauthorized());
            }
        }
Beispiel #17
0
        static void Main(string[] args)
        {
            bean.serverUrl = "https://url:7443";
            LoginResp resp = auth.Login("Account", "PassWord");
            //var list = user.ListUsers(new ListUsersReq() {offset=0,limit=100,userType="0"});
            //var hosts = host.ListHosts("/service/sites/4EEE09DA", new ListHostsReq() { limit = 100, offset = 0 , scope="default"});
            //var vms = vm.ListVms("/service/sites/4EEE09DA", new ListVmsReq() { offset=0,limit=100});
            var sites = comm.ListSites();

            foreach (var item in sites.sites)
            {
                var hosts = host.ListHosts(item.uri, new ListHostsReq()
                {
                    limit = 100, offset = 0, scope = "default"
                });
                foreach (var host in hosts.hosts)
                {
                    Console.WriteLine(host.uri);
                }
                var clustes = comm.ListClusters(item.uri, new ListClustersReqEx());
                foreach (var cluster in clustes.clusters)
                {
                    Console.WriteLine(cluster.uri);
                    var tests = host.ListHosts(item.uri, new ListHostsReq()
                    {
                        limit = 100, offset = 0, scope = cluster.urn
                    });
                    foreach (var host in tests.hosts)
                    {
                        Console.WriteLine(host.ip + "," + host.status + "," + host.cpuQuantity);
                    }
                }
            }
            //foreach (var item in list.users)
            //{
            //    Console.WriteLine(item.userName + ",usertype:" + item.userType);
            //}
            Console.ReadLine();
        }
Beispiel #18
0
        /// <summary>
        /// The API Login service enables customers to log in to the API
        /// service and initiates a secure session for the user.
        /// Users can have multiple sessions 'alive' at any point in time.
        /// </summary>
        private static void Login()
        {
            const string serviceName = "Login";

            Console.WriteLine("{0}$ API_SERVICE {1}", DateTime.Now, serviceName);
            var request = new LoginReq {
                username = _username, password = _password, productId = _productId
            };

            if (_vendorSoftwareId == 0 && _productId > 0)
            {
                // Used for Lignite
                _vendorSoftwareId = 1342;
            }
            request.vendorSoftwareId = _vendorSoftwareId;
            LoginResp response = _bfGlobalService.login(request);

            ValidateAPIResponse(serviceName, Convert.ToString(response.header.errorCode),
                                Convert.ToString(response.errorCode), response.header.sessionToken);

            _currency = response.currency;
        }
Beispiel #19
0
    /// <summary>
    /// 根据token进行登录验证
    /// </summary>
    public IEnumerator LoginPost(string token)
    {
        WWWForm form = new WWWForm();

        form.AddField("token", token);

        WWW www = new WWW(Constant.BaseUrl + uri, form);

        yield return(www);

        if (www.error != null)
        {
            Debug.Log(www.error);
            IsOffInternet = true;
            yield return(null);
        }
        else
        {
            LoginJson loginJson = JsonTool.JsonToClass <LoginJson> (www.text);

            if (loginJson == null)
            {
                IsOffInternet = true;
            }
            else
            {
                Debug.Log(www.text);

                if (loginJson.status == Constant.Status_OK)
                {
                    result          = loginJson.resp;
                    IsLoginSucceess = true;
                }
            }
        }

        IsDone = true;
    }
Beispiel #20
0
// ParseNetMessage accepts input of raw bytes from a NetMessage. Parses and returns a Net message.
    public static INet Parse(ushort msgType, byte[] content)
    {
        INet    msg = null;
        MsgType mt  = (MsgType)msgType;

        switch (mt)
        {
        case MsgType.Multipart:
            msg = new Multipart();
            break;

        case MsgType.Heartbeat:
            msg = new Heartbeat();
            break;

        case MsgType.Connected:
            msg = new Connected();
            break;

        case MsgType.Disconnected:
            msg = new Disconnected();
            break;

        case MsgType.CreateAcct:
            msg = new CreateAcct();
            break;

        case MsgType.CreateAcctResp:
            msg = new CreateAcctResp();
            break;

        case MsgType.Login:
            msg = new Login();
            break;

        case MsgType.LoginResp:
            msg = new LoginResp();
            break;

        case MsgType.Character:
            msg = new Character();
            break;

        case MsgType.ListGames:
            msg = new ListGames();
            break;

        case MsgType.ListGamesResp:
            msg = new ListGamesResp();
            break;

        case MsgType.CreateGame:
            msg = new CreateGame();
            break;

        case MsgType.CreateGameResp:
            msg = new CreateGameResp();
            break;

        case MsgType.JoinGame:
            msg = new JoinGame();
            break;

        case MsgType.GameConnected:
            msg = new GameConnected();
            break;

        case MsgType.GameMasterFrame:
            msg = new GameMasterFrame();
            break;

        case MsgType.Entity:
            msg = new Entity();
            break;

        case MsgType.MovePlayer:
            msg = new MovePlayer();
            break;

        case MsgType.UseAbility:
            msg = new UseAbility();
            break;

        case MsgType.AbilityResult:
            msg = new AbilityResult();
            break;

        case MsgType.EndGame:
            msg = new EndGame();
            break;
        }
        MemoryStream ms = new MemoryStream(content);

        msg.Deserialize(new BinaryReader(ms));
        return(msg);
    }
        public async Task <IActionResult> Validate(UserModel model)
        {
            if (ModelState.IsValid)
            {
                var input_data = new
                {
                    identifier = model.UserName,
                    password   = model.Password
                };

                var json = JsonConvert.SerializeObject(input_data);
                var url  = Configuration["ApiUrl"].ToString();

                var userInfo = await _httpBase.Post(url, json);

                LoginResp obj = JsonConvert.DeserializeObject <LoginResp>(userInfo);

                if (!string.IsNullOrEmpty(obj.jwt))
                {
                    var claims = new List <Claim>
                    {
                        new Claim(ClaimTypes.Name, obj.user.username),
                        new Claim(ClaimTypes.Role, obj.user.role.name),
                        new Claim("user_name", obj.user.username),
                        new Claim("user_email", obj.user.email),
                        new Claim("user_provider", obj.user.provider.ToString()),
                        new Claim("user_confirmed", obj.user.confirmed.ToString()),
                        new Claim("user_blocked", obj.user.blocked.ToString()),
                        new Claim("user_role", obj.user.role.name.ToString()),
                        new Claim("j_token", obj.jwt)
                    };

                    var claimsIdentityName = new ClaimsIdentity(
                        claims, CookieAuthenticationDefaults.AuthenticationScheme);

                    var claimsIdentityRole = new ClaimsIdentity(
                        claims, CookieAuthenticationDefaults.AuthenticationScheme, obj.user.role.name, ClaimTypes.Role);

                    List <ClaimsIdentity> claimsIdentities = new List <ClaimsIdentity>();
                    claimsIdentities.Add(claimsIdentityName);
                    claimsIdentities.Add(claimsIdentityRole);


                    var authProperties = new AuthenticationProperties
                    {
                        IsPersistent = true,
                        IssuedUtc    = DateTime.Now
                    };

                    await HttpContext.SignInAsync(
                        CookieAuthenticationDefaults.AuthenticationScheme,
                        new ClaimsPrincipal(claimsIdentityName),
                        authProperties);

                    return(RedirectToAction("Index", "Home"));
                }

                else
                {
                    return(RedirectToAction("Login", "Auth"));
                }
            }
            return(View());
        }
Beispiel #22
0
        private void OnRaiseMsgSendEvent(byte[] buffer)
        {
            if (MsgSendEventHandler != null)
            {
                string        msg    = string.Empty;
                MessageHeader header = new MessageHeader(buffer);
                switch (header.Command_Id)
                {
                case PXin_COMMAND_TYPE.Login:
                    msg = new Login(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.LoginResp:
                    msg = new LoginResp(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.Logout:
                    msg = new Wt_Logout(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.LogoutResp:
                    msg = new LogoutResp(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.Active:
                    msg = new Active(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ActiveResp:
                    msg = new ActiveResp(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFee:
                    msg = new ChatFee(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFeeResp:
                    msg = new ChatFeeResp(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFeePush:
                    msg = new ChatFeePush(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFeeRateSet:
                    msg = new ChatFeeRateSet(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFeeRateSetResp:
                    msg = new ChatFeeRateSetResp(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFeeRateQuery:
                    msg = new ChatFeeRateQuery(buffer).ToString();
                    break;

                case PXin_COMMAND_TYPE.ChatFeeRateQueryResp:
                    msg = new ChatFeeRateQueryResp(buffer).ToString();
                    break;

                default:
                    break;
                }
                //发布"消息发送"事件
                if (header.Command_Id != PXin_COMMAND_TYPE.Active && header.Command_Id != PXin_COMMAND_TYPE.ActiveResp)
                {
                    MsgSendEventHandler?.Invoke(this, new MessageEventArgs(string.Empty, Identity, msg));
                }
            }
        }
Beispiel #23
0
    // Update is called once per frame
    void Update()
    {
        if (DialogLogin.Actived())
        {
            return;
        }

        if (!m_net.IsRunning())
        {
            // 主动结束了
            return;
        }

        // Step
        m_net.CheckReconnect();
        //if (m_net.CheckReconnect())
        //{
        //DebugConsole.Log("Door:Reconnect successful.");
        //CheckLogin();

        //DialogBase.Hide();
        //}
        if (m_rcCount > 3)
        {
            DialogWarning.Show("No Network!",
                               "Your internet seems to be down.\nPlease check your network settings.",
                               "Retry",
                               "Exit",
                               OnOK,
                               OnCancel,
                               OnOK);
            return;
        }

        ProtoPacket packet = new ProtoPacket();

        if (m_net.RecvTryDequeue(ref packet))
        {
            DebugConsole.Log("Door:Reception handle cmdId:" + packet.cmdId);
            switch (packet.cmdId)
            {
            case Constants.Dog_Login:
            {
                LoginResp loginResp = (LoginResp)packet.proto;

                Lobby.getInstance().UId = loginResp.UserId;
                DebugConsole.Log("UId:" + loginResp.UserId);
                m_login = true;

                // 登录成功,重定向
                if (packet.callback != null)
                {
                    // 重定向
                    packet.callback();
                }
            }
            break;

            case Constants.Dog_Redirect:
            {
                RedirectResp rdResp = (RedirectResp)packet.proto;
                Lobby        lobby  = Lobby.getInstance();
                lobby.Domain = rdResp.Domain;
                lobby.Port   = rdResp.Port;
                lobby.Key    = rdResp.Key;

                m_net.Close();
                // 重定向到大厅
                DebugConsole.Log("Door:Redirect to lobby:" +
                                 lobby.Domain + ":" + lobby.Port);

                StartCoroutine(LoadingScene());
            }
            break;

            case Constants.Reconnect:
            {
                // 展示重连对话框,直到重连成功
                if (packet.msgId == 1)
                {
                    ProtoNet.WriteLog("Door:Reconnecting...");
                    // 3s后Display中重连
                    m_net.CheckReconnect(5);
                    //DialogBase.Show("RECONNECT", "reconnecting");
                    GameObject.Find("RcText").GetComponent <Text>().text = "Reconnecting...";
                    m_net.Ip = "182.92.74.240";
                    m_rcCount++;
                }
                else if (packet.msgId == 2)
                {
                    DebugConsole.Log("Door:Reconnect successful.");
                    //DialogBase.Hide();
                    GameObject.Find("RcText").GetComponent <Text>().text = "Connect successfully.";
                    // 启动默认登录
                    if (m_auto)
                    {
                        Login(Redirect);
                    }
                }
            }
            break;

            case Constants.Error:
            {
                // 这里一定是登录错误?
                Status stat = (Status)packet.proto;
                string err  = "Error:" + stat.Code.ToString() + "-" + stat.Desc;
                GameObject.Find("RcText").GetComponent <Text>().text = err;

                // 打开登录对话框
                DialogLogin.Show(LoginAsGuest, LoginWithFsID, null);
            }
            break;

            default:
            {
                DebugConsole.Log("Door:Invalid cmdId:" + packet.cmdId);
            }
            break;
            }
        }
        //process = (int)(async.progress * 100);
    }
    void ParseAndProcess(NetPacket np)
    {
        INet parsedMsg = Messages.Parse(np.message_type, np.Content());

        // Read from message queue and process!
        // Send updates to each object.
        switch ((MsgType)np.message_type)
        {
        case MsgType.Multipart:
            Multipart mpmsg = (Multipart)parsedMsg;
            // 1. If this group doesn't exist, create it
            if (!this.multipart_cache.ContainsKey(mpmsg.GroupID))
            {
                this.multipart_cache[mpmsg.GroupID] = new Multipart[mpmsg.NumParts];
            }
            // 2. Insert message into group
            this.multipart_cache[mpmsg.GroupID][mpmsg.ID] = mpmsg;
            // 3. Check if all messages exist
            bool complete     = true;
            int  totalContent = 0;
            foreach (Multipart m in this.multipart_cache[mpmsg.GroupID])
            {
                if (m == null)
                {
                    complete = false;
                    break;
                }
                totalContent += m.Content.Length;
            }
            // 4. if so, group up bytes and call 'messages.parse' on the content
            if (complete)
            {
                byte[] content = new byte[totalContent];
                int    co      = 0;
                foreach (Multipart m in this.multipart_cache[mpmsg.GroupID])
                {
                    System.Buffer.BlockCopy(m.Content, 0, content, co, m.Content.Length);
                    co += m.Content.Length;
                }
                NetPacket newpacket = NetPacket.fromBytes(content);
                if (newpacket == null)
                {
                    Debug.LogError("Multipart message content parsing failed... we done goofed");
                }
                this.ParseAndProcess(newpacket);
            }
            // 5. clean up!
            break;

        case MsgType.LoginResp:
            LoginResp lr = ((LoginResp)parsedMsg);
            characters.Add(lr.Character);
            accounts.Add(lr.AccountID);
            break;

        case MsgType.CreateAcctResp:
            CreateAcctResp car = ((CreateAcctResp)parsedMsg);
            accounts.Add(car.AccountID);
            characters.Add(car.Character);
            break;

        case MsgType.ListGamesResp:
            ListGamesResp resp = ((ListGamesResp)parsedMsg);
            for (int j = 0; j < resp.IDs.Length; j++)
            {
                GameInstance ni = new GameInstance();
                ni.ID   = resp.IDs[j];
                ni.Name = resp.Names[j];
            }
            break;

        case MsgType.GameConnected:
            GameConnected gc = ((GameConnected)parsedMsg);
            // TODO: handle connecting to a game!
            break;

        case MsgType.CreateGameResp:
            CreateGameResp cgr = ((CreateGameResp)parsedMsg);
            GameInstance   gi  = new GameInstance();
            gi.Name     = cgr.Name;
            gi.ID       = cgr.Game.ID;
            gi.entities = cgr.Game.Entities;
            games.Add(gi);
            Debug.Log("Added game: " + gi.Name);
            break;

        case MsgType.GameMasterFrame:
            GameMasterFrame gmf = ((GameMasterFrame)parsedMsg);
            Debug.Log("masterframe for gameID:" + gmf.ID.ToString());
            for (int i = 0; i < games.Count; i++)
            {
                if (games[i].ID == gmf.ID)
                {
                    Debug.Log("Updating game entities");
                    games[i].entities = gmf.Entities;
                }
            }
            break;
        }
    }