Esempio n. 1
0
        private void InitAccessLogIpForMySql()
        {
            InitAccessLogIpLocalForMySql();

            MySqlCMSDbContext dbContext = new MySqlCMSDbContext();

            ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dbContext).ObjectContext.CommandTimeout = 0;
            List <AccessLogEntity> models = dbContext.AccessLogEntitys.Where(m => m.IsProcessIp != true && m.IPAddress != "::1").ToList();

            List <string> IpLst = models.Select(m => m.IPAddress).Distinct().ToList();

            if (IpLst != null && IpLst.Count > 0)
            {
                int num   = 1;
                int sTime = 0;
                foreach (string IpAddress in IpLst)
                {
                    sTime++;
                    if (sTime >= 100)
                    {
                        sTime = 0;
                        System.Threading.Thread.Sleep(5000);
                    }
                    if (!string.IsNullOrEmpty(IpAddress))
                    {
                        try
                        {
                            ResultIpData data = GetIpAddress(IpAddress);
                            if (data != null && !string.IsNullOrEmpty(data.ip))
                            {
                                if (models != null && models.Count > 0)
                                {
                                    models.ForEach(delegate(AccessLogEntity accessModel)
                                    {
                                        if (accessModel.IPAddress == IpAddress)
                                        {
                                            accessModel.Country     = data.country;
                                            accessModel.CountryNo   = data.country_id;
                                            accessModel.BigArea     = data.area;
                                            accessModel.Isp         = data.isp;
                                            accessModel.Province    = data.region;
                                            accessModel.City        = data.city;
                                            accessModel.Area        = data.county;
                                            accessModel.IsProcessIp = true;
                                            dbContext.AccessLogEntitys.Add(accessModel);
                                            dbContext.Entry <AccessLogEntity>(accessModel).State = EntityState.Modified;
                                            dbContext.SaveChanges();
                                        }
                                    });
                                }
                            }
                            else
                            {
                                iLog.WriteLog("InitAccessLogIpForMySql:未获取到结果", 1);
                            }
                        }
                        catch (Exception ex)
                        {
                            iLog.WriteLog("InitAccessLogIpForMySql:处理异常:" + ex.Message, 1);
                        }
                    }
                    iLog.WriteLog("InitAccessLogIpForMySql:当前处理条数:" + num + " 总条数:" + models.Count, 0);
                    num++;
                }
            }
        }
Esempio n. 2
0
        private ResultIpData GetIpAddress(string Ips)
        {
            ResultIpData    resdata      = new ResultIpData();
            String          querys       = "ip=" + Ips + "";
            String          bodys        = "";
            String          url          = host + path;
            HttpWebRequest  httpRequest  = null;
            HttpWebResponse httpResponse = null;

            if (0 < querys.Length)
            {
                url = url + "?" + querys;
            }

            if (host.Contains("https://"))
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
            }
            else
            {
                httpRequest = (HttpWebRequest)WebRequest.Create(url);
            }
            httpRequest.Method = method;
            httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);
            if (0 < bodys.Length)
            {
                byte[] data = Encoding.UTF8.GetBytes(bodys);
                using (Stream stream = httpRequest.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            try
            {
                httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            }
            catch (WebException ex)
            {
                httpResponse = (HttpWebResponse)ex.Response;
            }

            if (httpResponse.StatusCode == HttpStatusCode.OK)
            {
                Stream       st     = httpResponse.GetResponseStream();
                StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
                string       strs   = reader.ReadToEnd();
                ResultIp     resIp  = JsonConvert.DeserializeObject <ResultIp>(strs);
                if (resIp.code == 0 && resIp.data != null)
                {
                    resdata = JsonConvert.DeserializeObject <ResultIpData>(resIp.data.ToString());
                }
                else
                {
                    iLog.WriteLog("GetIpAddress:处理异常:" + resIp.data.ToString(), 1);
                }
            }
            else
            if (httpResponse.StatusCode == HttpStatusCode.Forbidden)
            {
                System.Threading.Thread.Sleep(5000);
            }
            return(resdata);
        }