Exemple #1
0
        public void NewOut(IPirateXPackage package)
        {
            var request = new PirateXRequestInfo(package);
            var text    = package.ContentBytes == null ? string.Empty : Encoding.UTF8.GetString(package.ContentBytes);

            _json = text;
            var viewitem = listViewOut.Items.Add(DateTime.Now.ToString());

            viewitem.SubItems.Add($"{string.Join("&", request.Headers.AllKeys.Select(a => a + "=" + request.Headers[a]))}");
            viewitem.SubItems.Add($"{string.Join("&", request.QueryString.AllKeys.Select(a => a + "=" + request.QueryString[a]))}");
        }
Exemple #2
0
        public void Send(string name, string querystring, NameValueCollection exheader = null)
        {
            var headerNc = new NameValueCollection
            {
            };

            foreach (string key in ExHeaders.Keys)
            {
                headerNc.Add(key, ExHeaders[key]);
            }

            headerNc.Add("c", name);
            headerNc.Add("o", $"{O++}");
            headerNc.Add("t", $"{Utils.GetTimestamp()}");
            headerNc.Add("lang", $"{Lang}");
            headerNc.Add("format", "protobuf");
            headerNc.Add("token", HttpUtility.UrlEncode(_token));

            if (exheader != null)
            {
                foreach (var item in exheader.AllKeys)
                {
                    headerNc[item] = exheader[item];
                }
            }


            var reqeustInfo = new PirateXRequestInfo(headerNc, HttpUtility.ParseQueryString(querystring));

            var package   = reqeustInfo.ToRequestPackage();
            var senddatas = PackageProcessor.PackPacketToBytes(package);

            Client.Send(senddatas, 0, senddatas.Length);
            SendTime = DateTime.Now;
            if (OnSend != null)
            {
                OnSend(this, new OutMsgEventArgs(name, reqeustInfo));
            }
        }
Exemple #3
0
        public void pack_request_to_bytes_then_unpack_it()
        {
            var piratepackage = new ProtocolPackage();

            var requestInfo = new PirateXRequestInfo(new NameValueCollection()
            {
                { "c", "test" },
                { "t", "123456" }
            }, new NameValueCollection()
            {
                { "p1", "1" },
                { "p2", "2" },
            });

            var requestPackage = new PirateXRequestPackage()
            {
                HeaderBytes  = Encoding.UTF8.GetBytes($"{String.Join("&", requestInfo.Headers.AllKeys.Select(a => a + "=" + requestInfo.Headers[a]))}"),
                ContentBytes = Encoding.UTF8.GetBytes($"{String.Join("&", requestInfo.QueryString.AllKeys.Select(a => a + "=" + requestInfo.QueryString[a]))}")
            };

            var unpackrequestpack = piratepackage.PackPacketToBytes(requestPackage);

            var requestInfo2 = new PirateXRequestInfo(piratepackage.UnPackToPacket(unpackrequestpack));

            Assert.IsNotEmpty(requestInfo.C);
            Assert.IsNotEmpty(requestInfo.Key);

            Assert.IsNotEmpty(requestInfo2.C);


            Assert.AreEqual($"{String.Join("&", requestInfo.Headers.AllKeys.Select(a => a + "=" + requestInfo.Headers[a]))}"
                            , $"{String.Join("&", requestInfo2.Headers.AllKeys.Select(a => a + "=" + requestInfo2.Headers[a]))}");

            Assert.AreEqual($"{String.Join("&", requestInfo.QueryString.AllKeys.Select(a => a + "=" + requestInfo.QueryString[a]))}"
                            , $"{String.Join("&", requestInfo2.QueryString.AllKeys.Select(a => a + "=" + requestInfo2.QueryString[a]))}");
        }
Exemple #4
0
        public void pack_request_to_bytes_then_unpack_it_with_crypto()
        {
            var clientPackage = new ProtocolPackage()
            {
                CryptoByte = new BitArray(new bool[8]
                {
                    false, false, false, false,
                    false, false, false, true
                }).ConvertToByte(),
            };

            var serverPackage = new ProtocolPackage()
            {
                CryptoByte = new BitArray(new bool[8]
                {
                    false, false, false, false,
                    false, false, false, true
                }).ConvertToByte(),
            };

            var clientKeys = new KeyGenerator(100).MakeKey();
            var serverKeys = new KeyGenerator(200).MakeKey();

            //client
            clientPackage.PackKeys   = clientKeys;
            clientPackage.UnPackKeys = serverKeys;
            //server
            serverPackage.PackKeys   = serverKeys;
            serverPackage.UnPackKeys = clientKeys;

            var requestInfo = new PirateXRequestInfo(new NameValueCollection()
            {
                { "c", "test" },
                { "t", "123456" }
            }, new NameValueCollection()
            {
                { "p1", "1" },
                { "p2", "2" },
            });

            var requestPackage = new PirateXRequestPackage()
            {
                HeaderBytes  = Encoding.UTF8.GetBytes($"{String.Join("&", requestInfo.Headers.AllKeys.Select(a => a + "=" + requestInfo.Headers[a]))}"),
                ContentBytes = Encoding.UTF8.GetBytes($"{String.Join("&", requestInfo.QueryString.AllKeys.Select(a => a + "=" + requestInfo.QueryString[a]))}")
            };

            var unpackrequestpack = clientPackage.PackPacketToBytes(requestPackage);

            Console.WriteLine($"[{string.Join(",", unpackrequestpack)}]");

            var requestInfo2 = new PirateXRequestInfo(serverPackage.UnPackToPacket(unpackrequestpack));

            Assert.IsNotEmpty(requestInfo.C);
            Assert.IsNotEmpty(requestInfo.Key);

            Assert.IsNotEmpty(requestInfo2.C);


            Assert.AreEqual($"{String.Join("&", requestInfo.Headers.AllKeys.Select(a => a + "=" + requestInfo.Headers[a]))}"
                            , $"{String.Join("&", requestInfo2.Headers.AllKeys.Select(a => a + "=" + requestInfo2.Headers[a]))}");

            Assert.AreEqual($"{String.Join("&", requestInfo.QueryString.AllKeys.Select(a => a + "=" + requestInfo.QueryString[a]))}"
                            , $"{String.Join("&", requestInfo2.QueryString.AllKeys.Select(a => a + "=" + requestInfo2.QueryString[a]))}");
        }