/// <summary> /// Invalid message is received /// </summary> protected void FireInvalidMessageReceived(Object sender, SyslogMessageReceivedEventArgs messageArgs) { if (this.InvalidMessageReceived != null) { this.InvalidMessageReceived.BeginInvoke(sender, messageArgs, null, null); } }
/// <summary> /// Process a syslog message /// </summary> private void ProcessSyslogMessage(string strMessage, TcpClient client, Stream sourceStream, Guid sessionId) { var localEp = client.Client.LocalEndPoint as IPEndPoint; var remoteEp = client.Client.RemoteEndPoint as IPEndPoint; Uri localEndpoint = new Uri(String.Format("tcp://{0}:{1}", localEp.Address, localEp.Port)); Uri remoteEndpoint = new Uri(String.Format("tcp://{0}:{1}", remoteEp.Address, remoteEp.Port)); // Get rid of length Regex messageLengthMatch = new Regex(@"^(\d*)\s(.*)$"); var match = messageLengthMatch.Match(strMessage); if (match.Success) { strMessage = match.Groups[2].Value; } if (strMessage.Length == 0) { return; // no message } try { var message = SyslogMessage.Parse(strMessage, sessionId); SyslogMessageReceivedEventArgs messageArgs = null; if (sourceStream is SslStream) { messageArgs = new AuthenticatedSyslogMessageReceivedEventArgs(message, remoteEndpoint, localEndpoint, DateTime.Now, (sourceStream as SslStream).RemoteCertificate); } else { messageArgs = new SyslogMessageReceivedEventArgs(message, remoteEndpoint, localEndpoint, DateTime.Now); } this.FireMessageReceived(this, messageArgs); } catch (SyslogMessageException e) { this.FireInvalidMessageReceived(this, new SyslogMessageReceivedEventArgs(e.FaultingMessage, remoteEndpoint, localEndpoint, DateTime.Now)); this.m_traceSource.TraceError(e.Message); } catch (Exception e) { this.m_traceSource.TraceError(e.ToString()); } }