diff --git a/VAR.Toolbox/Code/ProxyCmdExecutorFactory.cs b/VAR.Toolbox/Code/ProxyCmdExecutorFactory.cs deleted file mode 100644 index 08fc3e3..0000000 --- a/VAR.Toolbox/Code/ProxyCmdExecutorFactory.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; - -namespace VAR.Toolbox.Code -{ - public class ProxyCmdExecutorFactory - { - public static IProxyCmdExecutor CreateFromConfig(string config) - { - if (string.IsNullOrEmpty(config) || config.StartsWith("Dummy:")) - { - return new ProxyCmdExecutorDummy(); - } - if (config.StartsWith("SqlServer:")) - { - string configSqlServer = config.Substring("SqlServer:".Length); - return new ProxyCmdExecutorThroughSQLServer(configSqlServer); - } - if (config.StartsWith("WMIC:")) - { - string configWMIC = config.Substring("WMIC:".Length); - return new ProxyCmdExecutorWMIC(configWMIC); - } - throw new NotImplementedException(string.Format("Cant create IProxyCmdExecutor with this config: {0}", config)); - } - } -} diff --git a/VAR.Toolbox/Code/IProxyCmdExecutor.cs b/VAR.Toolbox/Code/ProxyCmdExecutors/IProxyCmdExecutor.cs similarity index 61% rename from VAR.Toolbox/Code/IProxyCmdExecutor.cs rename to VAR.Toolbox/Code/ProxyCmdExecutors/IProxyCmdExecutor.cs index 5acf510..ee2f697 100644 --- a/VAR.Toolbox/Code/IProxyCmdExecutor.cs +++ b/VAR.Toolbox/Code/ProxyCmdExecutors/IProxyCmdExecutor.cs @@ -1,7 +1,9 @@ -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.ProxyCmdExecutors { public interface IProxyCmdExecutor { + string Name { get; } + bool ExecuteCmd(string cmd, IOutputHandler outputHandler); } } diff --git a/VAR.Toolbox/Code/ProxyCmdExecutorDummy.cs b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorDummy.cs similarity index 63% rename from VAR.Toolbox/Code/ProxyCmdExecutorDummy.cs rename to VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorDummy.cs index ed1556a..74b45b3 100644 --- a/VAR.Toolbox/Code/ProxyCmdExecutorDummy.cs +++ b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorDummy.cs @@ -1,7 +1,11 @@ -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.ProxyCmdExecutors { public class ProxyCmdExecutorDummy : IProxyCmdExecutor { + public string Name { get { return "Dummy"; } } + + public ProxyCmdExecutorDummy(string config) { } + public bool ExecuteCmd(string cmdString, IOutputHandler outputHandler) { outputHandler.OutputLine(string.Format("DummyExecution: {0}", cmdString)); diff --git a/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorFactory.cs b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorFactory.cs new file mode 100644 index 0000000..fcdba5a --- /dev/null +++ b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorFactory.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace VAR.Toolbox.Code.ProxyCmdExecutors +{ + public class ProxyCmdExecutorFactory + { + private static Dictionary _dictProxyCmdExecutors = null; + + private static Dictionary GetDict() + { + if (_dictProxyCmdExecutors != null) + { + return _dictProxyCmdExecutors; + } + + Type iTextCoder = typeof(IProxyCmdExecutor); + IEnumerable toolFormTypes = ReflectionUtils.GetTypesOfInterface(iTextCoder); + _dictProxyCmdExecutors = toolFormTypes.ToDictionary(t => + { + IProxyCmdExecutor proxyCmdExecutor = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(t) as IProxyCmdExecutor; + return proxyCmdExecutor.Name; + }); + + return _dictProxyCmdExecutors; + } + + public static IProxyCmdExecutor CreateFromConfig(string config) + { + Dictionary dict = GetDict(); + int indexOfColon = config.IndexOf(':'); + string name = config.Substring(0, indexOfColon < 0 ? config.Length : indexOfColon); + string nextConfig = config.Substring(indexOfColon + 1); + if (string.IsNullOrEmpty(name)) + { + return new ProxyCmdExecutorDummy(string.Empty); + } + if (dict.ContainsKey(name) == false) + { + throw new NotImplementedException(string.Format("Cant create IProxyCmdExecutor with this config: {0}", config)); + } + Type proxyCmdExecutorType = dict[name]; + + IProxyCmdExecutor proxyCmdExecutor = Activator.CreateInstance(proxyCmdExecutorType, new object[] { nextConfig }) as IProxyCmdExecutor; + + return proxyCmdExecutor; + } + } +} diff --git a/VAR.Toolbox/Code/ProxyCmdExecutorThroughSQLServer.cs b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorThroughSQLServer.cs similarity index 90% rename from VAR.Toolbox/Code/ProxyCmdExecutorThroughSQLServer.cs rename to VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorThroughSQLServer.cs index 1e92cfd..a9b5c35 100644 --- a/VAR.Toolbox/Code/ProxyCmdExecutorThroughSQLServer.cs +++ b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorThroughSQLServer.cs @@ -1,10 +1,12 @@ using System; using System.Data.SqlClient; -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.ProxyCmdExecutors { public class ProxyCmdExecutorThroughSQLServer : IProxyCmdExecutor { + public string Name { get { return "SqlServer"; } } + private readonly string _connectionString = null; public ProxyCmdExecutorThroughSQLServer(string connectionString) diff --git a/VAR.Toolbox/Code/ProxyCmdExecutorWMIC.cs b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorWMIC.cs similarity index 89% rename from VAR.Toolbox/Code/ProxyCmdExecutorWMIC.cs rename to VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorWMIC.cs index 5e8517c..afa34d0 100644 --- a/VAR.Toolbox/Code/ProxyCmdExecutorWMIC.cs +++ b/VAR.Toolbox/Code/ProxyCmdExecutors/ProxyCmdExecutorWMIC.cs @@ -1,9 +1,11 @@ using System.Diagnostics; -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.ProxyCmdExecutors { public class ProxyCmdExecutorWMIC : IProxyCmdExecutor { + public string Name { get { return "WMIC"; } } + private string _configWMIC; public ProxyCmdExecutorWMIC(string configWMIC) diff --git a/VAR.Toolbox/Code/TextCoderFactory.cs b/VAR.Toolbox/Code/TextCoderFactory.cs deleted file mode 100644 index 923bd06..0000000 --- a/VAR.Toolbox/Code/TextCoderFactory.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; - -namespace VAR.Toolbox.Code -{ - public class TextCoderFactory - { - public static string[] GetSupportedCoders() - { - return new string[] { - TextCoderBase64ToAscii.Name, - TextCoderBase64ToUtf8.Name, - TextCoderHexToUtf8.Name, - TextCoderHexToAscii.Name, - }; - } - - public static ITextCoder CreateFromName(string name) - { - if (name == TextCoderBase64ToAscii.Name) - { - return new TextCoderBase64ToAscii(); - } - if (name == TextCoderBase64ToUtf8.Name) - { - return new TextCoderBase64ToUtf8(); - } - if (name == TextCoderHexToUtf8.Name) - { - return new TextCoderHexToUtf8(); - } - if (name == TextCoderHexToAscii.Name) - { - return new TextCoderHexToAscii(); - } - throw new NotImplementedException(string.Format("Cant create ITextCoder with this name: {0}", name)); - } - } -} diff --git a/VAR.Toolbox/Code/ITextCoder.cs b/VAR.Toolbox/Code/TextCoders/ITextCoder.cs similarity index 71% rename from VAR.Toolbox/Code/ITextCoder.cs rename to VAR.Toolbox/Code/TextCoders/ITextCoder.cs index fafb944..02d9ae1 100644 --- a/VAR.Toolbox/Code/ITextCoder.cs +++ b/VAR.Toolbox/Code/TextCoders/ITextCoder.cs @@ -1,7 +1,9 @@ -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.TextCoders { public interface ITextCoder { + string Name { get; } + bool NeedsKey { get; } string Encode(string input, string key); diff --git a/VAR.Toolbox/Code/TextCoderBase64Ascii.cs b/VAR.Toolbox/Code/TextCoders/TextCoderBase64Ascii.cs similarity index 86% rename from VAR.Toolbox/Code/TextCoderBase64Ascii.cs rename to VAR.Toolbox/Code/TextCoders/TextCoderBase64Ascii.cs index 44f2822..9479c85 100644 --- a/VAR.Toolbox/Code/TextCoderBase64Ascii.cs +++ b/VAR.Toolbox/Code/TextCoders/TextCoderBase64Ascii.cs @@ -1,11 +1,11 @@ using System; using System.Text; -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.TextCoders { public class TextCoderBase64ToAscii : ITextCoder { - public const string Name = "Base64ToAscii"; + public string Name { get { return "Base64ToAscii"; } } public bool NeedsKey { get { return false; } } diff --git a/VAR.Toolbox/Code/TextCoderBase64Utf8.cs b/VAR.Toolbox/Code/TextCoders/TextCoderBase64Utf8.cs similarity index 87% rename from VAR.Toolbox/Code/TextCoderBase64Utf8.cs rename to VAR.Toolbox/Code/TextCoders/TextCoderBase64Utf8.cs index c8bda27..761ba3f 100644 --- a/VAR.Toolbox/Code/TextCoderBase64Utf8.cs +++ b/VAR.Toolbox/Code/TextCoders/TextCoderBase64Utf8.cs @@ -1,11 +1,11 @@ using System; using System.Text; -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.TextCoders { public class TextCoderBase64ToUtf8 : ITextCoder { - public const string Name = "Base64ToUtf8"; + public string Name { get { return "Base64ToUtf8"; } } public bool NeedsKey { get { return false; } } diff --git a/VAR.Toolbox/Code/TextCoders/TextCoderFactory.cs b/VAR.Toolbox/Code/TextCoders/TextCoderFactory.cs new file mode 100644 index 0000000..fc36129 --- /dev/null +++ b/VAR.Toolbox/Code/TextCoders/TextCoderFactory.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace VAR.Toolbox.Code.TextCoders +{ + public class TextCoderFactory + { + private static Dictionary _dictTextCoderTypes = null; + + private static Dictionary GetDict() + { + if (_dictTextCoderTypes != null) + { + return _dictTextCoderTypes; + } + + Type iTextCoder = typeof(ITextCoder); + IEnumerable toolFormTypes = ReflectionUtils.GetTypesOfInterface(iTextCoder); + _dictTextCoderTypes = toolFormTypes.ToDictionary(t => + { + ITextCoder textCoder = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(t) as ITextCoder; + return textCoder.Name; + }); + + return _dictTextCoderTypes; + } + + public static string[] GetSupportedCoders() + { + Dictionary dict = GetDict(); + return dict.Select(p => p.Key).ToArray(); + } + + public static ITextCoder CreateFromName(string name) + { + Dictionary dict = GetDict(); + if (dict.ContainsKey(name) == false) + { + throw new NotImplementedException(string.Format("Cant create ITextCoder with this name: {0}", name)); + } + Type textCoder = dict[name]; + return Activator.CreateInstance(textCoder) as ITextCoder; + } + } +} diff --git a/VAR.Toolbox/Code/TextCoderHexToAscii.cs b/VAR.Toolbox/Code/TextCoders/TextCoderHexToAscii.cs similarity index 85% rename from VAR.Toolbox/Code/TextCoderHexToAscii.cs rename to VAR.Toolbox/Code/TextCoders/TextCoderHexToAscii.cs index 6422867..c866e5c 100644 --- a/VAR.Toolbox/Code/TextCoderHexToAscii.cs +++ b/VAR.Toolbox/Code/TextCoders/TextCoderHexToAscii.cs @@ -1,10 +1,10 @@ using System.Text; -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.TextCoders { public class TextCoderHexToAscii : ITextCoder { - public const string Name = "HexToAscii"; + public string Name { get { return "HexToAscii"; } } public bool NeedsKey { get { return false; } } diff --git a/VAR.Toolbox/Code/TextCoderHexToUtf8.cs b/VAR.Toolbox/Code/TextCoders/TextCoderHexToUtf8.cs similarity index 85% rename from VAR.Toolbox/Code/TextCoderHexToUtf8.cs rename to VAR.Toolbox/Code/TextCoders/TextCoderHexToUtf8.cs index 17594cb..e71d999 100644 --- a/VAR.Toolbox/Code/TextCoderHexToUtf8.cs +++ b/VAR.Toolbox/Code/TextCoders/TextCoderHexToUtf8.cs @@ -1,10 +1,10 @@ using System.Text; -namespace VAR.Toolbox.Code +namespace VAR.Toolbox.Code.TextCoders { public class TextCoderHexToUtf8 : ITextCoder { - public const string Name = "HexToUtf8"; + public string Name { get { return "HexToUtf8"; } } public bool NeedsKey { get { return false; } } diff --git a/VAR.Toolbox/UI/Tools/FrmCoder.cs b/VAR.Toolbox/UI/Tools/FrmCoder.cs index 797627b..3e90678 100644 --- a/VAR.Toolbox/UI/Tools/FrmCoder.cs +++ b/VAR.Toolbox/UI/Tools/FrmCoder.cs @@ -1,6 +1,6 @@ using System; using System.Windows.Forms; -using VAR.Toolbox.Code; +using VAR.Toolbox.Code.TextCoders; namespace VAR.Toolbox.UI { diff --git a/VAR.Toolbox/UI/Tools/FrmProxyCmd.cs b/VAR.Toolbox/UI/Tools/FrmProxyCmd.cs index 9033b8d..f88166f 100644 --- a/VAR.Toolbox/UI/Tools/FrmProxyCmd.cs +++ b/VAR.Toolbox/UI/Tools/FrmProxyCmd.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Threading; using System.Windows.Forms; using VAR.Toolbox.Code; +using VAR.Toolbox.Code.ProxyCmdExecutors; namespace VAR.Toolbox.UI { diff --git a/VAR.Toolbox/VAR.Toolbox.csproj b/VAR.Toolbox/VAR.Toolbox.csproj index 8460ef5..a34cba0 100644 --- a/VAR.Toolbox/VAR.Toolbox.csproj +++ b/VAR.Toolbox/VAR.Toolbox.csproj @@ -74,10 +74,10 @@ Code\Json\ParserContext.cs - + - - + + @@ -108,18 +108,18 @@ - + - + - - - + + + - - - + + + @@ -214,6 +214,7 @@ +