Преглед изворни кода

防火墙日志统计记录

Li пре 2 година
родитељ
комит
cbe33c3583

+ 54 - 1
TEAMModelBI/Controllers/BIHome/AnalyseFileController.cs

@@ -9,13 +9,17 @@ using System.IO;
 using System.Linq;
 using System.Text;
 using System.Text.Json;
+using System.Text.RegularExpressions;
 using System.Threading.Tasks;
+using TEAMModelBI.Tool;
+using TEAMModelBI.Tool.CosmosBank;
 using TEAMModelOS.SDK.Context.BI;
+using TEAMModelOS.SDK.Context.Constant;
 using TEAMModelOS.SDK.DI;
 using TEAMModelOS.SDK.Extension;
 using TEAMModelOS.SDK.Models.Cosmos.BI;
 
-namespace TEAMModelBI.Controllers.BIHome
+namespace TEAMModelBI.Controllers.BIBlob
 {
     [Route("analyse")]
     [ApiController]
@@ -30,6 +34,55 @@ namespace TEAMModelBI.Controllers.BIHome
             _azureStorage = azureStorage;
         }
 
+
+        /// <summary>
+        /// 查询一天的分析防火墙分析
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("get-dayapi")]
+        public async Task<IActionResult> GetDayApi(JsonElement jsonElement)
+        {
+            jsonElement.TryGetProperty("dateTime", out JsonElement dateTime);
+            jsonElement.TryGetProperty("site", out JsonElement site);
+
+            DateTimeOffset dtOff = DateTimeOffset.UtcNow;
+
+            var blobCilent = _azureStorage.GetBlobContainerClient(containerName: "0-public");
+            if ($"{site}".Equals(BIConst.Global))
+                blobCilent = _azureStorage.GetBlobContainerClient(containerName: "0-public", BIConst.Global);
+
+            if (!string.IsNullOrEmpty($"{dateTime}"))
+                dtOff = TimeHelper.GetDateTime(dateTime.GetInt64());
+
+            string day = dtOff.ToString("yyyyMMdd");
+            Dictionary<string, RecCnt> days = new();
+
+            await foreach (BlobItem blobItem in blobCilent.GetBlobsAsync(BlobTraits.None, BlobStates.None, $"visitCnt/{day}"))
+            {
+                BlobClient tempClient = blobCilent.GetBlobClient(blobItem.Name);
+                if (await tempClient.ExistsAsync())
+                {
+                    using (var meomoryStream = new MemoryStream())
+                    {
+                        var response = blobCilent.GetBlobClient($"{blobItem.Name}").DownloadTo(meomoryStream);
+                        //var response = await blob.GetBlobClient($"{blobItem.Name}").DownloadToAsync(meomoryStream);
+                        //var temps = meomoryStream.ToString();
+                        //var temp1 = Encoding.UTF8.GetString(meomoryStream.ToArray());
+                        //var temp = Encoding.UTF8.GetString(meomoryStream.ToArray()).ToObject<RecCnt>();
+
+                        RecCnt recCnt = Encoding.UTF8.GetString(meomoryStream.ToArray()).ToString().ToObject<RecCnt>();
+
+                        string name = stringSuffix.MidStrEx(blobItem.Name, "/", ".");
+                        days.Add(name, recCnt);
+                    }
+                }
+            }
+
+            return Ok(new { state = RespondCode.Ok, days = days.ToList() });
+        }
+
         /// <summary>
         /// 本地Json
         /// </summary>

+ 26 - 0
TEAMModelBI/Tool/CosmosBank/stringSuffix.cs

@@ -29,6 +29,32 @@ namespace TEAMModelBI.Tool.CosmosBank
             return rg.Match(source).Value;
         }
 
+        /// <summary>
+        /// 获得字符串中开始和结束字符串中间得值
+        /// </summary>
+        /// <param name="sourse">字符串</param>
+        /// <param name="startstr">开始字符</param>
+        /// <param name="endstr">结束字符</param>
+        /// <returns></returns>
+        public static string MidStrEx(string sourse, string startstr, string endstr)
+        {
+            string result = string.Empty;
+            int startindex, endindex;
+            try
+            {
+                startindex = sourse.LastIndexOf(startstr);
+                if (startindex == -1)
+                    return result;
+                string tmpstr = sourse.Substring(startindex + startstr.Length);
+                endindex = tmpstr.IndexOf(endstr);
+                if (endindex == -1)
+                    return result;
+                result = tmpstr.Remove(endindex);
+            }
+            catch { }
+            return result;
+        }
+
         /// <summary>
         /// 获取文件后缀名,如.PDF
         /// </summary>