Ejemplo n.º 1
0
        private uint Serialize(NpCloudRequestParameter data, uint uid, MemoryStream stream)
        {
            NpMessagePack.Pack <object>(data.content, stream);
            uint uid2 = this.GetUId(uid);

            byte[] bytes = BitConverter.GetBytes(uid2);
            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(bytes);
            }
            stream.Write(bytes, 0, bytes.Length);
            HMACSHA512 hmacsha = new HMACSHA512(Encoding.ASCII.GetBytes(this.HASH_KEY));

            byte[] array = hmacsha.ComputeHash(stream.ToArray());
            stream.SetLength(stream.Length - 4L);
            stream.Write(array, 0, array.Length);
            stream.Write(bytes, 0, bytes.Length);
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            dictionary["data"] = Convert.ToBase64String(stream.ToArray());
            data.content       = new Dictionary <string, object>
            {
                {
                    "param",
                    dictionary
                }
            };
            stream.Seek(0L, SeekOrigin.Begin);
            stream.SetLength(0L);
            NpMessagePack.Pack <object>(data, stream);
            return(uid2);
        }
Ejemplo n.º 2
0
        private byte[] CreateSystemBuffer(NpCloudRequestParameter parameter, NpCloudHeaderType type)
        {
            MemoryStream memoryStream = new MemoryStream();

            NpMessagePack.Pack <object>(parameter, memoryStream);
            return(this.AddHeaderBuffer(memoryStream.GetBuffer(), type));
        }
Ejemplo n.º 3
0
 public void OnMessage(object sender, MessageEventArgs e)
 {
     try
     {
         if (!this.mIsLogin)
         {
             int    num   = e.RawData.Length - 10;
             byte[] array = new byte[num];
             Array.Copy(e.RawData, 10, array, 0, num);
             NpCloudResponseParameter <string> npCloudResponseParameter = NpMessagePack.Unpack <NpCloudResponseParameter <string> >(array);
             if (npCloudResponseParameter.body.IndexOf("200") < 0)
             {
                 this.mIsError  = true;
                 this.mErrorMsg = "サーバーへの接続に失敗しました。";
             }
             else
             {
                 this.mIsLogin = true;
             }
         }
         else
         {
             this.Receive(e.RawData);
         }
     }
     catch (Exception ex)
     {
         this.mIsError  = true;
         this.mErrorMsg = ex.Message + "\n" + ex.StackTrace;
     }
 }
Ejemplo n.º 4
0
        private void messagePack(byte[] data)
        {
            Dictionary <string, object> dictionary = NpMessagePack.Unpack <Dictionary <string, object> >(data);

            if (dictionary.ContainsKey("response"))
            {
                Dictionary <string, object> ret = (Dictionary <string, object>)dictionary["response"];
                this.SetOAuthResultData(ret, string.Empty);
            }
            else
            {
                this.SetOAuthResultData(dictionary, string.Empty);
            }
        }
Ejemplo n.º 5
0
        protected byte[] CreateLoginParameter(NpCloudSetting setting, object option)
        {
            string[] array = setting.ProjectId.Split(new char[]
            {
                '.'
            });
            string str = setting.ProjectId;

            if (array.Length > 1)
            {
                str = array[1];
            }
            NpCloudRequestParameter npCloudRequestParameter = new NpCloudRequestParameter();

            npCloudRequestParameter.content = new Dictionary <string, object>
            {
                {
                    "projectId",
                    setting.ProjectId
                },
                {
                    "projectPass",
                    str + "pass"
                },
                {
                    "userId",
                    setting.UserId
                }
            };
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary.Add("value", NpCloudCommandType.login.ToString());
            if (option != null)
            {
                dictionary.Add("option", option);
            }
            npCloudRequestParameter.command = dictionary;
            npCloudRequestParameter.type    = "direct";
            MemoryStream memoryStream = new MemoryStream();

            NpMessagePack.Pack <object>(npCloudRequestParameter, memoryStream);
            return(this.AddHeaderBuffer(memoryStream.GetBuffer(), NpCloudHeaderType.CommonMsg));
        }
Ejemplo n.º 6
0
        private void LoginResponse(int timeOut)
        {
            if (!this.mSocket.Poll(timeOut * 1000000, SelectMode.SelectRead))
            {
                throw new NpCloudException(720, "接続リクエストのタイムアウトです。");
            }
            byte[] array = new byte[1024];
            this.mSocket.Receive(array);
            int num = array.Length - 10;

            byte[] array2 = new byte[num];
            Array.Copy(array, 10, array2, 0, num);
            NpCloudResponseParameter <string> npCloudResponseParameter = NpMessagePack.Unpack <NpCloudResponseParameter <string> >(array2);

            if (npCloudResponseParameter.body.IndexOf("200") < 0)
            {
                throw new NpCloudException(721, "サーバーへの接続に失敗しました。");
            }
        }
Ejemplo n.º 7
0
        public T Deserialize <T>(string buffer) where T : class
        {
            if (buffer == null || buffer.Equals(string.Empty))
            {
                throw new NpCloudException(780, "データが存在しませんでした。");
            }
            byte[] array = Convert.FromBase64String(buffer);
            int    num   = array.Length - 64;

            byte[] array2 = new byte[64];
            byte[] array3 = new byte[num];
            Array.Copy(array, num, array2, 0, 64);
            Array.Copy(array, array3, num);
            HMACSHA512 hmacsha = new HMACSHA512(Encoding.ASCII.GetBytes(this.HASH_KEY));
            string     text    = BitConverter.ToString(hmacsha.ComputeHash(array3));
            string     value   = BitConverter.ToString(array2);

            if (!text.Equals(value))
            {
                throw new NpCloudException(781, "ハッシュの値が違います、改ざんされている可能性があります。");
            }
            return(NpMessagePack.Unpack <T>(array3));
        }
Ejemplo n.º 8
0
 private T ReceiveAction <T>(byte[] tmpBuffer) where T : class
 {
     return(NpMessagePack.Unpack <T>(tmpBuffer));
 }
Ejemplo n.º 9
0
        public void Update()
        {
            byte[] array = null;
            while (this.SocketInstance != null)
            {
                NPCloudReceiveParameter <NPCloudReceiveHashParaemter> requestParameter = this.SocketInstance.GetRequestParameter <NPCloudReceiveParameter <NPCloudReceiveHashParaemter> >(out array);
                if (requestParameter == null || array == null)
                {
                    break;
                }
                string[] array2 = requestParameter.command.Split(new char[]
                {
                    ':'
                });
                NPCloudReceiveParameter <NpCloudVenusErrorParameter> npcloudReceiveParameter = NpMessagePack.Unpack <NPCloudReceiveParameter <NpCloudVenusErrorParameter> >(array);
                NpCloudErrorData npCloudErrorData = new NpCloudErrorData();
                npCloudErrorData.command    = array2[1];
                npCloudErrorData.resultCode = requestParameter.resultCode;
                npCloudErrorData.resultMsg  = requestParameter.resultMsg;
                npCloudErrorData.venus      = npcloudReceiveParameter.body;
                if (requestParameter.resultCode == null || !requestParameter.resultCode.Equals("0"))
                {
                    if (requestParameter.resultCode == "406")
                    {
                        throw new NpCloudException(712, requestParameter.body.shardingServ);
                    }
                    for (int i = 0; i < this.mListenerlist.Count; i++)
                    {
                        if (this.mListenerlist[i].ReceiveException(npCloudErrorData))
                        {
                        }
                    }
                    this.mListener.OnRequestException(npCloudErrorData);
                }
                object receiveData = null;
                string text        = array2[1];
                if (text == null)
                {
                    goto IL_2EA;
                }
                if (NpCloudManager.< > f__switch$map0 == null)
                {
                    NpCloudManager.< > f__switch$map0 = new Dictionary <string, int>(8)
                    {
                        {
                            string.Empty,
                            0
                        },
                        {
                            "9100",
                            1
                        },
                        {
                            "9101",
                            1
                        },
                        {
                            "9102",
                            1
                        },
                        {
                            "9105",
                            1
                        },
                        {
                            "9106",
                            1
                        },
                        {
                            "9201",
                            2
                        },
                        {
                            "9202",
                            3
                        }
                    };
                }
                int num;
                if (!NpCloudManager.< > f__switch$map0.TryGetValue(text, out num))
                {
                    goto IL_2EA;
                }
                switch (num)
                {
                case 0:
                    if (array2[0].Equals(NpCloudValueType.send.ToString()))
                    {
                        NPCloudReceiveParameter <Dictionary <string, object> > npcloudReceiveParameter2 = NpMessagePack.Unpack <NPCloudReceiveParameter <Dictionary <string, object> > >(array);
                        this.mListener.OnResponse((int)npcloudReceiveParameter2.sender, npcloudReceiveParameter2.body);
                    }
                    else if (array2[0].Equals(NpCloudValueType.finduser.ToString()))
                    {
                        NPCloudReceiveParameter <NpCloudReceiveFindUserParameter> npcloudReceiveParameter3 = NpMessagePack.Unpack <NPCloudReceiveParameter <NpCloudReceiveFindUserParameter> >(array);
                        List <string> on = npcloudReceiveParameter3.body.on;
                        if (NpCloudManager.< > f__mg$cache0 == null)
                        {
                            NpCloudManager.< > f__mg$cache0 = new Converter <string, int>(int.Parse);
                        }
                        List <int>    on2 = on.ConvertAll <int>(NpCloudManager.< > f__mg$cache0);
                        List <string> off = npcloudReceiveParameter3.body.off;
                        if (NpCloudManager.< > f__mg$cache1 == null)
                        {
                            NpCloudManager.< > f__mg$cache1 = new Converter <string, int>(int.Parse);
                        }
                        List <int> off2 = off.ConvertAll <int>(NpCloudManager.< > f__mg$cache1);
                        this.mListener.OnFindUser(on2, off2);
                    }
                    continue;

                case 1:
                    receiveData = this.SocketInstance.Deserialize <NpCloudReceiveRoomParameter>(requestParameter.body.data);
                    break;

                case 2:
                    receiveData = NpMessagePack.Unpack <NPCloudReceiveParameter <string> >(array);
                    break;

                case 3:
                    receiveData = NpMessagePack.Unpack <NPCloudReceiveParameter <List <RoomMsgLog> > >(array);
                    break;

                case 4:
                    goto IL_2EA;

                default:
                    goto IL_2EA;
                }
IL_30C:
                for (int j = 0; j < this.mListenerlist.Count; j++)
                {
                    if (this.mListenerlist[j].Receive(array2[1], receiveData, requestParameter.resTime))
                    {
                    }
                }
                continue;
IL_2EA:
                NPCloudReceiveParameter <Dictionary <string, object> > npcloudReceiveParameter4 = NpMessagePack.Unpack <NPCloudReceiveParameter <Dictionary <string, object> > >(array);
                this.mListener.OnCtrlResponse(array2[1], npcloudReceiveParameter4.body);
                goto IL_30C;
            }
        }