public byte[] ReadServiceDataBytes() { try { var flag = this.ReadInt(); if (flag == 1179010630) { return(new byte[0]); } var isgzip = (flag & 1) == 1; this.KeepAlive = (flag & 2) == 2; var len = flag >> 2; var datas = this.ReceiveDatas(len); if (isgzip) { datas = GZipHelper.Decompress(datas); } return(datas); } catch (System.IO.IOException ex) { if (ex.InnerException is SocketException) { throw ex.InnerException; } throw ex; } }
/// <summary> /// Loads user data from Unity's PlayerPrefs /// </summary> public void Load() { Debug.Log("SETTINGS: Start Loading"); if (PlayerPrefs.HasKey(Consts.APP_SHORTNAME)) { Debug.Log("SETTINGS: Loading from local device..."); string rawStringBinaryData = PlayerPrefs.GetString(Consts.APP_SHORTNAME); StandaloneSavedData standaloneSavedData = null; try { string decompressedJSON = GZipHelper.Decompress(rawStringBinaryData); standaloneSavedData = JsonUtility.FromJson <StandaloneSavedData>(decompressedJSON); } catch (Exception ex) { Debug.Log("SETTING: Error parsing local saved settings object.\n" + ex.Message); } LoadSettingsFromSavedData(standaloneSavedData); } else { Debug.Log("SETTINGS: No saved settings found. Creating new settings."); ResetSettings(); Save(); Load(); } }
protected FileContentResult ProcesarArchivo(Archivo archivo) { byte[] contenido = null; if (archivo.Contenido != null) { contenido = GZipHelper.Decompress(Convert.FromBase64String(archivo.Contenido)); if (archivo.TipoMime.Contains("text/", StringComparison.OrdinalIgnoreCase)) { contenido = EncodingHelper.ConvertToUTF8(contenido, _configuration["OracleConfiguration:CharacterSet"]); } } else if (archivo.Url != null) { using (var webClient = new WebClient()) { contenido = webClient.DownloadData(archivo.Url); } } if (archivo.Extension.Equals(RiskConstants.FORMATO_HTML, StringComparison.OrdinalIgnoreCase) && HtmlHelper.ObtenerMetaContent(contenido, RiskConstants.META_FORMAT).Equals(RiskConstants.FORMATO_PDF, StringComparison.OrdinalIgnoreCase)) { contenido = PdfHelper.ConvertToPdf(contenido); archivo.Extension = RiskConstants.FORMATO_PDF.ToLower(); archivo.TipoMime = MediaTypeNames.Application.Pdf; } return(File(contenido, archivo.TipoMime, string.Concat(archivo.Nombre, ".", archivo.Extension))); }
private bool Decompress(byte[] data) { for (int i = 0; i < _response.fileDesc.Count; ++i) { SlgPB.FileDesc desc = _response.fileDesc[i]; MemoryStream stream = new MemoryStream(); stream.Write(data, desc.start, desc.length); try { byte[] buffer = stream.ToArray(); buffer = GZipHelper.Decompress(buffer); if (buffer != null) { if (!SaveFile(buffer, desc.name)) { return(false); } } } catch (System.Exception e) { return(false); } } return(true); }
private void OnBinaryMessageReceived(WebSocket webSocket, byte[] buffer) { Debug.Log("Binary Message received from server. Length: " + buffer.Length); labelMessage.text = "Length:" + buffer.Length; SocketResponse socketResponse; try { buffer = GZipHelper.Decompress(DESHelper.DecodeBytes(buffer, AppContext.GetInstance().getDesKey())); socketResponse = Serializer.Deserialize <SocketResponse>(new MemoryStream(buffer)); } catch (Exception) { Debug.LogError("SocketResponse parse error"); ShowMessage(ErrorCode.EC_PARSE_DATA_ERROR); DataHelper.GetInstance().CleanProfile(dbManager); return; } if (socketResponse != null) { String code = socketResponse.p1; if (!"0".Equals(code)) { ShowMessage(code); } else { HandleSocketResponse(socketResponse); } } }
private byte[] TakeHeadAndMessage(TcpSocketSaeaSession session) { var length = session.CompletedBuffer.Length - sizeof(long); var bytes = new byte[length]; Array.Copy(session.CompletedBuffer, sizeof(long), bytes, 0, length); return(GZipHelper.Decompress(bytes)); }
public T Decompress <T>(byte[] zipBuffer) { byte[] buffer = GZipHelper.Decompress(zipBuffer); using (MemoryStream stream = new MemoryStream(buffer)) { return(Deserialize <T>(stream)); } }
public override void OnMessage() { var defineHeadSize = sizeof(int); if (ListByteBuffer.Count < defineHeadSize) { return; } byte[] lenBytes = ListByteBuffer.GetRange(0, defineHeadSize).ToArray(); int packageLen = BitConverter.ToInt32(lenBytes, 0); if (packageLen < 0 || packageLen > ApplicationConfiguartion.Options.MaxPacketSize || packageLen < 25) //数据不合法 或 小于大概ack固定长度 { this.Log(LogOutLevelType.Error, $"Type:{ConnectionWorkType.ToString()} 长度不合法!"); this.CloseSession(); return; } if (packageLen + defineHeadSize > ListByteBuffer.Count) { return; } this._ackRetainData = ListByteBuffer.GetRange(defineHeadSize, packageLen).ToArray(); ListByteBuffer.RemoveRange(0, packageLen + defineHeadSize); var longSize = sizeof(long); var packageBody = GZipHelper.Decompress(_ackRetainData, longSize, _ackRetainData.Length - longSize); var messageHead = TakeMessageHead(packageBody); if (messageHead == ACK_HEAD) { var ack = PacketSerializeHelper.DeserializePacket <AckPacket>(TakeMessage(packageBody)); this._accessId = ack.AccessId; if (ValidityAccessIdWithKey((ConnectionWorkType)ack.Type, ack.AccessId, ack.AccessKey)) { this.ApportionTypeHandlerEvent?.Invoke(this, (ConnectionWorkType)ack.Type); } else { if ((ConnectionWorkType)ack.Type == ConnectionWorkType.MainApplicationConnection) { var midData = MessageHelper.CopyMessageHeadTo(MessageHead.MID_ACCESS_KEY_WRONG); this.CurrentSession.SendAsync(midData.BuilderHeadPacket()); } this.Log(LogOutLevelType.Debug, $"Type:{((ConnectionWorkType)ack.Type).ToString()} AccessId:{ack.AccessId} 或AccessKey:{ack.AccessKey} 验证失败,登陆不成功!"); this.CloseSession(); } } else { this.CloseSession(); this.Log(LogOutLevelType.Warning, $"未知消息,连接被关闭!"); } }
private void PackageProcess() { if (this._isCompress) { CompletedBuffer = GZipHelper.Decompress(CompletedBuffer); } this.NotifyEventHandler?.Invoke(TcpSocketCompletionNotify.OnDataReceived, this); }
private string GetResponseContent(IRestResponse response, bool useGZip) { var data = AESHelper.Decrypt(response.RawBytes, this._secretKey, null, CipherMode.ECB, PaddingMode.PKCS7); if (useGZip) { data = GZipHelper.Decompress(data); } return(Encoding.UTF8.GetString(data)); }
/// <summary> /// 将压缩过的银行字符串转化成可读的字符串 /// </summary> /// <param name="encoding"></param> /// <returns></returns> public string GetContent(Encoding encoding = null) { if (!string.IsNullOrWhiteSpace(this.Value)) { var content = (encoding ?? Encoding.GetEncoding("GB18030")) .GetString(GZipHelper.Decompress(Convert.FromBase64String(this.Value))); return(content); } return(null); }
public static T DeserializeXml <T>(byte[] buffer, bool decompress = false) { if (buffer == null || buffer.Length == 0) { return(default(T)); } using (var ms = new MemoryStream(decompress ? GZipHelper.Decompress(buffer) : buffer)) { var ser = new XmlSerializer(typeof(T)); return((T)ser.Deserialize(ms)); } }
public void StartConsuming() { ProcessingBlock currentProcessedBlock; while (_context.BlockQueue.TryDequeue(out currentProcessedBlock) && !_context.IsExecutionStopped()) { var decompressedBytes = GZipHelper.Decompress(currentProcessedBlock.BlockData); _context.ConsumerEventsManager.GetCurrentThreadEvent(currentProcessedBlock.BlockIndex).WaitOne(); _context.WriteFile.WriteToFile(decompressedBytes); _context.ConsumerEventsManager.GetNextThreadEvent(currentProcessedBlock.BlockIndex).Set(); CheckWorkDone(currentProcessedBlock); } }
private void ProcessPackage(byte[] data) { long id = BitConverter.ToInt64(data, 1); GCHandle gc = GCHandle.FromIntPtr(new IntPtr(id)); TcpProxySessionBased session = gc.Target as TcpProxySessionBased; if (session == null) { this.ConsoleWriteLine("DEBUG ProcessPackage SESSION NULL", ConsoleColor.Red); return; } byte[] bytes = new byte[data.Length - (sizeof(Int64) + 1)]; Array.Copy(data, sizeof(Int64) + 1, bytes, 0, bytes.Length); session._receiveTransferredBytes = bytes.Length; this._onSessionNotifyProc(SessionCompletedNotify.OnRecv, session as SessionProviderContext); session.Buffer.AddRange(bytes); do { if (session.Buffer.Count < 4) { return; } byte[] lenBytes = session.Buffer.GetRange(0, 4).ToArray(); int packageLen = BitConverter.ToInt32(lenBytes, 0); //缓冲区越界判断 if (packageLen > (1024 * 1024 * 2) || packageLen < 1) { this.ConsoleWriteLine("DEBUG BUFFER OutOfRange !! ProcessPackage DATA", ConsoleColor.Red); this._managerSession.Close(true); return; } if (packageLen > session.Buffer.Count - 4) { return; } byte[] completeBytes = session.Buffer.GetRange(4, packageLen).ToArray(); session._completedBuffer = GZipHelper.Decompress(completeBytes); this._onSessionNotifyProc(SessionCompletedNotify.OnReceived, session as SessionProviderContext); session.Buffer.RemoveRange(0, packageLen + 4); } while (session.Buffer.Count > 4); }
public static T DeserializeBinary <T>(byte[] buffer, bool decompress = false) { if (buffer == null || buffer.Length == 0) { return(default(T)); } using (var ms = new MemoryStream(decompress ? GZipHelper.Decompress(buffer) : buffer)) { var bf = new BinaryFormatter(); //var bf = new BinaryFormatter { Binder = new DeserializationBinder(typeof(T)) }; return((T)bf.Deserialize(ms)); } }
public override void OnMessage() { var defineHeadSize = sizeof(int); if (ListByteBuffer.Count < defineHeadSize) { return; } byte[] lenBytes = ListByteBuffer.GetRange(0, defineHeadSize).ToArray(); int packageLen = BitConverter.ToInt32(lenBytes, 0); if (packageLen < 0 || packageLen > ApplicationConfiguartion.MaxPacketSize || packageLen < 25) //数据不合法 或 小于大概ack固定长度 { this.CloseSession(); return; } if (packageLen > ListByteBuffer.Count - defineHeadSize) { return; } this._ackRetainPacketData = ListByteBuffer.GetRange(0, defineHeadSize + packageLen).ToArray(); ListByteBuffer.RemoveRange(0, packageLen + defineHeadSize); this._accessId = BitConverter.ToInt64(_ackRetainPacketData, defineHeadSize); var longSize = sizeof(long); var packageBody = GZipHelper.Decompress(_ackRetainPacketData, defineHeadSize + longSize, _ackRetainPacketData.Length - defineHeadSize - longSize); var messageHead = TakeMessageHead(packageBody); if (messageHead == ACK_HEAD) { var ack = PacketSerializeHelper.DeserializePacket <AckPacket>(TakeMessage(packageBody)); if (ValidityAccessIdWithKey(ack.Type, ack.AccessId, ack.AccessKey)) { this.ApportionTypeHandlerEvent?.Invoke(this, ack.Type); } else { this.CloseSession(); } } else { this.CloseSession(); } }
public IActionResult RecuperarLogoGrupo([FromQuery, SwaggerParameter(Description = "Identificador del grupo", Required = true)] int idGrupo, [FromQuery, SwaggerParameter(Description = "Version", Required = false)] int?version) { var respuesta = _genService.RecuperarArchivo("T_GRUPOS", "LOGO", idGrupo.ToString(), version); if (!respuesta.Codigo.Equals(RiskConstants.CODIGO_OK)) { return(ProcesarRespuesta(respuesta)); } var archivo = respuesta.Datos; byte[] contenido = GZipHelper.Decompress(Convert.FromBase64String(archivo.Contenido)); return(File(contenido, archivo.TipoMime, string.Concat(archivo.Nombre, ".", archivo.Extension))); }
private byte[] TakeHeadAndMessage(TcpSocketSaeaSession session) { var bytes = session.CompletedBuffer.Copy(sizeof(long), session.CompletedBuffer.Length - sizeof(long)); return(GZipHelper.Decompress(bytes)); }
public async Task Enviar(Correo msj) { var message = new MimeMessage(); message.From.Add(new MailboxAddress(mailboxFromName, mailboxFromAddress)); message.To.Add(new MailboxAddress(msj.MensajeTo, msj.MensajeTo)); if (msj.MensajeReplyTo != null) { message.ReplyTo.Add(new MailboxAddress(msj.MensajeReplyTo, msj.MensajeReplyTo)); } if (msj.MensajeCc != null) { message.Cc.Add(new MailboxAddress(msj.MensajeCc, msj.MensajeCc)); } if (msj.MensajeBcc != null) { message.Bcc.Add(new MailboxAddress(msj.MensajeBcc, msj.MensajeBcc)); } message.Subject = msj.MensajeSubject; var multipart = new Multipart("mixed"); // Body string subtype; if (msj.MensajeBody.Contains("<html>") && msj.MensajeBody.Contains("</html>")) { subtype = "html"; } else { subtype = "plain"; } var body = new TextPart(subtype) { Text = msj.MensajeBody }; multipart.Add(body); // Attachments if (msj.Adjuntos.Any()) { foreach (var adjunto in msj.Adjuntos) { string contentType = adjunto.TipoMime; if (contentType == null) { contentType = "application/octet-stream"; } byte[] contenido = GZipHelper.Decompress(Convert.FromBase64String(adjunto.Contenido)); var ms = new MemoryStream(); ms.Write(contenido, 0, contenido.Length); var attachment = new MimePart(contentType) { Content = new MimeContent(ms, ContentEncoding.Default), ContentDisposition = new ContentDisposition(ContentDisposition.Attachment), ContentTransferEncoding = ContentEncoding.Base64, FileName = string.Concat(adjunto.Nombre, ".", adjunto.Extension) }; multipart.Add(attachment); } } message.Body = multipart; await smtpClient.SendAsync(message); }
void OnRequestFinished(HTTPRequest req, HTTPResponse resp) { HttpFinished(); switch (req.State) { // The request finished without any problem. case HTTPRequestStates.Finished: if (resp.StatusCode == 200) { bool isNormal = false; if (resp.Headers.ContainsKey("normal")) { isNormal = "true".Equals(resp.Headers["normal"][0]); } byte[] protoBytes = GZipHelper.Decompress(DESHelper.DecodeBytes(resp.Data, AppContext.GetInstance().getDesKey())); //Debug.Log("isNormal:" + isNormal); if (!isNormal) { SimpleApiResponse response = null; try { response = Serializer.Deserialize <SimpleApiResponse>(new MemoryStream(protoBytes)); Debug.Log("error response:" + response); } catch (Exception) { Debug.LogError("HttpMonoBehaviour SimpleApiResponse parse error"); ShowMessage(ErrorCode.EC_PARSE_DATA_ERROR); } if (response != null) { ShowMessage(response.code); } } else { Callback(protoBytes); } } else { ShowMessage(ErrorCode.EC_SERVER_ERROR); } break; // The request finished with an unexpected error. // The request's Exception property may contain more information about the error. case HTTPRequestStates.Error: Debug.LogError("Request Finished with Error! " + (req.Exception != null ? (req.Exception.Message + "\n" + req.Exception.StackTrace) : "No Exception")); ShowMessage(ErrorCode.EC_NETWORK_UNREACHED); break; // The request aborted, initiated by the user. case HTTPRequestStates.Aborted: Debug.LogWarning("Request Aborted!"); ShowMessage(ErrorCode.EC_NETWORK_UNREACHED); break; // Ceonnecting to the server timed out. case HTTPRequestStates.ConnectionTimedOut: Debug.LogError("Connection Timed Out!"); ShowMessage(ErrorCode.EC_NETWORK_TIMEOUT); break; // The request didn't finished in the given time. case HTTPRequestStates.TimedOut: Debug.LogError("Processing the request Timed Out!"); ShowMessage(ErrorCode.EC_NETWORK_TIMEOUT); break; default: Debug.LogError("Connection Error!"); ShowMessage(ErrorCode.EC_NETWORK_TIMEOUT); break; } }
private void PacketHandler(TcpSocketSaeaSession session) { byte[] data = new byte[session.ReceiveBytesTransferred]; Array.Copy(session.CompletedBuffer, 0, data, 0, data.Length); if ((SessionWorkType)session.AppTokens[0] == SessionWorkType.ManagerSession) { _dataBuffer.AddRange(data); do { if (_dataBuffer.Count < 4) { return; } byte[] lenBytes = _dataBuffer.GetRange(0, 4).ToArray(); int packageLen = BitConverter.ToInt32(lenBytes, 0); //缓冲区越界判断 if (packageLen > (1024 * 1024 * 2) || packageLen < 1) { this.ConsoleWriteLine("DEBUG BUFFER OutOfRange !! PacketProcess MAIN", ConsoleColor.Red); this._dataBuffer.Clear(); session.Close(true); return; } if (packageLen > _dataBuffer.Count - 4) { return; } byte[] completedBytes = _dataBuffer.GetRange(4, packageLen).ToArray(); this.OnMessage(completedBytes); _dataBuffer.RemoveRange(0, packageLen + 4); } while (_dataBuffer.Count > 4); } else { var sessionBased = session.AppTokens[1] as TcpProxySessionBased; sessionBased._receiveTransferredBytes = data.Length; this._onSessionNotifyProc(SessionCompletedNotify.OnRecv, sessionBased as SessionProviderContext); sessionBased.Buffer.AddRange(data); do { if (sessionBased.Buffer.Count < 4) { return; } byte[] lenBytes = sessionBased.Buffer.GetRange(0, 4).ToArray(); int packageLen = BitConverter.ToInt32(lenBytes, 0); //缓冲区越界判断 if (packageLen > (1024 * 1024 * 2) || packageLen < 1) { this.ConsoleWriteLine("DEBUG BUFFER OutOfRange !! PacketProcess WORK", ConsoleColor.Red); session.Close(true); return; } if (packageLen > sessionBased.Buffer.Count - 4) { return; } byte[] completeBytes = sessionBased.Buffer.GetRange(4, packageLen).ToArray(); sessionBased._completedBuffer = GZipHelper.Decompress(completeBytes); this._onSessionNotifyProc(SessionCompletedNotify.OnReceived, sessionBased as SessionProviderContext); sessionBased.Buffer.RemoveRange(0, packageLen + 4); } while (sessionBased.Buffer.Count > 4); } }
/// <summary> /// 消息处理 /// </summary> /// <param name="session"></param> public void OnMessage(TcpSocketSaeaSession session) { byte[] data = new byte[session.ReceiveBytesTransferred]; Array.Copy(session.CompletedBuffer, 0, data, 0, data.Length); var type = session.AppTokens[SysContact.INDEX_CHANNELTYPE].ConvertTo <TcpChannelContextServiceType>(); if (type == TcpChannelContextServiceType.None) { //当通道类型未确认时,进入该区域处理消息 _buffer.AddRange(data); if (_buffer.Count < 4) { return; } byte[] lenBytes = _buffer.GetRange(0, 4).ToArray(); int packageLen = BitConverter.ToInt32(lenBytes, 0); if (packageLen < 0 || packageLen > 1024 * 1024 * 2) { session.Close(true); return; } if (packageLen > _buffer.Count - 4) { return; } //保留ack,与控制端连接时要用到 this._ack_buffer = _buffer.GetRange(0, packageLen + 4).ToArray(); byte[] Ack = GZipHelper.Decompress(_buffer.GetRange(4, packageLen).ToArray()); short headMsg = BitConverter.ToInt16(Ack, 0); if (headMsg == AckPacket) { // 命令头 消息体 连接类型 this._channelType = (TcpChannelContextServiceType)Ack[sizeof(Int16) + sizeof(Int64) + sizeof(Byte) - 1]; if (this._channelType == TcpChannelContextServiceType.ManagerChannel) { long accessKey = BitConverter.ToInt64(Ack, 2); if (!AccessKeyExamine.CheckOut(accessKey))//连接密码确认 { LogShowQueueHelper.WriteLog("ManagerChannel AccessKey Wrong " + accessKey.ToString(), "err"); byte[] body = MessageHelper.CommandCopyTo(MsgCommand.Msg_AccessKeyWrong); byte[] pack = new byte[body.Length + sizeof(Int32)]; BitConverter.GetBytes(body.Length).CopyTo(pack, 0); body.CopyTo(pack, 4); session.SendAsync(pack); //session.Close(true); return; } } this._session.AppTokens[SysContact.INDEX_CHANNELTYPE] = this._channelType; if (this._channelType == TcpChannelContextServiceType.ManagerWorkChannel || this._channelType == TcpChannelContextServiceType.ManagerChannel) { _buffer.RemoveRange(0, packageLen + 4); } this.OnChannelTypeCheckEventHandler?.Invoke(this, this._channelType); if (this._channelType == TcpChannelContextServiceType.ManagerChannel) { this.ManagerPackageProcess();//如果缓冲区还有数据 } } else { session.Close(true); } } else if (type == TcpChannelContextServiceType.WorkChannel && this._isJoin) { if (this._joinSession == null) { return; } this._joinSession.SendAsync(data); } else if (type == TcpChannelContextServiceType.ManagerWorkChannel && this._channelType != type)//当前连接类型为ManagerWorkChannel且当前通道类型为ManagerWorkChannel时表示通道此时未与工作类型关联,暂时将数据存放在缓存区,待关联时再将数据转发 { if (this._session == null) { return; } this._session.SendAsync(data); } else if (type == TcpChannelContextServiceType.ManagerChannel) { this._buffer.AddRange(data); this.ManagerPackageProcess(); } else if (type == TcpChannelContextServiceType.MainChannel) { this.OnMainChannelMessage?.Invoke(this, data);//直接转发 } else { _buffer.AddRange(data); } }