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); }
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; })); }); }
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; }
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(); } }
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." }); } } } } } }
public void UpdateJDSUIP(IPCom jdsuIP) { _repository.UpdateJDSUIP(jdsuIP); ClientLogService.Write(CurrentUser, "Обновление JDSUIP", "Обновлено на " + jdsuIP.IP + " " + jdsuIP.Com); }
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); }
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; })); }); }
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; })); }); }