Exemple #1
0
        private void BroadcastAliveMessage(RmsClient client, int refID)
        {
            try
            {
                var    asc            = new AgentServiceClient();
                string clientEndpiont = ConfigurationManager.AppSettings["RMS.NetTcpBinding_AgentService"];
                clientEndpiont       = clientEndpiont.Replace("client_ip_address", client.IpAddress);
                asc.Endpoint.Address = new EndpointAddress(clientEndpiont);

                NetTcpBinding myBinding = new NetTcpBinding();
                myBinding.Security.Mode = SecurityMode.None;
                myBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
                myBinding.OpenTimeout = new TimeSpan(0, 5, 0);
                asc.Endpoint.Binding  = myBinding;

                AddLogMonitoringClient(refID, client.ClientId, client.ClientCode, client.IpAddress, client.State, null);
                var result = asc.Monitoring(client.ClientCode);

                if (agentNotAliveHashtable.Contains(client.ClientCode))
                {
                    agentNotAliveHashtable.Remove(client.ClientCode);
                }
            }
            catch (Exception e)
            {
                try
                {
                    if (e.Message.IndexOf("AddLogMonitoringClient") > -1)
                    {
                        throw new RMSWebException(this, "0500", "BroadcastAliveMessage failed. " + e.Message, e, false);
                    }


                    // ถ้า Cleint State เป็น 1 (Normal) แสดงว่า Agent ผิดปกติ
                    if (client.State == 1)
                    {
                        using (var db = new MyDbContext())
                        {
                            var    rmsSystemConfig = db.RmsSystemConfigs.Find("AgentProcessName");
                            string agentProcessName;
                            if (rmsSystemConfig == null)
                            {
                                agentProcessName = "RMS.Agent.WPF";
                            }
                            else
                            {
                                agentProcessName = rmsSystemConfig.Value ?? rmsSystemConfig.DefaultValue;
                            }

                            rmsSystemConfig = db.RmsSystemConfigs.Find("DelayAlert.AgentNotAlive");
                            string dalayInSecond;
                            if (rmsSystemConfig == null)
                            {
                                dalayInSecond = "90";
                            }
                            else
                            {
                                dalayInSecond = rmsSystemConfig.Value ?? rmsSystemConfig.DefaultValue;
                            }

                            SqlParameter[] parameters = new SqlParameter[1];
                            SqlParameter   p1         = new SqlParameter("ClientID", client.ClientId);
                            parameters[0] = p1;

                            var lists = db.Database.SqlQuery <MonitoringProfileDeviceInfo>("RMS_GetMonitoringProfileDeviceByClientID "
                                                                                           + "@ClientID", parameters);
                            var device = lists.First(f => f.DeviceCode == "CLIENT" && f.DeviceTypeCode == Models.DeviceCode.Client &&
                                                     (string.IsNullOrEmpty(f.StringValue) || f.StringValue == agentProcessName));

                            if (device != null)
                            {
                                bool CanSendMessage = Convert.ToInt32(dalayInSecond) == 0;

                                if (agentNotAliveHashtable.Contains(client.ClientCode))
                                {
                                    DateTime a             = (DateTime)agentNotAliveHashtable[client.ClientCode];
                                    var      diffInSeconds = (DateTime.Now - a).TotalSeconds;
                                    if (diffInSeconds > Convert.ToInt32(dalayInSecond))
                                    {
                                        CanSendMessage = true;
                                    }
                                }
                                else
                                {
                                    agentNotAliveHashtable.Add(client.ClientCode, DateTime.Now);
                                }


                                if (CanSendMessage)
                                {
                                    var mp = new WebService.Proxy.MonitoringService().monitoringService;

                                    RmsReportMonitoringRaw rawMessage = new RmsReportMonitoringRaw
                                    {
                                        ClientCode                = client.ClientCode,
                                        DeviceCode                = "CLIENT",
                                        Message                   = "AGENT_NOT_ALIVE",
                                        MessageDateTime           = DateTime.Now,
                                        MonitoringProfileDeviceId = device.MonitoringProfileDeviceId
                                    };

                                    mp.AddMessage(rawMessage);

                                    if (agentNotAliveHashtable.Contains(client.ClientCode))
                                    {
                                        agentNotAliveHashtable.Remove(client.ClientCode);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new RMSWebException(this, "0500", "BroadcastAliveMessage failed. " + ex.Message, ex, false);
                }
            }
        }
Exemple #2
0
        public void Start(LicenseInfo licenseInfo)
        {
            if (isRunning)
            {
                return;
            }

            /*
             * 1. Get all active clients from db
             * 2. generate multi-thread for boardcasting message
             */

            int activeClient = 0;

            try
            {
                isRunning = true;

                using (var db = new MyDbContext())
                {
                    #region Prepare Parameters

                    db.Configuration.ProxyCreationEnabled = false;
                    db.Configuration.LazyLoadingEnabled   = false;

                    var listClients = ListClientWithIPAddress(licenseInfo, out activeClient, true);

                    List <RmsClient> broadcastClient = new List <RmsClient>();

                    foreach (var client in listClients)
                    {
                        if (client.UseLocalInfo == true)
                        {
                            var location = db.RmsLocations.Find(client.LocationId);
                            if (location != null)
                            {
                                if (CanBroadCast(location))
                                {
                                    broadcastClient.Add(client);
                                }
                            }
                        }
                        else
                        {
                            broadcastClient.Add(client);
                        }
                    }

                    // Log into RMS_Log_Monitoring
                    int refID = AddLogMonitoring(activeClient, true, null);


                    #region Initial Thread Pool

                    var maxThreadConfig = db.RmsSystemConfigs.Find("MonitoringEngine.MaxThread");

                    int minThread = 1;
                    int maxThread = 1;

                    if (maxThreadConfig != null)
                    {
                        maxThread = Convert.ToInt32(maxThreadConfig.Value ?? maxThreadConfig.DefaultValue);

                        if (maxThread > broadcastClient.Count)
                        {
                            maxThread = broadcastClient.Count;
                        }
                    }

                    if (broadcastClient.Count > 0)
                    {
                        STPStartInfo stpStartInfo = new STPStartInfo();
                        stpStartInfo.MaxWorkerThreads = maxThread;
                        stpStartInfo.IdleTimeout      = 60 * 1000;
                        stpStartInfo.MinWorkerThreads = minThread;
                        stpStartInfo.PerformanceCounterInstanceName = "RMSCounter";
                        stpStartInfo.EnableLocalPerformanceCounters = true;
                        stp = new SmartThreadPool(stpStartInfo);
                    }

                    #endregion

                    foreach (var client in broadcastClient)
                    {
                        RmsClient _client = client;

                        Amib.Threading.Action broadcastAliveMessage = () =>
                        {
                            BroadcastAliveMessage(_client, refID);
                        };

                        stp.QueueWorkItem(broadcastAliveMessage);
                    }

                    #endregion
                }
            }
            catch (Exception ex)
            {
                string exLicense = "License is invalid";
                if (ex.Message.ToLower().IndexOf(exLicense.ToLower()) > -1)
                {
                    // Log into RMS_Log_Monitoring
                    AddLogMonitoring(activeClient, false, ex.Message);
                }
                throw new RMSWebException(this, "0500", "Start failed. " + ex.Message, ex, false);
            }
            finally
            {
                if (stp != null)
                {
                    stp.WaitForIdle();
                    System.Threading.Thread.Sleep(1000);
                    if (!stp.IsShuttingdown)
                    {
                        stp.Shutdown();
                    }
                    stp.Dispose();
                }
                isRunning = false;
            }
        }
Exemple #3
0
        public RmsClient GetClient(GetClientBy getClientBy, int?clientID, string clientCode, string ipAddress, bool activeClient)
        {
            try
            {
                using (var db = new MyDbContext())
                {
                    db.Configuration.ProxyCreationEnabled = false;
                    db.Configuration.LazyLoadingEnabled   = false;

                    RmsClient client = new RmsClient();

                    if (getClientBy == GetClientBy.ClientID)
                    {
                        var ret      = db.RmsClients.Where(c => c.ClientId == clientID && (!activeClient || (c.Enable == true && c.EffectiveDate <= DateTime.Today && (c.ExpiredDate == null || c.ExpiredDate >= DateTime.Today))));
                        var lClients = new List <RmsClient>(ret.ToList());

                        if (lClients.Count == 0)
                        {
                            throw new Exception("Client not found by ClientID: " + clientID + ". Please check Monitoring Database");
                        }

                        client = lClients[0];
                    }
                    else if (getClientBy == GetClientBy.ClientCode)
                    {
                        var ret      = db.RmsClients.Where(c => c.ClientCode == clientCode && (!activeClient || (c.Enable == true && c.EffectiveDate <= DateTime.Today && (c.ExpiredDate == null || c.ExpiredDate >= DateTime.Today))));
                        var lClients = new List <RmsClient>(ret.ToList());

                        if (lClients.Count > 1)
                        {
                            throw new Exception("Found more thand one client by ClientCode: " + clientCode + ". Please check Monitoring Database");
                        }
                        if (lClients.Count == 0)
                        {
                            throw new Exception("Client not found by ClientCode: " + clientCode + ". Please check Monitoring Database");
                        }

                        client = lClients[0];
                    }
                    else if (getClientBy == GetClientBy.IPAddress)
                    {
                        var ret      = db.RmsClients.Where(c => c.IpAddress == ipAddress && c.ClientTypeId == 1 && (!activeClient || (c.Enable == true && c.EffectiveDate <= DateTime.Today && (c.ExpiredDate == null || c.ExpiredDate >= DateTime.Today))));
                        var lClients = new List <RmsClient>(ret.ToList());

                        if (lClients.Count > 1)
                        {
                            throw new Exception("Found more thand one client by IPAddress: " + ipAddress +
                                                ". Please check Monitoring Database");
                        }
                        if (lClients.Count == 0)
                        {
                            throw new Exception("Client not found by IPAddress: " + ipAddress + ". Please check Monitoring Database");
                        }

                        client = lClients[0];
                    }
                    return(client);
                }
            }
            catch (Exception ex)
            {
                throw new RMSWebException(this, "0500", "GetClient failed. " + ex.Message, ex, false);
            }
        }
Exemple #4
0
        private WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw MyHTTPStatus(RmsClient client, RmsWebsiteMonitoring websiteMonitoring)
        {
            if (client == null)
            {
                throw new RMSWebException(this, "500", "MyHTTPStatus failed. RmsClient cannot be null", true);
            }
            if (websiteMonitoring == null)
            {
                throw new RMSWebException(this, "500", "MyHTTPStatus failed. RmsWebsiteMonitoring cannot be null", true);
            }

            try
            {
                RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage = new WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw();

                rawMessage.ClientCode          = client.ClientCode;
                rawMessage.MessageGroupCode    = "W001"; //Uptime
                rawMessage.MessageDateTime     = DateTime.Now;
                rawMessage.WebsiteMonitoringId = websiteMonitoring.WebsiteMonitoringId;

                using (var db = new MyDbContext())
                {
                    RmsTrnHttpResult rmsTrn = db.RmsTrnHttpResults.Create();
                    rmsTrn.ClientId            = client.ClientId;
                    rmsTrn.ClientCode          = client.ClientCode;
                    rmsTrn.Url                 = websiteMonitoring.DomainName;
                    rmsTrn.WebsiteMonitoringId = websiteMonitoring.WebsiteMonitoringId;
                    rawMessage.MessageRemark   = "URL: " + websiteMonitoring.DomainName;

                    try
                    {
                        if (rmsTrn.Url == null)
                        {
                            throw new ArgumentNullException("rmsTrn.Url");
                        }

                        if (rmsTrn.Url.ToLower().IndexOf("http:") < 0 && rmsTrn.Url.ToLower().IndexOf("https:") < 0)
                        {
                            // HTTP
                            if (websiteMonitoring.WebsiteMonitoringProtocolId == "3")
                            {
                                rmsTrn.Url = "http://" + rmsTrn.Url.Trim();
                            }
                            // HTTPS
                            else if (websiteMonitoring.WebsiteMonitoringProtocolId == "4")
                            {
                                rmsTrn.Url = "https://" + rmsTrn.Url.Trim();
                            }
                        }

                        rawMessage.MessageRemark = "URL: " + rmsTrn.Url;

                        if (!Uri.IsWellFormedUriString(rmsTrn.Url, UriKind.Absolute))
                        {
                            throw new ArgumentException("rmsTrn.Url [" + rmsTrn.Url + "] is invalid format.");
                        }

                        var request = (HttpWebRequest)WebRequest.Create(rmsTrn.Url);
                        request.Method  = "HEAD";
                        request.Timeout = 5000;

                        using (var response = (HttpWebResponse)request.GetResponse())
                        {
                            rmsTrn.ResponseCode = (int)response.StatusCode;

                            if (response.StatusCode == HttpStatusCode.OK)
                            {
                                rawMessage.Message = "OK";
                            }
                            else
                            {
                                rawMessage.Message        = "UPTIME_HTTP_FAILED";
                                rawMessage.MessageRemark += " HttpStatusCode: " + (int)response.StatusCode;
                            }

                            response.Close();
                        }
                    }
                    catch (WebException e)
                    {
                        if (e.Status == WebExceptionStatus.ProtocolError &&
                            e.Response != null)
                        {
                            var resp = (HttpWebResponse)e.Response;
                            rmsTrn.ResponseCode = (int)resp.StatusCode;
                        }

                        rawMessage.Message        = "UPTIME_HTTP_FAILED";
                        rawMessage.MessageRemark += " Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                        rmsTrn.IsSuccess          = false;
                        rmsTrn.ErrorMessage       = "Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                    }
                    catch (Exception e)
                    {
                        rawMessage.Message        = "UPTIME_HTTP_FAILED";
                        rawMessage.MessageRemark += " Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                        rmsTrn.IsSuccess          = false;
                        rmsTrn.ErrorMessage       = "Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                    }

                    db.RmsTrnHttpResults.Add(rmsTrn);
                    db.SaveChanges();

                    return(rawMessage);
                }
            }
            catch (Exception ex)
            {
                throw new RMSWebException(this, "0500", "MyHTTPStatus failed. " + ex.Message, ex, false);
            }
        }
Exemple #5
0
        private WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw MyTelnet(RmsClient client, RmsWebsiteMonitoring websiteMonitoring)
        {
            if (client == null)
            {
                throw new RMSWebException(this, "500", "MyTelnet failed. RmsClient cannot be null", true);
            }
            if (websiteMonitoring == null)
            {
                throw new RMSWebException(this, "500", "MyTelnet failed. RmsWebsiteMonitoring cannot be null", true);
            }

            try
            {
                RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage = new WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw();

                rawMessage.ClientCode          = client.ClientCode;
                rawMessage.MessageGroupCode    = "W001"; //Uptime
                rawMessage.MessageDateTime     = DateTime.Now;
                rawMessage.WebsiteMonitoringId = websiteMonitoring.WebsiteMonitoringId;

                using (var db = new MyDbContext())
                {
                    RmsTrnTelnetResult rmsTrn = db.RmsTrnTelnetResults.Create();
                    rmsTrn.ClientId            = client.ClientId;
                    rmsTrn.ClientCode          = client.ClientCode;
                    rmsTrn.HostName            = client.IpAddress;
                    rmsTrn.WebsiteMonitoringId = websiteMonitoring.WebsiteMonitoringId;
                    rmsTrn.PortNumber          = websiteMonitoring.PortNumber ?? 23;
                    rawMessage.MessageRemark   = "Telnet: " + client.IpAddress + ", Port: " + websiteMonitoring.PortNumber;

                    try
                    {
                        using (TcpClient tcp = new TcpClient())
                        {
                            int timeout = 2500;
                            tcp.SendTimeout    = timeout;
                            tcp.ReceiveTimeout = timeout;

                            int port = websiteMonitoring.PortNumber ?? 23;


                            tcp.Connect(client.IpAddress, port);

                            if (tcp.Connected)
                            {
                                //Logging
                                rmsTrn.IsSuccess   = true;
                                rawMessage.Message = "OK";
                            }
                            else
                            {
                                // Send Message to Sever : แจ้งว่า Ping ไม่ผ่าน
                                rmsTrn.IsSuccess   = false;
                                rawMessage.Message = "TELNET_FAILED";
                            }

                            tcp.Close();
                        }
                    }
                    catch (Exception e)
                    {
                        rawMessage.Message        = "TELNET_FAILED";
                        rawMessage.MessageRemark += " Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                        rmsTrn.IsSuccess          = false;
                        rmsTrn.ErrorMessage       = "Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                    }

                    db.RmsTrnTelnetResults.Add(rmsTrn);
                    db.SaveChanges();

                    return(rawMessage);
                }
            }
            catch (Exception ex)
            {
                throw new RMSWebException(this, "0500", "MyTelnet failed. " + ex.Message, ex, false);
            }
        }
Exemple #6
0
        private WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw MyPing(RmsClient client, RmsWebsiteMonitoring websiteMonitoring)
        {
            if (client == null)
            {
                throw new RMSWebException(this, "500", "MyPing failed. RmsClient cannot be null", true);
            }
            if (websiteMonitoring == null)
            {
                throw new RMSWebException(this, "500", "MyPing failed. RmsWebsiteMonitoring cannot be null", true);
            }

            try
            {
                RMS.Centralize.WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw rawMessage =
                    new WebService.Proxy.MonitoringProxy.RmsReportMonitoringRaw();

                rawMessage.ClientCode          = client.ClientCode;
                rawMessage.MessageGroupCode    = "W001"; //Uptime
                rawMessage.MessageDateTime     = DateTime.Now;
                rawMessage.WebsiteMonitoringId = websiteMonitoring.WebsiteMonitoringId;

                using (var db = new MyDbContext())
                {
                    RmsTrnPingResult rmsTrnPing = db.RmsTrnPingResults.Create();

                    rmsTrnPing.ClientId            = client.ClientId;
                    rmsTrnPing.ClientCode          = client.ClientCode;
                    rmsTrnPing.HostName            = client.IpAddress;
                    rmsTrnPing.WebsiteMonitoringId = websiteMonitoring.WebsiteMonitoringId;
                    rawMessage.MessageRemark       = "Ping: " + client.IpAddress;

                    int  _sent     = 0;
                    int  _received = 0;
                    int  _lost     = 0;
                    long?_min      = null;
                    long?_max      = null;
                    long?_avg      = null;

                    try
                    {
                        using (var ping = new Ping())
                        {
                            // Create a buffer of 32 bytes of data to be transmitted.
                            string data   = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
                            byte[] buffer = Encoding.ASCII.GetBytes(data);

                            // Wait 10 seconds for a reply.
                            int timeout = 3000;

                            // Set options for transmission:
                            // The data can go through 64 gateways or routers
                            // before it is destroyed, and the data packet
                            // cannot be fragmented.
                            PingOptions options = new PingOptions(64, true);

                            int  echoNum   = 3;
                            long totalTime = 0;

                            for (int i = 0; i < echoNum; i++)
                            {
                                var reply = ping.Send(client.IpAddress, timeout, buffer, options);

                                _sent++;

                                if (reply != null && reply.Status == IPStatus.Success)
                                {
                                    _received++;

                                    if (_max == null || reply.RoundtripTime > _max)
                                    {
                                        _max = reply.RoundtripTime;
                                    }
                                    if (_min == null || reply.RoundtripTime < _min)
                                    {
                                        _min = reply.RoundtripTime;
                                    }

                                    totalTime += reply.RoundtripTime;
                                }
                                else
                                {
                                    _lost++;
                                }

                                if (reply != null && reply.Address != null)
                                {
                                    rmsTrnPing.ReplyAddress = reply.Address.ToString();
                                }
                            }

                            if (_max != null)
                            {
                                _avg = totalTime / _sent;
                            }
                        }

                        if (_sent == _lost) // ถ้าจำนวน lost เท่ากับ sent แสดงว่า ping ไม่ถึงทุก echo ถือว่าติดต่อ server ไม่ได้
                        {
                            rawMessage.Message = "PING_FAILED";
                        }
                        else
                        {
                            rawMessage.Message = "OK";
                        }
                    }
                    catch (Exception e)
                    {
                        rawMessage.Message        = "PING_FAILED";
                        rawMessage.MessageRemark += " Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                        rmsTrnPing.ErrorMessage   = "Error: " + e.Message + (e.InnerException != null ? e.InnerException.Message : "");
                    }

                    rmsTrnPing.Sent     = _sent;
                    rmsTrnPing.Received = _received;
                    rmsTrnPing.Lost     = _lost;
                    if (_max != null)
                    {
                        rmsTrnPing.MaximumValue = Convert.ToInt32(_max);
                    }
                    if (_max != null)
                    {
                        rmsTrnPing.MinimumValue = Convert.ToInt32(_min);
                    }
                    if (_avg != null)
                    {
                        rmsTrnPing.AverageValue = Convert.ToInt32(_avg);
                    }


                    db.RmsTrnPingResults.Add(rmsTrnPing);
                    db.SaveChanges();

                    return(rawMessage);
                }
            }
            catch (Exception ex)
            {
                throw new RMSWebException(this, "0500", "MyPing failed [Host: " + client.IpAddress + "]. " + ex.Message, ex, true);
            }
        }
Exemple #7
0
        public void Check(RmsClient client, int refID)
        {
            try
            {
                using (var db = new MyDbContext())
                {
                    db.Configuration.ProxyCreationEnabled = false;
                    db.Configuration.LazyLoadingEnabled   = false;
                    var listofdata = db.RmsWebsiteMonitorings.Where(c => c.ClientId == client.ClientId && c.Enable == true);

                    List <RmsWebsiteMonitoring>   lWebMonitorings          = new List <RmsWebsiteMonitoring>(listofdata.ToList());
                    List <RmsReportMonitoringRaw> lRmsReportMonitoringRaws = new List <RmsReportMonitoringRaw>();


                    foreach (var websiteMonitoring in lWebMonitorings)
                    {
                        string detail = null;
                        try
                        {
                            var websitMonitoringProtocol = lListOfValues.FirstOrDefault(w => w.ListName == "WebsitMonitoringProtocol" && w.ItemId == websiteMonitoring.WebsiteMonitoringProtocolId);

                            if (websitMonitoringProtocol != null)
                            {
                                detail += websitMonitoringProtocol.ItemValue;
                            }
                            // 1 = Ping, 2 = Telnet
                            if (websiteMonitoring.WebsiteMonitoringProtocolId == "1" || websiteMonitoring.WebsiteMonitoringProtocolId == "2")
                            {
                                detail += " " + client.IpAddress;
                            }
                            else // Http or Https
                            {
                                detail += " " + websiteMonitoring.DomainName;
                            }

                            detail += " " + websiteMonitoring.PortNumber;

                            detail = detail.Trim();
                        }
                        catch (Exception ex)
                        {
                            new RMSWebException(this, "0500", "Generate Monitoring Detail failed [ClientCode=" + client.ClientCode + ", WebsiteMonitoringId=" + websiteMonitoring.WebsiteMonitoringId + ", WebsiteMonitoringProtocolId=" + websiteMonitoring.WebsiteMonitoringProtocolId + "]. " + ex.Message, ex, true);
                        }
                        try
                        {
                            AddLogWebsiteMonitoringClient(refID, client.ClientId, client.ClientCode, client.IpAddress, client.State, detail);

                            switch (websiteMonitoring.WebsiteMonitoringProtocolId)
                            {
                            case "1":
                                //Uptime.Ping
                                lRmsReportMonitoringRaws.Add(MyPing(client, websiteMonitoring));
                                break;

                            case "2":
                                //Uptime.Telnet
                                lRmsReportMonitoringRaws.Add(MyTelnet(client, websiteMonitoring));
                                break;

                            case "3":
                                //Uptime.HTTP
                                lRmsReportMonitoringRaws.Add(MyHTTPStatus(client, websiteMonitoring));
                                break;

                            case "4":
                                //Uptime.HTTPS
                                lRmsReportMonitoringRaws.Add(MyHTTPStatus(client, websiteMonitoring));
                                break;

                            case "5":
                                //Webpage.HTTP
                                break;

                            case "6":
                                //Webpage.HTTPS
                                break;
                            }
                        }
                        catch (Exception ex)
                        {
                            new RMSWebException(this, "0500", "Each of Website Checking failed [ClientCode=" + client.ClientCode + ", WebsiteMonitoringId=" + websiteMonitoring.WebsiteMonitoringId + ", WebsiteMonitoringProtocolId=" + websiteMonitoring.WebsiteMonitoringProtocolId + "]. " + ex.Message, ex, true);
                        }
                    }

                    if (lRmsReportMonitoringRaws.Count > 0)
                    {
                        var mp = new Centralize.WebService.Proxy.MonitoringService().monitoringService;
                        mp.AddWebsiteMessage(lRmsReportMonitoringRaws);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new RMSWebException(this, "0500", "Check failed. " + ex.Message, ex, false);
            }
        }