public void ExtendVirtualServer(SharePointSite site, bool exclusiveNTLM) { try { WindowsImpersonationContext wic = WindowsIdentity.GetCurrent().Impersonate(); string siteUrl = "http://" + site.Name; // check input parameters if (String.IsNullOrEmpty(site.RootFolder) || !Directory.Exists(site.RootFolder)) throw new Exception("Could not create SharePoint site, because web site root folder does not exist. Open web site properties and click \"Update\" button to re-create site folder."); SPWebApplication app = SPWebApplication.Lookup(new Uri(siteUrl)); if (app != null) throw new Exception("SharePoint is already installed on this web site."); //SPFarm farm = SPFarm.Local; SPFarm farm = SPFarm.Local; SPWebApplicationBuilder builder = new SPWebApplicationBuilder(farm); builder.ApplicationPoolId = site.ApplicationPool; builder.DatabaseServer = site.DatabaseServer; builder.DatabaseName = site.DatabaseName; builder.DatabaseUsername = site.DatabaseUser; builder.DatabasePassword = site.DatabasePassword; builder.ServerComment = site.Name; builder.HostHeader = site.Name; builder.Port = 80; builder.RootDirectory = new DirectoryInfo(site.RootFolder); builder.DefaultZoneUri = new Uri(siteUrl); builder.UseNTLMExclusively = exclusiveNTLM; app = builder.Create(); app.Name = site.Name; app.Sites.Add(siteUrl, null, null, (uint)site.LocaleID, null, site.OwnerLogin, null, site.OwnerEmail); app.Update(); app.Provision(); wic.Undo(); } catch (Exception ex) { try { // try to delete app if it was created SPWebApplication app = SPWebApplication.Lookup(new Uri("http://" + site.Name)); if (app != null) app.Delete(); } catch { /* nop */ } throw new Exception("Error creating SharePoint site", ex); } }
/// <summary> /// Runs the specified command. /// </summary> /// <param name="command">The command.</param> /// <param name="keyValues">The key values.</param> /// <param name="output">The output.</param> /// <returns></returns> public override int Execute(string command, System.Collections.Specialized.StringDictionary keyValues, out string output) { output = string.Empty; Uri uri = new Uri(Params["url"].Value); SPWebApplicationBuilder builder = GetWebAppBuilder(uri); SPWebApplication app = builder.Create(); SPAdministrationWebApplication local = SPAdministrationWebApplication.Local; // Set the TimeZone of the Application if (Params["timezone"].UserTypedIn) { app.DefaultTimeZone = ushort.Parse(Params["timezone"].Value); } app.Update(); app.ProvisionGlobally(); // Execute pending timer jobs before moving on. Common.TimerJobs.ExecAdmSvcJobs.Execute(false, true); // Recreate the web application object to avoid update conflicts. app = SPWebApplication.Lookup(uri); // Upload the newly created WebApplication to the List 'Web Application List' in Central Administration: SPWebService.AdministrationService.WebApplications.Add(app); if (!Params["donotcreatesite"].UserTypedIn) { uint nLCID = uint.Parse(Params["lcid"].Value); string webTemplate = Params["sitetemplate"].Value; string ownerLogin = Params["ownerlogin"].Value; ownerLogin = Utilities.TryGetNT4StyleAccountName(ownerLogin, app); string ownerName = Params["ownername"].Value; string ownerEmail = Params["owneremail"].Value; app.Sites.Add(uri.AbsolutePath, null, null, nLCID, webTemplate, ownerLogin, ownerName, ownerEmail, null, null, null); } Console.WriteLine(SPResource.GetString("PendingRestartInExtendWebFarm", new object[0])); Console.WriteLine(); if (!Params["donotcreatesite"].UserTypedIn) { Console.WriteLine(SPResource.GetString("AccessSiteAt", new object[] { uri.ToString() })); } Console.WriteLine(); return((int)ErrorCodes.NoError); }
private void createNewWebApplications() { try { int currentPort = 80; var webAppNames = SampleData.GetRandomNonRepeatingValues(SampleData.WebApplications, WorkingDefinition.CreateNewWebApplications); for (int a = 0; a < WorkingDefinition.CreateNewWebApplications; a++) { SPWebApplication newApplication; SPWebApplicationBuilder webAppBuilder = new SPWebApplicationBuilder(SPFarm.Local); currentPort = Utils.GetNextAvailablePort(currentPort + 1); var webApplicationName = string.Format("SharePoint {0} - {1}", webAppNames[a], currentPort.ToString("00")); Owner.IncrementCurrentTaskProgress("Creating Web application '" + webApplicationName); webAppBuilder.Port = currentPort; webAppBuilder.RootDirectory = new DirectoryInfo("C:\\inetpub\\wwwroot\\wss\\" + currentPort.ToString()); webAppBuilder.ApplicationPoolId = string.Format("SharePoint {0} - {1} Pool", webAppNames[a], currentPort.ToString("00")); webAppBuilder.IdentityType = IdentityType.SpecificUser; webAppBuilder.ApplicationPoolUsername = WorkingDefinition.WebAppOwnerLogin; webAppBuilder.ApplicationPoolPassword = Utils.StringToSecureString(WorkingDefinition.WebAppOwnerPassword); webAppBuilder.ServerComment = webApplicationName; webAppBuilder.CreateNewDatabase = true; webAppBuilder.DatabaseServer = WorkingDefinition.DatabaseServer; // DB server name webAppBuilder.DatabaseName = string.Format("WSS_Content_{0}_{1}", webAppNames[a], currentPort.ToString("00")); // DB Name //webAppBuilder.HostHeader = "SPDG" + appNumer.ToString("00") + ".com"; //if any webAppBuilder.UseNTLMExclusively = true; // authentication provider for NTLM webAppBuilder.AllowAnonymousAccess = true; // anonymous access permission // Finally create web application newApplication = webAppBuilder.Create(); //Enable Claims newApplication.UseClaimsAuthentication = true; newApplication.Update(); newApplication.Provision(); for (int s = 0; s < WorkingDefinition.CreateNewSiteCollections; s++) { CreateSiteCollection(newApplication); } } } catch (Exception ex) { Errors.Log(ex); } }
private void DeployWebApplication(FarmModelHost farmModelHost, SPFarm farm, WebApplicationDefinition webApplicationDefinition) { var webApps = SPWebService.ContentService.WebApplications; var webAppBuilder = new SPWebApplicationBuilder(farm); webAppBuilder.Port = webApplicationDefinition.Port; webAppBuilder.ApplicationPoolId = webApplicationDefinition.ApplicationPoolId; if (!string.IsNullOrEmpty(webApplicationDefinition.ManagedAccount)) { webAppBuilder.IdentityType = IdentityType.SpecificUser; var managedAccounts = new SPFarmManagedAccountCollection(SPFarm.Local); var maccount = managedAccounts.FindOrCreateAccount(webApplicationDefinition.ManagedAccount); webAppBuilder.ManagedAccount = maccount; } else { webAppBuilder.ApplicationPoolUsername = webApplicationDefinition.ApplicationPoolUsername; var password = new SecureString(); foreach (char c in webApplicationDefinition.ApplicationPoolPassword.ToCharArray()) { password.AppendChar(c); } webAppBuilder.ApplicationPoolPassword = password; } webAppBuilder.CreateNewDatabase = webApplicationDefinition.CreateNewDatabase; webAppBuilder.DatabaseName = webApplicationDefinition.DatabaseName; webAppBuilder.DatabaseServer = webApplicationDefinition.DatabaseServer; webAppBuilder.UseNTLMExclusively = webApplicationDefinition.UseNTLMExclusively; webAppBuilder.HostHeader = webApplicationDefinition.HostHeader; webAppBuilder.AllowAnonymousAccess = webApplicationDefinition.AllowAnonymousAccess; webAppBuilder.UseSecureSocketsLayer = webApplicationDefinition.UseSecureSocketsLayer; var webApp = webAppBuilder.Create(); webApp.Provision(); }
private void DeployWebApplication(FarmModelHost farmModelHost, SPFarm farm, WebApplicationDefinition webApplicationDefinition) { var webApps = SPWebService.ContentService.WebApplications; var webAppBuilder = new SPWebApplicationBuilder(farm); webAppBuilder.Port = webApplicationDefinition.Port; webAppBuilder.ApplicationPoolId = webApplicationDefinition.ApplicationPoolId; if (!string.IsNullOrEmpty(webApplicationDefinition.ManagedAccount)) { webAppBuilder.IdentityType = IdentityType.SpecificUser; var managedAccounts = new SPFarmManagedAccountCollection(SPFarm.Local); var maccount = managedAccounts.FindOrCreateAccount(webApplicationDefinition.ManagedAccount); webAppBuilder.ManagedAccount = maccount; } else { webAppBuilder.ApplicationPoolUsername = webApplicationDefinition.ApplicationPoolUsername; var password = new SecureString(); foreach (char c in webApplicationDefinition.ApplicationPoolPassword.ToCharArray()) password.AppendChar(c); webAppBuilder.ApplicationPoolPassword = password; } webAppBuilder.CreateNewDatabase = webApplicationDefinition.CreateNewDatabase; webAppBuilder.DatabaseName = webApplicationDefinition.DatabaseName; webAppBuilder.DatabaseServer = webApplicationDefinition.DatabaseServer; webAppBuilder.UseNTLMExclusively = webApplicationDefinition.UseNTLMExclusively; webAppBuilder.HostHeader = webApplicationDefinition.HostHeader; webAppBuilder.AllowAnonymousAccess = webApplicationDefinition.AllowAnonymousAccess; webAppBuilder.UseSecureSocketsLayer = webApplicationDefinition.UseSecureSocketsLayer; var webApp = webAppBuilder.Create(); webApp.Provision(); }
private static string DetermineServerName() { string dbServer = ConfigurationManager.AppSettings[DB_SERVER]; if (dbServer == null) // try using farm property value { SPSecurity.RunWithElevatedPrivileges(delegate() { SPFarm farm = SPFarm.Local; dbServer = farm.Properties["SPA_SQL_SERVER"].ToString(); }); if (dbServer == null) // if still null, use the same database server as the farm { SPSecurity.RunWithElevatedPrivileges(delegate() { SPWebApplicationBuilder w = new SPWebApplicationBuilder(SPFarm.Local); dbServer = w.DatabaseServer; }); } } return(dbServer); }
/// <summary> /// Gets the web app builder. /// </summary> /// <param name="uri">The URI.</param> /// <returns></returns> private SPWebApplicationBuilder GetWebAppBuilder(Uri uri) { SPWebApplicationBuilder builder = new SPWebApplicationBuilder(SPFarm.Local); //Set the Port and the RootDirectory where you want to install the Application, e.g: builder.Port = int.Parse(Params["port"].Value); if (Params["directory"].UserTypedIn) { builder.RootDirectory = new DirectoryInfo(Params["directory"].Value); } // Set the ServerComment for the Application which will be the Name of the Application in the SharePoint-List And IIS. If you do not set this Property, the Name of the Application will be 'SharePoint - <Default given Portnumber from System>' if (Params["description"].UserTypedIn && !string.IsNullOrEmpty(Params["description"].Value)) { builder.ServerComment = Params["description"].Value; } // Create the content database for this Application builder.CreateNewDatabase = true; if (Params["databasename"].UserTypedIn) { builder.DatabaseName = Params["databasename"].Value; } if (Params["databaseserver"].UserTypedIn) { builder.DatabaseServer = Params["databaseserver"].Value; } if (Params["databaseuser"].UserTypedIn) { builder.DatabaseUsername = Params["databaseuser"].Value; } if (Params["databasepassword"].UserTypedIn) { builder.DatabasePassword = Params["databasepassword"].Value; } // Host Header settings if (Params["sethostheader"].UserTypedIn) { if (string.IsNullOrEmpty(Params["sethostheader"].Value)) { builder.HostHeader = uri.Host; } else { builder.HostHeader = Params["sethostheader"].Value; } } builder.DefaultZoneUri = uri; // App pool settings builder.ApplicationPoolId = Params["apidname"].Value; if (Params["apidtype"].Value.ToLowerInvariant() == "networkservice") { builder.IdentityType = IdentityType.NetworkService; } else { builder.IdentityType = IdentityType.SpecificUser; builder.ApplicationPoolUsername = Params["apidlogin"].Value; builder.ApplicationPoolPassword = Utilities.CreateSecureString(Params["apidpwd"].Value); } // Some additional Settings builder.UseNTLMExclusively = Params["exclusivelyusentlm"].UserTypedIn; builder.AllowAnonymousAccess = Params["allowanonymous"].UserTypedIn; builder.UseSecureSocketsLayer = Params["ssl"].UserTypedIn; return(builder); }
private void createNewWebApplications() { try { int currentPort = 80; var webAppNames = SampleData.GetRandomNonRepeatingValues(SampleData.WebApplications, WorkingDefinition.CreateNewWebApplications); for (int a = 0; a < WorkingDefinition.CreateNewWebApplications; a++) { SPWebApplication newApplication; SPWebApplicationBuilder webAppBuilder = new SPWebApplicationBuilder(SPFarm.Local); currentPort = Utils.GetNextAvailablePort(currentPort + 1); var webApplicationName = string.Format("SharePoint {0} - {1}", webAppNames[a], currentPort.ToString("00")); Owner.IncrementCurrentTaskProgress("Creating Web application '" + webApplicationName); webAppBuilder.Port = currentPort; webAppBuilder.RootDirectory = new DirectoryInfo("C:\\inetpub\\wwwroot\\wss\\" + currentPort.ToString()); webAppBuilder.ApplicationPoolId = string.Format("SharePoint {0} - {1} Pool", webAppNames[a], currentPort.ToString("00")); webAppBuilder.IdentityType = IdentityType.SpecificUser; webAppBuilder.ApplicationPoolUsername = WorkingDefinition.WebAppOwnerLogin; webAppBuilder.ApplicationPoolPassword = Utils.StringToSecureString(WorkingDefinition.WebAppOwnerPassword); webAppBuilder.ServerComment = webApplicationName; webAppBuilder.CreateNewDatabase = true; webAppBuilder.DatabaseServer = WorkingDefinition.DatabaseServer; // DB server name webAppBuilder.DatabaseName = string.Format("WSS_Content_{0}_{1}", webAppNames[a], currentPort.ToString("00"));// DB Name //webAppBuilder.HostHeader = "SPDG" + appNumer.ToString("00") + ".com"; //if any webAppBuilder.UseNTLMExclusively = true; // authentication provider for NTLM webAppBuilder.AllowAnonymousAccess = true; // anonymous access permission // Finally create web application newApplication = webAppBuilder.Create(); //Enable Claims newApplication.UseClaimsAuthentication = true; newApplication.Update(); newApplication.Provision(); for (int s = 0; s < WorkingDefinition.CreateNewSiteCollections; s++) { CreateSiteCollection(newApplication); } } } catch (Exception ex) { Errors.Log(ex); } }
/// <summary> /// Gets the web app builder. /// </summary> /// <param name="uri">The URI.</param> /// <returns></returns> private SPWebApplicationBuilder GetWebAppBuilder(Uri uri) { SPWebApplicationBuilder builder = new SPWebApplicationBuilder(SPFarm.Local); //Set the Port and the RootDirectory where you want to install the Application, e.g: builder.Port = int.Parse(Params["port"].Value); if (Params["directory"].UserTypedIn) builder.RootDirectory = new DirectoryInfo(Params["directory"].Value); // Set the ServerComment for the Application which will be the Name of the Application in the SharePoint-List And IIS. If you do not set this Property, the Name of the Application will be 'SharePoint - <Default given Portnumber from System>' if (Params["description"].UserTypedIn && !string.IsNullOrEmpty(Params["description"].Value)) builder.ServerComment = Params["description"].Value; // Create the content database for this Application builder.CreateNewDatabase = true; if (Params["databasename"].UserTypedIn) builder.DatabaseName = Params["databasename"].Value; if (Params["databaseserver"].UserTypedIn) builder.DatabaseServer = Params["databaseserver"].Value; if (Params["databaseuser"].UserTypedIn) builder.DatabaseUsername = Params["databaseuser"].Value; if (Params["databasepassword"].UserTypedIn) builder.DatabasePassword = Params["databasepassword"].Value; // Host Header settings if (Params["sethostheader"].UserTypedIn) { if (string.IsNullOrEmpty(Params["sethostheader"].Value)) builder.HostHeader = uri.Host; else builder.HostHeader = Params["sethostheader"].Value; } builder.DefaultZoneUri = uri; // App pool settings builder.ApplicationPoolId = Params["apidname"].Value; if (Params["apidtype"].Value.ToLowerInvariant() == "networkservice") builder.IdentityType = IdentityType.NetworkService; else { builder.IdentityType = IdentityType.SpecificUser; builder.ApplicationPoolUsername = Params["apidlogin"].Value; builder.ApplicationPoolPassword = Utilities.CreateSecureString(Params["apidpwd"].Value); } // Some additional Settings builder.UseNTLMExclusively = Params["exclusivelyusentlm"].UserTypedIn; builder.AllowAnonymousAccess = Params["allowanonymous"].UserTypedIn; builder.UseSecureSocketsLayer = Params["ssl"].UserTypedIn; return builder; }
public void ExtendVirtualServer(SharePointSite site, bool exclusiveNTLM) { try { WindowsImpersonationContext wic = WindowsIdentity.GetCurrent().Impersonate(); string siteUrl = "http://" + site.Name; // check input parameters if (String.IsNullOrEmpty(site.RootFolder) || !Directory.Exists(site.RootFolder)) { throw new Exception("Could not create SharePoint site, because web site root folder does not exist. Open web site properties and click \"Update\" button to re-create site folder."); } SPWebApplication app = SPWebApplication.Lookup(new Uri(siteUrl)); if (app != null) { throw new Exception("SharePoint is already installed on this web site."); } //SPFarm farm = SPFarm.Local; SPFarm farm = SPFarm.Local; SPWebApplicationBuilder builder = new SPWebApplicationBuilder(farm); builder.ApplicationPoolId = site.ApplicationPool; builder.DatabaseServer = site.DatabaseServer; builder.DatabaseName = site.DatabaseName; builder.DatabaseUsername = site.DatabaseUser; builder.DatabasePassword = site.DatabasePassword; builder.ServerComment = site.Name; builder.HostHeader = site.Name; builder.Port = 80; builder.RootDirectory = new DirectoryInfo(site.RootFolder); builder.DefaultZoneUri = new Uri(siteUrl); builder.UseNTLMExclusively = exclusiveNTLM; app = builder.Create(); app.Name = site.Name; app.Sites.Add(siteUrl, null, null, (uint)site.LocaleID, null, site.OwnerLogin, null, site.OwnerEmail); app.Update(); app.Provision(); wic.Undo(); } catch (Exception ex) { try { // try to delete app if it was created SPWebApplication app = SPWebApplication.Lookup(new Uri("http://" + site.Name)); if (app != null) { app.Delete(); } } catch { /* nop */ } throw new Exception("Error creating SharePoint site", ex); } }
private void DeployWebApplication(FarmModelHost farmModelHost, SPFarm farm, WebApplicationDefinition definition) { var webApps = SPWebService.ContentService.WebApplications; var existingWebApp = FindWebApplication(definition, webApps); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = existingWebApp, ObjectType = typeof(SPWebApplication), ObjectDefinition = definition, ModelHost = farmModelHost }); if (existingWebApp == null) { var webAppBuilder = new SPWebApplicationBuilder(farm); webAppBuilder.Port = definition.Port; webAppBuilder.ApplicationPoolId = definition.ApplicationPoolId; if (!string.IsNullOrEmpty(definition.ManagedAccount)) { webAppBuilder.IdentityType = IdentityType.SpecificUser; var managedAccounts = new SPFarmManagedAccountCollection(SPFarm.Local); var maccount = managedAccounts.FindOrCreateAccount(definition.ManagedAccount); webAppBuilder.ManagedAccount = maccount; } else { webAppBuilder.ApplicationPoolUsername = definition.ApplicationPoolUsername; var password = new SecureString(); foreach (char c in definition.ApplicationPoolPassword.ToCharArray()) { password.AppendChar(c); } webAppBuilder.ApplicationPoolPassword = password; } webAppBuilder.CreateNewDatabase = definition.CreateNewDatabase; webAppBuilder.DatabaseName = definition.DatabaseName; webAppBuilder.DatabaseServer = definition.DatabaseServer; webAppBuilder.UseNTLMExclusively = definition.UseNTLMExclusively; webAppBuilder.HostHeader = definition.HostHeader; webAppBuilder.AllowAnonymousAccess = definition.AllowAnonymousAccess; webAppBuilder.UseSecureSocketsLayer = definition.UseSecureSocketsLayer; var webApp = webAppBuilder.Create(); webApp.Provision(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = webApp, ObjectType = typeof(SPWebApplication), ObjectDefinition = definition, ModelHost = farmModelHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = existingWebApp, ObjectType = typeof(SPWebApplication), ObjectDefinition = definition, ModelHost = farmModelHost }); } }