public static async Task <IDnsProvider> GetDnsProvider(string providerType, Dictionary <string, string> credentials, Dictionary <string, string> parameters, ILog log = null) { ChallengeProviderDefinition providerDefinition; IDnsProvider dnsAPIProvider = null; if (!string.IsNullOrEmpty(providerType)) { providerDefinition = (await ChallengeProviders.GetChallengeAPIProviders()).FirstOrDefault(p => p.Id == providerType); } else { return(null); } if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.PYTHON_HELPER) { if (credentials == null || !credentials.Any()) { throw new CredentialsRequiredException(); } dnsAPIProvider = new LibcloudDNSProvider(credentials); } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.INTERNAL) { if (credentials == null) { throw new CredentialsRequiredException(); } // instantiate/initialise the required DNS provider if (providerDefinition.Id == DnsProviderAWSRoute53.Definition.Id) { dnsAPIProvider = new DnsProviderAWSRoute53(credentials); } else if (providerDefinition.Id == DnsProviderAzure.Definition.Id) { var azureDns = new DnsProviderAzure(credentials); dnsAPIProvider = azureDns; } else if (providerDefinition.Id == DnsProviderCloudflare.Definition.Id) { dnsAPIProvider = new DnsProviderCloudflare(credentials); } else if (providerDefinition.Id == DnsProviderGoDaddy.Definition.Id) { dnsAPIProvider = new DnsProviderGoDaddy(credentials); } else if (providerDefinition.Id == DnsProviderSimpleDNSPlus.Definition.Id) { dnsAPIProvider = new DnsProviderSimpleDNSPlus(credentials); } else if (providerDefinition.Id == DnsProviderDnsMadeEasy.Definition.Id) { dnsAPIProvider = new DnsProviderDnsMadeEasy(credentials); } else if (providerDefinition.Id == DnsProviderOvh.Definition.Id) { dnsAPIProvider = new DnsProviderOvh(credentials); } else if (providerDefinition.Id == DnsProviderAliyun.Definition.Id) { dnsAPIProvider = new DnsProviderAliyun(credentials); } else if (providerDefinition.Id == "DNS01.API.MSDNS") // DnsProviderMSDNS.Definition.Id - avoid instantiating provider due to possible dll loading issues { dnsAPIProvider = TryGetMsDNSProvider(credentials, parameters, log); } else if (providerDefinition.Id == DnsProviderAcmeDns.Definition.Id) { dnsAPIProvider = new DnsProviderAcmeDns(credentials, parameters, Util.GetAppDataFolder()); } else if (providerDefinition.Id == DnsProviderNameCheap.Definition.Id) { dnsAPIProvider = new DnsProviderNameCheap(credentials); } else if (providerDefinition.Id == DnsProviderTransIP.Definition.Id) { dnsAPIProvider = new DnsProviderTransIP(credentials); } } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.MANUAL) { if (providerDefinition.Id == DNS.DnsProviderManual.Definition.Id) { dnsAPIProvider = new DNS.DnsProviderManual(); } } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.CUSTOM_SCRIPT) { if (providerDefinition.Id == DNS.DnsProviderScripting.Definition.Id) { dnsAPIProvider = new DNS.DnsProviderScripting(parameters); } } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.POWERSHELL) { if (providerDefinition.Config.Contains("Provider=Certify.Providers.DNS.PoshACME")) { var scriptPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Scripts\DNS\PoshACME\Plugins"); var ps = new DNS.DnsProviderPoshACME(parameters, credentials, scriptPath); ps.DelegateProviderDefinition = providerDefinition; dnsAPIProvider = ps; } } if (dnsAPIProvider != null) { await dnsAPIProvider.InitProvider(parameters, log); } return(dnsAPIProvider); }
public static async Task <IDnsProvider> GetDnsProvider(string providerType, Dictionary <string, string> credentials, Dictionary <string, string> parameters, ILog log = null) { ProviderDefinition providerDefinition; IDnsProvider dnsAPIProvider = null; if (!string.IsNullOrEmpty(providerType)) { providerDefinition = (await ChallengeProviders.GetChallengeAPIProviders()).FirstOrDefault(p => p.Id == providerType); } else { return(null); } if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.PYTHON_HELPER) { if (credentials == null || !credentials.Any()) { throw new CredentialsRequiredException(); } dnsAPIProvider = new LibcloudDNSProvider(credentials); } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.INTERNAL) { if (credentials == null || !credentials.Any()) { throw new CredentialsRequiredException(); } // instantiate/initialise the required DNS provider if (providerDefinition.Id == DnsProviderAWSRoute53.Definition.Id) { dnsAPIProvider = new DnsProviderAWSRoute53(credentials); } else if (providerDefinition.Id == DnsProviderAzure.Definition.Id) { var azureDns = new DnsProviderAzure(credentials); dnsAPIProvider = azureDns; } else if (providerDefinition.Id == DnsProviderCloudflare.Definition.Id) { dnsAPIProvider = new DnsProviderCloudflare(credentials); } else if (providerDefinition.Id == DnsProviderGoDaddy.Definition.Id) { dnsAPIProvider = new DnsProviderGoDaddy(credentials); } else if (providerDefinition.Id == DnsProviderSimpleDNSPlus.Definition.Id) { dnsAPIProvider = new DnsProviderSimpleDNSPlus(credentials); } else if (providerDefinition.Id == DnsProviderDnsMadeEasy.Definition.Id) { dnsAPIProvider = new DnsProviderDnsMadeEasy(credentials); } else if (providerDefinition.Id == DnsProviderOvh.Definition.Id) { dnsAPIProvider = new DnsProviderOvh(credentials); } else if (providerDefinition.Id == DnsProviderAliyun.Definition.Id) { dnsAPIProvider = new DnsProviderAliyun(credentials); } } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.MANUAL) { if (providerDefinition.Id == DNS.DnsProviderManual.Definition.Id) { dnsAPIProvider = new DNS.DnsProviderManual(parameters); } } else if (providerDefinition.HandlerType == Models.Config.ChallengeHandlerType.CUSTOM_SCRIPT) { if (providerDefinition.Id == DNS.DnsProviderScripting.Definition.Id) { dnsAPIProvider = new DNS.DnsProviderScripting(parameters); } } await dnsAPIProvider.InitProvider(log); return(dnsAPIProvider); }