From 5df5f3e5ea87f4beed8059c3147bde785bf1f607 Mon Sep 17 00:00:00 2001 From: Schwirg László Date: Wed, 7 Sep 2022 15:50:14 +0200 Subject: [PATCH] v1.14.0.0 akciók hívása a web serveren első változatának beépítése --- Vrh.Log4Pro.MaintenanceConsole/App.config | 8 ++++++++ Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs | 1 + Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Http.cs | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs | 28 ++++++++++++++++++++++++++++ Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs | 4 ++-- Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj | 17 +++++++++++++---- Vrh.Log4Pro.MaintenanceConsole/Vrh.NugetModuls.Documentations/Vrh.XmlProcessing/ReadMe.md | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Vrh.Log4Pro.MaintenanceConsole/packages.config | 6 ++++-- 8 files changed, 210 insertions(+), 8 deletions(-) create mode 100644 Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Http.cs diff --git a/Vrh.Log4Pro.MaintenanceConsole/App.config b/Vrh.Log4Pro.MaintenanceConsole/App.config index 27e3e18..39e12d9 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/App.config +++ b/Vrh.Log4Pro.MaintenanceConsole/App.config @@ -24,6 +24,14 @@ + + + + + + + + diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs index 8cb44ea..2c9119d 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - CommandLineParser.cs @@ -218,6 +218,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS public static class SiteStop { public const string KEY = "WSF"; } public static class PoolSetUserAccount { public const string KEY = "APU"; } public static class Restart { public const string KEY = "R"; } + public static class SendUrl { public const string KEY = "URL"; } } } public static class WindowsServiceManager diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Http.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Http.cs new file mode 100644 index 0000000..fc2c7b5 --- /dev/null +++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Http.cs @@ -0,0 +1,82 @@ +using System; +using System.IO; +using System.IO.Compression; +using System.Collections.Generic; +using System.Linq; +using System.Security.Principal; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Threading; + +using Microsoft.Web.Administration; +using System.Management; +using System.Diagnostics; + +using Vrh.XmlProcessing; +using System.Xml.Linq; +using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; +using VRH.Common; +using Microsoft.Win32; +using System.Reflection; +using Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + + +namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS +{ + public static class HttpTools + { + public enum RequestType { GET,POST,} + public static ReturnInfoJSON GetReturninfoJSON(string url, RequestType mode = RequestType.GET) + { + string returninfojsonstring = ""; + try + { + return mode == RequestType.GET? _GetReturninfoJSON(url,out returninfojsonstring) : _PostReturninfoJSON(url, out returninfojsonstring); + } + catch (Exception ex) { return new ReturnInfoJSON() { ReturnValue = -1, ReturnMessage = ex.Message + "\n" + returninfojsonstring, }; } + } + + private static ReturnInfoJSON _GetReturninfoJSON(string url, out string returninfojsonstring) + { + var returninfojsonstream = Task.Run(async () => await (new HttpClient()).GetStreamAsync(url)).GetAwaiter().GetResult(); + returninfojsonstring = GetStreamAsString(returninfojsonstream); + ReturnInfoJSON returninfojson = JsonSerializer.Deserialize(returninfojsonstring); + //ReturnInfoJSON returninfojson = Task.Run(async () => await JsonSerializer.DeserializeAsync(returninfojsonstream)).GetAwaiter().GetResult(); + return returninfojson; + } + private static ReturnInfoJSON _PostReturninfoJSON(string url, out string returninfojsonstring) + { + var returninfojsonhttpresponsemessage = Task.Run(async () => await (new HttpClient()).PostAsync(url, null)).GetAwaiter().GetResult(); + var returninfojsonstream = Task.Run(async () => await returninfojsonhttpresponsemessage.Content.ReadAsStreamAsync()).GetAwaiter().GetResult(); + returninfojsonstring = GetStreamAsString(returninfojsonstream); + ReturnInfoJSON returninfojson = JsonSerializer.Deserialize(returninfojsonstring); + //var returninfojson = Task.Run(async () => await JsonSerializer.DeserializeAsync(returninfojsonstream)).GetAwaiter().GetResult(); + return returninfojson; + } + private static string GetStreamAsString(Stream stream) + { + + StreamReader reader = new StreamReader(stream); + return reader.ReadToEnd(); + + byte[] bytes = new byte[stream.Length]; + stream.Position = 0; + stream.Read(bytes, 0, (int)stream.Length); + return Encoding.ASCII.GetString(bytes); // this is your string + } + public class ReturnInfoJSON + { + [JsonPropertyName("ReturnValue")] + public int ReturnValue { get; set; } + + [JsonPropertyName("ReturnMessage")] + public string ReturnMessage { get; set; } + } + } +} \ No newline at end of file diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs index af6ae62..de1034c 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - WebApplicationManager.cs @@ -53,6 +53,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS .AddMenuItem(new Menu.Item(CLP.Module.WebApplicationManager.Function.SiteStop.KEY, "Stop website",SiteStop, ep)) .AddMenuItem(new Menu.Item(CLP.Module.WebApplicationManager.Function.PoolSetUserAccount.KEY, "Set pool user account",PoolSetUserAccount, ep)) .AddMenuItem(new Menu.Item(CLP.Module.WebApplicationManager.Function.Restart.KEY, "Restart website and pool",Restart, ep)) + .AddMenuItem(new Menu.Item(CLP.Module.WebApplicationManager.Function.SendUrl.KEY, "Send url and display ReturnInfoJSON result", SendUrl, ep)) .SetSelectionMode(Menu.SelectionMode.Single) .SetMenuHeaderDisplayer(WebApplicationListDisplayer); @@ -82,6 +83,33 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS #endregion private DisplayWebApplicationMenu #region 1st level Executors + private static object SendUrl(object parameters, object o) + { + var config = (parameters as Menu.ExecutorParameter).GetConfig(); + var args = (parameters as Menu.ExecutorParameter).Args; + var selectedwaindexes = CommandLine.GetCommandLineArgument(args, CLP.Module.WebApplicationManager.Function.CMD_WEBAPPS); + + const string TESTURL = "http://localhost/Log4ProIS/Import/Log/PurgeGet?numofdays=120&xml=config=ALM_Import;"; + + ColorConsole.WriteLine("Enter url to send:", ConsoleColor.Yellow); + ColorConsole.WriteLine("Sample (Enter 'Sample' to use this):", ConsoleColor.Gray, suffix: TESTURL); + string url = ColorConsole.ReadLine(); + if (url.ToLower() == "ex") return o; + if (url.ToLower() == "sample") url = TESTURL; + ColorConsole.WriteLine("Enter request type (GET/POST):", ConsoleColor.Yellow); + string gpstr = ColorConsole.ReadLine(); + HttpTools.RequestType gp = HttpTools.RequestType.GET; + if (gpstr.ToLower() == "ex") return o; + else if (gpstr.ToUpper() == nameof(HttpTools.RequestType.GET)) { gp = HttpTools.RequestType.GET; } + else if (gpstr.ToUpper() == nameof(HttpTools.RequestType.POST)) { gp = HttpTools.RequestType.POST; } + + ToolsNS.HttpTools.ReturnInfoJSON returninfojson = HttpTools.GetReturninfoJSON(url,gp); + ColorConsole.WriteLine("ReturnValue:",ConsoleColor.Yellow,suffix: returninfojson.ReturnValue.ToString()); + ColorConsole.WriteLine("ReturnMessage:", ConsoleColor.Yellow, suffix: returninfojson.ReturnMessage); + ColorConsole.WriteLine(); + + return o; + } private static object Restart(object parameters, object o) { var config = (parameters as Menu.ExecutorParameter).GetConfig(); diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs index c1b14f6..0119260 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.13.0.0")] -[assembly: AssemblyFileVersion("1.13.0.0")] +[assembly: AssemblyVersion("1.14.0.0")] +[assembly: AssemblyFileVersion("1.14.0.0")] diff --git a/Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj b/Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj index a09af9f..f724301 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj +++ b/Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj @@ -250,6 +250,7 @@ True + ..\packages\System.Net.Http.4.1.0\lib\net46\System.Net.Http.dll @@ -275,6 +276,9 @@ True True + + ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + ..\packages\System.Runtime.Extensions.4.1.0\lib\net462\System.Runtime.Extensions.dll True @@ -322,11 +326,15 @@ ..\packages\System.ServiceProcess.ServiceController.4.1.0\lib\net461\System.ServiceProcess.ServiceController.dll + ..\packages\System.Text.RegularExpressions.4.1.0\lib\net463\System.Text.RegularExpressions.dll True True + + ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll + @@ -339,18 +347,19 @@ - - ..\packages\VRH.Common.2.21.3\lib\net45\VRH.Common.dll + + ..\packages\VRH.Common.2.23.1\lib\net45\VRH.Common.dll ..\packages\VRH.Web.Providers.2.0.2\lib\net452\Vrh.Web.Providers.dll - - ..\packages\Vrh.XmlProcessing.1.27.1\lib\net45\Vrh.XmlProcessing.dll + + ..\packages\Vrh.XmlProcessing.1.30.0\lib\net45\Vrh.XmlProcessing.dll + diff --git a/Vrh.Log4Pro.MaintenanceConsole/Vrh.NugetModuls.Documentations/Vrh.XmlProcessing/ReadMe.md b/Vrh.Log4Pro.MaintenanceConsole/Vrh.NugetModuls.Documentations/Vrh.XmlProcessing/ReadMe.md index 3a89a6f..61c2979 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Vrh.NugetModuls.Documentations/Vrh.XmlProcessing/ReadMe.md +++ b/Vrh.Log4Pro.MaintenanceConsole/Vrh.NugetModuls.Documentations/Vrh.XmlProcessing/ReadMe.md @@ -773,6 +773,78 @@ Ha hibaérzékenység nem, de például logolás szükséges, akkor ezt a Config *** ## Version History: +### 1.29.0 (2021.08.29) Compatible changes +- ResponseTargets enum áthelyezése a Vrh.Web.Menu projektből ide. + +### 1.28.1 Patch (2021.07.02), nuget + +### 1.28.0 Compatible change (2021.07.01), nuget +- SetThrowException és SetEnable FileWatcher metódudsok publikussá tétele, hogy azokkal a konstruktorokkal +is lehessen használni ezeket a funkciókat, amelyekben nincs ilyen paraméter + +### 1.27.1 Patch (2021.05.02), nuget +- LinqXMLProcessorBaseCommonOrInstance: ha az instance xml nem létezett, akkor exception-t dobott; javítva lett, hogy ilyenkor a common xml-t használja + +### 1.27.0 Compatible change (2021.04.27) +- xml connection stringben a changesensitive,generatexmlerrorevent és throwexception elemek bevezetése +- ezeket csak a LinqXMLProcessorBase alapú feldolgozás használja a korábban is meglévő, azonos nevű paraméterekkel szabályozott funkcióiban +- mindegyik alapértelmezése false +- switch típusú elemek, tehát nem kell név=érték formát ölteniük, elég csak a nevet szerepeltetni, amely egyenértékű a név=true; formával +- továbbra is megmaradt, hogy ezeket az értékeket az appsettings blokkban is meg lehet adni, az ott megadott érték és a connection string-ben megadott értékek vagy kapcsolatban vannak +- az XmlParser root file Configuration xml elemében bevezetésre került a Switches attributum, amelyben a fenti értékeket pontosvesszővel elválasztva meg lehet adni. +- ha egy érték az xml connectionstring-ben is szerepel, meg az általa hivatkozott konfigurációs elemben is, akkor a connectionstring-ben megadott érték lesz érvényben + +### 1.26.1 Patch (2021.02.03) +- UrlElement/IsRelative property setter public-ra állítva + +### 1.26.0 Compatible change (2021.01.27) +- Bevezetésre került az url leíróban az IsRelativ field és a UrlRoot field, valamint a GetUrlAbsolute metódus csoport. +Az IsRelativ true, ha az xml elemek egy relatív url-t eredményeznek; A GetUrlAbsolut metódusokban meg lehet adni egy urlroot +string paramétert, amely a rooturl-t tartalmazza és hozzáfűzésre kerl a relatív url elé. Ha az url abszolut, akkor nem +fűzi hozzá; Ha a rooturl paraméter üres, akkor a UrlRoot mező tartalmát fűzi a relatív url elé. + +### 1.25.1 Patch (2021.01.27) + +### 1.25.0 Compatible change (2021.01.27) +- Bevezetésre került az url leíróban az url xml elem. Ha ez megadásra kerül, akkor a GetUrl metódusok a protocol, +hostname,appname,area,controller és action xml elemeket nem használják, bár az UrlElement típusba az ott megadott +értékek is bekerülnek. Az url xml elem tartalmazhat input paraméter elemeket is, de ebben azt esetben az url xml +elem értékét az (és/ampersand) karakterrel kell zárni, ami jelzi, hogy a megadott inputparameter xml elemek +kiegészítő paramétereket tartalmaznak; ha az url xml elem értékét nem az (és/ampersand) karakter zárja, +akkor a megadott inputparameter xml elemek a ?(kérdőjel) karakterrel felvezetve kerülnek az url elemhez hozzáfűzésre! + +### 1.24.0 Compatible change (2021.01.05, nuget): +- Több Configurations elem is lehet az XmlParser root file-ban, ezek tartalmát összefűzi egy listába a feldolgozás előtt + +### 1.23.0 Compatible change (2020.12.08, nuget): +- A LinqXMLProcessorBase-hez a nyelvkód megadását biztosító konstruktorok hozzáadása + +### 1.22.0 Compatible change (2020.12.08, nuget): +- A GetValue függvény most már képes enum értékek közvetlen visszaadására + +### 1.21.0 Compatible change (2020.11.30, nuget): +- @THISFILE@ rendszerváltozó hozzáadása, amelyet az xmlparser az aktuális file teljes elérési útjára cserél le + +### 1.20.0 Compatible change (2020.11.25, nuget): +- Az xml parser element connection string nem csak egy xml elem felsorolást, hanem egy szabályos XPath kifejezést tartalmazhat. +- Az eddigi xml elem felsorolás a leggyakrabban alkalmazott / szeparátor karakterrel egy xpath kifejezés is egyben, így a kompatibilitás ezekkel megmarad. +- A fejlesztés feleslegessé teszi az xmlparser connectionstring-ben az id elemet, hisz a funkció xpath kifejezéssel leírható, ennek ellenére az id is megmaradt, +és használható. Példa: "file=x.xml;element=A/B/C;id=id1;" helyettesíthető ezzel: "file=x.xml;element=A/B/C[@id='id1'];" + +### 1.19.1 Patch: +- hiba javítása, ami miatt a /-lel kezdődő element-ek esetén hibás működést eredményezett + +### 1.19.0 Compatible changes: +- a kapcsolatleírók Merge-elésében levő logikai hiba kijavítása +- a Configuration elemben nem lehet Id és Preset attributum +- ha a connectionstring-ben a config és az element együtt szerepelnek, akkor az element-ben megadott XPath a config definícióban levő element-hez képest relatív +- ha egy XmlConnection-t mergelek egy second connection string-gel, akkor a second-ban levő element első karakterétől függően lecseréli az XmlConnection-ben levő +element értéket (első karakter = "/" esetén), vagy hozzáfűzi ahhoz; a fentiek alapján a configban megadott file és element értékek által meghatározott xml elemből +a connectionstring-ben megadott kiegészítő adatokkal nem lehet kijönni! + +### 1.18.5 Patch: +- csomagok frissítése + ### 1.18.4 (2020.10.26) Patch: - Az XmlConnection példányt nem írhatjuk felül büntetlenül, hiszen bizonyos alkalmazások meg pont arra számítanak, hogy ott az általuk ismert érték marad benne. Az XmlParser.Configuration protected tulajdonság pont arra való, hogy az XmlParser származtatott osztályaiban a feloldott értékeket el lehessen érni. diff --git a/Vrh.Log4Pro.MaintenanceConsole/packages.config b/Vrh.Log4Pro.MaintenanceConsole/packages.config index 9cada53..1248d45 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/packages.config +++ b/Vrh.Log4Pro.MaintenanceConsole/packages.config @@ -51,6 +51,7 @@ + @@ -68,10 +69,11 @@ + - + - + \ No newline at end of file -- libgit2 0.21.2