public void DoWork(InstallModel model) { var traceListener = new SignalRTraceListener(); Trace.Listeners.Add(traceListener); try { SetupDb(ConnectionHelper.SqlConnectionString, model.SetupSampleData); SendFriendlyMessage("Database successfully created."); UpdateIndex(model); } catch (Exception ex) { TraceMessageLine(ex.Message); Clients.All.failure(ex.Message); return; } finally { Trace.Listeners.Remove(traceListener); } Clients.All.success("Database created."); }
public ActionResult Index() { if (AppConfigConfiguration.Instance.Setup.IsCompleted) { return Success(); } var model = new InstallModel(); var csBuilder = new SqlConnectionStringBuilder(ConnectionHelper.SqlConnectionString); model.DataSource = csBuilder.DataSource; model.InitialCatalog = csBuilder.InitialCatalog; model.DbUserName = csBuilder.UserID; model.DbUserPassword = csBuilder.Password; model.SetupSampleData = true; return View(model); }
public JsonResult Index(InstallModel model) { CustomValidateModel(model); if (!ModelState.IsValid) { var errorModel = from x in ModelState.Keys where ModelState[x].Errors.Count > 0 select new { key = x, errors = ModelState[x].Errors. Select(y => y.ErrorMessage). ToArray() }; Response.StatusCode = (int)HttpStatusCode.BadRequest; return Json(errorModel); } var traceListener = new SignalRTraceListener(); Trace.Listeners.Add(traceListener); try { var connectionString = PrepareDb(model); SetupWorker.SendFriendlyMessage("Saving database connection string to web.config."); //After saving connection string signalR needs some time to recycle iis ConnectionHelper.SqlConnectionString = connectionString; } catch (Exception ex) { SetupWorker.TraceMessageLine(ex.Message); return Json(new { Success = false, ex.Message }); } finally { Trace.Listeners.Remove(traceListener); } return Json(new { Success = true }); }
private void UpdateIndex(InstallModel model) { var searchConnection = new SearchConnection(ConnectionHelper.GetConnectionString("SearchConnectionString")); if (searchConnection.Provider.Equals( SearchProviders.Lucene.ToString(), StringComparison.OrdinalIgnoreCase) && searchConnection.DataSource.StartsWith("~/")) { var dataSource = searchConnection.DataSource.Replace( "~/", HttpRuntime.AppDomainAppPath + "\\"); searchConnection = new SearchConnection(dataSource, searchConnection.Scope, searchConnection.Provider); } SendFriendlyMessage("Updating search index..."); new UpdateSearchIndex().Index(searchConnection, model.ConnectionStringBuilder.ConnectionString, null, true); }
private string PrepareDb(InstallModel model) { var csBuilder = model.ConnectionStringBuilder; SetupWorker.SendFriendlyMessage("Checking connection availability. Connection string: {0}", csBuilder.ConnectionString); var success = CheckDb(csBuilder.ConnectionString); if (success) { return csBuilder.ConnectionString; } if (!string.IsNullOrEmpty(model.DbAdminUser)) { SetupWorker.SendFriendlyMessage("Trying to connect with administrator user {0}.", model.DbAdminUser); // let's try with admin user csBuilder.UserID = model.DbAdminUser; csBuilder.Password = model.DbAdminPassword; success = CheckDb(csBuilder.ConnectionString); } if (!success) { SetupWorker.SendFriendlyMessage("Trying to connect with integrated user."); // let's try with integrated user csBuilder.IntegratedSecurity = true; success = CheckDb(csBuilder.ConnectionString); } if (success) { AddUserToDatabase(csBuilder.ConnectionString, model.DbUserName, model.DbUserPassword); } else { model.DbAdminUser = "******"; model.DbAdminRequired = true; CustomValidateModel(model); throw new Exception(Resource.DbServerAdminRequiredException); } if (csBuilder.InitialCatalog.ToLower() == "master") { throw new Exception("'Master' is reserved for system database, please provide other database name."); } return csBuilder.ConnectionString; }
private void CustomValidateModel(InstallModel model) { if (model.DbAdminRequired) { if (string.IsNullOrWhiteSpace(model.DbAdminPassword)) { ModelState.AddModelError("DbAdminPassword", Resource.DbAdminPasswordRequiredError); } if (string.IsNullOrWhiteSpace(model.DbAdminUser)) { ModelState.AddModelError("DbAdminUser", Resource.DbAdminUserRequiredError); } } }