From 3b18a48485f7207438d9d0eb3038d979e069431d Mon Sep 17 00:00:00 2001
From: yzh <snbbt@21cn.com>
Date: 星期四, 26 五月 2022 17:58:18 +0800
Subject: [PATCH] 优化产品及产品分类,订单,对称加密,IP转地区名称

---
 web/Common/Utils.cs |  127 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 125 insertions(+), 2 deletions(-)

diff --git a/web/Common/Utils.cs b/web/Common/Utils.cs
index 5aff652..db8f640 100644
--- a/web/Common/Utils.cs
+++ b/web/Common/Utils.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json.Linq;
+using System;
 using System.IO;
 using System.Net;
 using System.Net.Mail;
@@ -7,6 +8,7 @@
 using System.Text.RegularExpressions;
 using System.Threading;
 using System.Web;
+using System.Xml;
 
 namespace Common
 {
@@ -816,8 +818,129 @@
       string str = string.Empty;
       return HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null ? (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] == null ? "0.0.0.0" : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString()) : (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString() : (HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"] == null ? (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] == null ? "0.0.0.0" : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString()) : HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"].ToString()));
     }
+        /// <summary>
+        /// 鑾峰彇瀹㈡埛绔疘P鍦板潃
+        /// </summary>
+        /// <returns>鑻ュけ璐ュ垯杩斿洖鍥為�佸湴鍧�</returns>
+        public static string GetCurrentUserIp()
+        {
+            //濡傛灉瀹㈡埛绔娇鐢ㄤ簡浠g悊鏈嶅姟鍣紝鍒欏埄鐢℉TTP_X_FORWARDED_FOR鎵惧埌瀹㈡埛绔疘P鍦板潃
+            string userHostAddress = string.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) ? null : HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
+            //鍚﹀垯鐩存帴璇诲彇REMOTE_ADDR鑾峰彇瀹㈡埛绔疘P鍦板潃
+            if (string.IsNullOrEmpty(userHostAddress))
+            {
+                userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
+            }
+            //鍓嶄袱鑰呭潎澶辫触锛屽垯鍒╃敤Request.UserHostAddress灞炴�ц幏鍙朓P鍦板潃锛屼絾姝ゆ椂鏃犳硶纭畾璇P鏄鎴风IP杩樻槸浠g悊IP
+            if (string.IsNullOrEmpty(userHostAddress))
+            {
+                userHostAddress = HttpContext.Current.Request.UserHostAddress;
+            }
+            //鏈�鍚庡垽鏂幏鍙栨槸鍚︽垚鍔燂紝骞舵鏌P鍦板潃鐨勬牸寮忥紙妫�鏌ュ叾鏍煎紡闈炲父閲嶈锛�
+            if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress))
+            {
+                return userHostAddress;
+            }
+            return "127.0.0.1";
+        }
 
-    public static string GetTrueWebSitePath()
+
+        //鑾峰彇鏈湴IP鍦板潃,濡傦細192.168.1.102
+        public static string GetLocalIPAddress()
+        {
+            var host = Dns.GetHostEntry(Dns.GetHostName());
+            foreach (var ip in host.AddressList)
+            {
+                if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
+                {
+                    return ip.ToString();
+                }
+            }
+            throw new Exception("No network adapters with an IPv4 address in the system!");
+        }
+
+        /// <summary> 
+        /// 鏍规嵁IP 鑾峰彇鐗╃悊鍦板潃 
+        /// </summary> 
+        /// <param name="ip">Ip鍦板潃</param> 
+        /// <param name="AddressClasses">杩斿洖鍦板潃绫诲埆锛�0-鍏ㄥ湴鍧�锛�1-鍥藉缂栫爜锛� 2-鍥藉锛�3-鍦板尯缂栫爜锛�4-鍦板尯鍚嶇О锛�5-鍩庡競鍚嶇О</param> 
+        /// <returns></returns> 
+        public static string GetIpAddress(string ip, string addressClasses)
+        {
+            string url = "http://ip-api.com/json/" + ip + "?lang=zh-CN";
+            string result = "";
+            WebRequest wrt = null;
+            WebResponse wrp = null;
+            try
+            {
+                wrt = WebRequest.Create(url);
+                wrt.Credentials = CredentialCache.DefaultCredentials;
+
+                wrp = wrt.GetResponse();
+                StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.UTF8);
+                //鑾峰彇鍒扮殑鏄疛son鏁版嵁
+                string html = sr.ReadToEnd();
+
+                if (string.IsNullOrEmpty(html))
+                    return null;
+
+                //Newtonsoft.Json璇诲彇鏁版嵁
+                JObject obj = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(html);
+                string countryCode = obj["countryCode"] == null ? "" : obj["countryCode"].ToString();   //鍥藉缂栫爜
+                string country = obj["country"] == null ? "" : obj["country"].ToString();   //鍥藉
+                string region = obj["region"] == null ? "" : obj["region"].ToString();   //鍦板尯缂栫爜
+                string regionName = obj["regionName"] == null ? "" : obj["regionName"].ToString();   //鍦板尯鍚嶇О
+                string city = obj["city"] == null ? "" : obj["city"].ToString();    //鍩庡競鍚嶇О
+                                                                                    //string province = obj["regionName"].ToString();
+
+                //鍦板潃鍏ㄧО
+                if (addressClasses.Equals("0"))
+                    return country + (city.Equals(regionName) ? city : (regionName + city));
+                //鍥藉缂栫爜
+                if (addressClasses.Equals("1"))
+                    return countryCode;
+                //鍥藉鍚嶇О
+                if (addressClasses.Equals("2"))
+                    return country;
+                //鍦板尯缂栫爜
+                if (addressClasses.Equals("3"))
+                    return region;
+                //鍦板尯鍚嶇О
+                if (addressClasses.Equals("4"))
+                    return regionName;
+                //鍩庡競鍚嶇О
+                if (addressClasses.Equals("5"))
+                    //return city.Equals(regionName) ? city : (regionName + city);
+                    return city;
+
+                else
+                    return country + (city.Equals(regionName) ? city : (regionName + city));
+
+            }
+            catch (Exception)
+            {
+            }
+            finally
+            {
+                if (wrp != null)
+                    wrp.Close();
+                if (wrt != null)
+                    wrt.Abort();
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 妫�鏌P鍦板潃鏍煎紡
+        /// </summary>
+        /// <param name="ip"></param>
+        /// <returns></returns>
+        public static bool IsIP(string ip)
+        {
+            return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
+        }
+
+        public static string GetTrueWebSitePath()
     {
       string path = HttpContext.Current.Request.Path;
       return path.LastIndexOf("/") == path.IndexOf("/") ? "/" : path.Substring(path.IndexOf("/"), path.LastIndexOf("/") + 1);

--
Gitblit v1.9.1