Beispiel #1
0
 //добавляет трап в список
 public void addTrap(Trap trapObject)
 {
     dataList.Add(trapObject);
 }
Beispiel #2
0
        private void recv(IAsyncResult res)
        {
            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
            byte[] received = Client.EndReceive(res, ref RemoteIpEndPoint);

            //Process codes

               // MessageBox.Show(Encoding.UTF8.GetString(received));

            SnmpV2Packet pkt = new SnmpV2Packet();
            pkt.decode(received, received.Length);

            _debug("Получен TRAP с адреса " + RemoteIpEndPoint.ToString());

            //NotifyIcon notifyObj = new NotifyIcon();

            //notifyObj.ShowBalloon(Convert.ToUInt32(ToolTipIcon.Info) ,"Сообщение", "Я свернулась:)",5000 );

            string trapData = "";

            foreach (Vb v in pkt.Pdu.VbList)
            {
                trapData = String.Concat(trapData, "**** " +
                   v.Oid.ToString() + " " +
                   SnmpConstants.GetTypeName(v.Value.Type) + " " +
                   v.Value.ToString());
            }

            Trap trp = new Trap(RemoteIpEndPoint.ToString(), pkt);

            if (checkForExcludes(trp))
            {

                //через анонимный делегат отправим данные трапа на грид, чтобы не подвисал интерфейс, т.к. шлем из другого потока
                this.Invoke((MethodInvoker)delegate
                {

                    //выведем нотификацию
                    taskbarNotifier.Show("", "Получен трап с адреса " + RemoteIpEndPoint.ToString() + Environment.NewLine +
                                            "Community:" + trp.tCommunity, 300, 3000, 300);

                    tList.addTrap(trp);
                    addTrapToGrid(trp); // runs on UI thread

                });

                tList.saveToFile();

            }
            Client.BeginReceive(new AsyncCallback(recv), null);
        }
Beispiel #3
0
        //добавить трап в грид
        private void addTrapToGrid(Trap currentTrap)
        {
            DataGridViewRow row = (DataGridViewRow) TrapGrid.Rows[0].Clone();
            row.Cells[0].Value = currentTrap.tIPAddress;
            row.Cells[1].Value = currentTrap.trapID;
            row.Cells[2].Value = currentTrap.tTime;
            row.Cells[3].Value = currentTrap.tCommunity;

            int xx = 4;
            bool flag = false;
            foreach (ParserRule rls in parseConf.ruleList)
            {

                row.Cells[xx].Value = currentTrap.fields[rls.param];

                if (flag == true) { break; }
                setRowColor(row, Color.Black);

                //MessageBox.Show("here");

                if (row.Cells[xx].Value.ToString().Contains("CRT"))
                {
                    setRowColor(row,Color.Red);
                    flag = true;

                }
                else if (row.Cells[xx].Value.ToString().Contains("MAJ"))
                {
                    setRowColor(row, Color.Orange);
                    flag = true;
                    //row.Cells[xx].Style.ForeColor = Color.Orange;
                }
                else if (row.Cells[xx].Value.ToString().Contains("MIN"))
                {
                    setRowColor(row, Color.Yellow);
                    flag = true;
                    //row.Cells[xx].Style.ForeColor = Color.Yellow;
                }
                else if (row.Cells[xx].Value.ToString().Contains("INF"))
                {
                    setRowColor(row, Color.Blue);
                    flag = true;
                    //row.Cells[xx].Style.ForeColor = Color.Blue;
                }
                else if (row.Cells[xx].Value.ToString().Contains("CLR"))
                {
                    setRowColor(row, Color.Green);
                    flag = true;
                    //row.Cells[xx].Style.ForeColor = Color.Green;
                }
                //else
                //{

                  //  flag = true;
                    //row.Cells[xx].Style.ForeColor = Color.Black;
                //}

                xx++;
            }

            TrapGrid.Rows.Add(row);
        }
Beispiel #4
0
 //добавить трап во внутренний список трапов
 private void addTrapToList(Trap currentTrap)
 {
     // xtrapList
 }
Beispiel #5
0
        // проверяет, не содержит ли трап исключений
        public bool checkForExcludes(Trap trp)
        {
            //проверим по IP
            string[] split = excludes.iplist.Split(new Char[] { ',' });
            foreach (string s in split)
            {

                if(trp.tIPAddress.Contains(s.Trim()))
                {
                    _debug("-> Отклонен TRAP с адреса " + trp.tIPAddress.ToString() + " исключение по IP=" + s);
                    //MessageBox.Show("ok!");
                    return false;
                }

            }

            string[] splitOID = excludes.oidlist.Split(new Char[] { ',' });
            foreach (string s in splitOID)
            {
                if(trp.trapID.ToString().Contains(s.Trim()))
                {
                    _debug("-> Отклонен TRAP с адреса " + trp.tIPAddress.ToString() + " исключение по TrapId=" + s);
                    return false;
                }
                foreach(Vb oidata in trp.sourcePacket.Pdu.VbList)
                if(oidata.Oid.ToString().Contains(s.Trim()))
                {
                    _debug("-> Отклонен TRAP с адреса " + trp.tIPAddress.ToString() + " исключение по содержимому OID=" + s);
                    //MessageBox.Show("ok trap!");
                    return false;
                }

            }

               string[] splitValue = excludes.oidlist.Split(new Char[] { ',' });
            foreach (string s in splitOID)
            {

                foreach(Vb oidata in trp.sourcePacket.Pdu.VbList)
                if(oidata.Value.ToString().Contains(s.Trim()))
                {
                    _debug("-> Отклонен TRAP с адреса " + trp.tIPAddress.ToString() + " исключение по содержимому '" + s + "' в значении OID " + oidata.Oid.ToString());
                    //MessageBox.Show("ok val!!");
                    return false;
                }

            }

            return true;
        }