/// <summary> /// Builds the Google Analytics JavaScript block. /// </summary> /// <returns>Google Analytics JavaScript block.</returns> private string GetGoogleAnalyticsJavaScript() { if (_googleAnalyticsJavaScript.Length == 0) { ValidatePropertySettings(); StringBuilder bldr = new StringBuilder(); bldr.AppendLine(@"<script type=" + Quote + "text/javascript" + Quote + ">"); bldr.AppendLine(@" var _gaq = _gaq || [];"); bldr.AppendLine(@" _gaq.push(['_setAccount', '" + AccountId + "']);"); if (DomainOption.Equals(DomainOptions.SingleDomainMultipleSubDomains)) { bldr.AppendLine(@" _gaq.push(['_setDomainName', '" + DomainName + "']);"); } else if (DomainOption.Equals(DomainOptions.MultipleTopLevelDomains)) { bldr.AppendLine(@" _gaq.push(['_setDomainName', 'none']);"); bldr.AppendLine(@" _gaq.push(['_setAllowLinker', true]);"); } bldr.AppendLine(@" _gaq.push(['_trackPageview']);"); bldr.AppendLine(@" (function() {"); bldr.AppendLine(@" var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;"); bldr.AppendLine(@" ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';"); bldr.AppendLine(@" var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);"); bldr.AppendLine(@" })();"); bldr.AppendLine(@"</script>"); lock (_lockObject) { _googleAnalyticsJavaScript = bldr.ToString(); } } return(_googleAnalyticsJavaScript); }
public List <DomainOption> GetDomainOptionsFromSite(string siteId) { var defaultNoDomainHost = "(default binding)"; var domainOptions = new List <DomainOption>(); var matchingSites = new IISManager().GetSiteBindingList(Certify.Properties.Settings.Default.IgnoreStoppedSites, siteId); var siteBindingList = matchingSites.Where(s => s.SiteId == siteId); foreach (var siteDetails in siteBindingList) { //if domain not currently in the list of options, add it if (!domainOptions.Any(item => item.Domain == siteDetails.Host)) { DomainOption opt = new DomainOption { Domain = siteDetails.Host, IsPrimaryDomain = false, IsSelected = true, Title = "" }; if (String.IsNullOrEmpty(opt.Domain)) { //binding has no hostname/domain set - user will need to specify opt.Title = defaultNoDomainHost; opt.Domain = defaultNoDomainHost; opt.IsManualEntry = true; } else { opt.Title = siteDetails.Protocol + "://" + opt.Domain; } if (siteDetails.IP != null && siteDetails.IP != "0.0.0.0") { opt.Title += " : " + siteDetails.IP; } domainOptions.Add(opt); } } //TODO: if one or more binding is to a specific IP, how to manage in UI? if (domainOptions.Any(d => !String.IsNullOrEmpty(d.Domain))) { // mark first domain as primary, if we have no other settings if (!domainOptions.Any(d => d.IsPrimaryDomain == true)) { var electableDomains = domainOptions.Where(d => !String.IsNullOrEmpty(d.Domain) && d.Domain != defaultNoDomainHost); if (electableDomains.Any()) { // promote first domain in list to primary by default electableDomains.First().IsPrimaryDomain = true; } } } return(domainOptions); }
private void PopulateManagedSiteSettings(string siteId) { ValidationError = null; var managedSite = SelectedItem; managedSite.Name = SelectedWebSite.SiteName; //TODO: if this site would be a duplicate need to increment the site name //set defaults first managedSite.RequestConfig.PerformExtensionlessConfigChecks = true; managedSite.RequestConfig.PerformChallengeFileCopy = true; managedSite.RequestConfig.PerformAutomatedCertBinding = true; managedSite.RequestConfig.PerformAutoConfig = true; managedSite.RequestConfig.EnableFailureNotifications = true; managedSite.RequestConfig.ChallengeType = "http-01"; managedSite.IncludeInAutoRenew = true; managedSite.DomainOptions = new List <DomainOption>(); //for the given selected web site, allow the user to choose which domains to combine into one certificate var allSites = new IISManager().GetSiteBindingList(false, siteId); var domains = new List <DomainOption>(); foreach (var d in allSites) { if (d.SiteId == siteId) { DomainOption opt = new DomainOption { Domain = d.Host, IsPrimaryDomain = false, IsSelected = true }; domains.Add(opt); } } if (domains.Any()) { //mark first domain as primary, if we have no other settings if (!domains.Any(d => d.IsPrimaryDomain == true)) { domains[0].IsPrimaryDomain = true; } managedSite.DomainOptions = domains; //MainViewModel.EnsureNotifyPropertyChange(nameof(MainViewModel.PrimarySubjectDomain)); } else { //TODO: command to show error in UI ValidationError = "The selected site has no domain bindings setup. Configure the domains first using Edit Bindings in IIS."; } //TODO: load settings from previously saved managed site? RaisePropertyChanged(nameof(PrimarySubjectDomain)); }
/// <summary> /// Validates control's property settings to ensure proper configuration. /// </summary> private void ValidatePropertySettings() { if (AccountId.Length == 0) { throw new ArgumentException(Exceptions.GoogleAnalytics_AccountIdNullOrEmpty); } if (!DomainOptions.ValidOptions.Contains(DomainOption)) { throw new ArgumentException(Exceptions.GoogleAnalytics_DomainOptionInvalid); } if (DomainOption.Equals(DomainOptions.SingleDomainMultipleSubDomains)) { if (DomainName.Length == 0) { throw new ArgumentException(Exceptions.GoogleAnalytics_DomainNameMissing); } } }
private void PopulateManagedSiteSettings(string siteId, ManagedSite managedSite = null) { //set defaults first this.chkSkipConfigCheck.Checked = false; this.chkAutoBindings.Checked = true; this.chkEnableNotifications.Checked = true; this.chkIncludeInAutoRenew.Checked = true; //this.txtManagedSiteName.Text = ""; this.chkListSAN.Items.Clear(); //for the given selected web site, allow the user to choose which domains to combine into one certificate var allSites = iisManager.GetSiteBindingList(false); this.domains = new List <DomainOption>(); foreach (var d in allSites) { if (d.SiteId == siteId) { DomainOption opt = new DomainOption { Domain = d.Host, IsPrimaryDomain = false, IsSelected = true }; domains.Add(opt); } } if (managedSite != null && managedSite.DomainOptions != null) { //carry over settings from saved managed site txtManagedSiteName.Text = managedSite.Name; chkIncludeInAutoRenew.Checked = managedSite.IncludeInAutoRenew; if (managedSite.RequestConfig != null) { chkSkipConfigCheck.Checked = !managedSite.RequestConfig.PerformExtensionlessConfigChecks; chkAutoBindings.Checked = managedSite.RequestConfig.PerformAutomatedCertBinding; chkEnableNotifications.Checked = managedSite.RequestConfig.EnableFailureNotifications; } foreach (var d in domains) { var opt = managedSite.DomainOptions.FirstOrDefault(o => o.Domain == d.Domain); if (opt != null) { d.IsPrimaryDomain = opt.IsPrimaryDomain; d.IsSelected = opt.IsSelected; } } } if (domains.Any()) { //mark first domain as primary, if we have no other settings if (!domains.Any(d => d.IsPrimaryDomain == true)) { domains[0].IsPrimaryDomain = true; } this.domainListBindingSource.DataSource = domains; this.lstPrimaryDomain.DataSource = this.domainListBindingSource; this.lstPrimaryDomain.DisplayMember = "Domain"; //create filtered view of domains for the san list this.PopulateSANList(); } else { MessageBox.Show("The selected site has no domain bindings setup. Configure the domains first using Edit Bindings in IIS."); } }
private void PopulateManagedSiteSettings(string siteId) { ValidationError = null; var managedSite = SelectedItem; managedSite.Name = SelectedWebSite.SiteName; //TODO: if this site would be a duplicate need to increment the site name //set defaults first managedSite.RequestConfig.PerformExtensionlessConfigChecks = true; managedSite.RequestConfig.PerformChallengeFileCopy = true; managedSite.RequestConfig.PerformAutomatedCertBinding = true; managedSite.RequestConfig.PerformAutoConfig = true; managedSite.RequestConfig.EnableFailureNotifications = true; managedSite.RequestConfig.ChallengeType = "http-01"; managedSite.IncludeInAutoRenew = true; managedSite.DomainOptions = new List <DomainOption>(); //for the given selected web site, allow the user to choose which domains to combine into one certificate var defaultNoDomainHost = "(default binding)"; var allSites = new IISManager().GetSiteBindingList(Certify.Properties.Settings.Default.IgnoreStoppedSites, siteId); var domains = new List <DomainOption>(); foreach (var d in allSites) { if (d.SiteId == siteId) { //if domain not currently in the list of options, add it if (!domains.Any(item => item.Domain == d.Host)) { DomainOption opt = new DomainOption { Domain = d.Host, IsPrimaryDomain = false, IsSelected = true }; if (String.IsNullOrEmpty(opt.Domain)) { opt.Domain = defaultNoDomainHost; } domains.Add(opt); } } } //TODO: if one or more binding is to a specific IP, how to manage in UI? if (domains.Any(d => !String.IsNullOrEmpty(d.Domain))) { // mark first domain as primary, if we have no other settings if (!domains.Any(d => d.IsPrimaryDomain == true)) { var electableDomains = domains.Where(d => !String.IsNullOrEmpty(d.Domain) && d.Domain != defaultNoDomainHost); if (electableDomains.Any()) { // promote first domain in list to primary by default electableDomains.First().IsPrimaryDomain = true; } } managedSite.DomainOptions = domains; //MainViewModel.EnsureNotifyPropertyChange(nameof(MainViewModel.PrimarySubjectDomain)); } if (!domains.Any(d => d.Domain != defaultNoDomainHost)) { ValidationError = "The selected site has no domain bindings setup. Configure the domains first using Edit Bindings in IIS."; } //TODO: load settings from previously saved managed site? RaisePropertyChanged(nameof(PrimarySubjectDomain)); }
public async Task <List <DomainOption> > GetDomainOptionsFromSite(string siteId) { var defaultNoDomainHost = ""; var domainOptions = new List <DomainOption>(); var matchingSites = await _serverProvider.GetSiteBindingList(CoreAppSettings.Current.IgnoreStoppedSites, siteId); var siteBindingList = matchingSites.Where(s => s.SiteId == siteId); var includeEmptyHostnameBindings = false; foreach (var siteDetails in siteBindingList) { //if domain not currently in the list of options, add it if (!domainOptions.Any(item => item.Domain == siteDetails.Host)) { var opt = new DomainOption { Domain = siteDetails.Host, IsPrimaryDomain = false, IsSelected = true, Title = "" }; if (string.IsNullOrWhiteSpace(opt.Domain)) { //binding has no hostname/domain set - user will need to specify opt.Title = defaultNoDomainHost; opt.Domain = defaultNoDomainHost; opt.IsManualEntry = true; } else { opt.Title = siteDetails.Protocol + "://" + opt.Domain; } if (siteDetails.IP != null && siteDetails.IP != "0.0.0.0") { opt.Title += " : " + siteDetails.IP; } if (!opt.IsManualEntry || (opt.IsManualEntry && includeEmptyHostnameBindings)) { domainOptions.Add(opt); } } } //TODO: if one or more binding is to a specific IP, how to manage in UI? if (domainOptions.Any(d => !string.IsNullOrEmpty(d.Domain))) { // mark first domain as primary, if we have no other settings if (!domainOptions.Any(d => d.IsPrimaryDomain == true)) { var electableDomains = domainOptions.Where(d => !string.IsNullOrEmpty(d.Domain) && d.Domain != defaultNoDomainHost); if (electableDomains.Any()) { // promote first domain in list to primary by default electableDomains.First().IsPrimaryDomain = true; } } } return(domainOptions.OrderByDescending(d => d.IsPrimaryDomain).ThenBy(d => d.Domain).ToList()); }