/* KeePass Password Safe - The Open-Source Password Manager Copyright (C) 2003-2017 Dominik Reichl This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; using KeePassLib.Resources; using KeePassLib.Utility; namespace KeePassLib.Serialization { public static class IocKnownProtocols { public const string Http = "HTTP"; public const string Https = "HTTPS"; public const string WebDav = "WebDAV"; public const string Ftp = "FTP"; } public static class IocKnownProperties { public const string Timeout = "Timeout"; public const string PreAuth = "PreAuth"; public const string UserAgent = "UserAgent"; public const string Expect100Continue = "Expect100Continue"; public const string Passive = "Passive"; } public static class IocPropertyInfoPool { private static List m_l = null; public static IEnumerable PropertyInfos { get { EnsureInitialized(); return m_l; } } private static void EnsureInitialized() { if(m_l != null) return; string strGen = KLRes.General; string strHttp = IocKnownProtocols.Http; string strHttps = IocKnownProtocols.Https; string strWebDav = IocKnownProtocols.WebDav; string strFtp = IocKnownProtocols.Ftp; string[] vGen = new string[] { strGen }; string[] vHttp = new string[] { strHttp, strHttps, strWebDav }; string[] vFtp = new string[] { strFtp }; List l = new List(); l.Add(new IocPropertyInfo(IocKnownProperties.Timeout, typeof(long), KLRes.Timeout + " [ms]", vGen)); l.Add(new IocPropertyInfo(IocKnownProperties.PreAuth, typeof(bool), KLRes.PreAuth, vGen)); l.Add(new IocPropertyInfo(IocKnownProperties.UserAgent, typeof(string), KLRes.UserAgent, vHttp)); l.Add(new IocPropertyInfo(IocKnownProperties.Expect100Continue, typeof(bool), KLRes.Expect100Continue, vHttp)); l.Add(new IocPropertyInfo(IocKnownProperties.Passive, typeof(bool), KLRes.Passive, vFtp)); // l.Add(new IocPropertyInfo("Test", typeof(bool), // "Long long long long long long long long long long long long long long long long long long long long", // new string[] { "Proto 1/9", "Proto 2/9", "Proto 3/9", "Proto 4/9", "Proto 5/9", // "Proto 6/9", "Proto 7/9", "Proto 8/9", "Proto 9/9" })); m_l = l; } public static IocPropertyInfo Get(string strName) { if(string.IsNullOrEmpty(strName)) { Debug.Assert(false); return null; } EnsureInitialized(); foreach(IocPropertyInfo pi in m_l) { if(pi.Name.Equals(strName, StrUtil.CaseIgnoreCmp)) return pi; } return null; } public static bool Add(IocPropertyInfo pi) { if(pi == null) { Debug.Assert(false); return false; } // Name must be non-empty string strName = pi.Name; if(string.IsNullOrEmpty(strName)) { Debug.Assert(false); return false; } IocPropertyInfo piEx = Get(strName); // Ensures initialized if(piEx != null) { Debug.Assert(false); return false; } // Exists already m_l.Add(pi); return true; } } }