Ejemplo n.º 1
0
        public void UpdateJDSUIP(IPCom jdsuIP, Action <Exception> continueWith)
        {
            var asyncAction = new Action(() =>
            {
                try
                {
                    using (var serviceChannel = new ChannelFactory <IWaterGateService>(CreateBinding(), new EndpointAddress(_address)))
                    {
                        var channel = serviceChannel.CreateChannel();

                        using (var contextScope = new OperationContextScope((IContextChannel)channel))
                        {
                            OperationContext.Current.OutgoingMessageHeaders.Add(_userHeader);
                            channel.UpdateJDSUIP(jdsuIP);
                        }

                        continueWith(null);
                    }
                }
                catch (Exception e)
                {
                    LogConnectionFailed();
                    continueWith(e);
                }
            });

            asyncAction.BeginInvoke(null, null);
        }
Ejemplo n.º 2
0
        private void UpdateJDSUIP(IPCom jdsuIP, Action continueWith)
        {
            ChangeButtonsEnabledState(false);
            Cursor = Cursors.AppStarting;

            var serviceContext = new WaterGateServiceContext();

            serviceContext.UpdateJDSUIP(jdsuIP, (error) =>
            {
                if (error != null)
                {
                    MessageBox.Show("Произошла ошибка при соединении с сервером, проверьте наличие соединения.",
                                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    Invoke(new Action(() =>
                    {
                        MessageBox.Show("Запись успешно изменена.",
                                        "Готово", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        continueWith();
                    }));
                }


                Invoke(new Action(() =>
                {
                    ChangeButtonsEnabledState(true);
                    Cursor = Cursors.Arrow;
                }));
            });
        }
Ejemplo n.º 3
0
        private void IP_selected(object sender, EventArgs e)
        {
            IPCom key = StaticValues.CiscoList.Find(delegate(IPCom x)
            {
                return(x.IP.Contains(ComboBoxIpAddressCisco.Text));
            });

            TextBoxCommunity.Text = key.Com;
            this.ComboBoxIpAddressCisco.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
        }
Ejemplo n.º 4
0
        public void UpdateJDSUIP(IPCom jdsuIP)
        {
            LockSlim.TryEnterWriteLock(-1);
            try
            {
                using (var connection = new SQLiteConnection(_connectionString))
                {
                    connection.Open();
                    using (var command = new SQLiteCommand("UPDATE JDSUIPAddresses SET IP=@ip,Com=@com", connection))
                    {
                        command.Parameters.Add("@ip", DbType.String).Value  = jdsuIP.IP;
                        command.Parameters.Add("@com", DbType.String).Value = jdsuIP.Com;

                        command.ExecuteNonQuery();
                    }
                }
            }
            finally
            {
                LockSlim.ExitWriteLock();
            }
        }
Ejemplo n.º 5
0
        private static void DoWork()
        {
            // Construct a socket and bind it to the trap manager port 162

            Socket     socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint ipep   = new IPEndPoint(IPAddress.Any, 162);
            EndPoint   ep     = (EndPoint)ipep;

            socket.Bind(ep);
            // Disable timeout processing. Just block until packet is received
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 0);

            while (true)
            {
                byte[] indata = new byte[16 * 1024];
                // 16KB receive buffer
                int        inlen = 0;
                IPEndPoint peer  = new IPEndPoint(IPAddress.Any, 0);
                EndPoint   inep  = (EndPoint)peer;
                try
                {
                    inlen = socket.ReceiveFrom(indata, ref inep);
                }
                catch (Exception ex)
                {
                    Functions.AddTempLog(new List <string> {
                        ex.Message, ex.ToString()
                    });
                    inlen = -1;
                }
                if (inlen > 0)
                {
                    // Check protocol version
                    int ver = SnmpPacket.GetProtocolVersion(indata, inlen);
                    if (ver == (int)SnmpVersion.Ver2)
                    {
                        // Parse SNMP Version 2 TRAP packet
                        SnmpV2Packet pkt = new SnmpV2Packet();
                        pkt.decode(indata, inlen);
                        List <string> alarm = new List <string> {
                            inep.ToString(), pkt.Community.ToString()
                        };
                        List <string> trap = new List <string>();
                        foreach (Vb v in pkt.Pdu.VbList)
                        {
                            trap.Add(v.Value.ToString());
                        }
                        Functions.AddTempLog(trap);

                        if (trap.Count == 42)
                        {
                            IPCom     _ipcom     = new IPCom();
                            CiscoPort _ciscoPort = new CiscoPort();

                            string path = "C:\\Repository.db";
                            string _connectionString;
                            _connectionString = "Data Source=" + path + ";Version=3;";
                            using (var connection = new SQLiteConnection(_connectionString))
                            {
                                connection.Open();

                                using (var command = new SQLiteCommand("SELECT IP,Com,PortId FROM Ports WHERE JDSUPort = @_JDSUPort", connection))
                                {
                                    command.Parameters.Add("@_JDSUPort", DbType.String).Value = trap[27];



                                    try
                                    {
                                        using (var reader = command.ExecuteReader())
                                        {
                                            // int k = (int)command.ExecuteScalar();

                                            foreach (DbDataRecord record in reader)
                                            {
                                                try
                                                {
                                                    SimpleSnmp snmp = new SimpleSnmp(record["IP"].ToString(), record["Com"].ToString());



                                                    Pdu pdu = new Pdu(PduType.Set);
                                                    pdu.VbList.Add(new Oid(".1.3.6.1.2.1.2.2.1.7" + record["PortId"].ToString()), new Integer32(2));
                                                    snmp.Set(SnmpVersion.Ver2, pdu);
                                                }
                                                catch (Exception ex)
                                                {
                                                    alarm.Add(ex.ToString());
                                                }


                                                alarm.Add(record["IP"].ToString());
                                                alarm.Add(record["Com"].ToString());
                                                alarm.Add(record["PortId"].ToString());
                                                alarm.Add(trap[27].ToString());
                                            }
                                        }
                                    }

                                    catch (Exception ex)
                                    {
                                        alarm.Add(ex.ToString());
                                        alarm.Add("в базе данных нет такой записи");
                                    }
                                }
                            }
                            //  Functions.AddTempLog(alarm);
                        }
                        else
                        {
                            if (inlen == 0)
                            {
                                Functions.AddTempLog(new List <string> {
                                    "Zero length packet received."
                                });
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 6
0
 public void UpdateJDSUIP(IPCom jdsuIP)
 {
     _repository.UpdateJDSUIP(jdsuIP);
     ClientLogService.Write(CurrentUser, "Обновление JDSUIP", "Обновлено на " + jdsuIP.IP + " " + jdsuIP.Com);
 }
Ejemplo n.º 7
0
        private bool IsCiscoActive(IPCom cisco)
        {
            foreach (DataGridViewRow label in this.mainDataGridView.Rows)
            {
                if (label.Cells[1].Value.ToString() == cisco.IP)
                {
                    string host      = cisco.IP;
                    string community = cisco.Com;
                    var    snmp      = new SimpleSnmp(host, community);


                    Dictionary <Oid, AsnType> result = snmp.Get(SnmpVersion.Ver1, new[]
                    {
                        ".1.3.6.1.2.1.2.2.1.7" +
                        StaticValues.JDSUCiscoArray[label.Index].CiscoPort.PortID
                    });

                    if (result == null)
                    {
                        Invoke(new Action(() =>
                        {
                            if (!IsPortDisabled(label))
                            {
                                ShowToolTrayTooltip(cisco.IP + " " + cisco.Com);
                            }
                            MarkPortCellAsDisabled((DataGridViewImageCell)label.Cells[6]);
                        }));
                        paintCiscoIP(label, System.Drawing.Color.Yellow);
                        paintCiscoPort(label, System.Drawing.Color.Red);
                    }

                    else
                    {
                        foreach (var kvp in result)
                        {
                            if (kvp.Value.ToString() == "1")
                            {
                                // MessageBox.Show("Порт " + lCiscoPort[u].Text + " на Cisco c IP адресом " + lCisco[u].Text + " активен");
                                paintCiscoIP(label, System.Drawing.Color.Green);
                                paintCiscoPort(label, System.Drawing.Color.Green);

                                Invoke(
                                    new Action(
                                        () => MarkPortCellAsEnabled((DataGridViewImageCell)label.Cells[6])));
                            }
                            else
                            {
                                //   MessageBox.Show("Порт " + lCiscoPort[u].Text + " на Cisco c IP адресом " + lCisco[u].Text + " не активен");


                                Invoke(new Action(() =>
                                {
                                    if (!IsPortDisabled(label))
                                    {
                                        ShowToolTrayTooltip(cisco.IP + " " + cisco.Com);
                                    }
                                    MarkPortCellAsDisabled((DataGridViewImageCell)label.Cells[6]);
                                }));

                                paintCiscoIP(label, System.Drawing.Color.Green);
                                paintCiscoPort(label, System.Drawing.Color.Red);
                            }
                        }
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 8
0
        private void Save_Click(object sender, EventArgs e)
        {
            IPAddress address;

            if (!IPAddress.TryParse(ComboBoxIpAddressCisco.Text, out address))
            {
                MessageBox.Show("Введите корректно IP адрес");
                return;
            }

            //Проверяем существует ли такой ip адрес
            if (ComboBoxIpAddressCisco.FindString(ComboBoxIpAddressCisco.Text) != -1)
            {
                MessageBox.Show("Cisco с таким IPадресом уже добавлена");
                return;
            }

            //идет ли пинг
            try
            {
                Ping      pingSender = new Ping();
                PingReply reply      = pingSender.Send(ComboBoxIpAddressCisco.Text);
            }

            catch
            {
                MessageBox.Show("IP адрес не доступен");
                return;
            }

            //правильно ли указан community, то бишь может ли она получить доступ по SNMP
            UdpTarget target = new UdpTarget((IPAddress) new IpAddress(ComboBoxIpAddressCisco.Text), 161, 500, 0);
            Pdu       pdu    = new Pdu(PduType.Get);

            pdu.VbList.Add(".1.3.6.1.2.1.1.6.0");
            AgentParameters aparam = new AgentParameters(SnmpVersion.Ver2, new OctetString(TextBoxCommunity.Text));
            SnmpV2Packet    response;

            try
            {
                response = target.Request(pdu, aparam) as SnmpV2Packet;
            }

            catch (Exception ex)
            {
                MessageBox.Show("connection failed");
                MessageBox.Show(ex.Message);
                target.Close();
                return;
            }


            var value = new IPCom(ComboBoxIpAddressCisco.Text, TextBoxCommunity.Text);

            var serviceContext = new WaterGateServiceContext();
            var list           = StaticValues.CiscoList.ToList();

            list.Add(value);

            Save.Enabled   = false;
            Delete.Enabled = false;
            Change.Enabled = false;
            Cursor         = Cursors.AppStarting;
            serviceContext.UpdateCiscoRouters(list, (error) =>
            {
                if (error != null)
                {
                    MessageBox.Show("Произошла ошибка при соединении с сервером, проверьте наличие соединения.",
                                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    Invoke(new Action(() =>
                    {
                        MessageBox.Show("Запись успешно добавлена.",
                                        "Готово", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        //добавляем в наш массив
                        StaticValues.CiscoList.Add(value);

                        //добавляем в Combobox
                        this.ComboBoxIpAddressCisco.Items.Add(ComboBoxIpAddressCisco.Text);

                        TextBoxCommunity.Clear();
                        ComboBoxIpAddressCisco.ResetText();
                    }));
                }


                Invoke(new Action(() =>
                {
                    Save.Enabled   = true;
                    Delete.Enabled = true;
                    Change.Enabled = true;
                    Cursor         = Cursors.Arrow;
                }));
            });
        }
Ejemplo n.º 9
0
        private void Change_Click(object sender, EventArgs e)
        {
            //правильно ли указан community, то бишь может ли она получить доступ по SNMP
            UdpTarget target = new UdpTarget((IPAddress) new IpAddress(ComboBoxIpAddressCisco.Text), 161, 500, 0);
            Pdu       pdu    = new Pdu(PduType.Get);

            pdu.VbList.Add(".1.3.6.1.2.1.1.6.0");
            AgentParameters aparam = new AgentParameters(SnmpVersion.Ver2, new OctetString(TextBoxCommunity.Text));
            SnmpV2Packet    response;

            try
            {
                response = target.Request(pdu, aparam) as SnmpV2Packet;
            }

            catch (Exception ex)
            {
                MessageBox.Show("Скорее всего введен неверный Community");
                MessageBox.Show(ex.Message);
                target.Close();
                this.ComboBoxIpAddressCisco.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
                return;
            }



            var oldValue = StaticValues.CiscoList.FirstOrDefault(item => item.IP.Contains(ComboBoxIpAddressCisco.Text));

            if (oldValue == null)
            {
                return;
            }

            var newValue = new IPCom(ComboBoxIpAddressCisco.Text, TextBoxCommunity.Text);


            var serviceContext = new WaterGateServiceContext();
            var list           = StaticValues.CiscoList.ToList();

            list.Remove(oldValue);
            list.Add(newValue);

            Save.Enabled   = false;
            Delete.Enabled = false;
            Change.Enabled = false;
            Cursor         = Cursors.AppStarting;



            foreach (var item in StaticValues.JDSUCiscoArray)
            {
                if (item.CiscoIPCom.IP == ComboBoxIpAddressCisco.Text)
                {
                    item.CiscoIPCom.Com = TextBoxCommunity.Text;
                }
            }

            //   var serviceContext = new WaterGateServiceContext();
            serviceContext.UpdatePorts(StaticValues.JDSUCiscoArray, (error) =>
            {
                if (error != null)
                {
                    Invoke(new Action(() =>
                                      MessageBox.Show(
                                          "Произошла ошибка при соединении с сервером, проверьте наличие соединения.",
                                          "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)));
                }
            });



            serviceContext.UpdateCiscoRouters(list, (error) =>
            {
                if (error != null)
                {
                    MessageBox.Show("Произошла ошибка при соединении с сервером, проверьте наличие соединения.",
                                    "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                Invoke(new Action(() =>
                {
                    MessageBox.Show("Запись успешно изменена.",
                                    "Готово", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //удаляем старый ip и community
                    StaticValues.CiscoList.Remove(oldValue);

                    //и добавляем в наш массив новые данные и все должно работать =)
                    StaticValues.CiscoList.Add(newValue);


                    ComboBoxIpAddressCisco.SelectedIndex      = -1;
                    this.ComboBoxIpAddressCisco.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
                    TextBoxCommunity.Clear();
                }));

                Invoke(new Action(() =>
                {
                    Save.Enabled   = true;
                    Delete.Enabled = true;
                    Change.Enabled = true;
                    Cursor         = Cursors.Arrow;
                }));
            });
        }