protected override void OnError(EventArgs e) { Exception lastError = Server.GetLastError(); if ((lastError != null) && (lastError is PathTooLongException)) { //let it be handled elsewhere (global.asax.cs) return; } string exceptionUrl = string.Empty; string exceptionIpAddress = string.Empty; if (HttpContext.Current != null) { if (HttpContext.Current.Request != null) { exceptionUrl = String.Format("{0} - {1}", CultureInfo.CurrentCulture, HttpContext.Current.Request.RawUrl); exceptionIpAddress = SiteUtils.GetIP4Address(); } } if (lastError != null) { log.Error(String.Format("{0}-{1}", exceptionIpAddress, exceptionUrl), lastError); } int siteCount = DatabaseHelper.ExistingSiteCount(); if (siteCount == 0) { Server.ClearError(); log.Info("no sites or no database found in application error so try to redirect to Setup Page"); try { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Redirect(String.Format("{0}/Setup/Default.aspx", WebUtils.GetSiteRoot())); } catch (HttpException) { } } bool upgradeNeeded = CSetup.UpgradeIsNeeded(); if (upgradeNeeded) { try { log.Info("detected need for upgrade so redirecting to setup"); Server.ClearError(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Redirect(String.Format("{0}/Setup/Default.aspx", WebUtils.GetSiteRoot())); } catch (HttpException) { } } }
private bool CoreSystemIsReady() { bool result = true; if (!canAccessDatabase) { return(false); } if (!DatabaseHelper.SchemaHasBeenCreated()) { return(false); } if (CSetup.UpgradeIsNeeded()) { return(false); } return(result); }
private void ProbeSystem() { WritePageContent( SetupResource.ProbingSystemMessage, false); dbPlatform = DatabaseHelper.DBPlatform(); dataFolderIsWritable = CSetup.DataFolderIsWritable(); if (dataFolderIsWritable) { WritePageContent( SetupResource.FileSystemPermissionsOKMesage, false); } else { WritePageContent( SetupResource.FileSystemPermissionProblemsMessage, false); WritePageContent( String.Format("<div>{0}</div>", GetFolderDetailsHtml()), false); } canAccessDatabase = DatabaseHelper.CanAccessDatabase(); if (canAccessDatabase) { WritePageContent( dbPlatform + " " + SetupResource.DatabaseConnectionOKMessage, false); } else { string dbError = string.Format( SetupResource.FailedToConnectToDatabase, dbPlatform); WritePageContent(String.Format("<div>{0}</div>", dbError), false); showConnectionError = ConfigHelper.GetBoolProperty("ShowConnectionErrorOnSetup", false); if (showConnectionError) { WritePageContent( String.Format("<div>{0}</div>", DatabaseHelper.GetConnectionError(null)), false); } } if (canAccessDatabase) { canAlterSchema = DatabaseHelper.CanAlterSchema(null); if (canAlterSchema) { WritePageContent( SetupResource.DatabaseCanAlterSchemaMessage, false); } else { WritePageContent( String.Format("<div>{0}</div>", SetupResource.CantAlterSchemaWarning), false); } schemaHasBeenCreated = DatabaseHelper.SchemaHasBeenCreated(); if (schemaHasBeenCreated) { WritePageContent( SetupResource.DatabaseSchemaAlreadyExistsMessage, false); needSchemaUpgrade = CSetup.UpgradeIsNeeded(); if (needSchemaUpgrade) { WritePageContent( SetupResource.DatabaseSchemaNeedsUpgradeMessage, false); } else { WritePageContent( SetupResource.DatabaseSchemaUpToDateMessage, false); } existingSiteCount = DatabaseHelper.ExistingSiteCount(); WritePageContent( string.Format( SetupResource.ExistingSiteCountMessageMessage, existingSiteCount.ToString()), false); } else { WritePageContent( SetupResource.DatabaseSchemaNotCreatedYetMessage, false); } } if (!CSetup.RunningInFullTrust()) { // inform of Medium trust configuration issues WritePageContent( String.Format("<b>{0}</b><br />{1}<br /><br />", SetupResource.MediumTrustGeneralMessage, GetDataAccessMediumTrustMessage()), false); } }
private void RunSetup() { #region setup Cynthia-core if (!schemaHasBeenCreated) { if (canAlterSchema) { CreateInitialSchema("Cynthia-core"); schemaHasBeenCreated = DatabaseHelper.SchemaHasBeenCreated(); if (schemaHasBeenCreated) { //recheck needSchemaUpgrade = CSetup.UpgradeIsNeeded(); } } } if ( (schemaHasBeenCreated) && (needSchemaUpgrade) && (canAlterSchema) ) { needSchemaUpgrade = UpgradeSchema("Cynthia-core"); } if (!CoreSystemIsReady()) { return; } existingSiteCount = DatabaseHelper.ExistingSiteCount(); if (existingSiteCount == 0) { CreateSiteAndAdminUser(); } // look for new features or settings to install SetupFeatures("Cynthia-core"); #endregion #region setup other applications // install other apps String pathToApplicationsFolder = HttpContext.Current.Server.MapPath( "~/Setup/applications/"); if (!Directory.Exists(pathToApplicationsFolder)) { WritePageContent( pathToApplicationsFolder + " " + SetupResource.ScriptFolderNotFoundAddendum, false); return; } DirectoryInfo appRootFolder = new DirectoryInfo(pathToApplicationsFolder); DirectoryInfo[] appFolders = appRootFolder.GetDirectories(); foreach (DirectoryInfo appFolder in appFolders) { if ( (!string.Equals(appFolder.Name, "Cynthia-core", StringComparison.InvariantCultureIgnoreCase)) && (appFolder.Name.ToLower() != ".svn") && (appFolder.Name.ToLower() != "_svn") ) { CreateInitialSchema(appFolder.Name); UpgradeSchema(appFolder.Name); SetupFeatures(appFolder.Name); } } #endregion WritePageContent(SetupResource.EnsuringFeaturesInAdminSites, true); ModuleDefinition.EnsureInstallationInAdminSites(); SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings(); if (siteSettings != null) { if (PageSettings.GetCountOfPages(siteSettings.SiteId) == 0) { WritePageContent(SetupResource.CreatingDefaultContent); //SetupContentPages(siteSettings); CSetup.SetupDefaultContentPages(siteSettings); } try { int userCount = SiteUser.UserCount(siteSettings.SiteId); if (userCount == 0) { CSetup.EnsureRolesAndAdminUser(siteSettings); } } catch (Exception ex) { log.Error("EnsureAdminUserAndRoles", ex); } CSetup.EnsureSkins(siteSettings.SiteId); } // in case control type controlsrc, regex or sort changed on the definition // update instance properties to match ThreadPool.QueueUserWorkItem(new WaitCallback(SyncDefinitions), null); //ModuleDefinition.SyncDefinitions(); SiteSettings.EnsureExpandoSettings(); CSetup.EnsureAdditionalSiteFolders(); }