Browse Source

add Admin password

HOME 1 year ago
parent
commit
f8b6e97c6a

+ 28 - 4
FNZCM/FNZCM.ConHost/Ver2/Program2.cs

@@ -59,7 +59,12 @@ namespace FNZCM.ConHost.Ver2
 
         private static void ScanLibrary()
         {
-            if (_isLoading) return;
+            if (_isLoading)
+            {
+                Console.WriteLine("Still scanning, SKIP");
+                return;
+            }
+
             _isLoading = true;
             try
             {
@@ -240,11 +245,31 @@ namespace FNZCM.ConHost.Ver2
                 var requestPath = request.Url.LocalPath.ToLower();
                 var pathParts = (IReadOnlyList<string>)requestPath.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
 
-                if (requestPath == "/scan/")
+                if (requestPath == "/admin/" && false == request.QueryString.AllKeys.Contains("action"))
+                {
+                    var sb = new StringBuilder();
+                    sb.Append("<!DOCTYPE html><html lang=\"zh-cn\"><meta charset=\"UTF-8\">");
+                    sb.Append($"<title> Libraries - {ConfigFile.Instance.Title} </title>");
+                    sb.Append("<body bgColor=skyBlue>");
+                    sb.Append($"<h3>Admin</h3>");
+                    sb.Append("<div><a href=/>Back to home</a></div>");
+                    sb.Append($"<form method=GET>");
+                    sb.Append($"Password: <input type=password name=pass />");
+                    sb.Append($"<br/>");
+                    sb.Append($"Operation: <input type=submit name=action value=Scan />");
+                    sb.Append($"</form>");
+
+                    context.Response.WriteText(sb.ToString());
+                }
+                else if (requestPath == "/admin/" && request.QueryString["action"] == "Scan" && request.QueryString["pass"] == ConfigFile.Instance.AdminPassword)
                 {
                     Task.Run(ScanLibrary);
                     context.Response.Redirect("/");
                 }
+                else if (requestPath == "/admin/")
+                {
+                    context.Response.Redirect("/");
+                }
                 else if (requestPath == "/")
                 {
                     var sb = new StringBuilder();
@@ -266,12 +291,11 @@ namespace FNZCM.ConHost.Ver2
                         sb.Append($"<br/>&nbsp;&nbsp;&nbsp; Number of disc: {library.Value.Discs.Count}");
                         sb.Append("</li>");
                     }
-
                     sb.Append("</ul>");
 
-                    sb.Append("<a href=/scan/>Reload</a>");
                     sb.Append($"<hr/>");
                     sb.Append($"<div>Your IP: {context?.Request?.RemoteEndPoint?.Address.ToString() ?? "Unknown"}</div>");
+                    sb.Append($"<div><a href=/admin/>Admin</a></div>");
                     sb.Append($"<div>-</div>");
                     sb.Append($"<div>Author: Coder (V)</div>");
                     sb.Append($"<div>Blog: <a target=_blank href=https://topcl.net/myapps/private-colud-music.html>https://topcl.net/myapps/private-colud-music.html</a></div>");

+ 5 - 2
FNZCM/FNZCM.Core/ConfigFile.cs

@@ -1,12 +1,13 @@
-using System;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.IO;
-using Newtonsoft.Json;
 
 namespace FNZCM.Core
 {
     public interface IConfigFile
     {
+        string AdminPassword { get; }
         IReadOnlyDictionary<string, string> Libraries { get; }
         string[] MediaFilePattern { get; }
         string[] BkFilePattern { get; }
@@ -20,6 +21,8 @@ namespace FNZCM.Core
 
         public static void Reload() => Instance = JsonConvert.DeserializeObject<ConfigFile>(File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json")));
 
+        public string AdminPassword { get; set; }
+
         public string ListenPrefix { get; set; }
 
         public string Title { get; set; }

+ 2 - 1
FNZCM/FNZCM.Core/config.json

@@ -1,8 +1,9 @@
 {
   "ListenPrefix": "http://+:38964/",
   "Title": "FNZ Cloud Music",
+  "AdminPassword": "",
   "Libraries": {
-    "Featured": "X:/音乐库/A_Featured"
+    "D_LossyOther": "X:/音乐库/D_LossyOther"
   },
   "MediaFilePattern": [
     "*.flac",