public byte[] EncodeToProtocol(Level level, byte[] timestamp, string hostName, string serviceName, string message, byte[] initVector) { byte[] bufOut = null; using (var stream = new MemoryStream(16 + HOST_NAME_SIZE + SERVICE_NAME_SIZE + PLUGIN_OUTPUT_SIZE)) { stream.WriteShort(Nsca_VERSION); //bytes 0-1 stream.WriteShort(0); //bytes 2-3 stream.WriteInt(0); //bytes 4-8 stream.Write(timestamp, 0, 4); //bytes 9-13 stream.WriteShort((short)level); //bytes 14-15 stream.WriteFixedString(hostName, HOST_NAME_SIZE); if (string.IsNullOrWhiteSpace(serviceName) == false) stream.WriteFixedString(serviceName, SERVICE_NAME_SIZE); // process service check result else stream.WriteFixedString("\x0", SERVICE_NAME_SIZE); // process host check result stream.WriteFixedString(message, PLUGIN_OUTPUT_SIZE); stream.WriteShort(0); int hash = CRC32.Compute(stream.ToArray()); stream.Position = 4; stream.WriteInt(hash); var encryptor = EncryptorFactory.CreateEncryptor(settings.EncryptionType); bufOut = encryptor.Encrypt(stream.ToArray(), initVector, settings.Password); } return bufOut; }
public byte[] EncodeToProtocol(Level level, byte[] timestamp, string hostName, string serviceName, string message, byte[] initVector) { using (var stream = new MemoryStream(16 + HOST_NAME_SIZE + SERVICE_NAME_SIZE + PLUGIN_OUTPUT_SIZE)) { stream.WriteShort(NSCA_VERSION); //bytes 0-1 stream.WriteShort(0); //bytes 2-3 stream.WriteInt(0); //bytes 4-8 stream.Write(timestamp, 0, 4); //bytes 9-13 stream.WriteShort((short) level); //bytes 14-15 stream.WriteFixedString(hostName, HOST_NAME_SIZE); stream.WriteFixedString(serviceName, SERVICE_NAME_SIZE); stream.WriteFixedString(message, PLUGIN_OUTPUT_SIZE); stream.WriteShort(0); int hash = CRC32.Compute(stream.ToArray()); stream.Position = 4; stream.WriteInt(hash); var encryptor = EncryptorFactory.CreateEncryptor(settings.EncryptionType); return encryptor.Encrypt(stream.ToArray(), initVector, settings.Password); } }