Exemplo n.º 1
0
 /// <summary>
 /// Invalid message is received
 /// </summary>
 protected void FireInvalidMessageReceived(Object sender, SyslogMessageReceivedEventArgs messageArgs)
 {
     if (this.InvalidMessageReceived != null)
     {
         this.InvalidMessageReceived.BeginInvoke(sender, messageArgs, null, null);
     }
 }
Exemplo n.º 2
0
        /// <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());
            }
        }