Pārlūkot izejas kodu

移除百度地图

懒得勤快 1 mēnesi atpakaļ
vecāks
revīzija
e52797d66d

+ 1 - 2
README.md

@@ -1,4 +1,4 @@
-### Masuit.MyBlogs
+### Masuit.MyBlogs
 <a href="https://gitee.com/masuit/Masuit.MyBlogs"><img src="https://gitee.com/static/images/logo-black.svg" height="32"></a> <a href="https://github.com/ldqk/Masuit.MyBlogs"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Font_Awesome_5_brands_github.svg/54px-Font_Awesome_5_brands_github.svg.png" height="32"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/GitHub_logo_2013.svg/128px-GitHub_logo_2013.svg.png" height="32"></a>  
 
 个人博客站项目源码,高性能高安全性低占用的博客系统,这也许是我写过的性能最高的web项目了。**仅3MB的代码量!** 目前日均处理请求数80-600w次,同时在线活跃用户数60-600人,**数据量累计已达到数百万条**,数据库+Redis+网站主程序同时运行在一台4核8GB的机器上,浏览器页面请求秒级响应,CPU平均使用率控制在10%左右,内存占用控制在400MB左右。
@@ -200,7 +200,6 @@ angularjs
 #### 4.修改配置文件:
 主要需要配置的是以下内容,其他配置均为可选项,不配置则表示不启用;
 ![image](https://user-images.githubusercontent.com/20254980/169738528-ba0cc1a4-cb19-4e9d-b6cd-2f146a633c35.png)  
-同时,BaiduAK参与了数据库的加密,如果你没有BaiduAK,自行到百度地图开放平台申请,`免费的`。  
 如果你使用了CDN,需要配置TrueClientIPHeader选项为真实IP请求转发头,如cloudflare的叫CF-Connecting-IP。
 如果Redis不在本机,需要在配置文件中的Redis节下配置,固定为Redis,值的格式:127.0.0.1:6379,allowadmin=true,若未正确配置,将按默认值“127.0.0.1:6379,allowadmin=true,abortConnect=false”。  
 其他配置请参考appsettings.json的注释按需配置即可。  

+ 1 - 6
src/Masuit.MyBlogs.Core/Configs/AppConfig.cs

@@ -10,11 +10,6 @@ public class AppConfig
     /// </summary>
     public static string ConnString { get; set; }
 
-    /// <summary>
-    /// 百度AK
-    /// </summary>
-    public static string BaiduAK { get; set; }
-
     /// <summary>
     /// Redis连接字符串
     /// </summary>
@@ -34,4 +29,4 @@ public class AppConfig
     /// 是否允许IP直接访问
     /// </summary>
     public static bool EnableIPDirect { get; set; }
-}
+}

+ 1 - 1
src/Masuit.MyBlogs.Core/Controllers/AdminController.cs

@@ -52,7 +52,7 @@ public class AdminController : Controller
         if (user == null && Request.Cookies.Any(x => x.Key == "username" || x.Key == "password")) //执行自动登录
         {
             string name = Request.Cookies["username"];
-            string pwd = Request.Cookies["password"]?.DesDecrypt(AppConfig.BaiduAK);
+            string pwd = Request.Cookies["password"]?.DesDecrypt(AppConfig.ConnString);
             var userInfo = UserInfoService.Login(name, pwd);
             if (userInfo != null)
             {

+ 4 - 4
src/Masuit.MyBlogs.Core/Controllers/BaseController.cs

@@ -40,7 +40,7 @@ public class BaseController : Controller
     /// <summary>
     /// 普通访客是否token合法
     /// </summary>
-    private bool VisitorTokenValid => Request.Cookies.ContainsKey("FullAccessToken") && Request.Cookies["Email"].MDString(AppConfig.BaiduAK).Equals(Request.Cookies["FullAccessToken"]);
+    private bool VisitorTokenValid => Request.Cookies.ContainsKey("FullAccessToken") && Request.Cookies["Email"].MDString(AppConfig.ConnString).Equals(Request.Cookies["FullAccessToken"]);
 
     private int[] HideCategories => Request.GetHideCategories();
 
@@ -134,7 +134,7 @@ public class BaseController : Controller
         {
             var name = Request.Cookies["username"];
             var pwd = Request.Cookies["password"];
-            var userInfo = UserInfoService.Login(name, pwd.DesDecrypt(AppConfig.BaiduAK));
+            var userInfo = UserInfoService.Login(name, pwd.DesDecrypt(AppConfig.ConnString));
             if (userInfo != null)
             {
                 Response.Cookies.Append("username", name, new CookieOptions
@@ -186,7 +186,7 @@ public class BaseController : Controller
                 return "验证码错误!";
             }
         }
-        else if (Request.Cookies["ValidateKey"].DesDecrypt(AppConfig.BaiduAK) != email)
+        else if (Request.Cookies["ValidateKey"].DesDecrypt(AppConfig.ConnString) != email)
         {
             Response.Cookies.Delete("Email");
             Response.Cookies.Delete("NickName");
@@ -213,7 +213,7 @@ public class BaseController : Controller
             Expires = DateTimeOffset.Now.AddYears(1),
             SameSite = SameSiteMode.Lax
         });
-        Response.Cookies.Append("ValidateKey", email.DesEncrypt(AppConfig.BaiduAK), new CookieOptions()
+        Response.Cookies.Append("ValidateKey", email.DesEncrypt(AppConfig.ConnString), new CookieOptions()
         {
             Expires = DateTimeOffset.Now.AddYears(1),
             SameSite = SameSiteMode.Lax

+ 1 - 1
src/Masuit.MyBlogs.Core/Controllers/ErrorController.cs

@@ -165,7 +165,7 @@ public sealed class ErrorController : Controller
             Expires = DateTime.Now.AddYears(1),
             SameSite = SameSiteMode.Lax
         });
-        Response.Cookies.Append("FullAccessToken", email.MDString(AppConfig.BaiduAK), new CookieOptions
+        Response.Cookies.Append("FullAccessToken", email.MDString(AppConfig.ConnString), new CookieOptions
         {
             Expires = DateTime.Now.AddYears(1),
             SameSite = SameSiteMode.Lax

+ 4 - 4
src/Masuit.MyBlogs.Core/Controllers/FirewallController.cs

@@ -30,7 +30,7 @@ public sealed class FirewallController(IHttpClientFactory httpClientFactory) : C
         try
         {
             HttpContext.Session.Set("js-challenge", 1);
-            Response.Cookies.Append(SessionKey.ChallengeBypass, DateTime.Now.AddSeconds(new Random().Next(60, 86400)).ToString("yyyy-MM-dd HH:mm:ss").AESEncrypt(AppConfig.BaiduAK), new CookieOptions()
+            Response.Cookies.Append(SessionKey.ChallengeBypass, DateTime.Now.AddSeconds(new Random().Next(60, 86400)).ToString("yyyy-MM-dd HH:mm:ss").AESEncrypt(AppConfig.ConnString), new CookieOptions()
             {
                 SameSite = SameSiteMode.Lax,
                 Expires = DateTime.Now.AddDays(1)
@@ -74,7 +74,7 @@ public sealed class FirewallController(IHttpClientFactory httpClientFactory) : C
         {
             HttpContext.Session.Set("js-challenge", 1);
             HttpContext.Session.Remove("challenge-captcha");
-            Response.Cookies.Append(SessionKey.ChallengeBypass, DateTime.Now.AddSeconds(new Random().Next(60, 86400)).ToString("yyyy-MM-dd HH:mm:ss").AESEncrypt(AppConfig.BaiduAK), new CookieOptions()
+            Response.Cookies.Append(SessionKey.ChallengeBypass, DateTime.Now.AddSeconds(new Random().Next(60, 86400)).ToString("yyyy-MM-dd HH:mm:ss").AESEncrypt(AppConfig.ConnString), new CookieOptions()
             {
                 SameSite = SameSiteMode.Lax,
                 Expires = DateTime.Now.AddDays(1)
@@ -107,7 +107,7 @@ public sealed class FirewallController(IHttpClientFactory httpClientFactory) : C
             if (result.Success)
             {
                 HttpContext.Session.Set("js-challenge", 1);
-                Response.Cookies.Append(SessionKey.ChallengeBypass, DateTime.Now.AddSeconds(new Random().Next(60, 86400)).ToString("yyyy-MM-dd HH:mm:ss").AESEncrypt(AppConfig.BaiduAK), new CookieOptions()
+                Response.Cookies.Append(SessionKey.ChallengeBypass, DateTime.Now.AddSeconds(new Random().Next(60, 86400)).ToString("yyyy-MM-dd HH:mm:ss").AESEncrypt(AppConfig.ConnString), new CookieOptions()
                 {
                     SameSite = SameSiteMode.Lax,
                     Expires = DateTime.Now.AddDays(1)
@@ -177,4 +177,4 @@ public class TurnstileResult
     public string Action { get; set; }
 
     public string Cdata { get; set; }
-}
+}

+ 2 - 2
src/Masuit.MyBlogs.Core/Controllers/PassportController.cs

@@ -84,7 +84,7 @@ public sealed class PassportController : Controller
         if (Request.Cookies.Count > 2)
         {
             string name = Request.Cookies["username"];
-            string pwd = Request.Cookies["password"]?.DesDecrypt(AppConfig.BaiduAK);
+            string pwd = Request.Cookies["password"]?.DesDecrypt(AppConfig.ConnString);
             var userInfo = UserInfoService.Login(name, pwd);
             if (userInfo != null)
             {
@@ -165,7 +165,7 @@ public sealed class PassportController : Controller
                 Expires = DateTime.Now.AddYears(1),
                 SameSite = SameSiteMode.Lax
             });
-            Response.Cookies.Append("password", password.Trim().DesEncrypt(AppConfig.BaiduAK), new CookieOptions()
+            Response.Cookies.Append("password", password.Trim().DesEncrypt(AppConfig.ConnString), new CookieOptions()
             {
                 Expires = DateTime.Now.AddYears(1),
                 SameSite = SameSiteMode.Lax

+ 1 - 1
src/Masuit.MyBlogs.Core/Controllers/PostController.cs

@@ -367,7 +367,7 @@ public sealed class PostController : BaseController
                 Expires = DateTime.Now.AddYears(1),
                 SameSite = SameSiteMode.Lax
             });
-            Response.Cookies.Append("PostAccessToken", email.MDString3(AppConfig.BaiduAK), new CookieOptions
+            Response.Cookies.Append("PostAccessToken", email.MDString3(AppConfig.ConnString), new CookieOptions
             {
                 Expires = DateTime.Now.AddYears(1),
                 SameSite = SameSiteMode.Lax

+ 2 - 116
src/Masuit.MyBlogs.Core/Controllers/ToolsController.cs

@@ -1,13 +1,8 @@
 using AngleSharp;
 using DnsClient;
-using Masuit.MyBlogs.Core.Configs;
 using Masuit.Tools.Mime;
 using Masuit.Tools.Core.Validator;
-using MaxMind.GeoIP2.Exceptions;
-using MaxMind.GeoIP2.Responses;
 using Microsoft.Net.Http.Headers;
-using Newtonsoft.Json;
-using Polly;
 using System.Net;
 using TimeZoneConverter;
 using Configuration = AngleSharp.Configuration;
@@ -18,14 +13,9 @@ namespace Masuit.MyBlogs.Core.Controllers;
 /// 黑科技
 /// </summary>
 [Route("tools")]
-public sealed class ToolsController : BaseController
+public sealed class ToolsController(IHttpClientFactory httpClientFactory) : BaseController
 {
-    private readonly HttpClient _httpClient;
-
-    public ToolsController(IHttpClientFactory httpClientFactory)
-    {
-        _httpClient = httpClientFactory.CreateClient();
-    }
+    private readonly HttpClient _httpClient = httpClientFactory.CreateClient();
 
     /// <summary>
     /// 获取ip地址详细信息
@@ -99,110 +89,6 @@ public sealed class ToolsController : BaseController
         });
     }
 
-    /// <summary>
-    /// 根据经纬度获取详细地理信息
-    /// </summary>
-    /// <param name="lat"></param>
-    /// <param name="lng"></param>
-    /// <returns></returns>
-    [HttpGet("pos"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "lat", "lng" })]
-    public async Task<ActionResult> Position(string lat, string lng)
-    {
-        if (string.IsNullOrEmpty(lat) || string.IsNullOrEmpty(lng))
-        {
-            var ip = ClientIP;
-#if DEBUG
-            var r = new Random();
-            ip = IPAddress.Parse($"{r.Next(210)}.{r.Next(255)}.{r.Next(255)}.{r.Next(255)}");
-#endif
-            var location = Policy<CityResponse>.Handle<AddressNotFoundException>().Fallback(() => new CityResponse()).Execute(() => CommonHelper.MaxmindReader.City(ip));
-            var address = new PhysicsAddress()
-            {
-                Status = 0,
-                AddressResult = new AddressResult()
-                {
-                    FormattedAddress = ip.GetIPLocation().Address,
-                    Location = new Location()
-                    {
-                        Lng = (decimal)location.Location.Longitude.GetValueOrDefault(),
-                        Lat = (decimal)location.Location.Latitude.GetValueOrDefault()
-                    }
-                }
-            };
-            return View(address);
-        }
-
-        using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
-        var s = await _httpClient.GetStringAsync($"http://api.map.baidu.com/geocoder/v2/?location={lat},{lng}&output=json&pois=1&ak={AppConfig.BaiduAK}", cts.Token).ContinueWith(t =>
-        {
-            if (t.IsCompletedSuccessfully)
-            {
-                return JsonConvert.DeserializeObject<PhysicsAddress>(t.Result);
-            }
-
-            return new PhysicsAddress();
-        });
-
-        return View(s);
-    }
-
-    /// <summary>
-    /// 详细地理信息转经纬度
-    /// </summary>
-    /// <param name="addr"></param>
-    /// <returns></returns>
-    [Route("addr"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "addr" })]
-    public async Task<ActionResult> Address(string addr)
-    {
-        if (string.IsNullOrEmpty(addr))
-        {
-            var ip = ClientIP;
-#if DEBUG
-            Random r = new Random();
-            ip = IPAddress.Parse($"{r.Next(210)}.{r.Next(255)}.{r.Next(255)}.{r.Next(255)}");
-#endif
-            var location = Policy<CityResponse>.Handle<AddressNotFoundException>().Fallback(() => new CityResponse()).Execute(() => CommonHelper.MaxmindReader.City(ip));
-            var address = new PhysicsAddress()
-            {
-                Status = 0,
-                AddressResult = new AddressResult
-                {
-                    FormattedAddress = ip.GetIPLocation().Address,
-                    Location = new Location
-                    {
-                        Lng = (decimal)location.Location.Longitude.GetValueOrDefault(),
-                        Lat = (decimal)location.Location.Latitude.GetValueOrDefault()
-                    }
-                }
-            };
-            ViewBag.Address = address.AddressResult.FormattedAddress;
-            if (Request.Method.Equals(HttpMethods.Get) || (Request.Headers[HeaderNames.Accept] + "").StartsWith(ContentType.Json))
-            {
-                return View(address.AddressResult.Location);
-            }
-
-            return Json(address.AddressResult.Location);
-        }
-
-        ViewBag.Address = addr;
-        using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
-        var physicsAddress = await _httpClient.GetStringAsync($"http://api.map.baidu.com/geocoder/v2/?output=json&address={addr}&ak={AppConfig.BaiduAK}", cts.Token).ContinueWith(t =>
-        {
-            if (t.IsCompletedSuccessfully)
-            {
-                return JsonConvert.DeserializeObject<PhysicsAddress>(t.Result);
-            }
-
-            return new PhysicsAddress();
-        });
-        if (Request.Method.Equals(HttpMethods.Get) || (Request.Headers[HeaderNames.Accept] + "").StartsWith(ContentType.Json))
-        {
-            return View(physicsAddress?.AddressResult?.Location);
-        }
-
-        return Json(physicsAddress?.AddressResult?.Location);
-    }
-
     [HttpGet("loan")]
     public ActionResult Loan()
     {

+ 2 - 2
src/Masuit.MyBlogs.Core/Extensions/Firewall/FirewallAttribute.cs

@@ -42,7 +42,7 @@ public sealed class FirewallAttribute : IAsyncActionFilter
 
         request.Headers.Values.Contains("");
         var ip = context.HttpContext.Connection.RemoteIpAddress.ToString();
-        var tokenValid = request.Cookies.ContainsKey("FullAccessToken") && request.Cookies["Email"].MDString(AppConfig.BaiduAK).Equals(request.Cookies["FullAccessToken"]);
+        var tokenValid = request.Cookies.ContainsKey("FullAccessToken") && request.Cookies["Email"].MDString(AppConfig.ConnString).Equals(request.Cookies["FullAccessToken"]);
 
         //攻击重定向
         if (!string.IsNullOrWhiteSpace(CommonHelper.SystemSettings["AttackRedirects"]) && await FirewallService.ReportedAsync(ip))
@@ -142,7 +142,7 @@ public sealed class FirewallAttribute : IAsyncActionFilter
 
         try
         {
-            if (request.Cookies.TryGetValue(SessionKey.ChallengeBypass, out var time) && time.AESDecrypt(AppConfig.BaiduAK).ToDateTime() > DateTime.Now)
+            if (request.Cookies.TryGetValue(SessionKey.ChallengeBypass, out var time) && time.AESDecrypt(AppConfig.ConnString).ToDateTime() > DateTime.Now)
             {
                 context.HttpContext.Session.Set("js-challenge", 1);
                 await next();

+ 57 - 57
src/Masuit.MyBlogs.Core/Extensions/MyAuthorizeAttribute.cs

@@ -10,64 +10,64 @@ namespace Masuit.MyBlogs.Core.Extensions;
 /// </summary>
 public sealed class MyAuthorizeAttribute : ActionFilterAttribute
 {
-	/// <summary>在执行操作方法之前由 ASP.NET MVC 框架调用。</summary>
-	/// <param name="filterContext">筛选器上下文。</param>
-	public override void OnActionExecuting(ActionExecutingContext filterContext)
-	{
-		if (filterContext.ActionDescriptor.EndpointMetadata.OfType<AllowAnonymousAttribute>().Any())
-		{
-			return;
-		}
+    /// <summary>在执行操作方法之前由 ASP.NET MVC 框架调用。</summary>
+    /// <param name="filterContext">筛选器上下文。</param>
+    public override void OnActionExecuting(ActionExecutingContext filterContext)
+    {
+        if (filterContext.ActionDescriptor.EndpointMetadata.OfType<AllowAnonymousAttribute>().Any())
+        {
+            return;
+        }
 #if !DEBUG
-		var user = filterContext.HttpContext.Session.Get<UserInfoDto>(SessionKey.UserInfo);
-		if (user?.IsAdmin == true)
-		{
-			return;
-		}
+        var user = filterContext.HttpContext.Session.Get<UserInfoDto>(SessionKey.UserInfo);
+        if (user?.IsAdmin == true)
+        {
+            return;
+        }
 
-		//先尝试自动登录
-		if (filterContext.HttpContext.Request.Cookies.Any(x => x.Key == "username" || x.Key == "password"))
-		{
-			string name = filterContext.HttpContext.Request.Cookies["username"] ?? "";
-			string pwd = filterContext.HttpContext.Request.Cookies["password"]?.DesDecrypt(AppConfig.BaiduAK) ?? "";
-			var userInfo = filterContext.HttpContext.RequestServices.GetRequiredService<IUserInfoService>().Login(name, pwd);
-			if (userInfo != null)
-			{
-				filterContext.HttpContext.Response.Cookies.Append("username", name, new CookieOptions()
-				{
-					Expires = DateTime.Now.AddYears(1),
-					SameSite = SameSiteMode.Lax
-				});
-				filterContext.HttpContext.Response.Cookies.Append("password", filterContext.HttpContext.Request.Cookies["password"], new CookieOptions()
-				{
-					Expires = DateTime.Now.AddYears(1),
-					SameSite = SameSiteMode.Lax
-				});
-				filterContext.HttpContext.Session.Set(SessionKey.UserInfo, userInfo);
-			}
-			else
-			{
-				if (filterContext.HttpContext.Request.Method.Equals(HttpMethods.Get))
-				{
-					filterContext.Result = new RedirectResult("/passport/login?from=" + HttpUtility.UrlEncode(filterContext.HttpContext.Request.Path.ToString())?.Replace("#", "%23"));
-				}
-				else
-				{
-					filterContext.Result = new UnauthorizedObjectResult(new { StatusCode = 401, Success = false, IsLogin = false, Message = "未登录系统,请先登录!" });
-				}
-			}
-		}
-		else
-		{
-			if (filterContext.HttpContext.Request.Method.Equals(HttpMethods.Get))
-			{
-				filterContext.Result = new RedirectResult("/passport/login?from=" + HttpUtility.UrlEncode(filterContext.HttpContext.Request.Path.ToString()));
-			}
-			else
-			{
-				filterContext.Result = new UnauthorizedObjectResult(new { StatusCode = 401, Success = false, IsLogin = false, Message = "未登录系统,请先登录!" });
-			}
-		}
+        //先尝试自动登录
+        if (filterContext.HttpContext.Request.Cookies.Any(x => x.Key == "username" || x.Key == "password"))
+        {
+            string name = filterContext.HttpContext.Request.Cookies["username"] ?? "";
+            string pwd = filterContext.HttpContext.Request.Cookies["password"]?.DesDecrypt(AppConfig.ConnString) ?? "";
+            var userInfo = filterContext.HttpContext.RequestServices.GetRequiredService<IUserInfoService>().Login(name, pwd);
+            if (userInfo != null)
+            {
+                filterContext.HttpContext.Response.Cookies.Append("username", name, new CookieOptions()
+                {
+                    Expires = DateTime.Now.AddYears(1),
+                    SameSite = SameSiteMode.Lax
+                });
+                filterContext.HttpContext.Response.Cookies.Append("password", filterContext.HttpContext.Request.Cookies["password"], new CookieOptions()
+                {
+                    Expires = DateTime.Now.AddYears(1),
+                    SameSite = SameSiteMode.Lax
+                });
+                filterContext.HttpContext.Session.Set(SessionKey.UserInfo, userInfo);
+            }
+            else
+            {
+                if (filterContext.HttpContext.Request.Method.Equals(HttpMethods.Get))
+                {
+                    filterContext.Result = new RedirectResult("/passport/login?from=" + HttpUtility.UrlEncode(filterContext.HttpContext.Request.Path.ToString())?.Replace("#", "%23"));
+                }
+                else
+                {
+                    filterContext.Result = new UnauthorizedObjectResult(new { StatusCode = 401, Success = false, IsLogin = false, Message = "未登录系统,请先登录!" });
+                }
+            }
+        }
+        else
+        {
+            if (filterContext.HttpContext.Request.Method.Equals(HttpMethods.Get))
+            {
+                filterContext.Result = new RedirectResult("/passport/login?from=" + HttpUtility.UrlEncode(filterContext.HttpContext.Request.Path.ToString()));
+            }
+            else
+            {
+                filterContext.Result = new UnauthorizedObjectResult(new { StatusCode = 401, Success = false, IsLogin = false, Message = "未登录系统,请先登录!" });
+            }
+        }
 #endif
-	}
+    }
 }

+ 1 - 2
src/Masuit.MyBlogs.Core/Models/ViewModel/IpInfo.cs

@@ -1,5 +1,4 @@
-using MaxMind.GeoIP2.Model;
-using Location = MaxMind.GeoIP2.Model.Location;
+using Location = MaxMind.GeoIP2.Model.Location;
 
 namespace Masuit.MyBlogs.Core.Models.ViewModel;
 

+ 0 - 114
src/Masuit.MyBlogs.Core/Models/ViewModel/PhysicsAddress.cs

@@ -1,114 +0,0 @@
-using Newtonsoft.Json;
-
-namespace Masuit.Tools.Models;
-
-/// <summary>
-/// 详细地理信息
-/// </summary>
-public class PhysicsAddress
-{
-	/// <summary>
-	/// 返回状态,0正常,1出错
-	/// </summary>
-	[JsonProperty("status")]
-	public int Status { get; set; }
-
-	/// <summary>
-	/// 返回结果集
-	/// </summary>
-	[JsonProperty("result")]
-	public AddressResult AddressResult { get; set; } = new AddressResult();
-}
-/// <summary>
-/// 返回结果集
-/// </summary>
-public class AddressResult
-{
-	/// <summary>
-	/// 经纬度
-	/// </summary>
-	[JsonProperty("location")]
-	public Location Location { get; set; }
-
-	/// <summary>
-	/// 详细地址
-	/// </summary>
-	[JsonProperty("formatted_address")]
-	public string FormattedAddress { get; set; }
-
-	/// <summary>
-	/// 商业地址
-	/// </summary>
-	[JsonProperty("business")]
-	public string Business { get; set; }
-
-	/// <summary>
-	/// 参考地址
-	/// </summary>
-	[JsonProperty("pois")]
-	public List<Pois> Pois { get; set; } = new List<Pois>();
-
-	/// <summary>
-	/// 语义描述
-	/// </summary>
-	[JsonProperty("sematic_description")]
-	public string SematicDescription { get; set; }
-}
-/// <summary>
-/// 参考位置
-/// </summary>
-public class Pois
-{
-	/// <summary>
-	/// 地理位置详细
-	/// </summary>
-	[JsonProperty("addr")]
-	public string AddressDetail { get; set; }
-
-	/// <summary>
-	/// 方位
-	/// </summary>
-	[JsonProperty("direction")]
-	public string Direction { get; set; }
-
-	/// <summary>
-	/// 距离
-	/// </summary>
-	[JsonProperty("distance")]
-	public string Distance { get; set; } = "0";
-
-	/// <summary>
-	/// 建筑物名字
-	/// </summary>
-	[JsonProperty("name")]
-	public string Name { get; set; }
-
-	/// <summary>
-	/// 建筑物类型
-	/// </summary>
-	[JsonProperty("poiType")]
-	public string PoiType { get; set; }
-
-	/// <summary>
-	/// 标签
-	/// </summary>
-	[JsonProperty("tag")]
-	public string Tag { get; set; }
-}
-/// <summary>
-/// 经纬度
-/// </summary>
-public class Location
-{
-	/// <summary>
-	/// 经度
-	/// </summary>
-	[JsonProperty("lng")]
-	public decimal Lng { get; set; }
-
-	/// <summary>
-	/// 纬度
-	/// </summary>
-	[JsonProperty("lat")]
-	public decimal Lat { get; set; }
-}

+ 0 - 1
src/Masuit.MyBlogs.Core/Startup.cs

@@ -52,7 +52,6 @@ public class Startup
         {
             Configuration = configuration;
             AppConfig.ConnString = configuration["Database:" + nameof(AppConfig.ConnString)];
-            AppConfig.BaiduAK = configuration[nameof(AppConfig.BaiduAK)];
             AppConfig.Redis = configuration[nameof(AppConfig.Redis)];
             AppConfig.TrueClientIPHeader = configuration[nameof(AppConfig.TrueClientIPHeader)] ?? "CF-Connecting-IP";
             AppConfig.EnableIPDirect = bool.Parse(configuration[nameof(AppConfig.EnableIPDirect)] ?? "false");

+ 1 - 1
src/Masuit.MyBlogs.Core/Views/Post/ProtectContent.cshtml

@@ -10,7 +10,7 @@
 @if (!string.IsNullOrEmpty(Model.ProtectContent)&&Model.ProtectContentMode==ProtectContentMode.AuthorizeVisiable)
 {
     <div class="row protected-content" id="@SnowFlake.NewId">
-        @if (!string.IsNullOrEmpty(Context.Session.Get<string>("AccessViewToken")) || Context.Request.Cookies["Email"].MDString3(AppConfig.BaiduAK).Equals(Context.Request.Cookies["PostAccessToken"]))
+        @if (!string.IsNullOrEmpty(Context.Session.Get<string>("AccessViewToken")) || Context.Request.Cookies["Email"].MDString3(AppConfig.ConnString).Equals(Context.Request.Cookies["PostAccessToken"]))
         {
             <p class="text-red text-center size20">↓↓↓以下是文章加密部分↓↓↓</p>
             @Html.Raw(await Model.ProtectContent.ReplaceImgAttribute(Model.Title))

+ 0 - 62
src/Masuit.MyBlogs.Core/Views/Tools/Address.cshtml

@@ -1,62 +0,0 @@
-@using Masuit.Tools.Models
-@model Location
-@{
-    ViewBag.Title = "根据详细地理位置信息获取经纬度";
-    Layout = "~/Views/Shared/_Layout.cshtml";
-}
-<style>
-    #allmap {
-        height: 900px;
-        width: 100%;
-    }
-</style>
-<div class="container">
-    <ol class="cd-breadcrumb triangle">
-        <li><a asp-controller="Home" asp-action="Index">首页</a></li>
-        <li class="current">
-            <em>@ViewBag.Title</em>
-        </li>
-    </ol>
-    <ul class="list-group">
-        <li class="list-group-item">
-            <p class="size24">
-                如果你觉得这个工具有用,请 <a asp-controller="Misc" asp-action="Donate">点击这里</a> 支持一下博主!
-            </p>
-        </li>
-    </ul>
-    <form method="get" asp-action="Address">
-        <div class="input-group">
-            <input class="form-control" name="addr" value="@ViewBag.Address" placeholder="请输入有效地理位置" />
-            <span class="input-group-btn">
-                <button class="btn btn-info" type="submit">查询</button>
-            </span>
-        </div>
-    </form>
-    @if (Model != null)
-    {
-        <table class="table table-bordered table-condensed table-hover">
-            <tr>
-                <td>经纬度:</td>
-                <td>(经度:@(Model.Lng),纬度:@(Model.Lat))</td>
-            </tr>
-        </table>
-    }
-</div>
-<div class="container-fluid">
-    @if (Model != null)
-    {
-        <div id="allmap"></div>
-        <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=89772e94509a9b903724e247cbc175c2"></script>
-        <script>
-        var map = new BMap.Map("allmap"); // 创建Map实例,设置地图允许的最小/大级别
-
-        map.centerAndZoom(new BMap.Point(@(Model.Lng), @(Model.Lat)), 15);
-        map.enableScrollWheelZoom(true);
-        var new_point = new BMap.Point(@(Model.Lng), @(Model.Lat));
-        var marker = new BMap.Marker(new_point); // 创建标注
-        map.addOverlay(marker); // 将标注添加到地图中
-        marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
-        map.panTo(new_point);
-        </script>
-    }
-</div>

+ 0 - 24
src/Masuit.MyBlogs.Core/Views/Tools/GetIPInfo.cshtml

@@ -78,28 +78,4 @@
             <td>@Model.Domain</td>
         </tr>
     </table>
-</div>
-<div class="container-fluid">
-    @if (Model.Location != null)
-    {
-        <div id="allmap"></div>
-        <script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=2.0&ak=89772e94509a9b903724e247cbc175c2"></script>
-        <script>
-            var map = new BMapGL.Map("allmap"); // 创建Map实例,设置地图允许的最小/大级别
-
-            map.centerAndZoom(new BMapGL.Point(@(Model.Location.Longitude), @(Model.Location.Latitude)), [email protected]().ToString().Length);
-            map.enableScrollWheelZoom(true);
-            var new_point = new BMapGL.Point(@(Model.Location.Longitude), @(Model.Location.Latitude));
-            var marker = new BMapGL.Marker(new_point); // 创建标注
-            var circle = new BMapGL.Circle(new_point, @Model.Location.AccuracyRadius.GetValueOrDefault()* 100, {
-                strokeColor: 'blue',
-                strokeWeight: 2,
-                strokeOpacity: 0.1
-            });
-            map.addOverlay(marker); // 将标注添加到地图中
-            map.addOverlay(circle); // 将标注添加到地图中
-            marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
-            map.panTo(new_point);
-        </script>
-    }
 </div>

+ 1 - 3
src/Masuit.MyBlogs.Core/Views/Tools/Loan.cshtml

@@ -1,6 +1,4 @@
-@using Masuit.Tools.Models
-@using Masuit.MyBlogs.Core.Views.Tools
-@model Location
+@using Masuit.MyBlogs.Core.Views.Tools
 @{
     ViewBag.Title = "房贷多次提前还款试算模型计算器";
     Layout = "~/Views/Shared/_Layout.cshtml";

+ 0 - 149
src/Masuit.MyBlogs.Core/Views/Tools/Position.cshtml

@@ -1,149 +0,0 @@
-@using Masuit.Tools.Models
-@model PhysicsAddress
-
-@{
-    ViewBag.Title = "根据经纬度查询详细地理位置";
-    Layout = "~/Views/Shared/_Layout.cshtml";
-}
-<style>
-    #allmap {
-        height: 900px;
-        width: 100%;
-    }
-</style>
-<div class="container">
-    <ol class="cd-breadcrumb triangle">
-        <li><a asp-controller="Home" asp-action="Index">首页</a></li>
-        <li class="current">
-            <em>@ViewBag.Title</em>
-        </li>
-    </ol>
-    <ul class="list-group">
-        <li class="list-group-item">
-            <p class="size24">
-                如果你觉得这个工具有用,请 <a asp-controller="Misc" asp-action="Donate">点击这里</a> 支持一下博主!
-            </p>
-        </li>
-    </ul>
-    @if (Model?.Status == 0)
-    {
-        <form method="get" asp-action="Position">
-            <div class="row">
-                <div class="col-md-5">
-                    <div class="input-group">
-                        <span class="input-group-addon">经度:</span>
-                        <input class="form-control" name="lng" value="@(Model.AddressResult.Location?.Lng)" placeholder="请输入经度值" />
-                    </div>
-                </div>
-                <div class="col-md-6">
-                    <div class="input-group">
-                        <span class="input-group-addon">纬度:</span>
-                        <input class="form-control" name="lat" value="@(Model.AddressResult.Location?.Lat)" placeholder="请输入纬度值" />
-                    </div>
-                </div>
-                <div class="col-md-1">
-                    <div class="input-group">
-                        <button class="btn btn-info" type="submit">查询</button>
-                    </div>
-                </div>
-            </div>
-        </form>
-        int count = 0;
-        <table class="table table-bordered table-condensed table-hover">
-            <tr>
-                <td>参考地理位置:</td>
-                <td>@Model.AddressResult.FormattedAddress</td>
-            </tr>
-            <tr>
-                <td>标志性商业街:</td>
-                <td>@Model.AddressResult.Business</td>
-            </tr>
-            <tr>
-                <td>经纬度:</td>
-                <td>(经度:@(Model.AddressResult.Location?.Lng),纬度:@(Model.AddressResult.Location?.Lat))</td>
-            </tr>
-            @foreach (Pois poi in Model.AddressResult.Pois)
-            {
-                <tr>
-                    <td>参考地理位置@(++count):</td>
-                    <td>@poi.AddressDetail</td>
-                </tr>
-            }
-        </table>
-
-    }
-    else
-    {
-        <form method="get">
-            <div class="row">
-                <div class="col-md-5">
-                    <div class="input-group">
-                        <span class="input-group-addon">经度:</span>
-                        <input class="form-control" name="lng" placeholder="请输入经度值" />
-                    </div>
-                </div>
-                <div class="col-md-6">
-                    <div class="input-group">
-                        <span class="input-group-addon">纬度:</span>
-                        <input class="form-control" name="lat" placeholder="请输入纬度值" />
-                    </div>
-                </div>
-                <div class="col-md-1">
-                    <div class="input-group">
-                        <button class="btn btn-info" type="submit">查询</button>
-                    </div>
-                </div>
-            </div>
-        </form>
-    }
-</div>
-<div class="container-fluid">
-@if (Model is {Status: 0})
-{
-    <div id="allmap"></div>
-    <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=89772e94509a9b903724e247cbc175c2"></script>
-    <script>
-        function getPosition() {
-            return new Promise((resolve, reject) => {
-                if (navigator.geolocation) {
-                    navigator.geolocation.getCurrentPosition(function (position) {
-                        let latitude = position.coords.latitude;
-                        let longitude = position.coords.longitude;
-                        let data = {
-                            latitude: latitude,
-                            longitude: longitude
-                        };
-                        resolve(data);
-                    }, function () {
-                        reject(arguments);
-                    },{
-                        enableHighAccuracy: true,// 精确查找,默认false
-                    });
-                } else {
-                    reject('你的浏览器不支持当前地理位置信息获取');
-                }
-            });
-        }
-        
-        var map = new BMap.Map("allmap"); // 创建Map实例,设置地图允许的最小/大级别
-        var lng=@(Model.AddressResult.Location?.Lng);
-        var lat=@(Model.AddressResult.Location?.Lat);
-        getPosition().then(res => {
-            if (!location.search) {
-                $("input[name=lng]").val(res.longitude);
-                $("input[name=lat]").val(res.latitude);
-                $("form").submit();
-            }
-        }).catch(err => {
-            console.log(err);
-        });
-        map.centerAndZoom(new BMap.Point(lng, lat), 15);
-        map.enableScrollWheelZoom(true);
-        var new_point = new BMap.Point(lng, lat);
-        var marker = new BMap.Marker(new_point); // 创建标注
-        map.addOverlay(marker); // 将标注添加到地图中
-        marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
-        map.panTo(new_point);
-    </script>
-}
-</div>

+ 2 - 3
src/Masuit.MyBlogs.Core/appsettings.json

@@ -16,10 +16,9 @@
         "ConnString": "Host=127.1;Username=postgres;Password=1;Database=myblogs" // 数据库连接字符串
     },
     "Redis": "127.0.0.1:6379,allowadmin=true,connectTimeout=20000,connectRetry=1,responseTimeout=20000,syncTimeout=10000", // Redis连接字符串
-    "EmailDomainWhiteList": "masuit.com,ldqk.org,[a-zA-z]{5,32}@qq.com,\\d{6,12}@qq.com,[a-zA-Z0-9]{6,16}@vip.qq.com,\\w{5,32}@163.com,\\w{5,32}@gmail.com,\\w{5,36}@outlook.com", // 邮箱域名白名单正则表达式,逗号分隔
-    "EmailDomainBlockList": ".*", // 邮箱域名黑名单正则表达式,逗号分隔
+    "EmailDomainWhiteList": [ "masuit.com", "ldqk.org", "[a-zA-z]{5,32}@qq.com", "\\d{6,12}@qq.com", "[a-zA-Z0-9]{6,16}@vip.qq.com", "\\w{5,32}@163.com", "\\w{5,32}@gmail.com", "\\w{5,36}@outlook.com" ], // 邮箱域名白名单正则表达式
+    "EmailDomainBlockList": [ ".*" ], // 邮箱域名黑名单正则表达式
     "UseRewriter": "NonWww", //NonWww:重定向到不带www的域名,WWW:重定向到带www的域名
-    "BaiduAK": "你的BaiduAK", // 百度开放平台AppKey,用于获取IP地址信息的api
     "TrueClientIPHeader": "CF-Connecting-IP", // 若有CDN,取客户端真实IP的请求头,裸奔留空即可
     "EnableIPDirect": false, // 是否允许IP直接访问
     "MailSender": "smtp", // 为空则使用smtp发送