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]))}"); }
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)); } }
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]))}"); }
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]))}"); }