/// <summary>Deletes site collection under given url.</summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="siteCollection">The site collection to be deleted.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> public void DeleteSiteCollection(Uri rootWebApplicationUri, SharePointSiteCollection siteCollection) { HostedSolutionLog.LogStart("DeleteSiteCollection"); Runspace runspace = null; try { string siteCollectionUrl = String.Format("{0}:{1}", siteCollection.Url, rootWebApplicationUri.Port); HostedSolutionLog.DebugInfo("siteCollectionUrl: {0}", siteCollectionUrl); runspace = OpenRunspace(); DeleteSiteCollection(runspace, siteCollectionUrl, false); RemoveHostsRecord(siteCollection); } catch (Exception ex) { throw new InvalidOperationException("Failed to delete site collection.", ex); } finally { CloseRunspace(runspace); HostedSolutionLog.LogEnd("DeleteSiteCollection"); } }
public int AddSiteCollection(SharePointSiteCollection item) { object[] results = this.Invoke("AddSiteCollection", new object[] { item}); return ((int)(results[0])); }
/// <remarks/> public void AddSiteCollectionAsync(SharePointSiteCollection item) { this.AddSiteCollectionAsync(item, null); }
private void SaveItem() { if (!Page.IsValid) { return; } if (this.SiteCollectionId == 0) { if (this.userSelector.GetAccount() == null) { localMessageBox.ShowWarningMessage("HOSTEDSHAREPOINT_NO_USERS"); return; } // new item try { SharePointSiteCollectionListPaged existentSiteCollections = ES.Services.HostedSharePointServers.GetSiteCollectionsPaged(PanelSecurity.PackageId, this.OrganizationId, "ItemName", String.Format("%{0}", this.domain.DomainName), String.Empty, 0, Int32.MaxValue); foreach (SharePointSiteCollection existentSiteCollection in existentSiteCollections.SiteCollections) { Uri existentSiteCollectionUri = new Uri(existentSiteCollection.Name); if (existentSiteCollection.Name == String.Format("{0}://{1}", existentSiteCollectionUri.Scheme, this.domain.DomainName)) { localMessageBox.ShowWarningMessage("HOSTEDSHAREPOINT_DOMAIN_IN_USE"); return; } } // get form data item = new SharePointSiteCollection(); item.OrganizationId = this.OrganizationId; item.Id = this.SiteCollectionId; item.PackageId = PanelSecurity.PackageId; item.Name = this.domain.DomainName; item.LocaleId = Int32.Parse(this.ddlLocaleID.SelectedValue); item.OwnerLogin = this.userSelector.GetAccount(); item.OwnerEmail = this.userSelector.GetPrimaryEmailAddress(); item.OwnerName = this.userSelector.GetDisplayName(); item.Title = txtTitle.Text; item.Description = txtDescription.Text; item.MaxSiteStorage = maxStorage.QuotaValue; item.WarningStorage = warningStorage.QuotaValue; int result = ES.Services.HostedSharePointServers.AddSiteCollection(item); if (result < 0) { localMessageBox.ShowResultMessage(result); return; } } catch (Exception ex) { localMessageBox.ShowErrorMessage("HOSTEDSHAREPOINT_ADD_SITECOLLECTION", ex); return; } } else { ES.Services.HostedSharePointServers.UpdateQuota(PanelRequest.ItemID, SiteCollectionId, editMaxStorage.QuotaValue, editWarningStorage.QuotaValue); } // return RedirectToSiteCollectionsList(); }
/// <summary> /// Gets list of SharePoint site collections that belong to the package. /// </summary> /// <param name="packageId">Package that owns site collections.</param> /// <param name="recursive">A value which shows whether nested spaces must be searched as well.</param> /// <returns>List of found site collections.</returns> public static List<SharePointSiteCollection> GetSiteCollections(int packageId, bool recursive) { if (IsDemoMode) { List<SharePointSiteCollection> demoResult = new List<SharePointSiteCollection>(); SharePointSiteCollection siteCollection1 = new SharePointSiteCollection(); siteCollection1.Id = 1; siteCollection1.OrganizationId = 1; siteCollection1.LocaleId = 1033; siteCollection1.Name = "http://john.fabrikam.com"; siteCollection1.OwnerEmail = "*****@*****.**"; siteCollection1.OwnerLogin = "******"; siteCollection1.OwnerName = "John Smith"; siteCollection1.PhysicalAddress = "http://john.fabrikam.com"; siteCollection1.Title = "John Smith's Team Site"; siteCollection1.Url = "http://john.fabrikam.com"; demoResult.Add(siteCollection1); SharePointSiteCollection siteCollection2 = new SharePointSiteCollection(); siteCollection2.Id = 2; siteCollection1.OrganizationId = 1; siteCollection2.LocaleId = 1033; siteCollection2.Name = "http://mark.contoso.com"; siteCollection2.OwnerEmail = "*****@*****.**"; siteCollection2.OwnerLogin = "******"; siteCollection2.OwnerName = "Mark Jonsons"; siteCollection2.PhysicalAddress = "http://mark.contoso.com"; siteCollection2.Title = "Mark Jonsons' Blog"; siteCollection2.Url = "http://mark.contoso.com"; demoResult.Add(siteCollection2); return demoResult; } List<ServiceProviderItem> items = PackageController.GetPackageItemsByType(packageId, typeof(SharePointSiteCollection), recursive); return items.ConvertAll<SharePointSiteCollection>(delegate(ServiceProviderItem item) { return (SharePointSiteCollection)item; }); }
public void RestoreSiteCollection(SharePointSiteCollection siteCollection, string filename) { this.Invoke("RestoreSiteCollection", new object[] { siteCollection, filename}); }
/// <remarks/> public void RestoreSiteCollectionAsync(SharePointSiteCollection siteCollection, string filename) { this.RestoreSiteCollectionAsync(siteCollection, filename, null); }
/// <summary> /// Gets list of SharePoint collections within root web application. /// </summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <returns>List of SharePoint collections within root web application.</returns> public SharePointSiteCollection[] GetSiteCollections(Uri rootWebApplicationUri) { try { WindowsImpersonationContext wic = WindowsIdentity.GetCurrent().Impersonate(); try { SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); List<SharePointSiteCollection> siteCollections = new List<SharePointSiteCollection>(); foreach (SPSite site in rootWebApplication.Sites) { SharePointSiteCollection loadedSiteCollection = new SharePointSiteCollection(); FillSiteCollection(loadedSiteCollection, site); siteCollections.Add(loadedSiteCollection); } return siteCollections.ToArray(); } finally { wic.Undo(); } } catch (Exception ex) { throw new InvalidOperationException("Failed to create site collection.", ex); } }
/// <summary> /// Gets SharePoint collection within root web application with given name. /// </summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="url">Url that uniquely identifies site collection to be loaded.</param> /// <returns>SharePoint collection within root web application with given name.</returns> public SharePointSiteCollection GetSiteCollection(Uri rootWebApplicationUri, string url) { try { WindowsImpersonationContext wic = WindowsIdentity.GetCurrent().Impersonate(); try { SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); string siteCollectionUrl = String.Format("{0}:{1}", url, rootWebApplicationUri.Port); SPSite site = rootWebApplication.Sites[siteCollectionUrl]; if (site != null) { SharePointSiteCollection loadedSiteCollection = new SharePointSiteCollection(); FillSiteCollection(loadedSiteCollection, site); return loadedSiteCollection; } return null; } finally { wic.Undo(); } } catch (Exception ex) { throw new InvalidOperationException("Failed to create site collection.", ex); } }
/// <summary> Checks and sets disk quotas values.</summary> /// <param name="organization"> The organization.</param> /// <param name="collection"> The site collection.</param> private void SetStorageQuotas(Organization organization, SharePointSiteCollection collection) { var quotaValue = organization.MaxSharePointStorage; if (quotaValue != -1) { var spaceResrved = GetReservedDiskStorageSpace(); if (spaceResrved > quotaValue) { quotaValue = 0; } else { quotaValue -= spaceResrved; } if (collection != null) { quotaValue += (int)collection.MaxSiteStorage; } } maxStorage.ParentQuotaValue = quotaValue; maxStorage.QuotaValue = quotaValue; editMaxStorage.ParentQuotaValue = quotaValue; warningStorage.ParentQuotaValue = quotaValue; warningStorage.QuotaValue = quotaValue; editWarningStorage.ParentQuotaValue = quotaValue; btnUpdate.Enabled = quotaValue != 0; }
public int AddSiteCollection(SharePointSiteCollection item) { return HostedSharePointServerController.AddSiteCollection(item); }
/// <summary> /// Creates site collection within predefined root web application. /// </summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="siteCollection">Information about site coolection to be created.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> public void CreateSiteCollection(Uri rootWebApplicationUri, SharePointSiteCollection siteCollection) { WindowsImpersonationContext wic = null; try { wic = WindowsIdentity.GetCurrent().Impersonate(); SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); string siteCollectionUrl = String.Format("{0}:{1}", siteCollection.Url, rootWebApplicationUri.Port); SPQuota spQuota; SPSite spSite = rootWebApplication.Sites.Add(siteCollectionUrl, siteCollection.Title, siteCollection.Description, (uint) siteCollection.LocaleId, String.Empty, siteCollection.OwnerLogin, siteCollection.OwnerName, siteCollection.OwnerEmail, null, null, null, true); try { spQuota = new SPQuota(); if (siteCollection.MaxSiteStorage != -1) spQuota.StorageMaximumLevel = siteCollection.MaxSiteStorage * 1024 * 1024; if (siteCollection.WarningStorage != -1 && siteCollection.MaxSiteStorage != -1) spQuota.StorageWarningLevel = Math.Min(siteCollection.WarningStorage, siteCollection.MaxSiteStorage) * 1024 * 1024; } catch (Exception) { rootWebApplication.Sites.Delete(siteCollectionUrl); throw; } try { rootWebApplication.GrantAccessToProcessIdentity(WindowsIdentity.GetCurrent().Name); spSite.Quota = spQuota; } catch (Exception) { rootWebApplication.Sites.Delete(siteCollectionUrl); DeleteQuotaTemplate(siteCollection.Title); throw; } rootWebApplication.Update(true); } catch(Exception ex) { HostedSolutionLog.LogError(ex); throw; } finally { if (wic != null) wic.Undo(); } }
/// <summary>Removes record from hosts file.</summary> /// <param name="siteCollection">The site collection object.</param> private void RemoveHostsRecord(SharePointSiteCollection siteCollection) { try { if (siteCollection.RootWebApplicationInteralIpAddress != string.Empty) { string dirPath = FileUtils.EvaluateSystemVariables(@"%windir%\system32\drivers\etc"); string path = dirPath + "\\hosts"; if (FileUtils.FileExists(path)) { string content = FileUtils.GetFileTextContent(path); content = content.Replace("\r\n", "\n").Replace("\n\r", "\n"); string[] contentArr = content.Split(new[] {'\n'}); string outPut = string.Empty; foreach (string s in contentArr) { if (s != string.Empty) { string hostName = string.Empty; if (s[0] != '#') { bool bSeperator = false; foreach (char c in s) { if ((c != ' ') & (c != '\t')) { if (bSeperator) { hostName += c; } } else { bSeperator = true; } } if (hostName.ToLower() != siteCollection.RootWebApplicationFQDN.ToLower()) { outPut += s + "\r\n"; } } else { outPut += s + "\r\n"; } } } FileUtils.UpdateFileTextContent(path, outPut); } } } catch (Exception ex) { HostedSolutionLog.LogError(ex); } }
/// <summary>Restores site collection under given url from backup.</summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="siteCollection">Site collection to be restored.</param> /// <param name="filename">Backup file name to restore from.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> public void RestoreSiteCollection(Uri rootWebApplicationUri, SharePointSiteCollection siteCollection, string filename) { string url = siteCollection.Url; try { string siteCollectionUrl = String.Format("{0}:{1}", url, rootWebApplicationUri.Port); HostedSolutionLog.LogStart("RestoreSiteCollection"); HostedSolutionLog.DebugInfo("siteCollectionUrl: {0}", siteCollectionUrl); HostedSolutionLog.DebugInfo("backupFilePath: {0}", filename); Runspace runspace = null; try { string tempPath = Path.GetTempPath(); string expandedFile = filename; if (Path.GetExtension(filename).ToLower() == ".zip") { expandedFile = FileUtils.UnzipFiles(filename, tempPath)[0]; // Delete zip archive. FileUtils.DeleteFile(filename); } runspace = OpenRunspace(); DeleteSiteCollection(runspace, siteCollectionUrl, false); var command = new Command("Restore-SPSite"); command.Parameters.Add("Identity", siteCollectionUrl); command.Parameters.Add("Path", filename); ExecuteShellCommand(runspace, command); command = new Command("Set-SPSite"); command.Parameters.Add("Identity", siteCollectionUrl); command.Parameters.Add("OwnerAlias", siteCollection.OwnerLogin); ExecuteShellCommand(runspace, command); command = new Command("Set-SPUser"); command.Parameters.Add("Identity", siteCollection.OwnerLogin); command.Parameters.Add("Email", siteCollection.OwnerEmail); command.Parameters.Add("DisplayName", siteCollection.Name); ExecuteShellCommand(runspace, command); FileUtils.DeleteFile(expandedFile); } finally { CloseRunspace(runspace); HostedSolutionLog.LogEnd("RestoreSiteCollection"); } } catch (Exception ex) { throw new InvalidOperationException("Failed to restore site collection.", ex); } }
/// <remarks/> public System.IAsyncResult BeginDeleteSiteCollection(SharePointSiteCollection siteCollection, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteSiteCollection", new object[] { siteCollection}, callback, asyncState); }
/// <summary> /// Creates site collection within predefined root web application. /// </summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="siteCollection">Information about site coolection to be created.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> public void CreateSiteCollection(Uri rootWebApplicationUri, SharePointSiteCollection siteCollection) { WindowsImpersonationContext wic = null; HostedSolutionLog.LogStart("CreateSiteCollection"); try { wic = WindowsIdentity.GetCurrent().Impersonate(); SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); string siteCollectionUrl = String.Format("{0}:{1}", siteCollection.Url, rootWebApplicationUri.Port); HostedSolutionLog.DebugInfo("rootWebApplicationUri: {0}", rootWebApplicationUri); HostedSolutionLog.DebugInfo("siteCollectionUrl: {0}", siteCollectionUrl); SPQuota spQuota; SPSite spSite = rootWebApplication.Sites.Add(siteCollectionUrl, siteCollection.Title, siteCollection.Description, (uint)siteCollection.LocaleId, String.Empty, siteCollection.OwnerLogin, siteCollection.OwnerName, siteCollection.OwnerEmail, null, null, null, true); try { spQuota = new SPQuota(); if (siteCollection.MaxSiteStorage != -1) spQuota.StorageMaximumLevel = siteCollection.MaxSiteStorage * 1024 * 1024; if (siteCollection.WarningStorage != -1 && siteCollection.MaxSiteStorage != -1) spQuota.StorageWarningLevel = Math.Min(siteCollection.WarningStorage, siteCollection.MaxSiteStorage) * 1024 * 1024; } catch (Exception) { rootWebApplication.Sites.Delete(siteCollectionUrl); throw; } try { rootWebApplication.GrantAccessToProcessIdentity(WindowsIdentity.GetCurrent().Name); spSite.Quota = spQuota; } catch (Exception) { rootWebApplication.Sites.Delete(siteCollectionUrl); DeleteQuotaTemplate(siteCollection.Title); throw; } rootWebApplication.Update(true); try { if (siteCollection.RootWebApplicationInteralIpAddress != string.Empty) { string dirPath = FileUtils.EvaluateSystemVariables(@"%windir%\system32\drivers\etc"); string path = dirPath + "\\hosts"; if (FileUtils.FileExists(path)) { string content = FileUtils.GetFileTextContent(path); content = content.Replace("\r\n", "\n").Replace("\n\r", "\n"); string[] contentArr = content.Split(new char[] { '\n' }); bool bRecordExist = false; foreach (string s in contentArr) { if (s != string.Empty) { string IPAddr = string.Empty; string hostName = string.Empty; if (s[0] != '#') { bool bSeperator = false; foreach (char c in s) { if ((c != ' ') & (c != '\t')) { if (bSeperator) hostName += c; else IPAddr += c; } else bSeperator = true; } if (hostName.ToLower() == siteCollection.RootWebApplicationFQDN.ToLower()) { bRecordExist = true; break; } } } } if (!bRecordExist) { string outPut = string.Empty; foreach (string o in contentArr) { if (o != string.Empty) outPut += o + "\r\n"; } outPut += siteCollection.RootWebApplicationInteralIpAddress + '\t' + siteCollection.RootWebApplicationFQDN + "\r\n"; FileUtils.UpdateFileTextContent(path, outPut); } } } } catch (Exception ex) { HostedSolutionLog.LogError(ex); } } catch (Exception ex) { HostedSolutionLog.LogError(ex); throw; } finally { if (wic != null) wic.Undo(); HostedSolutionLog.LogEnd("CreateSiteCollection"); } }
/// <remarks/> public void DeleteSiteCollectionAsync(SharePointSiteCollection siteCollection) { this.DeleteSiteCollectionAsync(siteCollection, null); }
/// <summary> /// Deletes site collection under given url. /// </summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="url">Url that uniquely identifies site collection to be deleted.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> public void DeleteSiteCollection(Uri rootWebApplicationUri, SharePointSiteCollection siteCollection) { try { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsImpersonationContext wic = identity.Impersonate(); try { SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); string siteCollectionUrl = String.Format("{0}:{1}", siteCollection.Url, rootWebApplicationUri.Port); //string args = String.Format("-o deletesite -url {0}", siteCollectionUrl); //string stsadm = @"c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\STSADM.EXE"; //// launch system process //ProcessStartInfo startInfo = new ProcessStartInfo(stsadm, args); //startInfo.WindowStyle = ProcessWindowStyle.Hidden; //startInfo.RedirectStandardOutput = true; //startInfo.UseShellExecute = false; //Process proc = Process.Start(startInfo); //// analyze results //StreamReader reader = proc.StandardOutput; //string output = reader.ReadToEnd(); //int exitCode = proc.ExitCode; //reader.Close(); rootWebApplication.Sites.Delete(siteCollectionUrl, true); rootWebApplication.Update(true); try { if (siteCollection.RootWebApplicationInteralIpAddress != string.Empty) { string dirPath = FileUtils.EvaluateSystemVariables(@"%windir%\system32\drivers\etc"); string path = dirPath + "\\hosts"; if (FileUtils.FileExists(path)) { string content = FileUtils.GetFileTextContent(path); content = content.Replace("\r\n", "\n").Replace("\n\r", "\n"); string[] contentArr = content.Split(new char[] { '\n' }); string outPut = string.Empty; foreach (string s in contentArr) { if (s != string.Empty) { string IPAddr = string.Empty; string hostName = string.Empty; if (s[0] != '#') { bool bSeperator = false; foreach (char c in s) { if ((c != ' ') & (c != '\t')) { if (bSeperator) hostName += c; else IPAddr += c; } else bSeperator = true; } if (hostName.ToLower() != siteCollection.RootWebApplicationFQDN.ToLower()) { outPut += s + "\r\n"; } } else outPut += s + "\r\n"; } } FileUtils.UpdateFileTextContent(path, outPut); } } } catch (Exception ex) { HostedSolutionLog.LogError(ex); } } finally { wic.Undo(); } } catch (Exception ex) { throw new InvalidOperationException("Failed to delete site collection.", ex); } }
/// <remarks/> public System.IAsyncResult BeginRestoreSiteCollection(SharePointSiteCollection siteCollection, string filename, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("RestoreSiteCollection", new object[] { siteCollection, filename}, callback, asyncState); }
/// <summary> /// Restores site collection under given url from backup. /// </summary> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="siteCollection">Site collection to be restored.</param> /// <param name="filename">Backup file name to restore from.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> public void RestoreSiteCollection(Uri rootWebApplicationUri, SharePointSiteCollection siteCollection, string filename) { string url = siteCollection.Url; try { WindowsImpersonationContext wic = WindowsIdentity.GetCurrent().Impersonate(); try { SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); string siteCollectionUrl = String.Format("{0}:{1}", url, rootWebApplicationUri.Port); string tempPath = Path.GetTempPath(); // Unzip uploaded files if required. string expandedFile = filename; if (Path.GetExtension(filename).ToLower() == ".zip") { // Unpack file. expandedFile = FileUtils.UnzipFiles(filename, tempPath)[0]; // Delete zip archive. FileUtils.DeleteFile(filename); } // Delete existent site and restore new one. rootWebApplication.Sites.Delete(siteCollectionUrl, false); rootWebApplication.Sites.Restore(siteCollectionUrl, expandedFile, true, true); SPSite restoredSite = rootWebApplication.Sites[siteCollectionUrl]; SPWeb web = restoredSite.OpenWeb(); SPUser owner = null; try { owner = web.SiteUsers[siteCollection.OwnerLogin]; } catch { // Ignore this error. } if (owner == null) { web.SiteUsers.Add(siteCollection.OwnerLogin, siteCollection.OwnerEmail, siteCollection.OwnerName, String.Empty); owner = web.SiteUsers[siteCollection.OwnerLogin]; } restoredSite.Owner = owner; web.Close(); rootWebApplication.Update(); // Delete expanded file. FileUtils.DeleteFile(expandedFile); } finally { wic.Undo(); } } catch (Exception ex) { throw new InvalidOperationException("Failed to restore site collection.", ex); } }
/// <remarks/> public void RestoreSiteCollectionAsync(SharePointSiteCollection siteCollection, string filename, object userState) { if ((this.RestoreSiteCollectionOperationCompleted == null)) { this.RestoreSiteCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRestoreSiteCollectionOperationCompleted); } this.InvokeAsync("RestoreSiteCollection", new object[] { siteCollection, filename}, this.RestoreSiteCollectionOperationCompleted, userState); }
/// <summary> /// Fills custom site collection with information from administration object. /// </summary> /// <param name="customSiteCollection">Custom site collection to fill.</param> /// <param name="site">Administration object.</param> private static void FillSiteCollection(SharePointSiteCollection customSiteCollection, SPSite site) { Uri siteUri = new Uri(site.Url); string url = (siteUri.Port > 0) ? site.Url.Replace(String.Format(":{0}", siteUri.Port), String.Empty) : site.Url; customSiteCollection.Url = url; customSiteCollection.OwnerLogin = site.Owner.LoginName; customSiteCollection.OwnerName = site.Owner.Name; customSiteCollection.OwnerEmail = site.Owner.Email; customSiteCollection.LocaleId = site.RootWeb.Locale.LCID; customSiteCollection.Title = site.RootWeb.Title; customSiteCollection.Description = site.RootWeb.Description; customSiteCollection.Bandwidth = site.Usage.Bandwidth; customSiteCollection.Diskspace = site.Usage.Storage; customSiteCollection.MaxSiteStorage = site.Quota.StorageMaximumLevel; customSiteCollection.WarningStorage = site.Quota.StorageWarningLevel; }
private void BindItem() { try { if (!IsPostBack) { if (!this.IsDnsServiceAvailable()) { localMessageBox.ShowWarningMessage("HOSTEDSHAREPOINT_NO_DNS"); } // load item if required if (this.SiteCollectionId > 0) { // existing item item = ES.Services.HostedSharePointServers.GetSiteCollection(this.SiteCollectionId); if (item != null) { // save package info ViewState["PackageId"] = item.PackageId; } else RedirectToBrowsePage(); } else { // new item ViewState["PackageId"] = PanelSecurity.PackageId; } //this.gvUsers.DataBind(); List<CultureInfo> cultures = new List<CultureInfo>(); foreach (int localeId in ES.Services.HostedSharePointServers.GetSupportedLanguages(PanelSecurity.PackageId)) { cultures.Add(new CultureInfo(localeId, false)); } this.ddlLocaleID.DataSource = cultures; this.ddlLocaleID.DataBind(); } if (!IsPostBack) { // bind item to controls if (item != null) { // bind item to controls lnkUrl.Text = item.PhysicalAddress; lnkUrl.NavigateUrl = item.PhysicalAddress; litSiteCollectionOwner.Text = String.Format("{0} ({1})", item.OwnerName, item.OwnerEmail); litLocaleID.Text = new CultureInfo(item.LocaleId, false).DisplayName; litTitle.Text = item.Title; litDescription.Text = item.Description; editWarningStorage.QuotaValue = (int)item.WarningStorage; editMaxStorage.QuotaValue = (int)item.MaxSiteStorage; } Organization org = ES.Services.Organizations.GetOrganization(OrganizationId); if (org != null) { maxStorage.ParentQuotaValue = org.MaxSharePointStorage; maxStorage.QuotaValue = org.MaxSharePointStorage; editMaxStorage.ParentQuotaValue = org.MaxSharePointStorage; warningStorage.ParentQuotaValue = org.WarningSharePointStorage; warningStorage.QuotaValue = org.WarningSharePointStorage; editWarningStorage.ParentQuotaValue = org.WarningSharePointStorage; } } OrganizationDomainName[] domains = ES.Services.Organizations.GetOrganizationDomains(PanelRequest.ItemID); if (domains.Length == 0) { localMessageBox.ShowWarningMessage("HOSTEDSHAREPOINT_NO_DOMAINS"); DisableFormControls(this, btnCancel); return; } //if (this.gvUsers.Rows.Count == 0) //{ // localMessageBox.ShowWarningMessage("HOSTEDSHAREPOINT_NO_USERS"); // DisableFormControls(this, btnCancel); // return; //} } catch { localMessageBox.ShowWarningMessage("INIT_SERVICE_ITEM_FORM"); DisableFormControls(this, btnCancel); return; } }
/// <summary> /// Adds SharePoint site collection. /// </summary> /// <param name="item">Site collection description.</param> /// <returns>Created site collection id within metabase.</returns> public static int AddSiteCollection(SharePointSiteCollection item) { string domainName = item.Name; // Check account. int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); if (accountCheck < 0) { return accountCheck; } // Check package. int packageCheck = SecurityContext.CheckPackage(item.PackageId, DemandPackage.IsActive); if (packageCheck < 0) { return packageCheck; } // Check quota. OrganizationStatistics orgStats = OrganizationController.GetOrganizationStatistics(item.OrganizationId); //QuotaValueInfo quota = PackageController.GetPackageQuota(item.PackageId, Quotas.HOSTED_SHAREPOINT_SITES); if (orgStats.AllocatedSharePointSiteCollections > -1 && orgStats.CreatedSharePointSiteCollections >= orgStats.AllocatedSharePointSiteCollections) { return BusinessErrorCodes.ERROR_SHAREPOINT_RESOURCE_QUOTA_LIMIT; } // Check if stats resource is available int serviceId = PackageController.GetPackageServiceId(item.PackageId, ResourceGroups.HostedSharePoint); if (serviceId == 0) { return BusinessErrorCodes.ERROR_SHAREPOINT_RESOURCE_UNAVAILABLE; } StringDictionary hostedSharePointSettings = ServerController.GetServiceSettings(serviceId); Uri rootWebApplicationUri = new Uri(hostedSharePointSettings["RootWebApplicationUri"]); item.Name = String.Format("{0}://{1}", rootWebApplicationUri.Scheme, item.Name); if (rootWebApplicationUri.Port > 0 && rootWebApplicationUri.Port != 80 && rootWebApplicationUri.Port != 443) { item.PhysicalAddress = String.Format("{0}:{1}", item.Name, rootWebApplicationUri.Port); } else { item.PhysicalAddress = item.Name; } Organization org = OrganizationController.GetOrganization(item.OrganizationId); item.MaxSiteStorage = RecalculateMaxSize(org.MaxSharePointStorage, (int)item.MaxSiteStorage); item.WarningStorage = item.MaxSiteStorage == -1 ? -1 : Math.Min((int)item.WarningStorage, item.MaxSiteStorage) ; // Check package item with given name already exists. if (PackageController.GetPackageItemByName(item.PackageId, item.Name, typeof(SharePointSiteCollection)) != null) { return BusinessErrorCodes.ERROR_SHAREPOINT_PACKAGE_ITEM_EXISTS; } // Log operation. TaskManager.StartTask("HOSTEDSHAREPOINT", "ADD_SITE_COLLECTION", item.Name); try { // Create site collection on server. HostedSharePointServer hostedSharePointServer = GetHostedSharePointServer(serviceId); hostedSharePointServer.CreateSiteCollection(item); // Make record in metabase. item.ServiceId = serviceId; int itemId = PackageController.AddPackageItem(item); int dnsServiceId = PackageController.GetPackageServiceId(item.PackageId, ResourceGroups.Dns); if (dnsServiceId > 0) { DomainInfo domain = ServerController.GetDomain(domainName); if (domain != null) { string website = domain.WebSiteName; if (!String.IsNullOrEmpty(domain.WebSiteName)) { DnsRecord[] records = ServerController.GetDnsZoneRecords(domain.DomainId); foreach (DnsRecord record in records) { if (record.RecordType.Equals(DnsRecordType.A) && String.IsNullOrEmpty(record.RecordName)) { ServerController.DeleteDnsZoneRecord(domain.DomainId, String.Empty, DnsRecordType.A, record.RecordData); break; } } } ServerController.AddDnsZoneRecord(domain.DomainId, String.Empty, DnsRecordType.A, hostedSharePointSettings["RootWebApplicationIpAddress"], 0); } } TaskManager.ItemId = itemId; return itemId; } catch(Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }
/// <summary> /// Adds SharePoint site collection. /// </summary> /// <param name="item">Site collection description.</param> /// <returns>Created site collection id within metabase.</returns> public static int AddSiteCollection(SharePointSiteCollection item) { // Check account. int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); if (accountCheck < 0) { return accountCheck; } // Check package. int packageCheck = SecurityContext.CheckPackage(item.PackageId, DemandPackage.IsActive); if (packageCheck < 0) { return packageCheck; } // Check quota. OrganizationStatistics orgStats = OrganizationController.GetOrganizationStatistics(item.OrganizationId); //QuotaValueInfo quota = PackageController.GetPackageQuota(item.PackageId, Quotas.HOSTED_SHAREPOINT_SITES); if (orgStats.AllocatedSharePointSiteCollections > -1 && orgStats.CreatedSharePointSiteCollections >= orgStats.AllocatedSharePointSiteCollections) { return BusinessErrorCodes.ERROR_SHAREPOINT_RESOURCE_QUOTA_LIMIT; } // Check if stats resource is available int serviceId = PackageController.GetPackageServiceId(item.PackageId, ResourceGroups.SharepointFoundationServer); if (serviceId == 0) { return BusinessErrorCodes.ERROR_SHAREPOINT_RESOURCE_UNAVAILABLE; } StringDictionary hostedSharePointSettings = ServerController.GetServiceSettings(serviceId); QuotaValueInfo quota = PackageController.GetPackageQuota(item.PackageId, Quotas.HOSTED_SHAREPOINT_USESHAREDSSL); Uri rootWebApplicationUri = new Uri(hostedSharePointSettings["RootWebApplicationUri"]); Organization org = OrganizationController.GetOrganization(item.OrganizationId); string siteName = item.Name; if (quota.QuotaAllocatedValue == 1) { string sslRoot = hostedSharePointSettings["SharedSSLRoot"]; string defaultDomain = org.DefaultDomain; string hostNameBase = string.Empty; string[] tmp = defaultDomain.Split('.'); if (tmp.Length == 2) { hostNameBase = tmp[0]; } else { if (tmp.Length > 2) { hostNameBase = tmp[0] + tmp[1]; } } int counter = 0; item.Name = String.Format("{0}://{1}", rootWebApplicationUri.Scheme, hostNameBase + "-" + counter.ToString() + "." + sslRoot); siteName = String.Format("{0}", hostNameBase + "-" + counter.ToString() + "." + sslRoot); while ( DataProvider. CheckServiceItemExists( serviceId, item. Name, "WebsitePanel.Providers.SharePoint.SharePointSiteCollection, WebsitePanel.Providers.Base")) { counter++; item.Name = String.Format("{0}://{1}", rootWebApplicationUri.Scheme, hostNameBase + "-" + counter.ToString() + "." + sslRoot); siteName = String.Format("{0}", hostNameBase + "-" + counter.ToString() + "." + sslRoot); } } else item.Name = String.Format("{0}://{1}", rootWebApplicationUri.Scheme, item.Name); if (rootWebApplicationUri.Port > 0 && rootWebApplicationUri.Port != 80 && rootWebApplicationUri.Port != 443) { item.PhysicalAddress = String.Format("{0}:{1}", item.Name, rootWebApplicationUri.Port); } else { item.PhysicalAddress = item.Name; } if (Utils.ParseBool(hostedSharePointSettings["LocalHostFile"], false)) { item.RootWebApplicationInteralIpAddress = hostedSharePointSettings["RootWebApplicationInteralIpAddress"]; item.RootWebApplicationFQDN = item.Name.Replace(rootWebApplicationUri.Scheme + "://", ""); } item.MaxSiteStorage = RecalculateMaxSize(org.MaxSharePointStorage, (int)item.MaxSiteStorage); item.WarningStorage = item.MaxSiteStorage == -1 ? -1 : Math.Min((int)item.WarningStorage, item.MaxSiteStorage); // Check package item with given name already exists. if (PackageController.GetPackageItemByName(item.PackageId, item.Name, typeof(SharePointSiteCollection)) != null) { return BusinessErrorCodes.ERROR_SHAREPOINT_PACKAGE_ITEM_EXISTS; } // Log operation. TaskManager.StartTask("HOSTEDSHAREPOINT", "ADD_SITE_COLLECTION", item.Name); try { // Create site collection on server. HostedSharePointServer hostedSharePointServer = GetHostedSharePointServer(serviceId); hostedSharePointServer.CreateSiteCollection(item); // Make record in metabase. item.ServiceId = serviceId; int itemId = PackageController.AddPackageItem(item); hostedSharePointServer.SetPeoplePickerOu(item.Name, org.DistinguishedName); int dnsServiceId = PackageController.GetPackageServiceId(item.PackageId, ResourceGroups.Dns); if (dnsServiceId > 0) { string[] tmpStr = siteName.Split('.'); string hostName = tmpStr[0]; string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1)); List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(serviceId); List<DnsRecord> resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, ""); DNSServer dns = new DNSServer(); ServiceProviderProxy.Init(dns, dnsServiceId); // add new resource records dns.AddZoneRecords(domainName, resourceRecords.ToArray()); } TaskManager.ItemId = itemId; return itemId; } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }
/// <remarks/> public void CreateSiteCollectionAsync(SharePointSiteCollection siteCollection) { this.CreateSiteCollectionAsync(siteCollection, null); }
/// <remarks/> public System.IAsyncResult BeginAddSiteCollection(SharePointSiteCollection item, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AddSiteCollection", new object[] { item}, callback, asyncState); }
public void DeleteSiteCollection(SharePointSiteCollection siteCollection) { this.Invoke("DeleteSiteCollection", new object[] { siteCollection}); }
/// <remarks/> public void AddSiteCollectionAsync(SharePointSiteCollection item, object userState) { if ((this.AddSiteCollectionOperationCompleted == null)) { this.AddSiteCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSiteCollectionOperationCompleted); } this.InvokeAsync("AddSiteCollection", new object[] { item}, this.AddSiteCollectionOperationCompleted, userState); }
/// <summary> Creates site collection within predefined root web application.</summary> /// <param name="runspace"> The runspace.</param> /// <param name="rootWebApplicationUri">Root web application uri.</param> /// <param name="siteCollection">Information about site coolection to be created.</param> /// <exception cref="InvalidOperationException">Is thrown in case requested operation fails for any reason.</exception> private void CreateCollection(Runspace runspace, Uri rootWebApplicationUri, SharePointSiteCollection siteCollection) { string siteCollectionUrl = String.Format("{0}:{1}", siteCollection.Url, rootWebApplicationUri.Port); HostedSolutionLog.DebugInfo("siteCollectionUrl: {0}", siteCollectionUrl); try { SPWebApplication rootWebApplication = SPWebApplication.Lookup(rootWebApplicationUri); rootWebApplication.Sites.Add(siteCollectionUrl, siteCollection.Title, siteCollection.Description, (uint) siteCollection.LocaleId, String.Empty, siteCollection.OwnerLogin, siteCollection.OwnerName, siteCollection.OwnerEmail, null, null, null, true); rootWebApplication.Update(); } catch (Exception) { DeleteSiteCollection(runspace, siteCollectionUrl, true); throw; } try { GrantAccess(runspace, rootWebApplicationUri); var command = new Command("Set-SPSite"); command.Parameters.Add("Identity", siteCollectionUrl); if (siteCollection.MaxSiteStorage != -1) { command.Parameters.Add("MaxSize", siteCollection.MaxSiteStorage*1024*1024); } if (siteCollection.WarningStorage != -1 && siteCollection.MaxSiteStorage != -1) { command.Parameters.Add("WarningSize", Math.Min(siteCollection.WarningStorage, siteCollection.MaxSiteStorage)*1024*1024); } ExecuteShellCommand(runspace, command); } catch (Exception) { DeleteQuotaTemplate(siteCollection.Title); DeleteSiteCollection(runspace, siteCollectionUrl, true); throw; } AddHostsRecord(siteCollection); }