This commit is contained in:
me 2015-03-27 15:57:39 +04:00
commit 68ea4a618a
39 changed files with 2233 additions and 224 deletions

View file

@ -4676,6 +4676,23 @@ namespace WebsitePanel.EnterpriseServer
#region RDS
public static IDataReader GetRdsServerSettings(int serverId, string settingsName)
{
return SqlHelper.ExecuteReader(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "GetRDSServerSettings",
new SqlParameter("@ServerId", serverId),
new SqlParameter("@SettingsName", settingsName));
}
public static void UpdateRdsServerSettings(int serverId, string settingsName, string xml)
{
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "UpdateRDSServerSettings",
new SqlParameter("@ServerId", serverId),
new SqlParameter("@SettingsName", settingsName),
new SqlParameter("@Xml", xml));
}
public static int AddRdsCertificate(int serviceId, string content, byte[] hash, string fileName, DateTime? validFrom, DateTime? expiryDate)
{
SqlParameter rdsCertificateId = new SqlParameter("@RDSCertificateID", SqlDbType.Int);

View file

@ -45,6 +45,7 @@ using WebsitePanel.Providers.RemoteDesktopServices;
using WebsitePanel.Providers.Web;
using System.Net.Mail;
using System.Collections;
using WebsitePanel.EnterpriseServer.Base.RDS;
namespace WebsitePanel.EnterpriseServer
{
@ -320,6 +321,77 @@ namespace WebsitePanel.EnterpriseServer
return SendRdsSetupLetterInternal(itemId, accountId, to, cc);
}
public static RdsServerSettings GetRdsServerSettings(int serverId, string settingsName)
{
return GetRdsServerSettingsInternal(serverId, settingsName);
}
public static int UpdateRdsServerSettings(int serverId, string settingsName, RdsServerSettings settings)
{
return UpdateRdsServerSettingsInternal(serverId, settingsName, settings);
}
private static RdsServerSettings GetRdsServerSettingsInternal(int serverId, string settingsName)
{
IDataReader reader = DataProvider.GetRdsServerSettings(serverId, settingsName);
var settings = new RdsServerSettings();
settings.ServerId = serverId;
settings.SettingsName = settingsName;
while (reader.Read())
{
settings.Settings.Add(new RdsServerSetting
{
PropertyName = (string)reader["PropertyName"],
PropertyValue = (string)reader["PropertyValue"],
ApplyAdministrators = Convert.ToBoolean("ApplyAdministrators"),
ApplyUsers = Convert.ToBoolean("ApplyUsers")
});
}
reader.Close();
return settings;
}
private static int UpdateRdsServerSettingsInternal(int serverId, string settingsName, RdsServerSettings settings)
{
TaskManager.StartTask("REMOTE_DESKTOP_SERVICES", "UPDATE_SETTINGS");
try
{
XmlDocument doc = new XmlDocument();
XmlElement nodeProps = doc.CreateElement("properties");
if (settings != null)
{
foreach (var setting in settings.Settings)
{
XmlElement nodeProp = doc.CreateElement("property");
nodeProp.SetAttribute("name", setting.PropertyName);
nodeProp.SetAttribute("value", setting.PropertyValue);
nodeProp.SetAttribute("applyUsers", setting.ApplyUsers ? "1" : "0");
nodeProp.SetAttribute("applyAdministrators", setting.ApplyAdministrators ? "1" : "0");
nodeProps.AppendChild(nodeProp);
}
}
string xml = nodeProps.OuterXml;
DataProvider.UpdateRdsServerSettings(serverId, settingsName, xml);
return 0;
}
catch (Exception ex)
{
throw TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
}
private static string GetRdsSetupLetterInternal(int itemId, int? accountId)
{
Organization org = OrganizationController.GetOrganization(itemId);

View file

@ -58,18 +58,18 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
/// <param name="startRow">Row index to start from.</param>
/// <param name="maximumRows">Maximum number of rows to retrieve.</param>
/// <returns>Site collections that match.</returns>
public static SharePointSiteCollectionListPaged GetSiteCollectionsPaged(int packageId, int organizationId, string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
public static SharePointSiteCollectionListPaged GetSiteCollectionsPaged(int packageId, int organizationId, string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows, string groupName = null)
{
if (IsDemoMode)
{
SharePointSiteCollectionListPaged demoResult = new SharePointSiteCollectionListPaged();
demoResult.SiteCollections = GetSiteCollections(1, false);
demoResult.SiteCollections = GetSiteCollections(1, false, null);
demoResult.TotalRowCount = demoResult.SiteCollections.Count;
return demoResult;
}
SharePointSiteCollectionListPaged paged = new SharePointSiteCollectionListPaged();
DataSet result = PackageController.GetRawPackageItemsPaged(packageId, typeof(SharePointSiteCollection),
DataSet result = PackageController.GetRawPackageItemsPaged(packageId, groupName, typeof(SharePointSiteCollection),
true, filterColumn, filterValue, sortColumn, startRow, Int32.MaxValue);
List<SharePointSiteCollection> items = PackageController.CreateServiceItemsList(result, 1).ConvertAll<SharePointSiteCollection>(delegate(ServiceProviderItem item) { return (SharePointSiteCollection)item; });
@ -149,8 +149,9 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
/// </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>
/// <param name="groupName">Resource group name.</param>
/// <returns>List of found site collections.</returns>
public static List<SharePointSiteCollection> GetSiteCollections(int packageId, bool recursive)
public static List<SharePointSiteCollection> GetSiteCollections(int packageId, bool recursive, string groupName)
{
if (IsDemoMode)
{
@ -183,7 +184,7 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
}
List<ServiceProviderItem> items = PackageController.GetPackageItemsByType(packageId, typeof(SharePointSiteCollection), recursive);
List<ServiceProviderItem> items = PackageController.GetPackageItemsByType(packageId, groupName, typeof(SharePointSiteCollection), recursive);
return items.ConvertAll<SharePointSiteCollection>(delegate(ServiceProviderItem item) { return (SharePointSiteCollection)item; });
}
@ -196,7 +197,7 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
{
if (IsDemoMode)
{
return GetSiteCollections(1, false)[itemId - 1];
return GetSiteCollections(1, false, null)[itemId - 1];
}
SharePointSiteCollection item = PackageController.GetPackageItem(itemId) as SharePointSiteCollection;
@ -207,8 +208,9 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
/// Adds SharePoint site collection.
/// </summary>
/// <param name="item">Site collection description.</param>
/// <param name="groupName">Resource group name.</param>
/// <returns>Created site collection id within metabase.</returns>
public static int AddSiteCollection(SharePointSiteCollection item)
public static int AddSiteCollection(SharePointSiteCollection item, string groupName)
{
// Check account.
@ -236,7 +238,8 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
}
// Check if stats resource is available
int serviceId = PackageController.GetPackageServiceId(item.PackageId, ResourceGroups.SharepointFoundationServer);
int serviceId = PackageController.GetPackageServiceId(item.PackageId, groupName);
if (serviceId == 0)
{
return BusinessErrorCodes.ERROR_SHAREPOINT_RESOURCE_UNAVAILABLE;
@ -271,9 +274,9 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
int counter = 0;
item.Name = String.Format("{0}://{1}", rootWebApplicationUri.Scheme, hostNameBase + "-" + counter.ToString() + "." + sslRoot);
siteName = String.Format("{0}", 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"))
while (CheckServiceItemExists(item.Name, item.PackageId))
{
counter++;
item.Name = String.Format("{0}://{1}", rootWebApplicationUri.Scheme, hostNameBase + "-" + counter.ToString() + "." + sslRoot);
@ -303,7 +306,7 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
// Check package item with given name already exists.
if (PackageController.GetPackageItemByName(item.PackageId, item.Name, typeof(SharePointSiteCollection)) != null)
if (PackageController.GetPackageItemByName(item.PackageId, groupName, item.Name, typeof(SharePointSiteCollection)) != null)
{
return BusinessErrorCodes.ERROR_SHAREPOINT_PACKAGE_ITEM_EXISTS;
}
@ -1012,5 +1015,17 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
return (SecurityContext.CheckAccount(DemandAccount.NotDemo) < 0);
}
}
private static bool CheckServiceItemExists(string name, int packageId)
{
bool exists = PackageController.GetPackageItemByName(packageId, ResourceGroups.SharepointFoundationServer, name, typeof(SharePointSiteCollection)) != null;
if (!exists)
{
exists = PackageController.GetPackageItemByName(packageId, ResourceGroups.SharepointServer, name, typeof(SharePointSiteCollection)) != null;
}
return exists;
}
}
}