예제 #1
0
        public void MonitoredService_Parse()
        {
            MonitoredService service;

            service = new MonitoredService("http://myservice.com");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsTrue(service.IsCritical);

            service = new MonitoredService("http://myservice.com,CRITICAL");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsTrue(service.IsCritical);

            service = new MonitoredService("http://myservice.com,critical");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsTrue(service.IsCritical);

            service = new MonitoredService("  http://myservice.com  ,  CRITICAL  ");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsTrue(service.IsCritical);

            service = new MonitoredService("http://myservice.com,NONCRITICAL");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsFalse(service.IsCritical);

            service = new MonitoredService("http://myservice.com,noncritical");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsFalse(service.IsCritical);

            service = new MonitoredService("  http://myservice.com  ,  NONCRITICAL  ");
            Assert.AreEqual(new Uri("http://myservice.com"), service.Uri);
            Assert.IsFalse(service.IsCritical);
        }
예제 #2
0
        public async Task <MonitoredService> AddMonitoredService(MonitoredService service)
        {
            MonitoredServices.Insert(service);
            await Context.SaveAsync();

            return(service);
        }
예제 #3
0
        public async Task <MonitoredService> UpdateMonitoredService(MonitoredService service)
        {
            MonitoredServices.Update(service);
            await Context.SaveAsync();

            return(service);
        }
예제 #4
0
        public async Task <bool> Check(MonitoredService service, string identifier)
        {
            var url = "";

            if (identifier.StartsWith("http:", StringComparison.InvariantCultureIgnoreCase))
            {
                url += "http://";
            }
            else if (identifier.StartsWith("https:", StringComparison.InvariantCultureIgnoreCase))
            {
                url += "https://";
            }
            else
            {
                throw new ArgumentException("The identifier doenst provide a valid url schema " + identifier, "identifier");
            }

            url += service.Address;
            url += identifier.Split(':').Last();
            var uri = new Uri(url);

            using (var client = new WebClient())
            {
                try
                {
                    await client.DownloadStringTaskAsync(uri);

                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }
        }
예제 #5
0
        public async Task <bool> Check(MonitoredService service, string identifier)
        {
            using (var ping = new Ping())
            {
                var pingResult = await ping.SendPingAsync(service.Address);

                return(pingResult != null && pingResult.Status == IPStatus.Success);
            }
        }
예제 #6
0
        private static BaseMonitoredObj CreateMonitoredService(MonitoredObjConfig config)
        {
            var monitoredObj = new MonitoredService
            {
                Name        = config.Name,
                Desc        = config.Desc,
                Remote      = config.Remote,
                Watched     = config.Watched,
                HasLog      = false,
                MachineName = config.Property1
            };

            return(monitoredObj);
        }