Commit f13d7fa30950712036694972fb158231b8025bf7

Authored by Schwirg László
1 parent a6a553c9

apró szépészeti javítások

Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager - MSMQ.cs deleted
... ... @@ -1,426 +0,0 @@
1   -using System;
2   -using System.Collections.Generic;
3   -using System.Linq;
4   -using System.Messaging;
5   -using System.Text;
6   -using System.Threading.Tasks;
7   -
8   -using Vrh.Log4Pro.MaintenanceConsole.MenuNS;
9   -using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS;
10   -using Vrh.Log4Pro.MaintenanceConsole.ToolsNS;
11   -using Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS;
12   -
13   -using Vrh.XmlProcessing;
14   -using VRH.Common;
15   -using System.Xml.Linq;
16   -using System.Text.RegularExpressions;
17   -
18   -
19   -namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
20   -{
21   - public class MSMQ : XmlLinqBase
22   - {
23   - #region fields
24   - public bool Valid = true;
25   - public string Xml_Key;
26   - public string Xml_Name;
27   - public string Xml_AddressPrefix = XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.AddressPrefix.Values.DEFAULT;
28   - public string Xml_Server = XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Server.Values.DEFAULT;
29   - public bool Private;
30   - public string Xml_Mode = XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Mode.Values.DEFAULT;
31   - public string Xml_Label;
32   - public string Xml_Formatter = XmlStructure.MSMQManager.General.DefaultFormatter.Values.DEFAULT;
33   - public string Xml_Encoding = XmlStructure.MSMQManager.General.DefaultEncoding.Values.DEFAULT;
34   - public List<AccessRights> Xml_AccessRights = new List<AccessRights>();
35   -
36   - public string Status;
37   - public string StatusDescription=null;
38   - public Guid Id;
39   - public string QueueName;
40   - public long NumOfMessages;
41   - public string Label;
42   - public string MachineName;
43   - public IMessageFormatter Formatter;
44   - public string FormatName;
45   - public string Path;
46   - public DateTime LastModifyTime;
47   - public QueueAccessMode AccessMode;
48   - public bool CanRead;
49   - public bool CanWrite;
50   - public long MaximumQueueSize;
51   - public bool UseJournalQueue;
52   - public long MaximumJournalSize;
53   -
54   - public bool Transactional;
55   - public bool Authenticate;
56   - public int BasePriority;
57   - public EncryptionRequired EncryptionRequired;
58   - #endregion fields
59   -
60   - #region basic constructor
61   - public MSMQ() { }
62   - #endregion basic constructor
63   -
64   - #region constructor from MessageQueue
65   - public MSMQ(MessageQueue msmq, string key)
66   - {
67   - Xml_Key = key;
68   - Xml_Name = msmq.QueueName;
69   - Xml_Label = msmq.QueueName;
70   - Xml_Server = msmq.MachineName;
71   - Private = msmq.QueueName.ToLower().StartsWith("private$");
72   - Xml_Formatter = msmq.Formatter.GetType().Name;
73   - Xml_AddressPrefix = "FormatName:"+msmq.FormatName.Replace(msmq.MachineName+"\\"+msmq.QueueName,"");
74   - }
75   - #endregion constructor from MessageQueue
76   -
77   - #region xml constructor
78   - public MSMQ(XElement msmqxml,MSMQDefaults msmqdefaults)
79   - {
80   - Valid = true;
81   - string ATTRIBUTEMANDATORY = nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue) + " attribute is mandatory! Name: {0}";
82   - Xml_Key = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Key), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Key.Values.DEFAULT);
83   - Xml_Name = msmqxml.Attribute(XName.Get(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Name)))?.Value;
84   - if (string.IsNullOrWhiteSpace(Xml_Name)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Name))); }
85   - Xml_AddressPrefix = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.AddressPrefix), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.AddressPrefix.Values.DEFAULT);
86   - Xml_Server = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Server), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Server.Values.DEFAULT);
87   - if (Xml_Server == "." || Xml_Server.ToLower() == "localhost") { Xml_Server = System.Environment.MachineName; }
88   -
89   - Private = Xml_Name.StartsWith("private$"); ;
90   - Xml_Mode = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Mode), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Mode.Values.DEFAULT);
91   - Xml_Label = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Label), msmqxml, Xml_Name);
92   - Xml_Formatter = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Formatter), msmqxml, msmqdefaults.Xml_DefaultFormatter);
93   - Xml_Encoding = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Encoding), msmqxml, msmqdefaults.Xml_DefaultEncoding);
94   -
95   - foreach (var ar in msmqdefaults.Xml_AccessRights) { Xml_AccessRights.Add(ar); }
96   - try
97   - {
98   - var arxmllist = GetAllXElements(msmqxml, nameof(MSMQ.XmlStructure.MSMQManager.MessageQueues.MessageQueue.AccessRight));
99   - foreach (var arxml in arxmllist) { var newa = AccessRights.Factory(arxml); if (newa != null) { Xml_AccessRights.Add(newa); } }
100   - }
101   - catch{ }
102   -
103   -
104   - }
105   - #endregion xml constructor
106   -
107   - #region Xml cloner constructor
108   - public MSMQ(MSMQ msmq)
109   - {
110   - Valid = msmq.Valid;
111   - Xml_Key = msmq.Xml_Key;
112   - Xml_Name = msmq.Xml_Name;
113   - Xml_Server = msmq.Xml_Server;
114   - Private = msmq.Private;
115   - Xml_Mode = msmq.Xml_Mode;
116   - Xml_Label = msmq.Xml_Label;
117   - Xml_Formatter= msmq.Xml_Formatter;
118   - Xml_Encoding = msmq.Xml_Encoding;
119   - }
120   - #endregion Xml cloner constructor
121   -
122   - #region CollectMSMQInfo
123   - public MSMQ CollectMSMQInfo()
124   - {
125   - MSMQ msmqdef = this;
126   - string msmqaddressprefix = msmqdef.Xml_AddressPrefix;
127   - string msmqservername = msmqdef.Xml_Server;
128   - string msmqFullname = MSMQManagerCore.CreateFullQueuePath(msmqaddressprefix, msmqservername, msmqdef.Xml_Name);
129   - msmqdef.QueueName = msmqdef.Xml_Name;
130   - msmqdef.MachineName = msmqservername;
131   - msmqdef.Path = msmqFullname;
132   - try
133   - {
134   - msmqdef.Status = MessageQueue.Exists(msmqFullname) ? "Installed" : "Uninstalled";
135   - if (msmqdef.Status == "Installed")
136   - {
137   - using (var msmq = new MessageQueue(msmqFullname))
138   - {
139   - msmqdef.QueueName = msmq.QueueName;
140   - msmqdef.MachineName = msmq.MachineName;
141   -
142   - msmqdef.Id = msmq.Id;
143   - msmqdef.NumOfMessages = MSMQManagerCore.Count(msmq);
144   - msmqdef.Label = msmq.Label;
145   - msmqdef.Formatter = msmq.Formatter;
146   - msmqdef.FormatName = msmq.FormatName;
147   - msmqdef.Path = msmq.Path;
148   - msmqdef.LastModifyTime = msmq.LastModifyTime;
149   - msmqdef.AccessMode = msmq.AccessMode;
150   - msmqdef.CanRead = msmq.CanRead;
151   - msmqdef.CanWrite = msmq.CanWrite;
152   - msmqdef.MaximumQueueSize = msmq.MaximumQueueSize;
153   - msmqdef.UseJournalQueue = msmq.UseJournalQueue;
154   - msmqdef.MaximumJournalSize = msmq.MaximumJournalSize;
155   -
156   - msmqdef.Transactional = msmq.Transactional;
157   - msmqdef.Authenticate = msmq.Authenticate;
158   - msmqdef.BasePriority = msmq.BasePriority;
159   - msmqdef.EncryptionRequired = msmq.EncryptionRequired;
160   -
161   - msmqdef.Status = "Ready";
162   - }
163   - }
164   - }
165   - catch (Exception ex) { msmqdef.Status = "Error"; msmqdef.StatusDescription = ex.Message + (ex.InnerException != null ? ("\n" + ex.InnerException.Message) : ""); }
166   - return msmqdef;
167   - }
168   - #endregion CollectMSMQInfo
169   -
170   - public string DisplayVeryShortInfo(int lineix)
171   - {
172   - MSMQ msmq = this;
173   - if (lineix == 0)
174   - {
175   - ColorConsole.Write($"{msmq.Xml_Name}", ConsoleColor.Black, ConsoleColor.White, prefix: "Queue '", suffix: $"' queue label: '{msmq.Xml_Label}'.");
176   - ConsoleColor statuscolor;
177   - if (msmq.Status == "Uninstalled") { statuscolor = ConsoleColor.Red; }
178   - else if (msmq.Status == "Error") { statuscolor = ConsoleColor.Red; }
179   - else if (msmq.Status == "Installed") { statuscolor = ConsoleColor.Yellow; }
180   - else if (msmq.Status == "Ready") { statuscolor = ConsoleColor.Green; }
181   - else { statuscolor = ConsoleColor.Red; }
182   - ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". ");
183   - ColorConsole.WriteLine();
184   - return " ";
185   - }
186   - else if (lineix == 1)
187   - {
188   - var privatepublictext = msmq.Private ? "private" : "public";
189   - ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }.");
190   - ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:", suffix: $" Queue is { privatepublictext }.");
191   - ColorConsole.WriteLine();
192   - return " ";
193   - }
194   - return null;
195   - }
196   - public string DisplayShortInfo(int lineix)
197   - {
198   - MSMQ msmq = this;
199   - if (lineix == 0)
200   - {
201   - ColorConsole.Write($"{msmq.Xml_Name}", ConsoleColor.Black, ConsoleColor.White, prefix: "Queue '", suffix: $"' queue label: '{msmq.Xml_Label}'.");
202   - ConsoleColor statuscolor;
203   - if (msmq.Status == "Uninstalled") { statuscolor = ConsoleColor.Red; }
204   - else if (msmq.Status == "Error") { statuscolor = ConsoleColor.Red; }
205   - else if (msmq.Status == "Installed") { statuscolor = ConsoleColor.Yellow; }
206   - else if (msmq.Status == "Ready") { statuscolor = ConsoleColor.Green; }
207   - else { statuscolor = ConsoleColor.Red; }
208   - ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". ");
209   - ColorConsole.WriteLine();
210   - return " ";
211   - }
212   - else if (lineix == 1)
213   - {
214   - var privatepublictext = msmq.Private ? "private" : "public";
215   - ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }.");
216   - ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:", suffix: $" Queue is { privatepublictext }.");
217   - ColorConsole.WriteLine();
218   - return " ";
219   - }
220   - else if (lineix == 2)
221   - {
222   - ColorConsole.Write($"{msmq.Path}", ConsoleColor.Yellow, prefix: "Path ", suffix: ", ");
223   - ColorConsole.WriteLine();
224   - return " ";
225   - }
226   - else if (lineix == 3)
227   - {
228   - if (msmq.StatusDescription != null)
229   - {
230   - ConsoleColor color = ConsoleColor.Yellow;
231   - if (msmq.Status == "Ready") { color = ConsoleColor.Green; }
232   - else if (msmq.Status == "Error") { color = ConsoleColor.Red; }
233   - ColorConsole.Write($"{msmq.StatusDescription}", color, prefix: "Status description ");
234   - ColorConsole.WriteLine();
235   - return " ";
236   - }
237   - return "";//empty=van még szöveg, de most nem történt kiírás
238   - }
239   - else if (lineix == 4)
240   - {
241   - if (msmq.Status == "Ready")
242   - {
243   - ColorConsole.Write($"{msmq.FormatName}", ConsoleColor.Yellow, prefix: "FormatName ");
244   - ColorConsole.WriteLine();
245   - return " ";
246   - }
247   - return "";
248   - }
249   - else if (lineix == 5)
250   - {
251   - if (msmq.Status == "Ready")
252   - {
253   - ColorConsole.Write($"{msmq.Id}", ConsoleColor.Yellow, prefix: "Id ");
254   - ColorConsole.WriteLine();
255   - return " ";
256   - }
257   - return "";
258   - }
259   - else if (lineix == 6)
260   - {
261   - if (msmq.Status == "Ready")
262   - {
263   - ColorConsole.Write(msmq.NumOfMessages.ToString(), ConsoleColor.Yellow, prefix: "Num.of msgs in queue ", suffix: ". ");
264   - ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Yellow, prefix: "LastModified ", suffix: ", ");
265   - ColorConsole.WriteLine();
266   - return " ";
267   - }
268   - return "";
269   - }
270   - else if (lineix == 7)
271   - {
272   - if (msmq.Status == "Ready")
273   - {
274   - ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Yellow, prefix: "AccessMode ", suffix: ", ");
275   - ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Yellow, prefix: "CanRead ", suffix: ", ");
276   - ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Yellow, prefix: "CanWrite ", suffix: ", ");
277   - ColorConsole.WriteLine();
278   - return " ";
279   - }
280   - return "";
281   - }
282   - return null;
283   - }
284   -
285   - #region DisplayInfo
286   - public void DisplayInfo()
287   - {
288   - MSMQ msmq = this;
289   - ColorConsole.Write($">>> MSMQ detailed info collected for ", ConsoleColor.Yellow);
290   - ColorConsole.Write($"{msmq.Xml_Name}", ConsoleColor.Yellow, suffix: ", ", prefix: " QueueName : ");
291   - ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Yellow, prefix: "MachineName: ");
292   - ColorConsole.WriteLine();
293   - var qqn = msmq.Xml_Name;
294   - var qexists = MSMQManagerCore.CheckIfQueueExists(msmq.Xml_Server, qqn);
295   - if (!qexists)
296   - {
297   - ColorConsole.WriteLine($" Queue does not exist!", ConsoleColor.Red);
298   - }
299   - else
300   - {
301   - try
302   - {
303   - msmq = msmq.CollectMSMQInfo();
304   - ColorConsole.WriteLine($"{msmq.QueueName}", ConsoleColor.Green, prefix: $" Queue name: ");
305   - ColorConsole.WriteLine($"{msmq.MachineName}", ConsoleColor.Green, prefix: $" Server: ");
306   - if (msmq.Status == "Error")
307   - {
308   - ColorConsole.WriteLine($"{msmq.Status}", ConsoleColor.Red, prefix: $" Status: ");
309   - ColorConsole.WriteLine($"{msmq.StatusDescription}", ConsoleColor.Red, prefix: " StatusDescription: ");
310   - }
311   - else if (msmq.Status != "Ready")
312   - {
313   - ColorConsole.WriteLine($"{msmq.Status}", ConsoleColor.Yellow, prefix: $" Status: ");
314   - ColorConsole.WriteLine($"{msmq.StatusDescription}", ConsoleColor.Yellow, prefix: " StatusDescription: ");
315   - }
316   - else
317   - {
318   - ColorConsole.WriteLine($"{msmq.Status}", ConsoleColor.Green, prefix: $" Status: ");
319   - ColorConsole.WriteLine($"{msmq.StatusDescription}", ConsoleColor.Green, prefix: " StatusDescription: ");
320   - ColorConsole.WriteLine($"{msmq.Id}", ConsoleColor.Green, prefix: " Id: ");
321   - ColorConsole.WriteLine($"{msmq.Label}", ConsoleColor.Green, prefix: " Label: ");
322   - ColorConsole.WriteLine($"{msmq.Path}", ConsoleColor.Green, prefix: " Path: ");
323   - ColorConsole.WriteLine($"{msmq.FormatName}", ConsoleColor.Green, prefix: " FormatName: ");
324   - ColorConsole.Write($"{msmq.Transactional}", ConsoleColor.Green, prefix: " Transactional: ", suffix: ", ");
325   - ColorConsole.Write($"{msmq.UseJournalQueue}", ConsoleColor.Green, suffix: ", ", prefix: "UseJournalQueue: ");
326   - ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Green, suffix: ", ", prefix: "AccessMode: ");
327   - ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Green, suffix: ", ", prefix: "CanRead: ");
328   - ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Green, suffix: ", ", prefix: "CanWrite: ");
329   - ColorConsole.WriteLine();
330   - ColorConsole.Write($"{msmq.Authenticate}", ConsoleColor.Green, suffix: ", ", prefix: " Authenticate: ");
331   - ColorConsole.Write($"{msmq.BasePriority}", ConsoleColor.Green, suffix: ", ", prefix: "BasePriority: ");
332   - ColorConsole.Write($"{msmq.EncryptionRequired}", ConsoleColor.Green, suffix: ", ", prefix: "EncryptionRequired: ");
333   - ColorConsole.WriteLine();
334   - ColorConsole.Write($"{msmq.Formatter}", ConsoleColor.Green, suffix: ", ", prefix: " Formatter: ");
335   - ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Green, suffix: ", ", prefix: "LastModifyTime: ");
336   - ColorConsole.WriteLine();
337   - ColorConsole.Write($"{msmq.NumOfMessages}", ConsoleColor.Green, suffix: ", ", prefix: " NumOfMessages: ");
338   - ColorConsole.Write($"{msmq.MaximumJournalSize}", ConsoleColor.Green, suffix: ", ", prefix: "MaximumJournalSize: ");
339   - ColorConsole.Write($"{msmq.MaximumQueueSize}", ConsoleColor.Green, suffix: ", ", prefix: "MaximumQueueSize: ");
340   - ColorConsole.WriteLine();
341   - }
342   - }
343   - catch (Exception ex) { ColorConsole.WriteLine(" " + ex.Message, ConsoleColor.Red); }
344   - }
345   - }
346   - #endregion DisplayInfo
347   -
348   - #region XmlStructure
349   - public static class XmlStructure
350   - {
351   - public static class MSMQManager
352   - {
353   - public static class General
354   - {
355   - public static class AccessRights
356   - {
357   - public static class AccessRight
358   - {
359   - public static class Attributes
360   - {
361   - public static class Username { public static class Values { public const string DEFAULT = "Everyone"; } }
362   - public static class Right {public static class Values { public const string DEFAULT = nameof(MessageQueueAccessRights.FullControl); } }
363   - public static class Control { public static class Values { public const string DEFAULT = nameof(AccessControlEntryType.Allow); } }
364   - }
365   - }
366   - }
367   - public static class MessageFiles
368   - {
369   - public static class Attributes
370   - {
371   - public static class Directory { public static class Values { public const string DEFAULT = ""; } }
372   - public static class SendToMask { public static class Values { public const string DEFAULT = "*.*"; } }
373   - public static class ReadToMask { public static class Values { public const string DEFAULT = "*.*"; } }
374   - }
375   - }
376   - public static class DefaultFormatter { public static class Values { public const string DEFAULT = nameof(ActiveXMessageFormatter); } }
377   - public static class DefaultEncoding { public static class Values { public const string DEFAULT = nameof(System.Text.Encoding.UTF8); } }
378   - }
379   -
380   - public static class MessageQueues
381   - {
382   - public static class MessageQueue
383   - {
384   - public static class Attributes
385   - {
386   - public static class Key { public static class Values { public const string DEFAULT = ""; } }
387   - public static class AddressPrefix{ public static class Values { public const string DEFAULT = ""; } }
388   - public static class Server { public static class Values { public const string DEFAULT = "."; } }
389   - public static class Name { }
390   - public static class Label { }
391   - public static class Mode
392   - {
393   - public static class Values
394   - {
395   - public const string DEFAULT = "In";
396   - public static class In { }
397   - public static class Out { }
398   - }
399   - }
400   - public static class Formatter
401   - {
402   - public static class Values
403   - {
404   - public static class ActiveXMessageFormatter { }
405   - public static class BinaryMessageFormatter { }
406   - public static class XmlMessageFormatter { }
407   - }
408   - }
409   - public static class Encoding { }
410   - }
411   - public static class AccessRight
412   - {
413   - public static class Attributes
414   - {
415   - public static class Username { public static class Values { public const string DEFAULT = "Everyone"; } }
416   - public static class Right { public static class Values { public const string DEFAULT = nameof(MessageQueueAccessRights.FullControl); } }
417   - public static class Control { public static class Values { public const string DEFAULT = nameof(AccessControlEntryType.Allow); } }
418   - }
419   - }
420   - }
421   - }
422   - }
423   - }
424   - #endregion XmlStructure
425   - }
426   -}
Vrh.Log4Pro.MaintenanceConsole/Manager - MSMQManager.cs
... ... @@ -74,16 +74,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
74 74 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name);
75 75 MSMQManagerCore.CreateQueue(fullpath, st.Xml_Label);
76 76 ColorConsole.WriteLine($"MSMQ:{st.Xml_Name} created.", ConsoleColor.Green);
77   - foreach (var a in st.Xml_AccessRights)
  77 + foreach (var accessright in st.Xml_AccessRights)
78 78 {
79   - MSMQManagerCore.SetPermissions(fullpath, a.un, a.ar, a.ac);
80   - string ctrlstring =
81   - a.ac == AccessControlEntryType.Allow ? "allowed"
82   - : a.ac == AccessControlEntryType.Deny ? "denied"
83   - : a.ac == AccessControlEntryType.Revoke ? "revoked"
84   - : a.ac == AccessControlEntryType.Set ? "set"
85   - : "???";
86   - ColorConsole.WriteLine($"Access right {a.ar} {ctrlstring} for user:{a.un}.", ConsoleColor.Green);
  79 + MSMQManagerCore.SetPermissions(fullpath, accessright.un, accessright.ar, accessright.ac);
  80 + string ctrlstring = accessright.AccessControlEntryTypeText();
  81 + ColorConsole.WriteLine($"Access right {accessright.ar} {ctrlstring} for user:{accessright.un}.", ConsoleColor.Green);
87 82 }
88 83 }
89 84 catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
... ... @@ -140,17 +135,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
140 135 MSMQ st = p.Parameters as MSMQ;
141 136 try
142 137 {
143   - foreach (var a in st.Xml_AccessRights)
  138 + foreach (var accessright in st.Xml_AccessRights)
144 139 {
145 140 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name);
146   - MSMQManagerCore.SetPermissions(fullpath, a.un, a.ar, a.ac);
147   - string ctrlstring =
148   - a.ac == AccessControlEntryType.Allow ? "allowed"
149   - : a.ac == AccessControlEntryType.Deny ? "denied"
150   - : a.ac == AccessControlEntryType.Revoke ? "revoked"
151   - : a.ac == AccessControlEntryType.Set ? "set"
152   - : "???";
153   - ColorConsole.WriteLine($"Access right {a.ar} {ctrlstring} for user:{a.un}.", ConsoleColor.Green);
  141 + MSMQManagerCore.SetPermissions(fullpath, accessright.un, accessright.ar, accessright.ac);
  142 + string ctrlstring = accessright.AccessControlEntryTypeText();
  143 + ColorConsole.WriteLine($"Access right {accessright.ar} {ctrlstring} for user:{accessright.un}.", ConsoleColor.Green);
154 144 }
155 145 }
156 146 catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
... ... @@ -247,13 +237,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
247 237 var fullpath = MSMQManagerCore.CreateFullQueuePath(msmq.Xml_AddressPrefix, msmq.Xml_Server, msmq.Xml_Name);
248 238 MSMQManagerCore.Send(fullpath, sp.messagebody, sp.messagelabel, sp.messageformatter, sp.encoding);
249 239 ColorConsole.WriteLine($"Sending to '{fullpath}' ....", ConsoleColor.Yellow);
250   - MSMQManagerCore.ReadLast(fullpath, sp.messageformatter, sp.encoding, out string body, out string label);
251   - if (sp.messagebody == body && sp.messagelabel == label) { ColorConsole.WriteLine($"Message successfully sent to '{fullpath}' and read back!", ConsoleColor.Green); }
252   - else
  240 + Message msg = MSMQManagerCore.PeekLast(fullpath, sp.messageformatter, sp.encoding, out string body, out string label);
  241 + TestSendCheckMessage(fullpath, msg, sp, body, label, "message sending/peek back");
  242 + var ans = ColorConsole.ReadLine($"Do You want to remove this test message (lookup id='{msg.LookupId}') from quue?", ConsoleColor.Yellow,validitylist:new List<string> { "yes","no"},defaultvalue:"yes");
  243 + if (ans.ToLower() == "yes")
253 244 {
254   - ColorConsole.WriteLine(body, prefix: "Read back body: ", f: ConsoleColor.Red);
255   - ColorConsole.WriteLine(label, prefix: "Read back label: ", f: ConsoleColor.Red);
256   - ColorConsole.WriteLine($"Message sending or read back is failed to '{fullpath}' !", ConsoleColor.Red);
  245 + msg = MSMQManagerCore.ReadById(fullpath, msg.LookupId, sp.messageformatter, sp.encoding, out body, out label);
  246 + TestSendCheckMessage(fullpath, msg, sp, body, label, "Read back.");
257 247 }
258 248 }
259 249 }
... ... @@ -262,6 +252,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
262 252 return o;
263 253 }
264 254  
  255 + private static void TestSendCheckMessage(string fullpath,Message msg, SendParameters sp, string body, string label,string actiontext)
  256 + {
  257 + if (sp.messagebody == body && sp.messagelabel == label) { ColorConsole.WriteLine($"Success! Action:{actiontext}. Queue:'{fullpath}'.", ConsoleColor.Green); }
  258 + else
  259 + {
  260 + ColorConsole.WriteLine(body, prefix: $"{actiontext} body: ", f: ConsoleColor.Red);
  261 + ColorConsole.WriteLine(label, prefix: $"{actiontext} label: ", f: ConsoleColor.Red);
  262 + ColorConsole.WriteLine($"Failure! Action:{actiontext}. Queue:'{fullpath}'.", ConsoleColor.Red);
  263 + }
  264 + }
265 265 private static object GetLocalInfo(object parameter, object o)
266 266 {
267 267 var config = (parameter as Menu.ExecutorParameter).GetConfig<MSMQManagerXmlProcessor>();
... ... @@ -307,8 +307,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
307 307 MSMQ st = p.Parameters as MSMQ;
308 308 try
309 309 {
  310 + var messageformatter = MSMQManagerCore.SetFormatter(st.Xml_Formatter); //new ActiveXMessageFormatter();
  311 + var encoding = MSMQManagerCore.SetEncoding(st.Xml_Encoding); // Encoding.UTF8;
310 312 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name);
311   - MSMQManagerCore.Peek(fullpath, out string msgbody, out string msglabel);
  313 + MSMQManagerCore.Peek(fullpath, messageformatter, encoding, out string msgbody, out string msglabel);
312 314 ColorConsole.WriteLine($"Message peeked from MSMQ:{st.Xml_Name}", ConsoleColor.Green);
313 315 ColorConsole.WriteLine($" Body: {msgbody}", ConsoleColor.Yellow);
314 316 ColorConsole.WriteLine($" Label: {msglabel}", ConsoleColor.Yellow);
... ... @@ -341,8 +343,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
341 343 MSMQ st = p.Parameters as MSMQ;
342 344 try
343 345 {
344   - var messageformatter = new ActiveXMessageFormatter();
345   - var encoding = Encoding.UTF8;
  346 + var messageformatter = MSMQManagerCore.SetFormatter(st.Xml_Formatter); //new ActiveXMessageFormatter();
  347 + var encoding = MSMQManagerCore.SetEncoding(st.Xml_Encoding); // Encoding.UTF8;
346 348 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name);
347 349 MSMQManagerCore.Read(fullpath, messageformatter, encoding, out string msgbody, out string msglabel);
348 350 ColorConsole.WriteLine($"Message read from MSMQ:{st.Xml_Name}", ConsoleColor.Green);
... ... @@ -550,7 +552,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
550 552 if (!string.IsNullOrWhiteSpace(label)) { msmq.Label = label; }
551 553 }
552 554 }
553   - public static void SetPermissions(string msmqFullname,string username, MessageQueueAccessRights accessrights, AccessControlEntryType controltype)
  555 + public static void SetPermissions(string msmqFullname,string username, MessageQueueAccessRights accessrights, AccessControlEntryType controltype)
554 556 {
555 557 using (var msmq = new MessageQueue(msmqFullname))
556 558 {
... ... @@ -571,7 +573,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
571 573 // | MessageQueueAccessRights.ReceiveMessage
572 574 // | MessageQueueAccessRights.SetQueueProperties
573 575 // | MessageQueueAccessRights.DeleteQueue;
574   - msmq.SetPermissions("EveryOne", accessrights, controltype);
  576 + msmq.SetPermissions(username, accessrights, controltype);
575 577 }
576 578 }
577 579  
... ... @@ -586,29 +588,74 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
586 588 msmq.Purge();
587 589 }
588 590 }
589   - public static void Peek(string msmqFullname, out string body, out string label)
  591 + public static Message Peek(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
590 592 {
  593 + body = "";
  594 + label = "";
591 595 using (var msmq = new MessageQueue(msmqFullname))
592 596 {
  597 + if (Count(msmq) == 0) { return null; }
  598 +
  599 + msmq.Formatter = messageformatter;
593 600 Message m = msmq.Peek(new TimeSpan(0));
594   - m.BodyStream.Position = 0;
595   - var sr = new System.IO.StreamReader(m.BodyStream);
596 601 label = m.Label;
597   - body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
  602 + //m.BodyStream.Position = 0;
  603 + //var sr = new System.IO.StreamReader(m.BodyStream);
  604 + //body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
  605 + body = encoding.GetString((byte[])m.Body);
  606 + return m;
598 607 }
599 608 }
600   - public static void Read(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
  609 + public static Message PeekLast(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
601 610 {
  611 + body = "";
  612 + label = "";
602 613 using (var msmq = new MessageQueue(msmqFullname))
603 614 {
  615 + if (Count(msmq) == 0) { return null; }
  616 +
604 617 //frmA = new System.Messaging.ActiveXMessageFormatter();
605 618 //frmA = new System.Messaging.BinaryMessageFormatter();
606 619 //frmA = new System.Messaging.XmlMessageFormatter();
607 620 msmq.Formatter = messageformatter;
  621 + //Message m = msmq.Receive(new TimeSpan(0));
  622 + var m = msmq.PeekByLookupId(MessageLookupAction.Last, 0);
  623 + label = m.Label;
  624 + body = encoding.GetString((byte[])m.Body);
  625 + return m;
608 626  
609   - Message m = msmq.Receive(new TimeSpan(0));
610   - m.BodyStream.Position = 0;
611 627  
  628 + //m.BodyStream.Position = 0;
  629 +
  630 + //// encoding = System.Text.Encoding.UTF8;
  631 + //// encoding = System.Text.Encoding.UTF7;
  632 + //// encoding = System.Text.Encoding.UTF32;
  633 + //// encoding = System.Text.Encoding.Unicode;
  634 + //// encoding = System.Text.Encoding.BigEndianUnicode;
  635 + //// encoding = System.Text.Encoding.ASCII;
  636 + //// encoding = System.Text.Encoding.Default;
  637 + //var sr = new System.IO.StreamReader(m.BodyStream, encoding);
  638 + //body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
  639 + }
  640 + }
  641 + public static Message Read(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
  642 + {
  643 + body = "";
  644 + label = "";
  645 + using (var msmq = new MessageQueue(msmqFullname))
  646 + {
  647 + if (Count(msmq) == 0) { return null; }
  648 +
  649 + //frmA = new System.Messaging.ActiveXMessageFormatter();
  650 + //frmA = new System.Messaging.BinaryMessageFormatter();
  651 + //frmA = new System.Messaging.XmlMessageFormatter();
  652 + msmq.Formatter = messageformatter;
  653 +
  654 + Message m = msmq.Receive(new TimeSpan(0));
  655 + label = m.Label;
  656 + //m.BodyStream.Position = 0;
  657 + //var sr = new System.IO.StreamReader(m.BodyStream, encoding);
  658 + //body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
612 659 // encoding = System.Text.Encoding.UTF8;
613 660 // encoding = System.Text.Encoding.UTF7;
614 661 // encoding = System.Text.Encoding.UTF32;
... ... @@ -616,41 +663,55 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
616 663 // encoding = System.Text.Encoding.BigEndianUnicode;
617 664 // encoding = System.Text.Encoding.ASCII;
618 665 // encoding = System.Text.Encoding.Default;
619   - var sr = new System.IO.StreamReader(m.BodyStream, encoding);
  666 + body = encoding.GetString((byte[])m.Body);
  667 + return m;
  668 + }
  669 + }
  670 + public static Message ReadLast(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
  671 + {
  672 + body = "";
  673 + label = "";
  674 + using (var msmq = new MessageQueue(msmqFullname))
  675 + {
  676 + if (Count(msmq) == 0) { return null; }
  677 +
  678 + //frmA = new System.Messaging.ActiveXMessageFormatter();
  679 + //frmA = new System.Messaging.BinaryMessageFormatter();
  680 + //frmA = new System.Messaging.XmlMessageFormatter();
  681 + msmq.Formatter = messageformatter;
  682 + //Message m = msmq.Receive(new TimeSpan(0));
  683 + var m = msmq.ReceiveByLookupId(MessageLookupAction.Last, 0, null);
620 684 label = m.Label;
621   - body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
  685 + body = encoding.GetString((byte[])m.Body);
  686 +
  687 +
  688 + //m.BodyStream.Position = 0;
  689 +
  690 + //// encoding = System.Text.Encoding.UTF8;
  691 + //// encoding = System.Text.Encoding.UTF7;
  692 + //// encoding = System.Text.Encoding.UTF32;
  693 + //// encoding = System.Text.Encoding.Unicode;
  694 + //// encoding = System.Text.Encoding.BigEndianUnicode;
  695 + //// encoding = System.Text.Encoding.ASCII;
  696 + //// encoding = System.Text.Encoding.Default;
  697 + //var sr = new System.IO.StreamReader(m.BodyStream, encoding);
  698 + //body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
  699 + return m;
622 700 }
623 701 }
624   - public static void ReadLast(string msmqFullname, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
  702 + public static Message ReadById(string msmqFullname, long msgid, IMessageFormatter messageformatter, Encoding encoding, out string body, out string label)
625 703 {
626 704 body = "";
627 705 label = "";
628 706 using (var msmq = new MessageQueue(msmqFullname))
629 707 {
630   - if (Count(msmq)>0)
631   - {
632   - //frmA = new System.Messaging.ActiveXMessageFormatter();
633   - //frmA = new System.Messaging.BinaryMessageFormatter();
634   - //frmA = new System.Messaging.XmlMessageFormatter();
635   - msmq.Formatter = messageformatter;
636   - //Message m = msmq.Receive(new TimeSpan(0));
637   - var m = msmq.ReceiveByLookupId(MessageLookupAction.Last, 0, null);
638   - label = m.Label;
639   - body = encoding.GetString((byte[])m.Body);
640   -
641   -
642   - //m.BodyStream.Position = 0;
643   -
644   - //// encoding = System.Text.Encoding.UTF8;
645   - //// encoding = System.Text.Encoding.UTF7;
646   - //// encoding = System.Text.Encoding.UTF32;
647   - //// encoding = System.Text.Encoding.Unicode;
648   - //// encoding = System.Text.Encoding.BigEndianUnicode;
649   - //// encoding = System.Text.Encoding.ASCII;
650   - //// encoding = System.Text.Encoding.Default;
651   - //var sr = new System.IO.StreamReader(m.BodyStream, encoding);
652   - //body = sr.ReadToEnd().Replace(((char)0).ToString(), "");
653   - }
  708 + if (Count(msmq) == 0) {return null; }
  709 +
  710 + msmq.Formatter = messageformatter;
  711 + var m = msmq.ReceiveByLookupId(msgid);
  712 + label = m.Label;
  713 + body = encoding.GetString((byte[])m.Body);
  714 + return m;
654 715 }
655 716 }
656 717 public static void Send(string msmqFullname, string messagetosend, string messagelabel, IMessageFormatter messageformatter, Encoding encoding)
... ... @@ -693,9 +754,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
693 754 r.Add(nameof(MSMQ.XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Formatter.Values.XmlMessageFormatter));
694 755 return r;
695 756 }
696   - public static Encoding SetEncoding(string formattername)
  757 + public static Encoding SetEncoding(string encodingname)
697 758 {
698   - switch (formattername)
  759 + switch (encodingname)
699 760 {
700 761 case nameof(Encoding.UTF8): return Encoding.UTF8;
701 762 case nameof(Encoding.UTF7): return Encoding.UTF7;
... ... @@ -758,6 +819,17 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
758 819 }
759 820 catch { return null; }
760 821 }
  822 +
  823 + public string AccessControlEntryTypeText()
  824 + {
  825 + AccessRights accessright = this;
  826 + return accessright.ac == AccessControlEntryType.Allow ? "allowed"
  827 + : accessright.ac == AccessControlEntryType.Deny ? "denied"
  828 + : accessright.ac == AccessControlEntryType.Revoke ? "revoked"
  829 + : accessright.ac == AccessControlEntryType.Set ? "set"
  830 + : "???";
  831 + }
  832 +
761 833 public string un;
762 834 public MessageQueueAccessRights ar;
763 835 public AccessControlEntryType ac;
... ... @@ -790,4 +862,413 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
790 862 }
791 863 }
792 864 #endregion Defaults class
  865 +
  866 + #region MSMQ
  867 + public class MSMQ : XmlLinqBase
  868 + {
  869 + #region fields
  870 + public bool Valid = true;
  871 + public string Xml_Key;
  872 + public string Xml_Name;
  873 + public string Xml_AddressPrefix = XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.AddressPrefix.Values.DEFAULT;
  874 + public string Xml_Server = XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Server.Values.DEFAULT;
  875 + public bool Private;
  876 + public string Xml_Mode = XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Mode.Values.DEFAULT;
  877 + public string Xml_Label;
  878 + public string Xml_Formatter = XmlStructure.MSMQManager.General.DefaultFormatter.Values.DEFAULT;
  879 + public string Xml_Encoding = XmlStructure.MSMQManager.General.DefaultEncoding.Values.DEFAULT;
  880 + public List<AccessRights> Xml_AccessRights = new List<AccessRights>();
  881 +
  882 + public string Status;
  883 + public string StatusDescription = null;
  884 + public Guid Id;
  885 + public string QueueName;
  886 + public long NumOfMessages;
  887 + public string Label;
  888 + public string MachineName;
  889 + public IMessageFormatter Formatter;
  890 + public string FormatName;
  891 + public string Path;
  892 + public DateTime LastModifyTime;
  893 + public QueueAccessMode AccessMode;
  894 + public bool CanRead;
  895 + public bool CanWrite;
  896 + public long MaximumQueueSize;
  897 + public bool UseJournalQueue;
  898 + public long MaximumJournalSize;
  899 +
  900 + public bool Transactional;
  901 + public bool Authenticate;
  902 + public int BasePriority;
  903 + public EncryptionRequired EncryptionRequired;
  904 + #endregion fields
  905 +
  906 + #region basic constructor
  907 + public MSMQ() { }
  908 + #endregion basic constructor
  909 +
  910 + #region constructor from MessageQueue
  911 + public MSMQ(MessageQueue msmq, string key)
  912 + {
  913 + Xml_Key = key;
  914 + Xml_Name = msmq.QueueName;
  915 + Xml_Label = msmq.QueueName;
  916 + Xml_Server = msmq.MachineName;
  917 + Private = msmq.QueueName.ToLower().StartsWith("private$");
  918 + Xml_Formatter = msmq.Formatter.GetType().Name;
  919 + Xml_AddressPrefix = "FormatName:" + msmq.FormatName.Replace(msmq.MachineName + "\\" + msmq.QueueName, "");
  920 + }
  921 + #endregion constructor from MessageQueue
  922 +
  923 + #region xml constructor
  924 + public MSMQ(XElement msmqxml, MSMQDefaults msmqdefaults)
  925 + {
  926 + Valid = true;
  927 + string ATTRIBUTEMANDATORY = nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue) + " attribute is mandatory! Name: {0}";
  928 + Xml_Key = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Key), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Key.Values.DEFAULT);
  929 + Xml_Name = msmqxml.Attribute(XName.Get(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Name)))?.Value;
  930 + if (string.IsNullOrWhiteSpace(Xml_Name)) { throw new ApplicationException(string.Format(ATTRIBUTEMANDATORY, nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Name))); }
  931 + Xml_AddressPrefix = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.AddressPrefix), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.AddressPrefix.Values.DEFAULT);
  932 + Xml_Server = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Server), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Server.Values.DEFAULT);
  933 + if (Xml_Server == "." || Xml_Server.ToLower() == "localhost") { Xml_Server = System.Environment.MachineName; }
  934 +
  935 + Private = Xml_Name.StartsWith("private$"); ;
  936 + Xml_Mode = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Mode), msmqxml, XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Mode.Values.DEFAULT);
  937 + Xml_Label = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Label), msmqxml, Xml_Name);
  938 + Xml_Formatter = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Formatter), msmqxml, msmqdefaults.Xml_DefaultFormatter);
  939 + Xml_Encoding = GetValue(nameof(XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Encoding), msmqxml, msmqdefaults.Xml_DefaultEncoding);
  940 +
  941 + foreach (var ar in msmqdefaults.Xml_AccessRights) { Xml_AccessRights.Add(ar); }
  942 + try
  943 + {
  944 + var arxmllist = GetAllXElements(msmqxml, nameof(MSMQ.XmlStructure.MSMQManager.MessageQueues.MessageQueue.AccessRight));
  945 + foreach (var arxml in arxmllist) { var newa = AccessRights.Factory(arxml); if (newa != null) { Xml_AccessRights.Add(newa); } }
  946 + }
  947 + catch { }
  948 +
  949 +
  950 + }
  951 + #endregion xml constructor
  952 +
  953 + #region Xml cloner constructor
  954 + public MSMQ(MSMQ msmq)
  955 + {
  956 + Valid = msmq.Valid;
  957 + Xml_Key = msmq.Xml_Key;
  958 + Xml_Name = msmq.Xml_Name;
  959 + Xml_Server = msmq.Xml_Server;
  960 + Private = msmq.Private;
  961 + Xml_Mode = msmq.Xml_Mode;
  962 + Xml_Label = msmq.Xml_Label;
  963 + Xml_Formatter = msmq.Xml_Formatter;
  964 + Xml_Encoding = msmq.Xml_Encoding;
  965 + }
  966 + #endregion Xml cloner constructor
  967 +
  968 + #region CollectMSMQInfo
  969 + public MSMQ CollectMSMQInfo()
  970 + {
  971 + MSMQ msmqdef = this;
  972 + string msmqaddressprefix = msmqdef.Xml_AddressPrefix;
  973 + string msmqservername = msmqdef.Xml_Server;
  974 + string msmqFullname = MSMQManagerCore.CreateFullQueuePath(msmqaddressprefix, msmqservername, msmqdef.Xml_Name);
  975 + msmqdef.QueueName = msmqdef.Xml_Name;
  976 + msmqdef.MachineName = msmqservername;
  977 + msmqdef.Path = msmqFullname;
  978 + try
  979 + {
  980 + msmqdef.Status = MessageQueue.Exists(msmqFullname) ? "Installed" : "Uninstalled";
  981 + if (msmqdef.Status == "Installed")
  982 + {
  983 + using (var msmq = new MessageQueue(msmqFullname))
  984 + {
  985 + msmqdef.QueueName = msmq.QueueName;
  986 + msmqdef.MachineName = msmq.MachineName;
  987 +
  988 + msmqdef.Id = msmq.Id;
  989 + msmqdef.NumOfMessages = MSMQManagerCore.Count(msmq);
  990 + msmqdef.Label = msmq.Label;
  991 + msmqdef.Formatter = msmq.Formatter;
  992 + msmqdef.FormatName = msmq.FormatName;
  993 + msmqdef.Path = msmq.Path;
  994 + msmqdef.LastModifyTime = msmq.LastModifyTime;
  995 + msmqdef.AccessMode = msmq.AccessMode;
  996 + msmqdef.CanRead = msmq.CanRead;
  997 + msmqdef.CanWrite = msmq.CanWrite;
  998 + msmqdef.MaximumQueueSize = msmq.MaximumQueueSize;
  999 + msmqdef.UseJournalQueue = msmq.UseJournalQueue;
  1000 + msmqdef.MaximumJournalSize = msmq.MaximumJournalSize;
  1001 +
  1002 + msmqdef.Transactional = msmq.Transactional;
  1003 + msmqdef.Authenticate = msmq.Authenticate;
  1004 + msmqdef.BasePriority = msmq.BasePriority;
  1005 + msmqdef.EncryptionRequired = msmq.EncryptionRequired;
  1006 +
  1007 + msmqdef.Status = "Ready";
  1008 + }
  1009 + }
  1010 + }
  1011 + catch (Exception ex) { msmqdef.Status = "Error"; msmqdef.StatusDescription = ex.Message + (ex.InnerException != null ? ("\n" + ex.InnerException.Message) : ""); }
  1012 + return msmqdef;
  1013 + }
  1014 + #endregion CollectMSMQInfo
  1015 +
  1016 + public string DisplayVeryShortInfo(int lineix)
  1017 + {
  1018 + MSMQ msmq = this;
  1019 + if (lineix == 0)
  1020 + {
  1021 + ColorConsole.Write($"{msmq.Xml_Name}", ConsoleColor.Black, ConsoleColor.White, prefix: "Queue '", suffix: $"' queue label: '{msmq.Xml_Label}'.");
  1022 + ConsoleColor statuscolor;
  1023 + if (msmq.Status == "Uninstalled") { statuscolor = ConsoleColor.Red; }
  1024 + else if (msmq.Status == "Error") { statuscolor = ConsoleColor.Red; }
  1025 + else if (msmq.Status == "Installed") { statuscolor = ConsoleColor.Yellow; }
  1026 + else if (msmq.Status == "Ready") { statuscolor = ConsoleColor.Green; }
  1027 + else { statuscolor = ConsoleColor.Red; }
  1028 + ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". ");
  1029 + ColorConsole.WriteLine();
  1030 + return " ";
  1031 + }
  1032 + else if (lineix == 1)
  1033 + {
  1034 + var privatepublictext = msmq.Private ? "private" : "public";
  1035 + ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }.");
  1036 + ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:", suffix: $" Queue is { privatepublictext }.");
  1037 + ColorConsole.WriteLine();
  1038 + return " ";
  1039 + }
  1040 + return null;
  1041 + }
  1042 + public string DisplayShortInfo(int lineix)
  1043 + {
  1044 + MSMQ msmq = this;
  1045 + if (lineix == 0)
  1046 + {
  1047 + ColorConsole.Write($"{msmq.Xml_Name}", ConsoleColor.Black, ConsoleColor.White, prefix: "Queue '", suffix: $"' queue label: '{msmq.Xml_Label}'.");
  1048 + ConsoleColor statuscolor;
  1049 + if (msmq.Status == "Uninstalled") { statuscolor = ConsoleColor.Red; }
  1050 + else if (msmq.Status == "Error") { statuscolor = ConsoleColor.Red; }
  1051 + else if (msmq.Status == "Installed") { statuscolor = ConsoleColor.Yellow; }
  1052 + else if (msmq.Status == "Ready") { statuscolor = ConsoleColor.Green; }
  1053 + else { statuscolor = ConsoleColor.Red; }
  1054 + ColorConsole.Write(msmq.Status, statuscolor, bracket: "[]", prefix: " ", suffix: ". ");
  1055 + ColorConsole.WriteLine();
  1056 + return " ";
  1057 + }
  1058 + else if (lineix == 1)
  1059 + {
  1060 + var privatepublictext = msmq.Private ? "private" : "public";
  1061 + ColorConsole.Write($"{msmq.Xml_AddressPrefix}", ConsoleColor.Black, ConsoleColor.White, prefix: "Format:", suffix: $" Queue is { privatepublictext }.");
  1062 + ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Black, ConsoleColor.White, prefix: "Server:", suffix: $" Queue is { privatepublictext }.");
  1063 + ColorConsole.WriteLine();
  1064 + return " ";
  1065 + }
  1066 + else if (lineix == 2)
  1067 + {
  1068 + ColorConsole.Write($"{msmq.Path}", ConsoleColor.Yellow, prefix: "Path ", suffix: ", ");
  1069 + ColorConsole.WriteLine();
  1070 + return " ";
  1071 + }
  1072 + else if (lineix == 3)
  1073 + {
  1074 + if (msmq.StatusDescription != null)
  1075 + {
  1076 + ConsoleColor color = ConsoleColor.Yellow;
  1077 + if (msmq.Status == "Ready") { color = ConsoleColor.Green; }
  1078 + else if (msmq.Status == "Error") { color = ConsoleColor.Red; }
  1079 + ColorConsole.Write($"{msmq.StatusDescription}", color, prefix: "Status description ");
  1080 + ColorConsole.WriteLine();
  1081 + return " ";
  1082 + }
  1083 + return "";//empty=van még szöveg, de most nem történt kiírás
  1084 + }
  1085 + else if (lineix == 4)
  1086 + {
  1087 + if (msmq.Status == "Ready")
  1088 + {
  1089 + ColorConsole.Write($"{msmq.FormatName}", ConsoleColor.Yellow, prefix: "FormatName ");
  1090 + ColorConsole.WriteLine();
  1091 + return " ";
  1092 + }
  1093 + return "";
  1094 + }
  1095 + else if (lineix == 5)
  1096 + {
  1097 + if (msmq.Status == "Ready")
  1098 + {
  1099 + ColorConsole.Write($"{msmq.Id}", ConsoleColor.Yellow, prefix: "Id ");
  1100 + ColorConsole.WriteLine();
  1101 + return " ";
  1102 + }
  1103 + return "";
  1104 + }
  1105 + else if (lineix == 6)
  1106 + {
  1107 + if (msmq.Status == "Ready")
  1108 + {
  1109 + ColorConsole.Write(msmq.NumOfMessages.ToString(), ConsoleColor.Yellow, prefix: "Num.of msgs in queue ", suffix: ". ");
  1110 + ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Yellow, prefix: "LastModified ", suffix: ", ");
  1111 + ColorConsole.WriteLine();
  1112 + return " ";
  1113 + }
  1114 + return "";
  1115 + }
  1116 + else if (lineix == 7)
  1117 + {
  1118 + if (msmq.Status == "Ready")
  1119 + {
  1120 + ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Yellow, prefix: "AccessMode ", suffix: ", ");
  1121 + ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Yellow, prefix: "CanRead ", suffix: ", ");
  1122 + ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Yellow, prefix: "CanWrite ", suffix: ", ");
  1123 + ColorConsole.WriteLine();
  1124 + return " ";
  1125 + }
  1126 + return "";
  1127 + }
  1128 + return null;
  1129 + }
  1130 +
  1131 + #region DisplayInfo
  1132 + public void DisplayInfo()
  1133 + {
  1134 + MSMQ msmq = this;
  1135 + ColorConsole.Write($">>> MSMQ detailed info collected for ", ConsoleColor.Yellow);
  1136 + ColorConsole.Write($"{msmq.Xml_Name}", ConsoleColor.Yellow, suffix: ", ", prefix: " QueueName : ");
  1137 + ColorConsole.Write($"{msmq.Xml_Server}", ConsoleColor.Yellow, prefix: "MachineName: ");
  1138 + ColorConsole.WriteLine();
  1139 + var qqn = msmq.Xml_Name;
  1140 + var qexists = MSMQManagerCore.CheckIfQueueExists(msmq.Xml_Server, qqn);
  1141 + if (!qexists)
  1142 + {
  1143 + ColorConsole.WriteLine($" Queue does not exist!", ConsoleColor.Red);
  1144 + }
  1145 + else
  1146 + {
  1147 + try
  1148 + {
  1149 + msmq = msmq.CollectMSMQInfo();
  1150 + ColorConsole.WriteLine($"{msmq.QueueName}", ConsoleColor.Green, prefix: $" Queue name: ");
  1151 + ColorConsole.WriteLine($"{msmq.MachineName}", ConsoleColor.Green, prefix: $" Server: ");
  1152 + if (msmq.Status == "Error")
  1153 + {
  1154 + ColorConsole.WriteLine($"{msmq.Status}", ConsoleColor.Red, prefix: $" Status: ");
  1155 + ColorConsole.WriteLine($"{msmq.StatusDescription}", ConsoleColor.Red, prefix: " StatusDescription: ");
  1156 + }
  1157 + else if (msmq.Status != "Ready")
  1158 + {
  1159 + ColorConsole.WriteLine($"{msmq.Status}", ConsoleColor.Yellow, prefix: $" Status: ");
  1160 + ColorConsole.WriteLine($"{msmq.StatusDescription}", ConsoleColor.Yellow, prefix: " StatusDescription: ");
  1161 + }
  1162 + else
  1163 + {
  1164 + ColorConsole.WriteLine($"{msmq.Status}", ConsoleColor.Green, prefix: $" Status: ");
  1165 + ColorConsole.WriteLine($"{msmq.StatusDescription}", ConsoleColor.Green, prefix: " StatusDescription: ");
  1166 + ColorConsole.WriteLine($"{msmq.Id}", ConsoleColor.Green, prefix: " Id: ");
  1167 + ColorConsole.WriteLine($"{msmq.Label}", ConsoleColor.Green, prefix: " Label: ");
  1168 + ColorConsole.WriteLine($"{msmq.Path}", ConsoleColor.Green, prefix: " Path: ");
  1169 + ColorConsole.WriteLine($"{msmq.FormatName}", ConsoleColor.Green, prefix: " FormatName: ");
  1170 + ColorConsole.Write($"{msmq.Transactional}", ConsoleColor.Green, prefix: " Transactional: ", suffix: ", ");
  1171 + ColorConsole.Write($"{msmq.UseJournalQueue}", ConsoleColor.Green, suffix: ", ", prefix: "UseJournalQueue: ");
  1172 + ColorConsole.Write($"{msmq.AccessMode}", ConsoleColor.Green, suffix: ", ", prefix: "AccessMode: ");
  1173 + ColorConsole.Write($"{msmq.CanRead}", ConsoleColor.Green, suffix: ", ", prefix: "CanRead: ");
  1174 + ColorConsole.Write($"{msmq.CanWrite}", ConsoleColor.Green, suffix: ", ", prefix: "CanWrite: ");
  1175 + ColorConsole.WriteLine();
  1176 + ColorConsole.Write($"{msmq.Authenticate}", ConsoleColor.Green, suffix: ", ", prefix: " Authenticate: ");
  1177 + ColorConsole.Write($"{msmq.BasePriority}", ConsoleColor.Green, suffix: ", ", prefix: "BasePriority: ");
  1178 + ColorConsole.Write($"{msmq.EncryptionRequired}", ConsoleColor.Green, suffix: ", ", prefix: "EncryptionRequired: ");
  1179 + ColorConsole.WriteLine();
  1180 + ColorConsole.Write($"{msmq.Formatter}", ConsoleColor.Green, suffix: ", ", prefix: " Formatter: ");
  1181 + ColorConsole.Write($"{msmq.LastModifyTime}", ConsoleColor.Green, suffix: ", ", prefix: "LastModifyTime: ");
  1182 + ColorConsole.WriteLine();
  1183 + ColorConsole.Write($"{msmq.NumOfMessages}", ConsoleColor.Green, suffix: ", ", prefix: " NumOfMessages: ");
  1184 + ColorConsole.Write($"{msmq.MaximumJournalSize}", ConsoleColor.Green, suffix: ", ", prefix: "MaximumJournalSize: ");
  1185 + ColorConsole.Write($"{msmq.MaximumQueueSize}", ConsoleColor.Green, suffix: ", ", prefix: "MaximumQueueSize: ");
  1186 + ColorConsole.WriteLine();
  1187 + }
  1188 + }
  1189 + catch (Exception ex) { ColorConsole.WriteLine(" " + ex.Message, ConsoleColor.Red); }
  1190 + }
  1191 + }
  1192 + #endregion DisplayInfo
  1193 +
  1194 + #region XmlStructure
  1195 + public static class XmlStructure
  1196 + {
  1197 + public static class MSMQManager
  1198 + {
  1199 + public static class General
  1200 + {
  1201 + public static class AccessRights
  1202 + {
  1203 + public static class AccessRight
  1204 + {
  1205 + public static class Attributes
  1206 + {
  1207 + public static class Username { public static class Values { public const string DEFAULT = "Everyone"; } }
  1208 + public static class Right { public static class Values { public const string DEFAULT = nameof(MessageQueueAccessRights.FullControl); } }
  1209 + public static class Control { public static class Values { public const string DEFAULT = nameof(AccessControlEntryType.Allow); } }
  1210 + }
  1211 + }
  1212 + }
  1213 + public static class MessageFiles
  1214 + {
  1215 + public static class Attributes
  1216 + {
  1217 + public static class Directory { public static class Values { public const string DEFAULT = ""; } }
  1218 + public static class SendToMask { public static class Values { public const string DEFAULT = "*.*"; } }
  1219 + public static class ReadToMask { public static class Values { public const string DEFAULT = "*.*"; } }
  1220 + }
  1221 + }
  1222 + public static class DefaultFormatter { public static class Values { public const string DEFAULT = nameof(ActiveXMessageFormatter); } }
  1223 + public static class DefaultEncoding { public static class Values { public const string DEFAULT = nameof(System.Text.Encoding.UTF8); } }
  1224 + }
  1225 +
  1226 + public static class MessageQueues
  1227 + {
  1228 + public static class MessageQueue
  1229 + {
  1230 + public static class Attributes
  1231 + {
  1232 + public static class Key { public static class Values { public const string DEFAULT = ""; } }
  1233 + public static class AddressPrefix { public static class Values { public const string DEFAULT = ""; } }
  1234 + public static class Server { public static class Values { public const string DEFAULT = "."; } }
  1235 + public static class Name { }
  1236 + public static class Label { }
  1237 + public static class Mode
  1238 + {
  1239 + public static class Values
  1240 + {
  1241 + public const string DEFAULT = "In";
  1242 + public static class In { }
  1243 + public static class Out { }
  1244 + }
  1245 + }
  1246 + public static class Formatter
  1247 + {
  1248 + public static class Values
  1249 + {
  1250 + public static class ActiveXMessageFormatter { }
  1251 + public static class BinaryMessageFormatter { }
  1252 + public static class XmlMessageFormatter { }
  1253 + }
  1254 + }
  1255 + public static class Encoding { }
  1256 + }
  1257 + public static class AccessRight
  1258 + {
  1259 + public static class Attributes
  1260 + {
  1261 + public static class Username { public static class Values { public const string DEFAULT = "Everyone"; } }
  1262 + public static class Right { public static class Values { public const string DEFAULT = nameof(MessageQueueAccessRights.FullControl); } }
  1263 + public static class Control { public static class Values { public const string DEFAULT = nameof(AccessControlEntryType.Allow); } }
  1264 + }
  1265 + }
  1266 + }
  1267 + }
  1268 + }
  1269 + }
  1270 + #endregion XmlStructure
  1271 + }
  1272 + #endregion MSMQ
  1273 +
793 1274 }
... ...
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
... ... @@ -359,7 +359,6 @@
359 359 <Compile Include="ConsoleFunction - Tools.cs" />
360 360 <Compile Include="Manager - BackupPackageManager.cs" />
361 361 <Compile Include="Manager - InstallManager.cs" />
362   - <Compile Include="Manager - MSMQManager - MSMQ.cs" />
363 362 <Compile Include="Manager - MSMQManager.cs" />
364 363 <Compile Include="Manager - UserManager.cs" />
365 364 <Compile Include="Manager - SQLDataBaseManager.cs" />
... ...