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,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,16 +74,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
74 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name); 74 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name);
75 MSMQManagerCore.CreateQueue(fullpath, st.Xml_Label); 75 MSMQManagerCore.CreateQueue(fullpath, st.Xml_Label);
76 ColorConsole.WriteLine($"MSMQ:{st.Xml_Name} created.", ConsoleColor.Green); 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 catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); } 84 catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
@@ -140,17 +135,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -140,17 +135,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
140 MSMQ st = p.Parameters as MSMQ; 135 MSMQ st = p.Parameters as MSMQ;
141 try 136 try
142 { 137 {
143 - foreach (var a in st.Xml_AccessRights) 138 + foreach (var accessright in st.Xml_AccessRights)
144 { 139 {
145 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name); 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 catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); } 146 catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
@@ -247,13 +237,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -247,13 +237,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
247 var fullpath = MSMQManagerCore.CreateFullQueuePath(msmq.Xml_AddressPrefix, msmq.Xml_Server, msmq.Xml_Name); 237 var fullpath = MSMQManagerCore.CreateFullQueuePath(msmq.Xml_AddressPrefix, msmq.Xml_Server, msmq.Xml_Name);
248 MSMQManagerCore.Send(fullpath, sp.messagebody, sp.messagelabel, sp.messageformatter, sp.encoding); 238 MSMQManagerCore.Send(fullpath, sp.messagebody, sp.messagelabel, sp.messageformatter, sp.encoding);
249 ColorConsole.WriteLine($"Sending to '{fullpath}' ....", ConsoleColor.Yellow); 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,6 +252,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
262 return o; 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 private static object GetLocalInfo(object parameter, object o) 265 private static object GetLocalInfo(object parameter, object o)
266 { 266 {
267 var config = (parameter as Menu.ExecutorParameter).GetConfig<MSMQManagerXmlProcessor>(); 267 var config = (parameter as Menu.ExecutorParameter).GetConfig<MSMQManagerXmlProcessor>();
@@ -307,8 +307,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -307,8 +307,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
307 MSMQ st = p.Parameters as MSMQ; 307 MSMQ st = p.Parameters as MSMQ;
308 try 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 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name); 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 ColorConsole.WriteLine($"Message peeked from MSMQ:{st.Xml_Name}", ConsoleColor.Green); 314 ColorConsole.WriteLine($"Message peeked from MSMQ:{st.Xml_Name}", ConsoleColor.Green);
313 ColorConsole.WriteLine($" Body: {msgbody}", ConsoleColor.Yellow); 315 ColorConsole.WriteLine($" Body: {msgbody}", ConsoleColor.Yellow);
314 ColorConsole.WriteLine($" Label: {msglabel}", ConsoleColor.Yellow); 316 ColorConsole.WriteLine($" Label: {msglabel}", ConsoleColor.Yellow);
@@ -341,8 +343,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -341,8 +343,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
341 MSMQ st = p.Parameters as MSMQ; 343 MSMQ st = p.Parameters as MSMQ;
342 try 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 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name); 348 var fullpath = MSMQManagerCore.CreateFullQueuePath(st.Xml_AddressPrefix, st.Xml_Server, st.Xml_Name);
347 MSMQManagerCore.Read(fullpath, messageformatter, encoding, out string msgbody, out string msglabel); 349 MSMQManagerCore.Read(fullpath, messageformatter, encoding, out string msgbody, out string msglabel);
348 ColorConsole.WriteLine($"Message read from MSMQ:{st.Xml_Name}", ConsoleColor.Green); 350 ColorConsole.WriteLine($"Message read from MSMQ:{st.Xml_Name}", ConsoleColor.Green);
@@ -550,7 +552,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -550,7 +552,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
550 if (!string.IsNullOrWhiteSpace(label)) { msmq.Label = label; } 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 using (var msmq = new MessageQueue(msmqFullname)) 557 using (var msmq = new MessageQueue(msmqFullname))
556 { 558 {
@@ -571,7 +573,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -571,7 +573,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
571 // | MessageQueueAccessRights.ReceiveMessage 573 // | MessageQueueAccessRights.ReceiveMessage
572 // | MessageQueueAccessRights.SetQueueProperties 574 // | MessageQueueAccessRights.SetQueueProperties
573 // | MessageQueueAccessRights.DeleteQueue; 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,29 +588,74 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
586 msmq.Purge(); 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 using (var msmq = new MessageQueue(msmqFullname)) 595 using (var msmq = new MessageQueue(msmqFullname))
592 { 596 {
  597 + if (Count(msmq) == 0) { return null; }
  598 +
  599 + msmq.Formatter = messageformatter;
593 Message m = msmq.Peek(new TimeSpan(0)); 600 Message m = msmq.Peek(new TimeSpan(0));
594 - m.BodyStream.Position = 0;  
595 - var sr = new System.IO.StreamReader(m.BodyStream);  
596 label = m.Label; 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 using (var msmq = new MessageQueue(msmqFullname)) 613 using (var msmq = new MessageQueue(msmqFullname))
603 { 614 {
  615 + if (Count(msmq) == 0) { return null; }
  616 +
604 //frmA = new System.Messaging.ActiveXMessageFormatter(); 617 //frmA = new System.Messaging.ActiveXMessageFormatter();
605 //frmA = new System.Messaging.BinaryMessageFormatter(); 618 //frmA = new System.Messaging.BinaryMessageFormatter();
606 //frmA = new System.Messaging.XmlMessageFormatter(); 619 //frmA = new System.Messaging.XmlMessageFormatter();
607 msmq.Formatter = messageformatter; 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 // encoding = System.Text.Encoding.UTF8; 659 // encoding = System.Text.Encoding.UTF8;
613 // encoding = System.Text.Encoding.UTF7; 660 // encoding = System.Text.Encoding.UTF7;
614 // encoding = System.Text.Encoding.UTF32; 661 // encoding = System.Text.Encoding.UTF32;
@@ -616,41 +663,55 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -616,41 +663,55 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
616 // encoding = System.Text.Encoding.BigEndianUnicode; 663 // encoding = System.Text.Encoding.BigEndianUnicode;
617 // encoding = System.Text.Encoding.ASCII; 664 // encoding = System.Text.Encoding.ASCII;
618 // encoding = System.Text.Encoding.Default; 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 label = m.Label; 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 body = ""; 704 body = "";
627 label = ""; 705 label = "";
628 using (var msmq = new MessageQueue(msmqFullname)) 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 public static void Send(string msmqFullname, string messagetosend, string messagelabel, IMessageFormatter messageformatter, Encoding encoding) 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,9 +754,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
693 r.Add(nameof(MSMQ.XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Formatter.Values.XmlMessageFormatter)); 754 r.Add(nameof(MSMQ.XmlStructure.MSMQManager.MessageQueues.MessageQueue.Attributes.Formatter.Values.XmlMessageFormatter));
694 return r; 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 case nameof(Encoding.UTF8): return Encoding.UTF8; 761 case nameof(Encoding.UTF8): return Encoding.UTF8;
701 case nameof(Encoding.UTF7): return Encoding.UTF7; 762 case nameof(Encoding.UTF7): return Encoding.UTF7;
@@ -758,6 +819,17 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -758,6 +819,17 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
758 } 819 }
759 catch { return null; } 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 public string un; 833 public string un;
762 public MessageQueueAccessRights ar; 834 public MessageQueueAccessRights ar;
763 public AccessControlEntryType ac; 835 public AccessControlEntryType ac;
@@ -790,4 +862,413 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS @@ -790,4 +862,413 @@ namespace Vrh.Log4Pro.MaintenanceConsole.MSMQManagerNS
790 } 862 }
791 } 863 }
792 #endregion Defaults class 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,7 +359,6 @@
359 <Compile Include="ConsoleFunction - Tools.cs" /> 359 <Compile Include="ConsoleFunction - Tools.cs" />
360 <Compile Include="Manager - BackupPackageManager.cs" /> 360 <Compile Include="Manager - BackupPackageManager.cs" />
361 <Compile Include="Manager - InstallManager.cs" /> 361 <Compile Include="Manager - InstallManager.cs" />
362 - <Compile Include="Manager - MSMQManager - MSMQ.cs" />  
363 <Compile Include="Manager - MSMQManager.cs" /> 362 <Compile Include="Manager - MSMQManager.cs" />
364 <Compile Include="Manager - UserManager.cs" /> 363 <Compile Include="Manager - UserManager.cs" />
365 <Compile Include="Manager - SQLDataBaseManager.cs" /> 364 <Compile Include="Manager - SQLDataBaseManager.cs" />