예제 #1
0
        private Azure(RestClient restClient, string subscriptionId, string tenantId, IAuthenticated authenticated)
        {
            resourceManager          = ResourceManager.Fluent.ResourceManager.Authenticate(restClient).WithSubscription(subscriptionId);
            storageManager           = StorageManager.Authenticate(restClient, subscriptionId);
            computeManager           = ComputeManager.Authenticate(restClient, subscriptionId);
            networkManager           = NetworkManager.Authenticate(restClient, subscriptionId);
            batchManager             = BatchManager.Authenticate(restClient, subscriptionId);
            keyVaultManager          = KeyVaultManager.Authenticate(restClient, subscriptionId, tenantId);
            trafficManager           = TrafficManager.Fluent.TrafficManager.Authenticate(restClient, subscriptionId);
            dnsZoneManager           = DnsZoneManager.Authenticate(restClient, subscriptionId);
            sqlManager               = SqlManager.Authenticate(restClient, subscriptionId);
            redisManager             = RedisManager.Authenticate(restClient, subscriptionId);
            cdnManager               = CdnManager.Authenticate(restClient, subscriptionId);
            appServiceManager        = AppServiceManager.Authenticate(restClient, subscriptionId, tenantId);
            searchManager            = SearchManager.Authenticate(restClient, subscriptionId);
            serviceBusManager        = ServiceBusManager.Authenticate(restClient, subscriptionId);
            containerInstanceManager = ContainerInstanceManager.Authenticate(restClient, subscriptionId);
            registryManager          = RegistryManager.Authenticate(restClient, subscriptionId);
            containerServiceManager  = ContainerServiceManager.Authenticate(restClient, subscriptionId);
            cosmosDBManager          = CosmosDBManager.Authenticate(restClient, subscriptionId);
            authorizationManager     = AuthorizationManager.Authenticate(restClient, subscriptionId);
            msiManager               = MsiManager.Authenticate(restClient, subscriptionId);
            batchAIManager           = BatchAIManager.Authenticate(restClient, subscriptionId);
            monitorManager           = MonitorManager.Authenticate(restClient, subscriptionId);
            eventHubManager          = EventHubManager.Authenticate(restClient, subscriptionId);

            SubscriptionId     = subscriptionId;
            this.authenticated = authenticated;
        }
예제 #2
0
 ///GENMHASH:B22FA99F4432342EBBDB2AB426A8D2A2:DB92CE96AE133E965FE6DE31D475D7ED
 internal AppServiceBaseImpl(
     string name,
     SiteInner innerObject,
     SiteConfigResourceInner configObject,
     IAppServiceManager manager)
     : base(name, innerObject, configObject, manager)
 {
 }
 public RestartCommandHandler(IInstallDirectoryManager installDirectory,
                              IAppServiceManager appService,
                              ILog log)
 {
     _installDirectory = installDirectory;
     _appService       = appService;
     _log = log;
 }
예제 #4
0
 ///GENMHASH:B22FA99F4432342EBBDB2AB426A8D2A2:DB92CE96AE133E965FE6DE31D475D7ED
 internal WebAppImpl(
     string name,
     SiteInner innerObject,
     SiteConfigResourceInner configObject,
     IAppServiceManager manager)
     : base(name, innerObject, configObject, manager)
 {
     kuduClient = new KuduClient(this);
 }
 private void RemoveCertificate(IAppServiceManager webSiteClient, IAppServiceCertificate s, AzureWebAppSettings setting)
 {
     try
     {
         webSiteClient.AppServiceCertificates.DeleteByResourceGroup(setting.ServicePlanResourceGroupName ?? setting.ResourceGroupName, s.Name);
     }
     catch
     {
     }
 }
 public InstallCommandHandler(IPackageRepositoryManagerFactory packageRepositoryFactory,
                              IInstallDirectoryManager installDirectory,
                              IAppServiceManager appService,
                              ILog log)
 {
     _packageRepositoryFactory = packageRepositoryFactory;
     _installDirectory         = installDirectory;
     _appService = appService;
     _log        = log;
 }
예제 #7
0
 public StatusCommandHandler(IInstallDirectoryManager installDirectory,
                             IAppServiceManager appService,
                             ILog log)
 {
     _installDirectory = installDirectory;
     _appService       = appService;
     _log        = log;
     _serializer = new JsonSerializer {
         NullValueHandling = NullValueHandling.Ignore
     };
 }
        ///GENMHASH:7165E4A72787EF020E1C59029B4D2D13:A0244A057D0D2A3944D2A1B6B5FC52D6

        internal DeploymentSlotImpl(
            string name,
            SiteInner innerObject,
            SiteConfigResourceInner configObject,
            WebAppImpl parent,
            IAppServiceManager manager)
            : base(Regex.Replace(name, ".*/", ""), innerObject, configObject, manager)
        {
            this.name          = Regex.Replace(name, ".*/", "");
            this.parent        = parent;
            Inner.ServerFarmId = parent.AppServicePlanId();
        }
 internal FunctionAppImpl(string name, SiteInner innerObject, SiteConfigResourceInner configObject, IAppServiceManager manager)
     : base(name, innerObject, configObject, manager)
 {
     kuduCredentials = new KuduCredentials(this);
 }
 public FunctionDeploymentSlotImpl(string name, SiteInner innerObject, SiteConfigResourceInner configObject,
                                   SiteLogsConfigInner logConfig, FunctionAppImpl parent, IAppServiceManager manager)
     : base(name, innerObject, configObject, logConfig, parent, manager)
 {
 }
예제 #11
0
        private async Task <int> OnExecuteAsync(CommandLineApplication app, CancellationToken cancellationToken = default)
        {
            var authenticationOptions            = AuthenticationOptions.BuildFrom(this.UseAzCliDevAuth, this.TenantId);
            IAppServiceManager appServiceManager = AppServiceManagerSource.Get(
                authenticationOptions, this.SubscriptionId);
            IWebAppAuthentication  webAppAuthConfig;
            ManagedServiceIdentity managedIdentity;
            IFunctionApp           function = null;

            try
            {
                function = appServiceManager.FunctionApps.GetByResourceGroup(this.ResourceGroupName, this.AppName);
            }
            catch (NullReferenceException)
            {
                // Unhelpfully, we seem to get a null reference exception if the app isn't found
            }

            if (function != null)
            {
                managedIdentity  = function.Inner.Identity;
                webAppAuthConfig = await function.GetAuthenticationConfigAsync(cancellationToken).ConfigureAwait(false);
            }
            else
            {
                IWebApp webApp = appServiceManager.WebApps.GetByResourceGroup(this.ResourceGroupName, this.AppName);
                if (webApp == null)
                {
                    app.Error.WriteLine($"Unable to find either a Function or Web App in resource group '{this.ResourceGroupName}' called '{this.AppName}'");
                    return(-1);
                }

                managedIdentity  = webApp.Inner.Identity;
                webAppAuthConfig = await webApp.GetAuthenticationConfigAsync(cancellationToken).ConfigureAwait(false);
            }

            if (webAppAuthConfig.Inner.Enabled == true)
            {
                app.Out.WriteLine($"Default Easy Auth: {webAppAuthConfig.Inner.DefaultProvider}");
                app.Out.WriteLine($" Client ID: {webAppAuthConfig.Inner.ClientId}");
            }
            else
            {
                app.Out.WriteLine("Easy Auth not enabled");
            }

            if (managedIdentity == null)
            {
                app.Out.WriteLine("No managed identity");
            }
            else
            {
                app.Out.WriteLine("Managed identity:");
                app.Out.WriteLine($" Type:                 {managedIdentity.Type}");
                app.Out.WriteLine($" TenantId:             {managedIdentity.TenantId}");
                app.Out.WriteLine($" PrincipalId:          {managedIdentity.PrincipalId}");

                if (managedIdentity.UserAssignedIdentities != null)
                {
                    foreach ((string id, ManagedServiceIdentityUserAssignedIdentitiesValue value) in managedIdentity.UserAssignedIdentities)
                    {
                        app.Out.WriteLine($" UserAssignedIdentity: Id = {id}, ClientId = {value.ClientId}, PrincipalId = {value.PrincipalId}");
                    }
                }
            }

            return(0);
        }
        public async Task Install(ICertificateInstallModel model)
        {
            logger.LogInformation("Starting installation of certificate {Thumbprint} for {Host}", model.CertificateInfo.Certificate.Thumbprint, model.Host);
            var cert = model.CertificateInfo;

            foreach (var setting in this.settings)
            {
                logger.LogInformation("Installing certificate for web app {WebApp}", setting.WebAppName);
                try
                {
                    IAppServiceManager appServiceManager = GetAppServiceManager(setting);
                    var         s          = appServiceManager.WebApps.GetByResourceGroup(setting.ResourceGroupName, setting.WebAppName);
                    IWebAppBase siteOrSlot = s;
                    if (!string.IsNullOrEmpty(setting.SiteSlotName))
                    {
                        var slot = s.DeploymentSlots.GetByName(setting.SiteSlotName);
                        siteOrSlot = slot;
                    }

                    var existingCerts = await appServiceManager.AppServiceCertificates.ListByResourceGroupAsync(setting.ServicePlanResourceGroupName ?? setting.ResourceGroupName);

                    if (existingCerts.Where(_ => _.RegionName == s.RegionName).All(_ => _.Thumbprint != cert.Certificate.Thumbprint))
                    {
                        await appServiceManager.AppServiceCertificates.Define($"{cert.Certificate.Thumbprint}-{model.Host}-{s.RegionName}").WithRegion(s.RegionName).WithExistingResourceGroup(setting.ServicePlanResourceGroupName ?? setting.ResourceGroupName).WithPfxByteArray(model.CertificateInfo.PfxCertificate).WithPfxPassword(model.CertificateInfo.Password).CreateAsync();
                    }



                    var sslStates = siteOrSlot.HostNameSslStates;

                    var domainSslMappings = new List <KeyValuePair <string, HostNameSslState> >(sslStates.Where(_ => _.Key.Contains($"{model.Host}")));

                    if (domainSslMappings.Any())
                    {
                        foreach (var domainMapping in domainSslMappings)
                        {
                            string hostName = domainMapping.Value.Name;
                            if (domainMapping.Value.Thumbprint == cert.Certificate.Thumbprint)
                            {
                                continue;
                            }
                            logger.LogInformation("Binding certificate {Thumbprint} to {Host}", model.CertificateInfo.Certificate.Thumbprint, hostName);
                            var binding = new HostNameBindingInner()
                            {
                                SslState   = setting.UseIPBasedSSL ? SslState.IpBasedEnabled : SslState.SniEnabled,
                                Thumbprint = model.CertificateInfo.Certificate.Thumbprint
                            };
                            if (!string.IsNullOrEmpty(setting.SiteSlotName))
                            {
                                await appServiceManager.Inner.WebApps.CreateOrUpdateHostNameBindingSlotAsync(setting.ResourceGroupName, setting.WebAppName, hostName, binding, setting.SiteSlotName);
                            }
                            else
                            {
                                await appServiceManager.Inner.WebApps.CreateOrUpdateHostNameBindingAsync(setting.ResourceGroupName, setting.WebAppName, hostName, binding);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    logger.LogCritical(e, "Unable to install certificate for '{WebApp}'", setting.WebAppName);
                    throw;
                }
            }
        }
예제 #13
0
 internal FunctionAppImpl(string name, SiteInner innerObject, SiteConfigResourceInner configObject,
                          SiteLogsConfigInner logConfig, IAppServiceManager manager)
     : base(name, innerObject, configObject, logConfig, manager)
 {
     functionCredentials = new FunctionCredentials(this);
 }
 public DeploymentSlotImpl(string name, SiteInner innerObject, SiteConfigResourceInner configObject,
                           SiteLogsConfigInner logConfig, WebAppImpl parent, IAppServiceManager manager)
     : base(name, innerObject, configObject, logConfig, parent, manager)
 {
     kuduClient = new KuduClient(this);
 }
예제 #15
0
 private async Task RemoveCertificate(IAppServiceManager webSiteClient, IAppServiceCertificate s, AzureWebAppSettings setting)
 {
     await webSiteClient.AppServiceCertificates.DeleteByResourceGroupAsync(setting.ServicePlanResourceGroupName ?? setting.ResourceGroupName, s.Name);
 }
 public DeploymentSlotImpl(string name, SiteInner innerObject, SiteConfigResourceInner configObject, WebAppImpl parent, IAppServiceManager manager)
     : base(name, innerObject, configObject, parent, manager)
 {
 }