public ActionResult Agents()
        {
            ListModuleService module = ListFactoryService.Create(ListMethodType.AGENT);
            AgentDataModel    model  = (module.DoGetList <object>(null, Language.NotSet) as AgentDataModel);

            return(View(model));
        }
示例#2
0
        public Agent GetAgent(int agentNr)
        {
            Agent agent = null;

            try
            {
                List <Type>    typeList  = GetTypes();
                AgentDataModel agentData = _databaseConnection.GetAgentFromDatabase(agentNr);
                Type           type      = null;
                foreach (Type temp in typeList)
                {
                    if (temp.TypeNr == agentData.Type.TypeNr)
                    {
                        type = temp;
                    }
                }
                agent = new Agent(agentData.AgentNr, agentData.Name, agentData.IPAddress, type, agentData.Port, agentData.Status, agentData.SysDescription, agentData.SysName, agentData.SysUptime);
            }
            catch (SqlException e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Fatal, e);
            }
            catch (InvalidCastException e)
            {
                ExceptionCore.HandleException(ExceptionCategory.High, e);
            }
            catch (Exception e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Normal, e);
            }
            return(agent);
        }
示例#3
0
        public void Configuration(IAppBuilder app)
        {
            var _applicationConfig = new ApplicationConfig();
            var _cacheHelper       = new RedisHelper(_applicationConfig);
            var _queueDataModel    = new QueueDataModel(_cacheHelper);
            var _agentDataModel    = new AgentDataModel(_cacheHelper);
            var chatHub            = new ChatHub(_applicationConfig, _cacheHelper, _queueDataModel, _agentDataModel);

            GlobalHost.DependencyResolver.Register(
                typeof(ChatHub), () => chatHub);


            GlobalHost.DependencyResolver.Register(
                typeof(AgentHub), () => new AgentHub(_agentDataModel, _queueDataModel, chatHub));

            // Branch the pipeline here for requests that start with "/signalr"
            app.Map("/signalr", map =>
            {
                map.UseCors(CorsOptions.AllowAll);

                var hubConfiguration = new HubConfiguration
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };

                hubConfiguration.EnableDetailedErrors = true;
                map.RunSignalR(hubConfiguration);
            });
        }
示例#4
0
        public override object DoGetList <TFilter>(TFilter model, Language language)
        {
            AgentDataModel data  = new AgentDataModel();
            var            agent = this.DB.WBAGENT.FirstOrDefault();

            if (agent != null)
            {
                data.Content = agent.AGENT_CONTENT;
            }
            return(data);
        }
        public void TestUpdateAgentInDatabase()
        {
            AgentDataModel newAgent = new AgentDataModel("Test-Server", "10.10.10.10", new TypeDataModel(1, "Server"), 161);

            // Add new Agent to Database
            databaseConnection.AddAgentToDatabase(newAgent, false, false);

            // Get AgentNr for new added Agent
            List <AgentDataModel> agentsAfterAdd = databaseConnection.GetAgentsFromDatabase();
            int agentNr = agentsAfterAdd[agentsAfterAdd.Count - 1].AgentNr;

            // Check MonitoringType for inserted Agent
            List <MonitoringTypeDataModel> monitoringTypesExpectedBeforeUpdate = new List <MonitoringTypeDataModel>();

            monitoringTypesExpectedBeforeUpdate.Add(new MonitoringTypeDataModel(1, "sysDesc", "1.3.6.1.2.1.1.1"));
            monitoringTypesExpectedBeforeUpdate.Add(new MonitoringTypeDataModel(9, "sysName", "1.3.6.1.2.1.1.5"));
            monitoringTypesExpectedBeforeUpdate.Add(new MonitoringTypeDataModel(10, "sysUptime", "1.3.6.1.2.1.25.1.1"));

            List <MonitoringTypeDataModel> monitoringTypesActualBeforeUpdate = databaseConnection.GetMonitoringTypesForAgentFromDatabase(agentNr);

            for (int i = 0; i < monitoringTypesActualBeforeUpdate.Count; i++)
            {
                Assert.AreEqual(monitoringTypesExpectedBeforeUpdate[i].MonitoringTypeNr, monitoringTypesActualBeforeUpdate[i].MonitoringTypeNr);
                Assert.AreEqual(monitoringTypesExpectedBeforeUpdate[i].Description, monitoringTypesActualBeforeUpdate[i].Description);
                Assert.AreEqual(monitoringTypesExpectedBeforeUpdate[i].ObjectID, monitoringTypesActualBeforeUpdate[i].ObjectID);
            }

            // Update new Agent
            databaseConnection.UpdateAgentInDatabase(agentsAfterAdd[agentsAfterAdd.Count - 1], true, true);

            // Check MonitoringType for updated Agent
            List <MonitoringTypeDataModel> monitoringTypesExpectedAfterUpdate = new List <MonitoringTypeDataModel>();

            monitoringTypesExpectedAfterUpdate.Add(new MonitoringTypeDataModel(1, "sysDesc", "1.3.6.1.2.1.1.1"));
            monitoringTypesExpectedAfterUpdate.Add(new MonitoringTypeDataModel(9, "sysName", "1.3.6.1.2.1.1.5"));
            monitoringTypesExpectedAfterUpdate.Add(new MonitoringTypeDataModel(10, "sysUptime", "1.3.6.1.2.1.25.1.1"));
            monitoringTypesExpectedAfterUpdate.Add(new MonitoringTypeDataModel(11, "cpuUsage", "1.3.6.1.2.1.25.3.3"));
            monitoringTypesExpectedAfterUpdate.Add(new MonitoringTypeDataModel(12, "hrDiskStorageTable", "1.3.6.1.2.1.25.3.2"));

            List <MonitoringTypeDataModel> monitoringTypesActualAfterUpdate = databaseConnection.GetMonitoringTypesForAgentFromDatabase(agentNr);

            for (int i = 0; i < monitoringTypesActualAfterUpdate.Count; i++)
            {
                Assert.AreEqual(monitoringTypesExpectedAfterUpdate[i].MonitoringTypeNr, monitoringTypesActualAfterUpdate[i].MonitoringTypeNr);
                Assert.AreEqual(monitoringTypesExpectedAfterUpdate[i].Description, monitoringTypesActualAfterUpdate[i].Description);
                Assert.AreEqual(monitoringTypesExpectedAfterUpdate[i].ObjectID, monitoringTypesActualAfterUpdate[i].ObjectID);
            }

            // Delete new Agent
            databaseConnection.DeleteAgentInDatabase(agentNr);
        }
示例#6
0
        public void UpdateAgentInDatabase(Agent agent, bool cpuCheck, bool discCheck)
        {
            AgentDataModel agentData = new AgentDataModel(agent.AgentNr, agent.Name, agent.IPAddress, new TypeDataModel(agent.Type.TypeNr, agent.Type.Name), agent.Port, agent.Status, "undefined", "undefined", "undefined");

            try
            {
                _databaseConnection.UpdateAgentInDatabase(agentData, cpuCheck, discCheck);
            }
            catch (SqlException e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Fatal, e);
            }
            catch (Exception e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Normal, e);
            }
        }
示例#7
0
        public void AddAgentToDatabase(Agent agent, bool cpuCheck, bool discCheck)
        {
            AgentDataModel agentData = new AgentDataModel(agent.Name, agent.IPAddress, new TypeDataModel(agent.Type.TypeNr, agent.Type.Name), agent.Port);

            try
            {
                _databaseConnection.AddAgentToDatabase(agentData, cpuCheck, discCheck);
            }
            catch (SqlException e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Fatal, e);
            }
            catch (Exception e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Normal, e);
            }
        }
示例#8
0
        public void TestGetAgents()
        {
            List <AgentDataModel> agents = databaseConnection.GetAgentsFromDatabase();

            if (agents.Count > 0)
            {
                AgentDataModel testAgent = agents[0];
                Assert.AreEqual(1, testAgent.AgentNr);
                Assert.AreEqual("sinv-56075.edu.hsr.ch", testAgent.Name);
                Assert.AreEqual("152.96.56.75", testAgent.IPAddress);
                Assert.AreEqual(1, testAgent.TypeNr);
                Assert.AreEqual(40001, testAgent.Port);
                Assert.AreEqual(1, testAgent.Status);
            }

            Assert.AreEqual(1, agents.Count);
        }
示例#9
0
        public void Update(AgentDomainModel agentDomainModel)
        {
            var agentDataModel = new AgentDataModel()
            {
                Id      = agentDomainModel.Id,
                Name    = agentDomainModel.Name,
                Address = agentDomainModel.Address,
                City    = agentDomainModel.City,
                State   = agentDomainModel.State,
                ZipCode = agentDomainModel.ZipCode,
                Tier    = agentDomainModel.Tier,
                Phone   = new AgentDataModel.AgentPhone()
                {
                    Primary = agentDomainModel.Phone.Primary,
                    Mobile  = agentDomainModel.Phone.Mobile
                }
            };

            _agentRepository.Update(agentDataModel);
        }
        public void TestGetAgentsFromDatabase()
        {
            List <AgentDataModel> agents = databaseConnection.GetAgentsFromDatabase();

            if (agents.Count > 0)
            {
                AgentDataModel testAgent = agents[0];
                Assert.AreEqual(1, testAgent.AgentNr);
                Assert.AreEqual("sinv-56075.edu.hsr.ch", testAgent.Name);
                Assert.AreEqual("152.96.56.75", testAgent.IPAddress);
                TypeDataModel testAgentType = testAgent.Type;
                Assert.AreEqual(1, testAgentType.TypeNr);
                Assert.AreEqual(40001, testAgent.Port);
                Assert.AreEqual(1, testAgent.Status);
                Assert.AreEqual("{\n  \"Results\": [\n    {\n      \"OID\": \"1.3.6.1.2.1.1.1.0\",\n      \"Type\": \"OctetString\",\n      \"Value\": \"Hardware: Intel64 Family 6 Model 62 Stepping 4 AT/AT COMPATIBLE - Software: Windows Version 6.3 (Build 9600 Multiprocessor Free)\"\n    }\n  ]\n}".Replace("\n", Environment.NewLine), testAgent.SysDescription);
                Assert.AreEqual("{\n  \"Results\": [\n    {\n      \"OID\": \"1.3.6.1.2.1.1.5.0\",\n      \"Type\": \"OctetString\",\n      \"Value\": \"sinv-56075\"\n    }\n  ]\n}".Replace("\n", Environment.NewLine), testAgent.SysName);
            }

            Assert.AreEqual(1, agents.Count);
        }
示例#11
0
        public void TestAddAndDeleteAgent()
        {
            List <AgentDataModel> agentsBeforeAdd = databaseConnection.GetAgentsFromDatabase();
            AgentDataModel        newAgent        = new AgentDataModel(1, "Test-Server", "10.10.10.10", 1, 161, 1, "", "", "");

            databaseConnection.AddAgentToDatabase(newAgent, false, false);

            List <AgentDataModel> agentsAfterAdd = databaseConnection.GetAgentsFromDatabase();

            Assert.AreEqual(agentsBeforeAdd.Count + 1, agentsAfterAdd.Count);

            // Check old Agents
            int i;

            for (i = 0; i < agentsBeforeAdd.Count; i++)
            {
                Assert.AreEqual(agentsBeforeAdd[i].AgentNr, agentsAfterAdd[i].AgentNr);
                Assert.AreEqual(agentsBeforeAdd[i].Name, agentsAfterAdd[i].Name);
                Assert.AreEqual(agentsBeforeAdd[i].IPAddress, agentsAfterAdd[i].IPAddress);
                Assert.AreEqual(agentsBeforeAdd[i].TypeNr, agentsAfterAdd[i].TypeNr);
                Assert.AreEqual(agentsBeforeAdd[i].Port, agentsAfterAdd[i].Port);
                Assert.AreEqual(agentsBeforeAdd[i].Status, agentsAfterAdd[i].Status);
                Assert.AreEqual(agentsBeforeAdd[i].SysDescription, agentsAfterAdd[i].SysDescription);
                Assert.AreEqual(agentsBeforeAdd[i].SysName, agentsAfterAdd[i].SysName);
                Assert.AreEqual(agentsBeforeAdd[i].SysUptime, agentsAfterAdd[i].SysUptime);
            }

            // Check new Agent
            Assert.AreEqual(newAgent.Name, agentsAfterAdd[i].Name);
            Assert.AreEqual(newAgent.IPAddress, agentsAfterAdd[i].IPAddress);
            Assert.AreEqual(newAgent.TypeNr, agentsAfterAdd[i].TypeNr);
            Assert.AreEqual(newAgent.Port, agentsAfterAdd[i].Port);
            Assert.AreEqual(newAgent.Status, agentsAfterAdd[i].Status);

            // Delete new Agent
            databaseConnection.DeleteAgentInDatabase(agentsAfterAdd[i].AgentNr);

            List <AgentDataModel> agentsAfterDelete = databaseConnection.GetAgentsFromDatabase();

            Assert.AreEqual(agentsAfterDelete.Count, agentsBeforeAdd.Count);
        }
示例#12
0
        public void Patch(int id, JsonPatchDocument <AgentDomainModel> agentDomainModel)
        {
            var agentToPatchDataModel   = _agentRepository.FindById(id);
            var agentToPatchDomainModel = new AgentDomainModel();

            agentToPatchDomainModel.Id      = agentToPatchDataModel.Id;
            agentToPatchDomainModel.Name    = agentToPatchDataModel.Name;
            agentToPatchDomainModel.Address = agentToPatchDataModel.Address;
            agentToPatchDomainModel.City    = agentToPatchDataModel.City;
            agentToPatchDomainModel.State   = agentToPatchDataModel.State;
            agentToPatchDomainModel.ZipCode = agentToPatchDataModel.ZipCode;
            agentToPatchDomainModel.Tier    = agentToPatchDataModel.Tier;
            agentToPatchDomainModel.Phone   = new AgentDomainModel.AgentPhone()
            {
                Primary = agentToPatchDataModel.Phone.Primary,
                Mobile  = agentToPatchDataModel.Phone.Mobile
            };

            agentDomainModel.ApplyTo(agentToPatchDomainModel);

            var patchedAgentDataModel = new AgentDataModel()
            {
                Id      = agentToPatchDomainModel.Id,
                Name    = agentToPatchDomainModel.Name,
                Address = agentToPatchDomainModel.Address,
                City    = agentToPatchDomainModel.City,
                State   = agentToPatchDomainModel.State,
                ZipCode = agentToPatchDomainModel.ZipCode,
                Tier    = agentToPatchDomainModel.Tier,
                Phone   = new AgentDataModel.AgentPhone()
                {
                    Primary = agentToPatchDomainModel.Phone.Primary,
                    Mobile  = agentToPatchDomainModel.Phone.Mobile
                }
            };

            _agentRepository.Update(patchedAgentDataModel);
        }
示例#13
0
        private void GetSNMPDataFromSingleAgent(AgentDataModel agent)
        {
            try
            {
                DatabaseConnectionManager connection = new DatabaseConnectionManager(_connectionString);

                OctetString     community = new OctetString("public");
                AgentParameters param     = new AgentParameters(community);
                param.Version = SnmpVersion.Ver2;

                IpAddress agentIpAddress = new IpAddress(agent.IPAddress);
                UdpTarget target         = new UdpTarget((IPAddress)agentIpAddress, agent.Port, 2000, 1);
                try
                {
                    this.WalkThroughOid(target, connection, agent);
                }
                finally
                {
                    target.Close();
                }
            }
            catch (SnmpException e)
            {
                DatabaseConnectionManager connection = new DatabaseConnectionManager(_connectionString);
                connection.UpdateStatusOfAgent(agent.AgentNr, 3);
                ExceptionCore.HandleException(ExceptionCategory.Low, e);
            }
            catch (SqlException e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Fatal, e);
            }
            catch (Exception e)
            {
                ExceptionCore.HandleException(ExceptionCategory.Normal, e);
            }
        }
示例#14
0
        private void WalkThroughOid(UdpTarget target, DatabaseConnectionManager connection, AgentDataModel agent)
        {
            List <MonitoringTypeDataModel> MonitoringTypeList = connection.GetMonitoringTypesForAgentForCheckFromDatabase(agent.AgentNr);

            if (MonitoringTypeList.Count > 0)
            {
                List <KeyValuePair <string, string> > resultList = new List <KeyValuePair <string, string> >();
                foreach (MonitoringTypeDataModel type in MonitoringTypeList)
                {
                    SNMPWalk walk    = new SNMPWalk(target, type.ObjectID);
                    JObject  results = walk.Walk();
                    resultList.Add(new KeyValuePair <string, string>(type.ObjectID, results.ToString()));
                }
                connection.AddMonitorDataToDatabase(agent.AgentNr, resultList);
                connection.UpdateStatusOfAgent(agent.AgentNr, 1);
            }
        }
示例#15
0
 public void Update(AgentDataModel agentDataModel)
 {
     _agentRepository.Update(agentDataModel);
 }
示例#16
0
 public void Add(AgentDataModel agentDataModel)
 {
     _agentRepository.Add(agentDataModel);
 }