Пример #1
0
        private void SNMPWalkByIP(ISNMPDeviceSettingDTO SNMPSettingEntry)
        {
            IList <IPAddress> IPinventory;
            OctetString       Community;

            //Compute full list of devices that have responded to ARP request
            IPinventory = ModelHelper.GenerateHostList(SNMPSettingEntry.InitialIP, SNMPSettingEntry.FinalIP, SNMPSettingEntry.NetworkMask, ARPTable.Values.ToList());

            Community = new OctetString(SNMPSettingEntry.CommunityString);

            foreach (IPAddress target in IPinventory)
            {
                ISNMPDeviceDataDTO device = BuildSNMPDevice(target, SNMPSettingEntry.NetworkMask);

                try
                {
                    SNMPWalkByOIDSetting(Community, SNMPSettingEntry, device);
                }
                catch (SnmpException e)
                {
                    NotifyError(e);

                    //Device entry not containing full info for processing
                    DeviceData.Remove(target.ToString());
                    continue;
                }
            }
        }
Пример #2
0
        private void DeleteDevice()
        {
            bool   wrongInput = true, confirmdeletion = false;
            string skey = null, deletioncmd = null;
            ISNMPDeviceSettingDTO sresult = null;

            //Ask for key
            do
            {
                Console.Write("Insert device definition name: ");
                skey = Console.ReadLine();

                wrongInput = string.IsNullOrWhiteSpace(skey);
                if (wrongInput)
                {
                    Console.WriteLine("Insert non-empty value.");
                }
            }while (wrongInput);

            wrongInput = true;
            Console.WriteLine();

            //Pull existing data and editing
            sresult = _controller.GetSNMPDeviceSetting(skey).FirstOrDefault();
            ShowData(sresult);

            if (sresult != null)
            {
                //Ask for confirmation
                do
                {
                    Console.Write("WARNING: Delete DeviceSetting implies wiping relationships with processing settings. Continue with deletion of this device setting? [Y/N] ");
                    deletioncmd = Console.ReadLine().ToUpper();

                    wrongInput = string.IsNullOrWhiteSpace(skey) || !(deletioncmd == "Y" || deletioncmd == "N");

                    if (wrongInput)
                    {
                        Console.WriteLine("Insert valid value.");
                    }
                    else
                    {
                        confirmdeletion = deletioncmd == "Y";
                    }
                }while (wrongInput);

                //Delete command
                if (confirmdeletion)
                {
                    _controller.DeleteDevice(skey);
                }
            }
            else
            {
                Console.WriteLine("Device Setting not found.\n");
            }

            NextActionHandle();
        }
Пример #3
0
        private void EditDeviceSetting()
        {
            bool   wrongInput = true;
            string skey = null;
            ISNMPDeviceSettingDTO sresult = null;
            string settingname, initialIPAndMask, finalIPAndMask, SNMPuser;

            //Ask for key
            do
            {
                Console.Write("Insert device definition name: ");
                skey = Console.ReadLine();

                wrongInput = string.IsNullOrWhiteSpace(skey);
                if (wrongInput)
                {
                    Console.WriteLine("Insert non-empty value.");
                }
            }while (wrongInput);

            Console.WriteLine();

            //Pull existing data and editing
            sresult = _controller.GetSNMPDeviceSetting(skey).FirstOrDefault();

            ShowData(sresult);

            if (sresult != null)
            {
                //Redefine values
                Console.WriteLine("Insert values to be editted. Insert null-values for keeping previous ones.");

                Console.Write("Device definition name: ");
                settingname = Console.ReadLine();
                settingname = string.IsNullOrWhiteSpace(settingname) ? sresult.ID : settingname;

                Console.Write("Initial IP/mask: ");
                initialIPAndMask = Console.ReadLine();
                initialIPAndMask = string.IsNullOrWhiteSpace(initialIPAndMask) ? $"{sresult.InitialIP}/{sresult.NetworkMask}" : initialIPAndMask;

                Console.Write("Final IP/mask: ");
                finalIPAndMask = Console.ReadLine();
                finalIPAndMask = string.IsNullOrWhiteSpace(finalIPAndMask) ? $"{sresult.FinalIP}/{sresult.NetworkMask}" : finalIPAndMask;

                Console.Write("SNMP community user (V2): ");
                SNMPuser = Console.ReadLine();
                SNMPuser = string.IsNullOrWhiteSpace(SNMPuser) ? sresult.CommunityString : SNMPuser;

                Console.WriteLine();

                _controller.EditDevice(settingname, sresult.ID, initialIPAndMask, finalIPAndMask, SNMPuser);
            }
            else
            {
                Console.WriteLine("Device Setting not found.\n");
            }

            NextActionHandle();
        }
Пример #4
0
 private void ShowData(ISNMPDeviceSettingDTO data)
 {
     if (data != null)
     {
         ViewHelper.RedirectConsoleToFile(true);
         Console.WriteLine($"SNMP setting \"{data.ID}\" with this definition:\n" +
                           $"\t-Initial IP: {data.InitialIP}/{data.NetworkMask}\n" +
                           $"\t-Final IP: {data.FinalIP}/{data.NetworkMask}\n" +
                           $"\t-Community string: {data.CommunityString}\n");
         ViewHelper.RedirectConsoleToFile(false);
     }
 }
Пример #5
0
        public IList <ISNMPDeviceSettingDTO> GetSNMPDeviceSetting(string key = null)
        {
            if (string.IsNullOrWhiteSpace(key))
            {
                return(Model.DeviceSettings.Values.ToList());
            }
            else
            {
                ISNMPDeviceSettingDTO res = null;
                Model.DeviceSettings.TryGetValue(key, out res);

                return(res == null ? new List <ISNMPDeviceSettingDTO>() : new List <ISNMPDeviceSettingDTO>(new[] { res }));
            }
        }
Пример #6
0
        private void SNMPWalkByOIDSetting(OctetString Community, ISNMPDeviceSettingDTO SNMPSettingEntry, ISNMPDeviceDataDTO SNMPDeviceData)
        {
            //Get all OID requested for all processing algorithms
            IEnumerable <IOIDSettingDTO> OIDSettingCollection = Processes.Values.SelectMany(x => x.OIDSettings.Values);

            foreach (IOIDSettingDTO OIDSetting in OIDSettingCollection)
            {
                try
                {
                    SNMPRunAgent(Community, OIDSetting, SNMPDeviceData);
                }
                catch //(SnmpException e)
                {
                    throw;
                }
            }
        }
Пример #7
0
        public ISNMPProcessStrategy BuildProcess(string SettingID, EnumProcessingType ProcessType)
        {
            ISNMPProcessStrategy  ProcessProfile = null;
            ISNMPDeviceSettingDTO DeviceProfile  = DeviceSettings?[SettingID];

            switch (ProcessType)
            {
            case EnumProcessingType.None:
                break;

            case EnumProcessingType.TopologyDiscovery:

                //Get existing strategy
                if (!Processes.ContainsKey(ProcessType))
                {
                    ProcessProfile = new TopologyBuilderStrategy(this, ChangeTrackerHandler);
                    Processes.Add(ProcessType, ProcessProfile);
                }
                else
                {
                    ProcessProfile = Processes[ProcessType];
                }

                //Add device setting if found
                if (DeviceProfile != null)
                {
                    ProcessProfile.TargetDeviceSettings.Add(DeviceProfile);
                }

                ChangeTrackerHandler(ProcessProfile, typeof(ISNMPProcessStrategy));

                break;

            case EnumProcessingType.PrinterConsumption:
                break;

            default:
                break;
            }

            return(ProcessProfile);
        }