Ejemplo n.º 1
0
        public MonitorDataResponse MoniterServerSubmitToCenterrServer([FromBody]MonitorDataRequest monitorData)
        {
            if (monitorData == null)
            {
                throw new BadRequestException();
            }

            // 查询客户端IP所属的运营商
            IPRepository ipRep = new IPRepository();
            var ipEntity = ipRep.RetriveIP(monitorData.ClientPublicIP);

            string realOperator = ipEntity == null ? null : ipEntity.IPBelongTo;

            string realOperatorProvince = null;
            string realOperatorCity = null;
            if (ipEntity != null)
            {
                realOperatorProvince = ipEntity.Province;
                realOperatorCity = ipEntity.City;
            }

            bool isSameProvice = false;

            if(String.IsNullOrWhiteSpace(realOperatorProvince) && String.IsNullOrWhiteSpace(monitorData.ExpectedOperatorProvice))
            {
                isSameProvice = true;
            }
            else if(monitorData.ExpectedOperatorProvice.Equals(realOperatorProvince))
            {
                isSameProvice = true;
            }

            var status = IPMonitorStatus.Pending;

            if (!String.IsNullOrEmpty(realOperator))
            {
                realOperator = realOperator.Trim();
            }

            if (String.IsNullOrEmpty(realOperator))
            {
                if (ipEntity != null)
                {
                    realOperator = ipEntity.IPBelongTo = ipEntity.Country;
                }
                status = IPMonitorStatus.Unknown;
            }
            else if (isSameProvice && isISPMatched(monitorData.ExpectedOperator,realOperator))
            {
                status = IPMonitorStatus.Normal;
            }
            else
            {
                status = IPMonitorStatus.Exception;
            }

            ClientIP clientIP = new ClientIP
            {
                ClientProvince = monitorData.ClientProvince,
                ClientCity = monitorData.ClientCity,
                ClientDistinct = monitorData.ClientDistinct,
                ClientDetailAddr = monitorData.ClientDetailAddress,
                ClientRecordor = monitorData.ClientRecordor,
                ClientPublicIP = monitorData.ClientPublicIP,
                ClientPrivateIP = monitorData.ClientPrivateIP,
                SubmitFromServerIP = Context.ClientIP,
                Status = (int)status,
                ExpectedOperatorProvince = monitorData.ExpectedOperatorProvice,
                ExpectedOperatorCity = monitorData.ExpectedOperatorCity,
                ExpectedOperator = monitorData.ExpectedOperator,
                RealOperator = realOperator,
                RealOperatorProvince = realOperatorProvince,
                RealOperatorCity = realOperatorCity,
                UserName = Context.LoginName
            };

            MonitorDataRepository mdr = new MonitorDataRepository();
            clientIP = mdr.Add(clientIP);

            MonitorDataResponse response = new MonitorDataResponse();
            response.UID = clientIP.ID;
            response.RealOperator = realOperator;
            response.RealOperatorProvince = realOperatorProvince;
            response.RealOperatorCity = realOperatorCity;

            return response;
        }
Ejemplo n.º 2
0
        public MonitorDataResponse ClientSubmitToMonitorServer([FromBody]MonitorDataRequest monitorData)
        {
            if (monitorData == null)
            {
                throw new BadRequestException("请求的数据不能为空。");
            }

            MonitorDataResponse response = new MonitorDataResponse();

            response.IP = Context.ClientIP;
            monitorData.ClientPublicIP = Context.ClientIP;

            string token = Context.Token;
            //Task.Factory.StartNew(() =>
            //{
                try
                {
                    RestClient restClient = new RestClient();
                    restClient.BaseUrl = CenterServerBaseUrl;
                    IRestRequest request = new RestRequest("apis/v1/monitordata/transfer", Method.POST);
                    request.RequestFormat = DataFormat.Json;
                    request.AddHeader("Content-Type", "application/json");
                    request.AddHeader("Authorization", token);
                    request.AddBody(monitorData);
                    var responseFromServer = restClient.Execute<MonitorDataResponse>(request);
                    if (responseFromServer != null && responseFromServer.Data != null)
                    {
                        response.UID = responseFromServer.Data.UID;
                        response.RealOperator = responseFromServer.Data.RealOperator;
                        response.RealOperatorProvince = responseFromServer.Data.RealOperatorProvince;
                        response.RealOperatorCity = responseFromServer.Data.RealOperatorCity;
                    }
                }
                catch (Exception ex)
                {
                    string error = ex.ToString();
                }
            //});

            return response;
        }