Commit 62445795987c19f083f95f46eec0adafe79ef5a3
1 parent
26858817
FTPManager előkészítése
Showing
7 changed files
with
648 additions
and
102 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
| ... | ... | @@ -304,6 +304,115 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 304 | 304 | } |
| 305 | 305 | } |
| 306 | 306 | |
| 307 | + class ComputerInfo | |
| 308 | + { | |
| 309 | + public string PageHeader; | |
| 310 | + public string ComputerName; | |
| 311 | + public string DNSHostName; | |
| 312 | + public string UserName; | |
| 313 | + public string DomainUserName; | |
| 314 | + public List<System.Net.IPAddress> IpAddressList; | |
| 315 | + public string ProcessorArchitecture; | |
| 316 | + public string OSType; | |
| 317 | + public string NumOfPhysicalProcessors; | |
| 318 | + public string NumOfLogicalProcessors; | |
| 319 | + public string NumOfCores; | |
| 320 | + public string OSPlatform; | |
| 321 | + public string OSServicePack; | |
| 322 | + public string OSVersionString; | |
| 323 | + public List<string> OSFriendlyNames; | |
| 324 | + public static void DisplayThis() { new ComputerInfo().Display(); } | |
| 325 | + public ComputerInfo() | |
| 326 | + { | |
| 327 | + var ci = this; | |
| 328 | + const string XMLCONNECTIONSTRING = "config=MAINTENANCECONSOLE;"; | |
| 329 | + //const string XMLCONNECTIONSTRING_DEFAULT = "file=Config.Xml;"; | |
| 330 | + var config = new MaintenanceConsoleXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU"); | |
| 331 | + | |
| 332 | + ci.PageHeader = config.Xml_Header; | |
| 333 | + ci.ComputerName = System.Environment.MachineName; | |
| 334 | + ci.DNSHostName = System.Net.Dns.GetHostName(); | |
| 335 | + ci.UserName = Environment.UserName; | |
| 336 | + ci.DomainUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; | |
| 337 | + ci.IpAddressList = System.Net.Dns.GetHostEntry(ci.DNSHostName).AddressList.Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToList(); | |
| 338 | + ci.ProcessorArchitecture = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); | |
| 339 | + ci.OSType = Tools.GetOSType(); | |
| 340 | + foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) | |
| 341 | + { | |
| 342 | + ci.NumOfPhysicalProcessors = item["NumberOfProcessors"].ToString(); | |
| 343 | + ci.NumOfLogicalProcessors = item["NumberOfLogicalProcessors"].ToString(); | |
| 344 | + break; | |
| 345 | + } | |
| 346 | + | |
| 347 | + var numofcores = 0; | |
| 348 | + foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get()) { numofcores += int.Parse(item["NumberOfCores"].ToString()); } | |
| 349 | + ci.NumOfCores = numofcores.ToString(); | |
| 350 | + ci.OSPlatform = System.Environment.OSVersion.Platform.ToString(); | |
| 351 | + ci.OSServicePack = System.Environment.OSVersion.ServicePack; | |
| 352 | + ci.OSVersionString = System.Environment.OSVersion.VersionString; | |
| 353 | + | |
| 354 | + string fn; | |
| 355 | + ci.OSFriendlyNames = new List<string>(); | |
| 356 | + fn = Tools.GetOSFriendlyNameA(); if (!string.IsNullOrWhiteSpace(fn) && !ci.OSFriendlyNames.Contains(fn)) ci.OSFriendlyNames.Add(fn); | |
| 357 | + fn = Tools.GetOSFriendlyNameB(); if (!string.IsNullOrWhiteSpace(fn) && !ci.OSFriendlyNames.Contains(fn)) ci.OSFriendlyNames.Add(fn); | |
| 358 | + fn = Tools.GetOSFriendlyNameC(); if (!string.IsNullOrWhiteSpace(fn) && !ci.OSFriendlyNames.Contains(fn)) ci.OSFriendlyNames.Add(fn); | |
| 359 | + } | |
| 360 | + public void Display() | |
| 361 | + { | |
| 362 | + const string XMLCONNECTIONSTRING = "config=MAINTENANCECONSOLE;"; | |
| 363 | + //const string XMLCONNECTIONSTRING_DEFAULT = "file=Config.Xml;"; | |
| 364 | + var config = new MaintenanceConsoleXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU"); | |
| 365 | + | |
| 366 | + ColorConsole.WriteLine(PageHeader, ConsoleColor.Yellow, bracket: "[]"); | |
| 367 | + | |
| 368 | + //computername | |
| 369 | + ColorConsole.WriteLine(""); | |
| 370 | + ColorConsole.Write("Computer name: "); | |
| 371 | + ColorConsole.Write(ComputerName, ConsoleColor.Yellow, bracket: "[]", prefix: "", suffix: ","); | |
| 372 | + ColorConsole.Write(DNSHostName, ConsoleColor.Yellow, bracket: "[]", prefix: "DNS hostname:"); | |
| 373 | + ColorConsole.WriteLine(""); | |
| 374 | + | |
| 375 | + //username | |
| 376 | + ColorConsole.Write("Username:"); | |
| 377 | + ColorConsole.Write(UserName, ConsoleColor.Yellow, bracket: "[]", prefix: "RunAs:", suffix: ","); | |
| 378 | + ColorConsole.Write(DomainUserName, ConsoleColor.Yellow, bracket: "[]", prefix: "LoggedIn:"); | |
| 379 | + ColorConsole.WriteLine(""); | |
| 380 | + | |
| 381 | + //ip address | |
| 382 | + ColorConsole.Write("IP addresses: "); | |
| 383 | + if (IpAddressList.Any()) { foreach (var ip in IpAddressList) { ColorConsole.Write(ip.ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: $"{ip.AddressFamily}:", suffix: ","); } } | |
| 384 | + else { ColorConsole.Write("N/A", ConsoleColor.Yellow, bracket: "[]"); } | |
| 385 | + | |
| 386 | + ColorConsole.WriteLine(""); | |
| 387 | + | |
| 388 | + // processor architecture | |
| 389 | + ColorConsole.Write("Processors: "); | |
| 390 | + ColorConsole.Write(System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), ConsoleColor.Yellow, bracket: "[]", prefix: "Architecture: "); | |
| 391 | + ColorConsole.Write(OSType ?? "N/A", ConsoleColor.Yellow, bracket: "[]", suffix: ", "); | |
| 392 | + ColorConsole.Write(NumOfPhysicalProcessors, ConsoleColor.Yellow, bracket: "[]", prefix: "Physical:", suffix: ", "); | |
| 393 | + ColorConsole.Write(NumOfLogicalProcessors, ConsoleColor.Yellow, bracket: "[]", prefix: "Logical:", suffix: ", "); | |
| 394 | + ColorConsole.Write(NumOfCores, ConsoleColor.Yellow, bracket: "[]", prefix: "Cores:"); | |
| 395 | + ColorConsole.WriteLine(""); | |
| 396 | + | |
| 397 | + | |
| 398 | + // os version | |
| 399 | + ColorConsole.Write("Operating system: "); | |
| 400 | + ColorConsole.Write(OSPlatform.ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Platform:", suffix: ","); | |
| 401 | + ColorConsole.Write(OSServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); | |
| 402 | + ColorConsole.Write(OSVersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); | |
| 403 | + ColorConsole.WriteLine(""); | |
| 404 | + | |
| 405 | + ColorConsole.Write("", ConsoleColor.Yellow, prefix: "OS Friendly name versions:"); | |
| 406 | + if (OSFriendlyNames.Any()) { foreach (var fn in OSFriendlyNames) { ColorConsole.Write(fn, ConsoleColor.Yellow, bracket: "[]"); } } | |
| 407 | + else { ColorConsole.Write("N/A", ConsoleColor.Yellow, bracket: "[]"); } | |
| 408 | + | |
| 409 | + ColorConsole.WriteLine(""); | |
| 410 | + ColorConsole.WriteLine(""); | |
| 411 | + ColorConsole.WriteLine(""); | |
| 412 | + } | |
| 413 | + } | |
| 414 | + | |
| 415 | + | |
| 307 | 416 | #region StringExtension class |
| 308 | 417 | public static class StringExtension |
| 309 | 418 | { | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - FTPManager.cs
0 → 100644
| ... | ... | @@ -0,0 +1,357 @@ |
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using System.Linq; | |
| 4 | +using System.Text; | |
| 5 | +using System.Threading.Tasks; | |
| 6 | +using System.Net; | |
| 7 | +using System.Text.RegularExpressions; | |
| 8 | +using System.IO; | |
| 9 | + | |
| 10 | +namespace Vrh.Log4Pro.MaintenanceConsole | |
| 11 | +{ | |
| 12 | + static class FTPManagerCore | |
| 13 | + { | |
| 14 | + public class FTPFileList | |
| 15 | + { | |
| 16 | + #region constructor | |
| 17 | + /// <summary> | |
| 18 | + /// Létrehoz egy FTP kapcsolódáshoz szükséges obektumot | |
| 19 | + /// </summary> | |
| 20 | + /// <param name="servername">az ftp server neve</param> | |
| 21 | + /// <param name="username">a felhasználó neve</param> | |
| 22 | + /// <param name="password">a felhasználó jelszava</param> | |
| 23 | + public FTPFileList(string servername, string username, string password) | |
| 24 | + { | |
| 25 | + this.servername = servername; | |
| 26 | + this.username = username; | |
| 27 | + this.password = password; | |
| 28 | + } | |
| 29 | + #endregion constructor | |
| 30 | + | |
| 31 | + #region fields | |
| 32 | + public string servername; | |
| 33 | + public string ftprootdirectory; | |
| 34 | + public string localrootdirectory; | |
| 35 | + public string username; | |
| 36 | + private string password; | |
| 37 | + private string directorydisplaymask; | |
| 38 | + private string filedisplaymask; | |
| 39 | + public List<FTPDirectoryItemData> ftpfilelist; | |
| 40 | + public List<FTPDirectoryItemData> localfilelist; | |
| 41 | + #endregion fields | |
| 42 | + | |
| 43 | + #region SetRootDirectories | |
| 44 | + /// <summary> | |
| 45 | + /// Beállítja az ftp szerveren a root könyvtárat, valamint a lokális szerveren a root könyvtárat; | |
| 46 | + /// a könyvtárútvonalakat a lokális gépen és az ftp szerveren is ezekhez képest kell megadni | |
| 47 | + /// </summary> | |
| 48 | + /// <param name="ftprootdirectory"></param> | |
| 49 | + /// <param name="localrootdirectory"></param> | |
| 50 | + public void SetRootDirectories(string ftprootdirectory=null,string localrootdirectory=null) | |
| 51 | + { | |
| 52 | + this.ftprootdirectory = ftprootdirectory ?? ""; | |
| 53 | + this.localrootdirectory = localrootdirectory ?? ""; | |
| 54 | + } | |
| 55 | + #endregion SetRootDirectories | |
| 56 | + | |
| 57 | + #region BuildForUpload | |
| 58 | + /// <summary> | |
| 59 | + /// Elkészíti a megadott paraméterek alapján a feltöltéshez szükséges file listát (a lokális gépen levő file-ok listája) | |
| 60 | + /// </summary> | |
| 61 | + /// <param name="directorypath">a lokális könyvtár útvonal, aminek a tartalmát kell a listába betölteni | |
| 62 | + /// (a megadott lokális root könyvtárhoz képest van megadva a path)</param> | |
| 63 | + /// <param name="recurse">alkönyvtárakba is bemegy</param> | |
| 64 | + /// <param name="filterregex">regex a file-ok szűrésére</param> | |
| 65 | + /// <param name="filterregexappliedtopath">true=a regex-et a teljes elérési útra kell alkalmazni, false=csak a file nevére</param> | |
| 66 | + /// <param name="filterregextoexclude">true=a regex-nek megfelelő file-okat nem kell betenni,false=be kell tenni</param> | |
| 67 | + public void BuildForUpload(string directorypath, bool recurse, string filterregex = "", bool filterregexappliedtopath = false, bool filterregextoexclude = false) | |
| 68 | + { | |
| 69 | + localfilelist = LocalFileListFactory(this.localrootdirectory,directorypath, recurse, filterregex, filterregexappliedtopath, filterregextoexclude); | |
| 70 | + } | |
| 71 | + #endregion BuildForUpload | |
| 72 | + | |
| 73 | + #region BuildForDownload | |
| 74 | + /// <summary> | |
| 75 | + /// Elkészíti a file listát a letöltéshez (az ftp szerveren található file-ok listája) | |
| 76 | + /// </summary> | |
| 77 | + /// <param name="directorypath">ennek a könyvtárnak a tartalmát kell listázni | |
| 78 | + /// (a megadott ftp root könyvtárhoz képest van megadva a path)</param> | |
| 79 | + /// <param name="recurse">alkönyvtárakba is be kell menni</param> | |
| 80 | + /// <param name="filterregex">regex a file-ok szűrésére</param> | |
| 81 | + /// <param name="filterregexappliedtopath">true=a regex-et a teljes elérési útra kell alkalmazni, false=csak a file nevére</param> | |
| 82 | + /// <param name="filterregextoexclude">true=a regex-nek megfelelő file-okat nem kell betenni,false=be kell tenni</param> | |
| 83 | + public void BuildForDownload(string directorypath, bool recurse, string filterregex = "", bool filterregexappliedtopath = false, bool filterregextoexclude = false) | |
| 84 | + { | |
| 85 | + ftpfilelist = FTPFileListFactory(servername, this.ftprootdirectory,directorypath, username, password , recurse, filterregex, filterregexappliedtopath, filterregextoexclude); | |
| 86 | + } | |
| 87 | + #endregion BuildForDownload | |
| 88 | + | |
| 89 | + #region Download | |
| 90 | + /// <summary> | |
| 91 | + /// Az ftp file lista letöltése az ftp szerverrőől a lokális gépre. | |
| 92 | + /// A megadott könyvtárba kerül be az ftp file lista az ftp root könyvtár alatti könyvtár struktúra megörzésével. | |
| 93 | + /// </summary> | |
| 94 | + /// <param name="localdirectory">ebbe a könyvtárba kell letölteni (a lokális root könyvtárhoz képest megadott útvonal)</param> | |
| 95 | + public void Download(string localdirectory) | |
| 96 | + { | |
| 97 | + foreach (var f in this.ftpfilelist) | |
| 98 | + { | |
| 99 | + var targetdirectory = Path.Combine(this.localrootdirectory, localdirectory, f.directory); | |
| 100 | + var sourcedirectory = Path.Combine(f.rootdirectory, f.directory); | |
| 101 | + FTPManagerCore.FTPTools.FileDownload(targetdirectory, f.name, this.servername, sourcedirectory, f.name, this.username, this.password); | |
| 102 | + } | |
| 103 | + } | |
| 104 | + #endregion Download | |
| 105 | + | |
| 106 | + #region Upload | |
| 107 | + /// <summary> | |
| 108 | + /// A lokális file lista feltöltése az ftp szerverre a lokális gépről. | |
| 109 | + /// A megadott könyvtárba kerül be az lokális file lista a lokális root könyvtár alatti könyvtár struktúra megörzésével. | |
| 110 | + /// </summary> | |
| 111 | + /// <param name="ftpdirectory">ebbe a könyvtárba kell feltölteni (az ftproot könyvtárhoz képest megadott útvonal)</param> | |
| 112 | + public void Upload(string ftpdirectory) | |
| 113 | + { | |
| 114 | + foreach (var f in this.localfilelist) | |
| 115 | + { | |
| 116 | + var targetdirectory = Path.Combine(this.ftprootdirectory, ftpdirectory, f.directory); | |
| 117 | + var sourcedirectory = Path.Combine(f.rootdirectory, f.directory); | |
| 118 | + FTPManagerCore.FTPTools.FileUpload(f.directory, f.name, this.servername, targetdirectory, f.name, this.username, this.password); | |
| 119 | + } | |
| 120 | + } | |
| 121 | + #endregion Upload | |
| 122 | + | |
| 123 | + #region other public methods | |
| 124 | + public void DisplayFTP() | |
| 125 | + { | |
| 126 | + if (this.ftpfilelist == null) { return; } | |
| 127 | + foreach (var did in this.ftpfilelist) | |
| 128 | + { | |
| 129 | + Console.WriteLine(did.ToString(this.directorydisplaymask, this.filedisplaymask)); | |
| 130 | + } | |
| 131 | + } | |
| 132 | + public void DisplayLocal() | |
| 133 | + { | |
| 134 | + if (this.localfilelist == null) { return; } | |
| 135 | + foreach (var did in this.localfilelist) | |
| 136 | + { | |
| 137 | + Console.WriteLine(did.ToString(this.directorydisplaymask, this.filedisplaymask)); | |
| 138 | + } | |
| 139 | + } | |
| 140 | + #endregion other public methods | |
| 141 | + | |
| 142 | + #region private methods | |
| 143 | + private static List<FTPDirectoryItemData> FTPFileListFactory(string servername,string rootdirectory, string directorypath, string username, string password | |
| 144 | + , bool recurse, string filterregex = "", bool filterregexappliedtopath = false, bool filterregexptoexclude = false) | |
| 145 | + { | |
| 146 | + var fulldirectorypath = Path.Combine(rootdirectory, directorypath); | |
| 147 | + var uristr = $"ftp://{servername}/{fulldirectorypath}/"; | |
| 148 | + var uri = new Uri(uristr, UriKind.Absolute); | |
| 149 | + var ftprequest = WebRequest.Create(uri); | |
| 150 | + ftprequest.Credentials = new NetworkCredential(username, password); | |
| 151 | + ftprequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails; | |
| 152 | + string[] dirlisting; | |
| 153 | + try | |
| 154 | + { | |
| 155 | + var ftpresponse = ftprequest.GetResponse(); | |
| 156 | + var ftpresponsestream = ftpresponse.GetResponseStream(); | |
| 157 | + var streamreader = new System.IO.StreamReader(ftpresponsestream); | |
| 158 | + dirlisting = streamreader.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); | |
| 159 | + streamreader.Close(); | |
| 160 | + ftpresponse.Close(); | |
| 161 | + } | |
| 162 | + catch { return null; } | |
| 163 | + | |
| 164 | + var dl = new List<FTPDirectoryItemData>(); | |
| 165 | + var didlist = dirlisting.Select(l => FTPDirectoryItemData.FTPListFactory(l, rootdirectory, directorypath)).Where(id => !id.isdirectory); | |
| 166 | + foreach (var did in didlist) | |
| 167 | + { | |
| 168 | + string includecheckstr = filterregexappliedtopath ? did.fullpath : did.name; | |
| 169 | + if (Regex.Match(includecheckstr, filterregex).Success != filterregexptoexclude) { dl.Add(did); } | |
| 170 | + } | |
| 171 | + if (recurse) | |
| 172 | + { | |
| 173 | + didlist = dirlisting.Select(l => FTPDirectoryItemData.FTPListFactory(l, rootdirectory, directorypath)).Where(id => id.isdirectory); | |
| 174 | + foreach (var did in didlist) | |
| 175 | + { | |
| 176 | + var subdirectorypath = (string.IsNullOrWhiteSpace(directorypath) ? "" : "\\") + did.name; | |
| 177 | + var subdir = FTPFileListFactory(servername, rootdirectory, subdirectorypath, username, password | |
| 178 | + , recurse, filterregex, filterregexappliedtopath, filterregexptoexclude); | |
| 179 | + if (subdir != null) { dl = dl.Concat(subdir).ToList(); } | |
| 180 | + } | |
| 181 | + } | |
| 182 | + return dl; | |
| 183 | + } | |
| 184 | + | |
| 185 | + private static List<FTPDirectoryItemData> LocalFileListFactory(string localrootdirectory, string directorypath, bool recurse | |
| 186 | + , string filterregex = "", bool filterregexappliedtopath = false, bool filterregextoexclude = false) | |
| 187 | + { | |
| 188 | + var dl = new List<FTPDirectoryItemData>(); | |
| 189 | + string fulldirectorypath = Path.Combine(localrootdirectory, directorypath); | |
| 190 | + var fnl = Directory.GetFiles(fulldirectorypath).Where(dn => filterregextoexclude == !Regex.Match(filterregexappliedtopath ? dn : Path.GetFileName(dn), filterregex).Success); | |
| 191 | + fnl = fnl.Select(fp => Path.GetFileName(fp)).ToList(); | |
| 192 | + var dnl = Directory.GetDirectories(fulldirectorypath).ToList(); | |
| 193 | + dnl = dnl.Select(dp => new DirectoryInfo(dp).Name).ToList(); | |
| 194 | + | |
| 195 | + foreach (var fn in fnl) | |
| 196 | + { | |
| 197 | + var did = FTPDirectoryItemData.LocalListFactory(fn, localrootdirectory, directorypath); | |
| 198 | + if (did != null) { dl.Add(did); } | |
| 199 | + } | |
| 200 | + foreach (var dn in dnl) | |
| 201 | + { | |
| 202 | + var didlist = LocalFileListFactory(localrootdirectory, Path.Combine(directorypath, dn), recurse, filterregex, filterregexappliedtopath, filterregextoexclude); | |
| 203 | + if (didlist != null) { dl = dl.Concat(didlist).ToList(); } | |
| 204 | + } | |
| 205 | + return dl; | |
| 206 | + } | |
| 207 | + private void SetDisplayMasks(string directorydisplaymask = null, string filedisplaymask = null) | |
| 208 | + { | |
| 209 | + this.directorydisplaymask = directorydisplaymask; | |
| 210 | + this.filedisplaymask = filedisplaymask; | |
| 211 | + } | |
| 212 | + #endregion private methods | |
| 213 | + } | |
| 214 | + public class FTPDirectoryItemData | |
| 215 | + { | |
| 216 | + public static FTPDirectoryItemData LocalListFactory(string filename, string rootdirectoryname, string directoryname) | |
| 217 | + { | |
| 218 | + if (string.IsNullOrWhiteSpace(filename)) { return null; } | |
| 219 | + var did = new FTPDirectoryItemData(); | |
| 220 | + did.listingline = null; | |
| 221 | + did.rootdirectory = rootdirectoryname; | |
| 222 | + did.directory = directoryname; | |
| 223 | + did.name = filename; | |
| 224 | + did.isdirectory = false; | |
| 225 | + did.date = File.GetCreationTime(did.fullpath); | |
| 226 | + did.size = new System.IO.FileInfo(did.fullpath).Length; | |
| 227 | + return did; | |
| 228 | + } | |
| 229 | + public static FTPDirectoryItemData FTPListFactory(string ftplistingline, string rootdirectory, string directoryname) | |
| 230 | + { | |
| 231 | + if (string.IsNullOrWhiteSpace(ftplistingline)) { return null; } | |
| 232 | + var did = new FTPDirectoryItemData(); | |
| 233 | + did.listingline = ftplistingline; | |
| 234 | + var words = ftplistingline.Split(new char[] { ' ', '+', }, StringSplitOptions.RemoveEmptyEntries); | |
| 235 | + did.isdirectory = words[0].StartsWith("d"); | |
| 236 | + did.name = string.Join(" ", words.Where((x, ix) => ix >= 8)); | |
| 237 | + if (string.IsNullOrWhiteSpace(did.name)) { return null; } | |
| 238 | + did.rootdirectory = rootdirectory; | |
| 239 | + did.directory = directoryname; | |
| 240 | + if (!long.TryParse(words[4], out did.size)) { did.size = 0; } | |
| 241 | + if (!DateTime.TryParse($"{words[5]}.{words[6]}.{words[7]}", out did.date)) { did.date = DateTime.MinValue; }; | |
| 242 | + return did; | |
| 243 | + } | |
| 244 | + public string ToString(string dirlinemask = null, string filelinemask = null ) | |
| 245 | + { | |
| 246 | + const string defaultlinemask = "{TYPE} {NAME} {ROOTDIRECTORY} {DIRECTORY} {FULLPATH} {SIZE} {DATE} {LISTLINE}"; | |
| 247 | + if (dirlinemask == null) { dirlinemask = defaultlinemask; } | |
| 248 | + if (filelinemask == null) { filelinemask = defaultlinemask; } | |
| 249 | + string linemask = this.isdirectory ? dirlinemask : filelinemask; | |
| 250 | + return linemask | |
| 251 | + .Replace("{NAME}", this.name) | |
| 252 | + .Replace("{TYPE}", this.isdirectory?"DIR":"FILE") | |
| 253 | + .Replace("{ROOTDIRECTORY}", this.rootdirectory) | |
| 254 | + .Replace("{DIRECTORY}", this.directory) | |
| 255 | + .Replace("{FULLPATH}", this.fullpath) | |
| 256 | + .Replace("{SIZE}", this.size.ToString()) | |
| 257 | + .Replace("{DATE}", this.date.ToString("yyyy.MM.dd")) | |
| 258 | + .Replace("{LISTLINE}", this.listingline); | |
| 259 | + } | |
| 260 | + public string listingline; | |
| 261 | + public string name; | |
| 262 | + public string directory; | |
| 263 | + public string rootdirectory; | |
| 264 | + public string fullpath { get {return Path.Combine(this.rootdirectory, this.directory, this.name); } } | |
| 265 | + public long size; | |
| 266 | + public DateTime date; | |
| 267 | + public bool isdirectory; | |
| 268 | + } | |
| 269 | + | |
| 270 | + private static class FTPTools | |
| 271 | + { | |
| 272 | + public static bool FileUpload(string localdirectory, string localfilename, string servername, string directory, string filename, string username, string password) | |
| 273 | + { | |
| 274 | + try | |
| 275 | + { | |
| 276 | + if (!string.IsNullOrWhiteSpace(directory)) { filename = Path.Combine(directory, filename); } | |
| 277 | + if (!string.IsNullOrWhiteSpace(localdirectory)) { localfilename = Path.Combine(localdirectory, localfilename); } | |
| 278 | + | |
| 279 | + var uristr = "ftp://" + username + ":" + password + "@" + servername + "/" + filename; | |
| 280 | + var webclient = new System.Net.WebClient(); | |
| 281 | + var uri = new Uri(uristr); | |
| 282 | + DirectoryCreate(directory, servername, username, password, false); | |
| 283 | + webclient.UploadFile(uri, localfilename); | |
| 284 | + return true; | |
| 285 | + } | |
| 286 | + catch { return false; } | |
| 287 | + } | |
| 288 | + public static bool FileDownload(string localdirectory, string localfilename, string servername, string directory, string filename, string username, string password) | |
| 289 | + { | |
| 290 | + try | |
| 291 | + { | |
| 292 | + if (string.IsNullOrWhiteSpace(directory)) { directory = ""; } | |
| 293 | + if (string.IsNullOrWhiteSpace(localdirectory)) { localdirectory = ""; } | |
| 294 | + filename = Path.Combine(directory, filename); | |
| 295 | + localfilename = Path.Combine(localdirectory, localfilename); | |
| 296 | + var uristr = "ftp://" + username + ":" + password + "@" + servername + "/" + filename; | |
| 297 | + var webclient = new System.Net.WebClient(); | |
| 298 | + var uri = new Uri(uristr); | |
| 299 | + if (!Directory.Exists(localdirectory)) { Directory.CreateDirectory(localdirectory); } | |
| 300 | + webclient.DownloadFile(uri, localfilename); | |
| 301 | + return true; | |
| 302 | + } | |
| 303 | + catch { return false; } | |
| 304 | + } | |
| 305 | + | |
| 306 | + public static string DirectoryCreate(string directoryname, string servername, string username, string password, bool errorifexists = false) | |
| 307 | + { | |
| 308 | + var directoryparts = directoryname.Replace("/", "\\").Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); | |
| 309 | + string dn = ""; | |
| 310 | + for (int ix = 0; ix < directoryparts.Length; ix++) | |
| 311 | + { | |
| 312 | + dn = Path.Combine(dn, directoryparts[ix]); | |
| 313 | + OneDirectoryCreate(dn, servername, username, password, errorifexists = false); | |
| 314 | + } | |
| 315 | + return null; | |
| 316 | + } | |
| 317 | + public static string OneDirectoryCreate(string directoryname, string servername, string username, string password, bool errorifexists = false) | |
| 318 | + { | |
| 319 | + var uristr = $"ftp://{servername}/{directoryname}/"; | |
| 320 | + var uri = new Uri(uristr, UriKind.Absolute); | |
| 321 | + try | |
| 322 | + { | |
| 323 | + WebRequest ftprequest = WebRequest.Create(uri); | |
| 324 | + WebResponse ftpresponse = null; | |
| 325 | + ftprequest.Credentials = new NetworkCredential(username, password); | |
| 326 | + ftprequest.Method = WebRequestMethods.Ftp.MakeDirectory; | |
| 327 | + ftpresponse = ftprequest.GetResponse(); | |
| 328 | + ftpresponse?.Close(); | |
| 329 | + return $"//{servername}/{directoryname}/"; | |
| 330 | + } | |
| 331 | + catch (Exception ex) | |
| 332 | + { | |
| 333 | + if (errorifexists) { return null; } | |
| 334 | + else | |
| 335 | + { | |
| 336 | + try | |
| 337 | + { | |
| 338 | + //if there was an error returned, check if folder already existed on server | |
| 339 | + WebRequest ftprequest = WebRequest.Create(uri); | |
| 340 | + WebResponse ftpresponse = null; | |
| 341 | + ftprequest.Credentials = new NetworkCredential(username, password); | |
| 342 | + ftprequest.Method = WebRequestMethods.Ftp.PrintWorkingDirectory; | |
| 343 | + ftpresponse = ftprequest.GetResponse(); | |
| 344 | + ftpresponse?.Close(); | |
| 345 | + return $"//{servername}/{directoryname}/"; | |
| 346 | + } | |
| 347 | + catch (Exception exx) | |
| 348 | + { | |
| 349 | + //if the folder didn't exist, then it's probably a file perms issue, incorrect credentials, dodgy server name etc | |
| 350 | + return null; | |
| 351 | + } | |
| 352 | + } | |
| 353 | + } | |
| 354 | + } | |
| 355 | + } | |
| 356 | + } | |
| 357 | +} | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs
| ... | ... | @@ -4,6 +4,7 @@ using System.Linq; |
| 4 | 4 | using System.Messaging; |
| 5 | 5 | using System.Text; |
| 6 | 6 | using System.Threading.Tasks; |
| 7 | +using System.Net; | |
| 7 | 8 | |
| 8 | 9 | using Vrh.Log4Pro.MaintenanceConsole.MenuNS; |
| 9 | 10 | using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; |
| ... | ... | @@ -527,9 +528,55 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS |
| 527 | 528 | addressprefix = string.IsNullOrWhiteSpace(addressprefix) ? "" : addressprefix; |
| 528 | 529 | return $"{addressprefix}{msmqservernamepart}{msmqname}"; |
| 529 | 530 | } |
| 531 | + public static bool ParseFullQueuePath(string qn, out string servername, out string formatname, out string queuename, out bool privatequeue, out string addresstype, out string successpattern) | |
| 532 | + { | |
| 533 | + servername = ""; | |
| 534 | + successpattern = ""; | |
| 535 | + formatname = ""; | |
| 536 | + queuename = ""; | |
| 537 | + privatequeue = false; | |
| 538 | + addresstype = null; | |
| 539 | + var patterns = new List<string>(); | |
| 540 | + patterns.Add(@"^FormatName:(?'FORMATNAME'DIRECT=(?'ADDRESSTYPE'TCP|OS)):(?'SERVERNAME'.*?)\\(?'QUEUENAME'(?'PRIVATE'private\$\\).*)$"); | |
| 541 | + patterns.Add(@"^FormatName:(?'FORMATNAME'DIRECT=(?'ADDRESSTYPE'TCP|OS)):(?'SERVERNAME'.*?)\\(?'QUEUENAME'.*)$"); | |
| 542 | + patterns.Add(@"^(?'SERVERNAME'.*?)\\(?'QUEUENAME'(?'PRIVATE'private\$\\).*)$"); | |
| 543 | + patterns.Add(@"^(?'QUEUENAME'(?'PRIVATE'private\$\\).*)$"); | |
| 544 | + patterns.Add(@"^(?'SERVERNAME'.*?)\\(?'QUEUENAME'.*)$"); | |
| 545 | + patterns.Add(@"^(?'QUEUENAME'.*)$"); | |
| 546 | + | |
| 547 | + var pattern = string.Join("|", patterns); | |
| 548 | + foreach (var p in patterns) | |
| 549 | + { | |
| 550 | + var rm = Regex.Match(qn, p); | |
| 551 | + if (rm.Success) | |
| 552 | + { | |
| 553 | + Group rg; | |
| 554 | + rg = rm.Groups["SERVERNAME"]; if (rg.Success) { servername = rg.Value; } | |
| 555 | + rg = rm.Groups["ADDRESSTYPE"]; if (rg.Success) { addresstype = rg.Value; } | |
| 556 | + rg = rm.Groups["QUEUENAME"]; if (rg.Success) { queuename = rg.Value; } | |
| 557 | + rg = rm.Groups["PRIVATE"]; if (rg.Success) { privatequeue = true; } | |
| 558 | + rg = rm.Groups["FORMATNAME"]; if (rg.Success) { formatname = rg.Value; }; | |
| 559 | + successpattern = p; | |
| 560 | + bool isip = IPAddress.TryParse(servername, out IPAddress ip); | |
| 561 | + if (servername == "" || servername == "." || servername.ToLower() == "localhost") { servername = System.Environment.MachineName; } | |
| 562 | + if (formatname == "") | |
| 563 | + { | |
| 564 | + if (isip) { formatname = @"FormatName:DIRECT=TCP"; addresstype = @"TCP"; } | |
| 565 | + else { formatname = @"FormatName:DIRECT=OS"; addresstype = @"OS"; } | |
| 566 | + } | |
| 567 | + if ((isip && addresstype=="OS") || (!isip && addresstype == "TCP")) { return false; } | |
| 568 | + return true; | |
| 569 | + } | |
| 570 | + } | |
| 571 | + return false; | |
| 572 | + } | |
| 530 | 573 | public static bool CheckIfQueueExists(string servername,string queuefullname) |
| 531 | 574 | { |
| 532 | 575 | if (string.IsNullOrWhiteSpace(servername) || servername == "." || servername.ToLower() == "localhost") { servername = System.Environment.MachineName; } |
| 576 | + if (servername == "*") | |
| 577 | + { | |
| 578 | + } | |
| 579 | + | |
| 533 | 580 | var queuearray = System.Messaging.MessageQueue.GetPrivateQueuesByMachine(servername); |
| 534 | 581 | foreach (var q in queuearray) |
| 535 | 582 | { | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
| ... | ... | @@ -37,42 +37,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole |
| 37 | 37 | { |
| 38 | 38 | static void Main(string[] args) |
| 39 | 39 | { |
| 40 | + Tests.T3(); | |
| 41 | + return; | |
| 42 | + | |
| 40 | 43 | var startassystemstr = CommandLine.GetCommandLineArgument(args, CLP.CMD_STARTASSYSTEM); |
| 41 | 44 | var startassystem = startassystemstr!=null && startassystemstr.ToLower() == "yes"; |
| 42 | 45 | |
| 43 | 46 | OtherTools.StartAsAdmin(); |
| 44 | 47 | OtherTools.StartAsSystem(silent:startassystem); |
| 45 | - //while (true) | |
| 46 | - //{ | |
| 47 | - // Console.Clear(); | |
| 48 | - // Console.Write("Enter string:"); var cp1 = Console.ReadLine(); | |
| 49 | - // Console.WriteLine(); | |
| 50 | - // Console.ForegroundColor = ConsoleColor.Red; | |
| 51 | - // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 52 | - // Console.ForegroundColor = ConsoleColor.DarkGreen; | |
| 53 | - // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 54 | - // Console.ForegroundColor = ConsoleColor.Green; | |
| 55 | - // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 56 | - // Console.ForegroundColor = ConsoleColor.DarkYellow; | |
| 57 | - // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 58 | - // Console.ForegroundColor = ConsoleColor.Yellow; | |
| 59 | - // Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 60 | - // Console.ReadKey(); | |
| 61 | - // Console.Clear(); | |
| 62 | - // Console.Write("Enter Code page:"); var cp = Console.ReadLine(); | |
| 63 | - // try | |
| 64 | - // { | |
| 65 | - // Console.OutputEncoding = System.Text.Encoding.GetEncoding(int.Parse(cp)); | |
| 66 | - // for (int i = 0; i < 256; i++) | |
| 67 | - // { | |
| 68 | - // Console.Write((i).ToString().PadLeft(3) + "=> [" + (char)(i) + "] "); | |
| 69 | - // if (i % 6 == 5) { Console.WriteLine(); } | |
| 70 | - // //Console.Write((char)(i*j)); | |
| 71 | - // } | |
| 72 | - // } | |
| 73 | - // catch { Console.WriteLine("Code page is not supported!"); } | |
| 74 | - // Console.ReadKey(); | |
| 75 | - //} | |
| 76 | 48 | |
| 77 | 49 | var forcedmodulekey = CommandLine.GetCommandLineArgument(args, CLP.CMD_MODULE); |
| 78 | 50 | var commandmode = !string.IsNullOrEmpty(forcedmodulekey); |
| ... | ... | @@ -109,81 +81,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole |
| 109 | 81 | .AddMenuItem(new Menu.Item(CLP.Module.InstallManager.KEY, "Install Manager", InstallManager.Execute, new Menu.ExecutorParameter(args: args))) |
| 110 | 82 | .AddMenuItem(new Menu.ItemSeparator('-')) |
| 111 | 83 | .AddMenuItem(new Menu.Item(CLP.Module.MaintenanceToolManager.KEY, "Maintenance tools", MaintenanceToolManager.Execute, new Menu.ExecutorParameter(args: args))) |
| 112 | - .SetMenuHeaderDisplayer(DisplayComputerInfo) | |
| 84 | + .SetMenuHeaderDisplayer(ComputerInfo.DisplayThis) | |
| 113 | 85 | .SetSelectionMode(Menu.SelectionMode.Single); |
| 114 | 86 | |
| 115 | 87 | mm.ExecuteMenu(forcedmodulekey); |
| 116 | 88 | |
| 117 | 89 | ColorConsole.PressAnykeyToContinue(); |
| 118 | 90 | } |
| 119 | - static void DisplayComputerInfo() | |
| 120 | - { | |
| 121 | - const string XMLCONNECTIONSTRING = "config=MAINTENANCECONSOLE;"; | |
| 122 | - //const string XMLCONNECTIONSTRING_DEFAULT = "file=Config.Xml;"; | |
| 123 | - var config = new MaintenanceConsoleXmlProcessor(XMLCONNECTIONSTRING, "", "hu-HU"); | |
| 124 | - | |
| 125 | - ColorConsole.WriteLine(config.Xml_Header,ConsoleColor.Yellow,bracket:"[]"); | |
| 126 | - | |
| 127 | - //computername | |
| 128 | - ColorConsole.WriteLine(""); | |
| 129 | - ColorConsole.Write("Computer name: "); | |
| 130 | - ColorConsole.Write(System.Environment.MachineName, ConsoleColor.Yellow, bracket: "[]",prefix: "", suffix: ","); | |
| 131 | - var hostname = System.Net.Dns.GetHostName(); | |
| 132 | - ColorConsole.Write(hostname, ConsoleColor.Yellow, bracket: "[]", prefix: "DNS hostname:"); | |
| 133 | - ColorConsole.WriteLine(""); | |
| 134 | - | |
| 135 | - //username | |
| 136 | - ColorConsole.Write("Username:"); | |
| 137 | - ColorConsole.Write(Environment.UserName, ConsoleColor.Yellow, bracket: "[]", prefix: "RunAs:", suffix: ","); | |
| 138 | - ColorConsole.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name, ConsoleColor.Yellow, bracket: "[]", prefix: "LoggedIn:"); | |
| 139 | - ColorConsole.WriteLine(""); | |
| 140 | - | |
| 141 | - //ip address | |
| 142 | - ColorConsole.Write("IP addresses: "); | |
| 143 | - var host = System.Net.Dns.GetHostEntry(hostname); | |
| 144 | - foreach (var ip in host.AddressList) | |
| 145 | - { | |
| 146 | - if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) | |
| 147 | - { | |
| 148 | - ColorConsole.Write(ip.ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: $"{ip.AddressFamily}:",suffix: ","); | |
| 149 | - } | |
| 150 | - } | |
| 151 | - ColorConsole.WriteLine(""); | |
| 152 | - | |
| 153 | - // processor architecture | |
| 154 | - ColorConsole.Write("Processors: "); | |
| 155 | - ColorConsole.Write(System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), ConsoleColor.Yellow, bracket: "[]", prefix: "Architecture: "); | |
| 156 | - ColorConsole.Write(Tools.GetOSType() ?? "N/A", ConsoleColor.Yellow, bracket: "[]", suffix: ", "); | |
| 157 | - foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) | |
| 158 | - { | |
| 159 | - ColorConsole.Write(item["NumberOfProcessors"].ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Physical:",suffix:", "); | |
| 160 | - ColorConsole.Write(item["NumberOfLogicalProcessors"].ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Logical:", suffix: ", "); | |
| 161 | - } | |
| 162 | - | |
| 163 | - int coreCount = 0; | |
| 164 | - foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get()) | |
| 165 | - { | |
| 166 | - coreCount += int.Parse(item["NumberOfCores"].ToString()); | |
| 167 | - } | |
| 168 | - ColorConsole.Write(coreCount.ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Cores:"); | |
| 169 | - ColorConsole.WriteLine(""); | |
| 170 | - | |
| 171 | - // os version | |
| 172 | - ColorConsole.Write("Operating system: "); | |
| 173 | - ColorConsole.Write(System.Environment.OSVersion.Platform.ToString(), ConsoleColor.Yellow, bracket: "[]", prefix: "Platform:",suffix: ","); | |
| 174 | - ColorConsole.Write(System.Environment.OSVersion.ServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); | |
| 175 | - ColorConsole.Write(System.Environment.OSVersion.VersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); | |
| 176 | - ColorConsole.WriteLine(""); | |
| 177 | - | |
| 178 | - ColorConsole.Write("", ConsoleColor.Yellow, prefix: "OS Friendly name versions:"); | |
| 179 | - string fnA = Tools.GetOSFriendlyNameA(); if (!string.IsNullOrWhiteSpace(fnA)) ColorConsole.Write(fnA, ConsoleColor.Yellow, bracket: "[]"); | |
| 180 | - string fnB = Tools.GetOSFriendlyNameB(); if (!string.IsNullOrWhiteSpace(fnB) && fnB!=fnA) ColorConsole.Write(fnB, ConsoleColor.Yellow, bracket: "[]"); | |
| 181 | - string fnC = Tools.GetOSFriendlyNameC(); if (!string.IsNullOrWhiteSpace(fnC) && fnC!=fnA && fnC!=fnB) ColorConsole.Write(fnC, ConsoleColor.Yellow, bracket: "[]"); | |
| 182 | - if (string.IsNullOrWhiteSpace(fnA) && string.IsNullOrWhiteSpace(fnB) && string.IsNullOrWhiteSpace(fnC)) ColorConsole.Write("N/A", ConsoleColor.Yellow, bracket: "[]"); | |
| 183 | - ColorConsole.WriteLine(""); | |
| 184 | - ColorConsole.WriteLine(""); | |
| 185 | - ColorConsole.WriteLine(""); | |
| 186 | - } | |
| 187 | 91 | } |
| 188 | 92 | |
| 189 | 93 | #region MaintenanceConsoleXmlProcessor class | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
| ... | ... | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; |
| 32 | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
| 33 | 33 | // by using the '*' as shown below: |
| 34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
| 35 | -[assembly: AssemblyVersion("1.9.2.0")] | |
| 36 | -[assembly: AssemblyFileVersion("1.9.2.0")] | |
| 35 | +[assembly: AssemblyVersion("1.9.3.0")] | |
| 36 | +[assembly: AssemblyFileVersion("1.9.3.0")] | ... | ... |
| ... | ... | @@ -0,0 +1,127 @@ |
| 1 | +using System; | |
| 2 | +using System.Collections.Generic; | |
| 3 | +using System.Linq; | |
| 4 | +using System.Text; | |
| 5 | +using System.Threading.Tasks; | |
| 6 | +using System.Threading; | |
| 7 | + | |
| 8 | +using Microsoft.Web.Administration; | |
| 9 | +using System.Management; | |
| 10 | +using System.Diagnostics; | |
| 11 | + | |
| 12 | +using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; | |
| 13 | +using Vrh.Log4Pro.MaintenanceConsole.MenuNS; | |
| 14 | +using Vrh.Log4Pro.MaintenanceConsole.ToolsNS; | |
| 15 | + | |
| 16 | +using Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS; | |
| 17 | +using Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS; | |
| 18 | +using Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS; | |
| 19 | +using Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS; | |
| 20 | +using Vrh.Log4Pro.MaintenanceConsole.ScheduledTaskManagerNS; | |
| 21 | +using Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS; | |
| 22 | +using Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS; | |
| 23 | +using Vrh.Log4Pro.MaintenanceConsole.MaintenanceToolManagerNS; | |
| 24 | +using Vrh.Log4Pro.MaintenanceConsole.UserManagerNS; | |
| 25 | +using Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS; | |
| 26 | + | |
| 27 | +using Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS; | |
| 28 | + | |
| 29 | +using Vrh.XmlProcessing; | |
| 30 | +using VRH.Common; | |
| 31 | +using System.Xml.Linq; | |
| 32 | +using System.Reflection; | |
| 33 | + | |
| 34 | +namespace Vrh.Log4Pro.MaintenanceConsole | |
| 35 | +{ | |
| 36 | + static class Tests | |
| 37 | + { | |
| 38 | + public static void T3() | |
| 39 | + { | |
| 40 | + FTPManagerCore.FTPFileList dl; | |
| 41 | + dl = new FTPManagerCore.FTPFileList("web.vonalkod.hu", "web.vonalkod.hu", "r9e2fejxHhVh"); | |
| 42 | + dl.SetRootDirectories("LEAR", "c:\\temp"); | |
| 43 | + | |
| 44 | + dl.BuildForDownload("", recurse: true, filterregex: @"ETALON150\\.*\.pdf", filterregexappliedtopath: true, filterregextoexclude: false); | |
| 45 | + dl.DisplayFTP(); | |
| 46 | + dl.Download("TEST"); | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + dl.BuildForUpload("", recurse: true, filterregex: ".pdf", filterregexappliedtopath: false, filterregextoexclude: false); | |
| 51 | + dl.DisplayLocal(); | |
| 52 | + dl.Upload("TEST"); | |
| 53 | + //Console.ReadKey(); | |
| 54 | + | |
| 55 | + Console.ReadKey(); | |
| 56 | + } | |
| 57 | + public static void T2() | |
| 58 | + { | |
| 59 | + var queuenames = new List<string>(); | |
| 60 | + queuenames.Add(@"FormatName:DIRECT=OS:192.168.77.150\private$\LJSKSKIN"); | |
| 61 | + queuenames.Add(@"FormatName:DIRECT=TCP:SERVERNAME\private$\LJSKSKIN"); | |
| 62 | + queuenames.Add(@"FormatName:DIRECT=TCP:192.168.77.150\private$\LJSKSKIN"); | |
| 63 | + queuenames.Add(@"FormatName:DIRECT=OS:SERVERNAME\private$\LJSKSKIN"); | |
| 64 | + queuenames.Add(@"FormatName:DIRECT=OS:SERVERNAME\LJSKSKIN"); | |
| 65 | + queuenames.Add(@"FormatName:DIRECT=TCP:192.168.77.150\LJSKSKIN"); | |
| 66 | + queuenames.Add(@"localhost\private$\LJSKSKIN"); | |
| 67 | + queuenames.Add(@".\private$\LJSKSKIN"); | |
| 68 | + queuenames.Add(@"SERVERNAME\private$\LJSKSKIN"); | |
| 69 | + queuenames.Add(@"localhost\LJSKSKIN"); | |
| 70 | + queuenames.Add(@".\LJSKSKIN"); | |
| 71 | + queuenames.Add(@"SERVERNAME\LJSKSKIN"); | |
| 72 | + queuenames.Add(@"private$\LJSKSKIN"); | |
| 73 | + queuenames.Add(@"LJSKSKIN"); | |
| 74 | + | |
| 75 | + foreach (var qname in queuenames) | |
| 76 | + { | |
| 77 | + var success = MSMQManagerCore.ParseFullQueuePath(qname, out string sn, out string fn, out string qn, out bool pq, out string at, out string p); | |
| 78 | + if (success) | |
| 79 | + { | |
| 80 | + Console.WriteLine($"'{qname}' parsing SUCCESS!"); | |
| 81 | + if (!string.IsNullOrWhiteSpace(sn)) Console.WriteLine($"SERVERNAME:{sn}"); | |
| 82 | + if (!string.IsNullOrWhiteSpace(qn)) Console.WriteLine($"QUEUENAME:{qn}"); | |
| 83 | + if (pq) Console.WriteLine($"PRIVATE"); | |
| 84 | + if (!string.IsNullOrWhiteSpace(at)) Console.WriteLine($"ADDRESSTYPE:{at}"); | |
| 85 | + if (!string.IsNullOrWhiteSpace(fn)) Console.WriteLine($"FORMATNAME:{fn}"); | |
| 86 | + if (!string.IsNullOrWhiteSpace(p)) Console.WriteLine($"SUCCESSPATTERN:{p}"); | |
| 87 | + Console.WriteLine(); | |
| 88 | + } | |
| 89 | + else { Console.WriteLine($"'{qn}' parsing FAILED!"); } | |
| 90 | + } | |
| 91 | + } | |
| 92 | + public static void T1() | |
| 93 | + { | |
| 94 | + while (true) | |
| 95 | + { | |
| 96 | + Console.Clear(); | |
| 97 | + Console.Write("Enter string:"); var cp1 = Console.ReadLine(); | |
| 98 | + Console.WriteLine(); | |
| 99 | + Console.ForegroundColor = ConsoleColor.Red; | |
| 100 | + Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 101 | + Console.ForegroundColor = ConsoleColor.DarkGreen; | |
| 102 | + Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 103 | + Console.ForegroundColor = ConsoleColor.Green; | |
| 104 | + Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 105 | + Console.ForegroundColor = ConsoleColor.DarkYellow; | |
| 106 | + Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 107 | + Console.ForegroundColor = ConsoleColor.Yellow; | |
| 108 | + Console.Write(cp1); foreach (char c in cp1) { Console.Write(c); Console.Write(" => "); var i = (int)c; Console.Write(i); Console.Write(" => "); Console.Write((char)i); Console.WriteLine(); } | |
| 109 | + Console.ReadKey(); | |
| 110 | + Console.Clear(); | |
| 111 | + Console.Write("Enter Code page:"); var cp = Console.ReadLine(); | |
| 112 | + try | |
| 113 | + { | |
| 114 | + Console.OutputEncoding = System.Text.Encoding.GetEncoding(int.Parse(cp)); | |
| 115 | + for (int i = 0; i < 256; i++) | |
| 116 | + { | |
| 117 | + Console.Write((i).ToString().PadLeft(3) + "=> [" + (char)(i) + "] "); | |
| 118 | + if (i % 6 == 5) { Console.WriteLine(); } | |
| 119 | + //Console.Write((char)(i*j)); | |
| 120 | + } | |
| 121 | + } | |
| 122 | + catch { Console.WriteLine("Code page is not supported!"); } | |
| 123 | + Console.ReadKey(); | |
| 124 | + } | |
| 125 | + } | |
| 126 | + } | |
| 127 | +} | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
| ... | ... | @@ -357,6 +357,7 @@ |
| 357 | 357 | <Compile Include="ConsoleFunction - Menu.cs" /> |
| 358 | 358 | <Compile Include="ConsoleFunction - Tools - Membership.cs" /> |
| 359 | 359 | <Compile Include="ConsoleFunction - Tools.cs" /> |
| 360 | + <Compile Include="Manager - FTPManager.cs" /> | |
| 360 | 361 | <Compile Include="Manager - BackupPackageManager.cs" /> |
| 361 | 362 | <Compile Include="Manager - InstallManager.cs" /> |
| 362 | 363 | <Compile Include="Manager - MSMQManager.cs" /> |
| ... | ... | @@ -367,6 +368,7 @@ |
| 367 | 368 | <Compile Include="Manager - FileCleanerManager.cs" /> |
| 368 | 369 | <Compile Include="Manager - MaintenanceToolManager.cs" /> |
| 369 | 370 | <Compile Include="Manager - WebApplicationManager.cs" /> |
| 371 | + <Compile Include="Tests.cs" /> | |
| 370 | 372 | <Compile Include="Program.cs" /> |
| 371 | 373 | <Compile Include="Properties\AssemblyInfo.cs" /> |
| 372 | 374 | </ItemGroup> | ... | ... |