Exemplo n.º 1
0
        public void ReadData(Stream stream)
        {
            streamData.Clear();
            messages.Clear();
            StreamReader streamReader = new StreamReader(stream);

            currentLoadProg = 0;
            while (!streamReader.EndOfStream)
            {
                string line = GetNextLine(streamReader);
                if (line != null)
                {
                    while (!string.IsNullOrEmpty(line) && beginmsgRgx.IsMatch(line))
                    {
                        String[] outputarray = new String[18];

                        // get the index of the start of the msg
                        outputarray[0] = currentLoadProg.ToString();
                        outputarray[1] = dateRgx.Match(line).ToString();
                        outputarray[2] = DateTime.Parse(dateRgx.Match(line).ToString()).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss.ffffff", CultureInfo.InvariantCulture);
                        outputarray[3] = srcIpRgx.Match(line).ToString();                              //src IP
                        outputarray[4] = dstIpRgx.Match(line).ToString();
                        line           = GetNextLine(streamReader);
                        if (line == null)
                        {
                            break;
                        }

                        //check to match these only once. no need match a field if it is already found
                        bool  sipTwoDotOfound = false;
                        Match sipTwoDotO;
                        Match callid;
                        Match cseq;
                        Match to;
                        Match from;;
                        Match SDPIP;
                        Match ua;
                        Match serv;

                        //untill the begining of the next msg
                        while (!beginmsgRgx.IsMatch(line))
                        { //match line against regexs
                            switch (line)
                            {
                            case string s when(sipTwoDotO = requestRgx.Match(s)) != Match.Empty:
                                outputarray[5] = sipTwoDotO.ToString();

                                sipTwoDotOfound = true;
                                break;

                            case string s when(callid = callidRgx.Match(s)) != Match.Empty:
                                outputarray[6] = callid.Groups[1].ToString();

                                break;

                            case string s when(cseq = cseqRgx.Match(s)) != Match.Empty:
                                outputarray[17] = cseq.Groups[2].ToString();

                                break;

                            case string s when(to = toRgx.Match(s)) != Match.Empty:
                                outputarray[7] = to.Groups[1].ToString() + to.Groups[3].ToString();

                                break;

                            case string s when(from = fromRgx.Match(s)) != Match.Empty:
                                outputarray[8] = from.Groups[1].ToString() + from.Groups[3].ToString();

                                break;

                            case string s when s.Contains("Content-Type: application/sdp"):
                                outputarray[11] = " SDP";

                                break;

                            case string s when(SDPIP = SDPIPRgx.Match(s)) != Match.Empty:
                                outputarray[13] = SDPIP.ToString();

                                break;

                            case string s when mAudioRgx.IsMatch(s):
                                outputarray[14] = portRgx.Match(s).ToString().Trim();

                                outputarray[15] = codecRgx.Match(s).ToString().Trim();
                                if (outputarray[15] == "0")
                                {
                                    outputarray[15] = "G711u";
                                }
                                else if (outputarray[15] == "8")
                                {
                                    outputarray[15] = "G711a";
                                }
                                else if (outputarray[15] == "9")
                                {
                                    outputarray[15] = "G722";
                                }
                                else if (outputarray[15] == "18")
                                {
                                    outputarray[15] = "G729";
                                }
                                else
                                {
                                    outputarray[15] = "rtp-payload type:" + outputarray[15];
                                }
                                break;

                            case string s when(ua = uaRgx.Match(s)) != Match.Empty:
                                outputarray[16] = ua.ToString().Trim();

                                break;

                            case string s when(serv = serverRgx.Match(s)) != Match.Empty:
                                outputarray[16] = serv.ToString().Trim();

                                break;

                            case string s when occasRgx.IsMatch(s):
                                outputarray[16] = "occas";

                                break;
                            }
                            line = GetNextLine(streamReader);
                            if (line == null)
                            {
                                break;
                            }
                        }

                        // get the index of the end of the msg
                        outputarray[9]  = currentLoadProg.ToString();
                        outputarray[10] = "Gray";
                        outputarray[12] = "splunk"; //add file name
                        if (outputarray[5] == null)
                        {
                            outputarray[5] = "Invalid SIP characters";
                        }
                        if (sipTwoDotOfound)
                        {
                            lock (_DataLocker) //messages touched by another thread
                            {
                                messages.Add(outputarray);
                            }
                        }
                    }
                }
                else
                {
                    currentLoadProg++;
                }
            }
            streamReader.Close();
        }
Exemplo n.º 2
0
        public void AcSyslogReadData(Stream stream)
        {
            streamData.Clear();
            messages.Clear();
            StreamReader streamReader = new StreamReader(stream);

            currentLoadProg = 0;
            while (!streamReader.EndOfStream)
            {
                string line = GetNextLine(streamReader);
                if (line != null)
                {
                    while (!string.IsNullOrEmpty(line) && acSyslogBeginMsgRgx.IsMatch(line))
                    {
                        String[] outputarray = new String[18];
                        string   milliSeconds;
                        string   yearStrg;

                        // get the index of the start of the msg
                        outputarray[0] = currentLoadProg.ToString();
                        //outputarray[1] = acBeginMsgRgx.Match(line).Groups["timedate"].ToString();
                        milliSeconds = acSyslogBeginMsgRgx.Match(line).Groups["ms"].ToString();

                        outputarray[3] = acSyslogBeginMsgRgx.Match(line).Groups["SrcIP"].ToString(); //src IP
                        outputarray[4] = acSyslogBeginMsgRgx.Match(line).Groups["DstIP"].ToString();
                        outputarray[5] = acSyslogBeginMsgRgx.Match(line).Groups["req"].ToString();
                        line           = GetNextLine(streamReader);

                        //check to match these only once. no need match a field if it is already found
                        Match callid;
                        Match cseq;
                        Match to;
                        Match from;;
                        Match SDPIP;
                        Match ua;
                        Match serv;
                        Match timeMatch;

                        //untill the begining of the next msg
                        while (!acSyslogBeginMsgRgx.IsMatch(line))
                        { //match line against regexs
                            switch (line)
                            {
                            case string s when(callid = callidRgx.Match(s)) != Match.Empty:
                                outputarray[6] = callid.Groups[1].ToString();

                                break;

                            case string s when(cseq = cseqRgx.Match(s)) != Match.Empty:
                                outputarray[17] = cseq.Groups[2].ToString();

                                break;

                            case string s when(to = toRgx.Match(s)) != Match.Empty:
                                outputarray[7] = to.Groups[1].ToString() + to.Groups[3].ToString();

                                break;

                            case string s when(from = fromRgx.Match(s)) != Match.Empty:
                                outputarray[8] = from.Groups[1].ToString() + from.Groups[3].ToString();

                                break;

                            case string s when s.Contains("Content-Type: application/sdp"):
                                outputarray[11] = " SDP";

                                break;

                            case string s when(SDPIP = SDPIPRgx.Match(s)) != Match.Empty:
                                outputarray[13] = SDPIP.ToString();

                                break;

                            case string s when mAudioRgx.IsMatch(s):
                                outputarray[14] = portRgx.Match(s).ToString().Trim();

                                outputarray[15] = codecRgx.Match(s).ToString().Trim();
                                if (outputarray[15] == "0")
                                {
                                    outputarray[15] = "G711u";
                                }
                                else if (outputarray[15] == "8")
                                {
                                    outputarray[15] = "G711a";
                                }
                                else if (outputarray[15] == "9")
                                {
                                    outputarray[15] = "G722";
                                }
                                else if (outputarray[15] == "18")
                                {
                                    outputarray[15] = "G729";
                                }
                                else
                                {
                                    outputarray[15] = "rtp-payload type:" + outputarray[15];
                                }
                                break;

                            case string s when(ua = uaRgx.Match(s)) != Match.Empty:
                                outputarray[16] = ua.ToString().Trim();

                                break;

                            case string s when(serv = serverRgx.Match(s)) != Match.Empty:
                                outputarray[16] = serv.ToString().Trim();

                                break;

                            case string s when occasRgx.IsMatch(s):
                                outputarray[16] = "occas";

                                break;

                            case string s when(timeMatch = acSyslogTimeRgx.Match(s)) != Match.Empty:
                                if (Int32.Parse(timeMatch.Groups["month"].ToString()) >= DateTime.Now.Month)
                                {
                                    yearStrg = (DateTime.Now.Year - 1).ToString();
                                }

                                else
                                {
                                    yearStrg = (DateTime.Now.Year).ToString();
                                }
                                outputarray[1] = yearStrg + "-" + timeMatch.Groups["month"].ToString() + "-" + timeMatch.Groups["day"].ToString() + "T" + timeMatch.Groups["time"].ToString() + "." + milliSeconds + "-05:00";
                                outputarray[2] = DateTime.Parse(outputarray[1]).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss.ffffff", CultureInfo.InvariantCulture);
                                break;
                            }
                            line = GetNextLine(streamReader);
                            if (line == null)
                            {
                                break;
                            }
                        }

                        // get the index of the end of the msg
                        outputarray[9]  = currentLoadProg.ToString();
                        outputarray[10] = "Gray";
                        outputarray[12] = "splunk"; //add file name
                        if (outputarray[5] == null)
                        {
                            outputarray[5] = "Invalid SIP characters";
                        }
                        lock (_DataLocker) //messages touched by another thread
                        {
                            messages.Add(outputarray);
                        }
                    }
                }
                else
                {
                    currentLoadProg++;
                }
            }
            streamReader.Close();
        }