From eef2315fd86723c9f4d1865e8a3ce617f22b025e Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sun, 18 Sep 2022 17:50:58 +0530 Subject: [PATCH] WebServiceLogsApi: added DownloadLogAsync() implementation. --- DnsServerCore/WebServiceLogsApi.cs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/DnsServerCore/WebServiceLogsApi.cs b/DnsServerCore/WebServiceLogsApi.cs index a5b67fd4..dbbc33b3 100644 --- a/DnsServerCore/WebServiceLogsApi.cs +++ b/DnsServerCore/WebServiceLogsApi.cs @@ -1,6 +1,6 @@ /* Technitium DNS Server -Copyright (C) 2021 Shreyas Zare (shreyas@technitium.com) +Copyright (C) 2022 Shreyas Zare (shreyas@technitium.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -76,6 +76,22 @@ namespace DnsServerCore jsonWriter.WriteEndArray(); } + public Task DownloadLogAsync(HttpListenerRequest request, HttpListenerResponse response) + { + string strFileName = request.QueryString["fileName"]; + if (string.IsNullOrEmpty(strFileName)) + throw new DnsWebServiceException("Parameter 'fileName' missing."); + + int limit; + string strLimit = request.QueryString["limit"]; + if (string.IsNullOrEmpty(strLimit)) + limit = 0; + else + limit = int.Parse(strLimit); + + return _dnsWebService.Log.DownloadLogAsync(request, response, strFileName, limit * 1024 * 1024); + } + public void DeleteLog(HttpListenerRequest request) { string log = request.QueryString["log"]; @@ -84,21 +100,21 @@ namespace DnsServerCore _dnsWebService.Log.DeleteLog(log); - _dnsWebService.Log.Write(DnsWebService.GetRequestRemoteEndPoint(request), "[" + _dnsWebService.GetSession(request).Username + "] Log file was deleted: " + log); + _dnsWebService.Log.Write(DnsWebService.GetRequestRemoteEndPoint(request), "[" + _dnsWebService.GetSession(request).User.Username + "] Log file was deleted: " + log); } public void DeleteAllLogs(HttpListenerRequest request) { _dnsWebService.Log.DeleteAllLogs(); - _dnsWebService.Log.Write(DnsWebService.GetRequestRemoteEndPoint(request), "[" + _dnsWebService.GetSession(request).Username + "] All log files were deleted."); + _dnsWebService.Log.Write(DnsWebService.GetRequestRemoteEndPoint(request), "[" + _dnsWebService.GetSession(request).User.Username + "] All log files were deleted."); } public void DeleteAllStats(HttpListenerRequest request) { _dnsWebService.DnsServer.StatsManager.DeleteAllStats(); - _dnsWebService.Log.Write(DnsWebService.GetRequestRemoteEndPoint(request), "[" + _dnsWebService.GetSession(request).Username + "] All stats files were deleted."); + _dnsWebService.Log.Write(DnsWebService.GetRequestRemoteEndPoint(request), "[" + _dnsWebService.GetSession(request).User.Username + "] All stats files were deleted."); } public async Task QueryLogsAsync(HttpListenerRequest request, JsonTextWriter jsonWriter)