private bool UpdateSetting(ref RoleSettings rs, ServiceConfigurationSchema.ConfigurationSetting cs)
        {
            bool done = false;
            int count = (rs.ConfigurationSettings == null) ? 0 : rs.ConfigurationSettings.Length;
            for (int i = 0; i < count; i++)
            {
                ServiceConfigurationSchema.ConfigurationSetting setting = rs.ConfigurationSettings[i];

                if (setting.name == cs.name)
                {
                    setting.value = cs.value;
                    done = true;
                }
            }
            return done;
        }
        /// <summary>
        /// Wait until a certificate has been added to a hosted service.
        /// </summary>
        private void WaitForCertificateToBeAdded(ServiceConfigurationSchema.Certificate certificate)
        {
            Debug.Assert(
                !string.IsNullOrEmpty(_hostedServiceName),
                "_hostedServiceName cannot be null or empty.");

            CertificateList certificates = null;
            do
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(500));
                certificates = RetryCall<CertificateList>(subscription =>
                    Channel.ListCertificates(subscription, _hostedServiceName));
            }
            while (certificates == null || certificates.Count<Certificate>(c => c.Thumbprint.Equals(
                certificate.thumbprint, StringComparison.OrdinalIgnoreCase)) < 1);
        }
示例#3
0
        private void ConfigureRoleStorageAccountKeys(ServiceConfigurationSchema.ServiceConfiguration config, string primaryKey)
        {
            string cloudStorageFormat = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2}";
            string cloudStorageFormatCnHttp = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};" +
                                          "BlobEndpoint=http://{1}.blob.core.chinacloudapi.cn/;" +
                                          "QueueEndpoint=http://{1}.queue.core.chinacloudapi.cn/;" +
                                          "TableEndpoint=http://{1}.table.core.chinacloudapi.cn/";
            string cloudStorageFormatCnHttps = "DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2};" +
                                          "BlobEndpoint=https://{1}.blob.core.chinacloudapi.cn/;" +
                                          "QueueEndpoint=https://{1}.queue.core.chinacloudapi.cn/;" +
                                          "TableEndpoint=https://{1}.table.core.chinacloudapi.cn/";

            string httpUrlformatBasedOnEnv = Utils.IsChinaCloud == false ? cloudStorageFormat : cloudStorageFormatCnHttp;
            string httpsUrlformatBasedOnEnv = Utils.IsChinaCloud == false ? cloudStorageFormat : cloudStorageFormatCnHttps;

            string storageHttpKey = string.Format(CultureInfo.InvariantCulture, httpUrlformatBasedOnEnv, "http", this.StorageAccount, primaryKey);
            string storageHttpsKey = string.Format(CultureInfo.InvariantCulture, httpsUrlformatBasedOnEnv, "https", this.StorageAccount, primaryKey);

            for (int i = 0; i < config.Role.Length; i++)
            {
                ServiceConfigurationSchema.ConfigurationSetting newSetting;
                newSetting = new ServiceConfigurationSchema.ConfigurationSetting() { name = Resources.DataConnectionString, value = storageHttpKey };
                UpdateSetting(ref config.Role[i], newSetting);

                newSetting = new ServiceConfigurationSchema.ConfigurationSetting() { name = Resources.DiagnosticsConnectionString, value = storageHttpsKey };
                UpdateSetting(ref config.Role[i], newSetting);
            }
            SerializationUtils.SerializeXmlFile<ServiceConfigurationSchema.ServiceConfiguration>(config, CloudCSCFGFile);
        }
        private void UpdateServiceConfigurations(AzureService service, string forwarderName, ServiceConfigurationSchema.Certificate certElement, string encryptedPassword)
        {
            foreach (ServiceConfiguration config in new[] { service.Components.LocalConfig, service.Components.CloudConfig })
            {
                foreach (ServiceConfigurationSchema.RoleSettings role in config.Role)
                {
                    if (role.Certificates == null)
                    {
                        role.Certificates = new ServiceConfigurationSchema.Certificate[0];
                    }

                    ServiceConfigurationSchema.Certificate existingCert = role.Certificates.FirstOrDefault(c => c.name == certElement.name);
                    if (existingCert != null)
                    {
                        // ensure we're referencing the right cert
                        existingCert.thumbprint = certElement.thumbprint;
                    }
                    else
                    {
                        role.Certificates = role.Certificates.Concat(new[] { certElement }).ToArray();
                    }

                    Dictionary<string, string> settings = new Dictionary<string, string>();
                    foreach (ServiceConfigurationSchema.ConfigurationSetting setting in role.ConfigurationSettings)
                    {
                        settings[setting.name] = setting.value;
                    }
                    settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled"] = "true";
                    settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername"] = Username;
                    settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword"] = encryptedPassword;
                    settings["Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration"] = (DateTime.Now + TimeSpan.FromDays(365)).ToString("o");

                    if (role.name == forwarderName)
                    {
                        settings["Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled"] = "true";
                    }

                    role.ConfigurationSettings = settings.Select(pair => new ServiceConfigurationSchema.ConfigurationSetting { name = pair.Key, value = pair.Value }).ToArray();
                }
            }
        }
示例#5
0
 private static void UpdateSetting(ref RoleSettings rs, ServiceConfigurationSchema.ConfigurationSetting cs)
 {
     if (rs.ConfigurationSettings == null)
     {
         return;
     }
     for (int i = 0; i < rs.ConfigurationSettings.Length; i++)
     {
         ServiceConfigurationSchema.ConfigurationSetting setting = rs.ConfigurationSettings[i];
         if (setting.name == cs.name)
         {
             setting.value = cs.value;
             break;
         }
     }
 }