diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs
index 76778a16..d41e70b9 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/System/SystemSettings.cs
@@ -42,6 +42,7 @@ namespace WebsitePanel.EnterpriseServer
public const string BACKUP_SETTINGS = "BackupSettings";
public const string SETUP_SETTINGS = "SetupSettings";
public const string WPI_SETTINGS = "WpiSettings";
+ public const string FILEMANAGER_SETTINGS = "FileManagerSettings";
// key to access to wpi main & custom feed in wpi settings
public const string WPI_MAIN_FEED_KEY = "WpiMainFeedUrl";
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/FilesProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/FilesProxy.cs
index 984321d9..7064e1c4 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/FilesProxy.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/FilesProxy.cs
@@ -58,7 +58,9 @@ namespace WebsitePanel.EnterpriseServer {
[System.Web.Services.WebServiceBindingAttribute(Name="esFilesSoap", Namespace="http://smbsaas/websitepanel/enterpriseserver")]
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
public partial class esFiles : Microsoft.Web.Services3.WebServicesClientProtocol {
-
+
+ private System.Threading.SendOrPostCallback GetFileManagerSettingsOperationCompleted;
+
private System.Threading.SendOrPostCallback GetFilesOperationCompleted;
private System.Threading.SendOrPostCallback GetFilesByMaskOperationCompleted;
@@ -110,6 +112,9 @@ namespace WebsitePanel.EnterpriseServer {
this.Url = "http://localhost/EnterpriseServer/esFiles.asmx";
}
+ ///
+ public event GetFileManagerSettingsCompletedEventHandler GetFileManagerSettingsCompleted;
+
///
public event GetFilesCompletedEventHandler GetFilesCompleted;
@@ -178,6 +183,52 @@ namespace WebsitePanel.EnterpriseServer {
///
public event ExecuteSyncActionsCompletedEventHandler ExecuteSyncActionsCompleted;
+
+ ///
+ [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetFileManagerSettings", RequestNamespace = "http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace = "http://smbsaas/websitepanel/enterpriseserver", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
+ public SystemSettings GetFileManagerSettings()
+ {
+ object[] results = this.Invoke("GetFileManagerSettings", new Object[] {});
+ return ((SystemSettings)(results[0]));
+ }
+
+ ///
+ public System.IAsyncResult BeginGetFileManagerSettings(System.AsyncCallback callback, object asyncState)
+ {
+ return this.BeginInvoke("GetFileManagerSettings", new Object[] {}, callback, asyncState);
+ }
+
+ ///
+ public SystemSettings EndGetFileManagerSettings(System.IAsyncResult asyncResult)
+ {
+ object[] results = this.EndInvoke(asyncResult);
+ return ((SystemSettings)(results[0]));
+ }
+
+ ///
+ public void GetFileManagerSettingsAsync()
+ {
+ this.GetFileManagerSettingsAsync(null);
+ }
+
+ ///
+ public void GetFileManagerSettingsAsync(object userState)
+ {
+ if ((this.GetFileManagerSettingsOperationCompleted == null))
+ {
+ this.GetFileManagerSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileManagerSettingsOperationCompleted);
+ }
+ this.InvokeAsync("GetFileManagerSettings", new Object[] {}, this.GetFileManagerSettingsOperationCompleted, userState);
+ }
+
+ private void OnGetFileManagerSettingsOperationCompleted(object arg)
+ {
+ if ((this.GetFileManagerSettingsCompleted != null))
+ {
+ System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
+ this.GetFileManagerSettingsCompleted(this, new GetFileManagerSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
+ }
+ }
///
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetFiles", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
@@ -1260,7 +1311,33 @@ namespace WebsitePanel.EnterpriseServer {
-
+ public delegate void GetFileManagerSettingsCompletedEventHandler(object sender, GetFileManagerSettingsCompletedEventArgs e);
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ public partial class GetFileManagerSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
+ {
+
+ private object[] results;
+
+ internal GetFileManagerSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
+ base(exception, cancelled, userState)
+ {
+ this.results = results;
+ }
+
+ ///
+ public SystemSettings Result
+ {
+ get
+ {
+ this.RaiseExceptionIfNecessary();
+ return ((SystemSettings)(this.results[0]));
+ }
+ }
+ }
///
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Files/FilesController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Files/FilesController.cs
index 74dd8d78..913941f1 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Files/FilesController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Files/FilesController.cs
@@ -45,6 +45,11 @@ namespace WebsitePanel.EnterpriseServer
{
public class FilesController
{
+ public static SystemSettings GetFileManagerSettings()
+ {
+ return SystemController.GetSystemSettingsInternal(SystemSettings.FILEMANAGER_SETTINGS, false);
+ }
+
public static OS.OperatingSystem GetOS(int packageId)
{
int sid = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
index b3a6199a..2b5d7b95 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
@@ -2341,7 +2341,7 @@ namespace WebsitePanel.EnterpriseServer
foreach (ExchangeAccount user in securityGroup.MembersAccounts)
{
- OrganizationUser userAccount = GetAccountByAccountName(itemId, user.SamAccountName);
+ OrganizationUser userAccount = GetAccountByAccountName(itemId, user.AccountName);
if (userAccount != null)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esFiles.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esFiles.asmx.cs
index 14b2b455..7663d4a8 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esFiles.asmx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esFiles.asmx.cs
@@ -50,6 +50,12 @@ namespace WebsitePanel.EnterpriseServer
[ToolboxItem(false)]
public class esFiles : System.Web.Services.WebService
{
+ [WebMethod]
+ public SystemSettings GetFileManagerSettings()
+ {
+ return FilesController.GetFileManagerSettings();
+ }
+
[WebMethod]
public static string GetHomeFolder(int packageId)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs
index 27b223eb..ed0332dc 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs
@@ -255,6 +255,18 @@ namespace WebsitePanel.Providers.HostedSolution
return ret != null ? ret.ToString() : string.Empty;
}
+ public static string GetCNFromADPath(string path)
+ {
+ string[] parts = path.Substring(path.ToUpper().IndexOf("CN=")).Split(',');
+
+ if (parts.Length > 0)
+ {
+ return parts[0].Substring(3);
+ }
+
+ return null;
+ }
+
public static string ConvertADPathToCanonicalName(string name)
{
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs
index 09089959..0bae0a80 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs
@@ -928,8 +928,10 @@ namespace WebsitePanel.Providers.HostedSolution
securityGroup.Notes = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.Notes);
- securityGroup.AccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
- securityGroup.SAMAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
+ string samAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(entry, ADAttributes.SAMAccountName);
+
+ securityGroup.AccountName = samAccountName;
+ securityGroup.SAMAccountName = samAccountName;
List members = new List();
@@ -939,7 +941,7 @@ namespace WebsitePanel.Providers.HostedSolution
members.Add(new ExchangeAccount
{
- AccountName = tmpUser.AccountName,
+ AccountName = ActiveDirectoryUtils.GetCNFromADPath(userPath),
SamAccountName = tmpUser.SamAccountName
});
}
@@ -948,10 +950,12 @@ namespace WebsitePanel.Providers.HostedSolution
{
DirectoryEntry groupEntry = ActiveDirectoryUtils.GetADObject(groupPath);
+ string tmpSamAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(groupEntry, ADAttributes.SAMAccountName);
+
members.Add(new ExchangeAccount
{
- AccountName = ActiveDirectoryUtils.GetADObjectStringProperty(groupEntry, ADAttributes.SAMAccountName),
- SamAccountName = ActiveDirectoryUtils.GetADObjectStringProperty(groupEntry, ADAttributes.SAMAccountName)
+ AccountName = tmpSamAccountName,
+ SamAccountName = tmpSamAccountName
});
}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx
index feb70193..d0dd8013 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SystemSettings.ascx.resx
@@ -112,10 +112,10 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Save Settings
@@ -153,4 +153,13 @@
Custom feeds:
+
+ File Manager
+
+
+ Editable Extensions:
+
+
+ (One (1) extension per line)
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDistributionListMemberOf.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDistributionListMemberOf.ascx.cs
index ec9a8933..39f21c95 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDistributionListMemberOf.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeDistributionListMemberOf.ascx.cs
@@ -45,14 +45,37 @@ namespace WebsitePanel.Portal.ExchangeServer
{
public partial class ExchangeDistributionListMemberOf : WebsitePanelModuleBase
{
+ protected PackageContext cntx;
+
+ protected PackageContext Cntx
+ {
+ get
+ {
+ if (cntx == null)
+ {
+ cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
+ }
+
+ return cntx;
+ }
+ }
+
+ protected bool EnableSecurityGroups
+ {
+ get
+ {
+ return Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, Cntx);
+ }
+ }
+
protected void Page_Load(object sender, EventArgs e)
{
+ groups.SecurityGroupsEnabled = EnableSecurityGroups;
+
if (!IsPostBack)
{
BindSettings();
}
-
-
}
private void BindSettings()
@@ -67,17 +90,20 @@ namespace WebsitePanel.Portal.ExchangeServer
ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
- ExchangeAccount[] secGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
List groupsList = new List();
foreach (ExchangeAccount distList in dLists)
{
groupsList.Add(distList);
}
- foreach (ExchangeAccount secGroup in secGroups)
+ if (EnableSecurityGroups)
{
- groupsList.Add(secGroup);
+ ExchangeAccount[] secGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in secGroups)
+ {
+ groupsList.Add(secGroup);
+ }
}
groups.SetAccounts(groupsList.ToArray());
@@ -96,18 +122,24 @@ namespace WebsitePanel.Portal.ExchangeServer
try
{
- ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
- ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
IList oldGroups = new List();
- foreach (ExchangeAccount distList in oldSecGroups)
+
+ if (EnableSecurityGroups)
{
- oldGroups.Add(distList);
+ ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+
+ foreach (ExchangeAccount secGroup in oldSecGroups)
+ {
+ oldGroups.Add(secGroup);
+ }
}
- foreach (ExchangeAccount secGroup in oldDistLists)
+ ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount distList in oldDistLists)
{
- oldGroups.Add(secGroup);
+ oldGroups.Add(distList);
}
IDictionary newGroups = groups.GetFullAccounts();
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.cs
index 90250d87..7d80ff2a 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx.cs
@@ -35,8 +35,33 @@ namespace WebsitePanel.Portal.ExchangeServer
{
public partial class ExchangeMailboxMemberOf : WebsitePanelModuleBase
{
+ protected PackageContext cntx;
+
+ protected PackageContext Cntx
+ {
+ get
+ {
+ if (cntx == null)
+ {
+ cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
+ }
+
+ return cntx;
+ }
+ }
+
+ protected bool EnableSecurityGroups
+ {
+ get
+ {
+ return Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, Cntx);
+ }
+ }
+
protected void Page_Load(object sender, EventArgs e)
{
+ groups.SecurityGroupsEnabled = EnableSecurityGroups;
+
if (!IsPostBack)
{
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
@@ -44,9 +69,7 @@ namespace WebsitePanel.Portal.ExchangeServer
BindSettings();
UserInfo user = UsersHelper.GetUser(PanelSecurity.EffectiveUserId);
-
}
-
}
private void BindSettings()
@@ -59,21 +82,25 @@ namespace WebsitePanel.Portal.ExchangeServer
// title
litDisplayName.Text = mailbox.DisplayName;
- //Distribution Lists
- ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
- //Security Groups
- ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
List groupsList = new List();
+
+ //Distribution Lists
+ ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
foreach (ExchangeAccount distList in dLists)
{
groupsList.Add(distList);
}
- foreach (ExchangeAccount secGroup in securGroups)
+ if (EnableSecurityGroups)
{
- groupsList.Add(secGroup);
+ //Security Groups
+ ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in securGroups)
+ {
+ groupsList.Add(secGroup);
+ }
}
groups.SetAccounts(groupsList.ToArray());
@@ -92,18 +119,23 @@ namespace WebsitePanel.Portal.ExchangeServer
try
{
- ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
- ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
IList oldGroups = new List();
- foreach (ExchangeAccount distList in oldSecGroups)
+
+ if (EnableSecurityGroups)
{
- oldGroups.Add(distList);
+ ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in oldSecGroups)
+ {
+ oldGroups.Add(secGroup);
+ }
}
- foreach (ExchangeAccount secGroup in oldDistLists)
+ ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount distList in oldDistLists)
{
- oldGroups.Add(secGroup);
+ oldGroups.Add(distList);
}
IDictionary newGroups = groups.GetFullAccounts();
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs
index 9b7fc8fa..cd8a0d03 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs
@@ -37,8 +37,41 @@ namespace WebsitePanel.Portal.HostedSolution
{
public partial class OrganizationSecurityGroupMemberOf : WebsitePanelModuleBase
{
+ protected PackageContext cntx;
+
+ protected PackageContext Cntx
+ {
+ get
+ {
+ if (cntx == null)
+ {
+ cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
+ }
+
+ return cntx;
+ }
+ }
+
+ protected bool EnableDistributionLists
+ {
+ get
+ {
+ return Cntx.Groups.ContainsKey(ResourceGroups.Exchange) & Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, Cntx);
+ }
+ }
+
+ protected bool EnableSecurityGroups
+ {
+ get
+ {
+ return Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, Cntx);
+ }
+ }
+
protected void Page_Load(object sender, EventArgs e)
{
+ groups.DistributionListsEnabled = EnableDistributionLists;
+
if (!IsPostBack)
{
BindSettings();
@@ -53,22 +86,29 @@ namespace WebsitePanel.Portal.HostedSolution
OrganizationSecurityGroup group = ES.Services.Organizations.GetSecurityGroupGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID);
litDisplayName.Text = group.DisplayName;
-
- //Distribution Lists
- ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
- //Security Groups
- ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
List groupsList = new List();
- foreach (ExchangeAccount distList in dLists)
+
+ if (EnableDistributionLists)
{
- groupsList.Add(distList);
+ //Distribution Lists
+ ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount distList in dLists)
+ {
+ groupsList.Add(distList);
+ }
}
- foreach (ExchangeAccount secGroup in securGroups)
+ if (EnableSecurityGroups)
{
- groupsList.Add(secGroup);
+ //Security Groups
+ ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in securGroups)
+ {
+ groupsList.Add(secGroup);
+ }
}
groups.SetAccounts(groupsList.ToArray());
@@ -87,21 +127,30 @@ namespace WebsitePanel.Portal.HostedSolution
try
{
- ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
- ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
IList oldGroups = new List();
- foreach (ExchangeAccount distList in oldSecGroups)
+
+ if (EnableDistributionLists)
{
- oldGroups.Add(distList);
+ ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount distList in oldDistLists)
+ {
+ oldGroups.Add(distList);
+ }
}
- foreach (ExchangeAccount secGroup in oldDistLists)
+ if (EnableSecurityGroups)
{
- oldGroups.Add(secGroup);
+ ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in oldSecGroups)
+ {
+ oldGroups.Add(secGroup);
+ }
}
IDictionary newGroups = groups.GetFullAccounts();
+
foreach (ExchangeAccount oldGroup in oldGroups)
{
if (newGroups.ContainsKey(oldGroup.AccountName))
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.cs
index 72cbe1dc..e5846c99 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx.cs
@@ -37,8 +37,42 @@ namespace WebsitePanel.Portal.HostedSolution
{
public partial class UserMemberOf : WebsitePanelModuleBase
{
+ protected PackageContext cntx;
+
+ protected PackageContext Cntx
+ {
+ get
+ {
+ if (cntx == null)
+ {
+ cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
+ }
+
+ return cntx;
+ }
+ }
+
+ protected bool EnableDistributionLists
+ {
+ get
+ {
+ return Cntx.Groups.ContainsKey(ResourceGroups.Exchange) & Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, Cntx);
+ }
+ }
+
+ protected bool EnableSecurityGroups
+ {
+ get
+ {
+ return Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, Cntx);
+ }
+ }
+
protected void Page_Load(object sender, EventArgs e)
{
+ groups.DistributionListsEnabled = EnableDistributionLists;
+ groups.SecurityGroupsEnabled = EnableSecurityGroups;
+
if (!IsPostBack)
{
BindSettings();
@@ -61,22 +95,29 @@ namespace WebsitePanel.Portal.HostedSolution
|| user.AccountType == ExchangeAccountType.Equipment);
litDisplayName.Text = user.DisplayName;
-
- //Distribution Lists
- ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
- //Security Groups
- ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
List groupsList = new List();
- foreach (ExchangeAccount distList in dLists)
+
+ if (EnableDistributionLists)
{
- groupsList.Add(distList);
+ //Distribution Lists
+ ExchangeAccount[] dLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount distList in dLists)
+ {
+ groupsList.Add(distList);
+ }
}
- foreach (ExchangeAccount secGroup in securGroups)
+ if (EnableSecurityGroups)
{
- groupsList.Add(secGroup);
+ //Security Groups
+ ExchangeAccount[] securGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in securGroups)
+ {
+ groupsList.Add(secGroup);
+ }
}
groups.SetAccounts(groupsList.ToArray());
@@ -95,21 +136,30 @@ namespace WebsitePanel.Portal.HostedSolution
try
{
- ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
- ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
-
IList oldGroups = new List();
- foreach (ExchangeAccount distList in oldSecGroups)
+
+ if (EnableDistributionLists)
{
- oldGroups.Add(distList);
+ ExchangeAccount[] oldDistLists = ES.Services.ExchangeServer.GetDistributionListsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount distList in oldDistLists)
+ {
+ oldGroups.Add(distList);
+ }
}
- foreach (ExchangeAccount secGroup in oldDistLists)
+ if (EnableSecurityGroups)
{
- oldGroups.Add(secGroup);
+ ExchangeAccount[] oldSecGroups = ES.Services.Organizations.GetSecurityGroupsByMember(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ foreach (ExchangeAccount secGroup in oldSecGroups)
+ {
+ oldGroups.Add(secGroup);
+ }
}
IDictionary newGroups = groups.GetFullAccounts();
+
foreach (ExchangeAccount oldGroup in oldGroups)
{
if (newGroups.ContainsKey(oldGroup.AccountName))
@@ -145,7 +195,6 @@ namespace WebsitePanel.Portal.HostedSolution
messageBox.ShowSuccessMessage("ORGANIZATION_UPDATE_USER_SETTINGS");
-
BindSettings();
}
catch (Exception ex)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs
index 99d73a43..4c314966 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserTabs.ascx.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
using WebsitePanel.Portal.Code.UserControls;
using WebsitePanel.WebPortal;
using WebsitePanel.EnterpriseServer;
+using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal.ExchangeServer.UserControls
{
@@ -59,8 +60,23 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
- if (Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, cntx) || Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, cntx))
+ bool bSuccess = Utils.CheckQouta(Quotas.ORGANIZATION_SECURITYGROUPMANAGEMENT, cntx);
+
+ if (!bSuccess)
+ {
+ // get user settings
+ OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID);
+
+ bSuccess = (Utils.CheckQouta(Quotas.EXCHANGE2007_DISTRIBUTIONLISTS, cntx)
+ && (user.AccountType == ExchangeAccountType.Mailbox
+ || user.AccountType == ExchangeAccountType.Room
+ || user.AccountType == ExchangeAccountType.Equipment));
+ }
+
+ if (bSuccess)
+ {
tabsList.Add(CreateTab("user_memberof", "Tab.MemberOf"));
+ }
// find selected menu item
int idx = 0;
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx.cs
index b8fe38e6..301c869f 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx.cs
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/FileManager.ascx.cs
@@ -33,12 +33,14 @@ using System.Text;
using System.Web;
using System.Web.UI.WebControls;
using WebsitePanel.Providers.OS;
+using System.Linq;
+using System.Text.RegularExpressions;
namespace WebsitePanel.Portal
{
public partial class FileManager : WebsitePanelModuleBase
{
- string ALLOWED_EDIT_EXTENSIONS = ".txt.htm.html.php.pl.sql.cs.vb.ascx.aspx.inc.asp.config.xml.xsl.xslt.xsd.Master.htaccess.htpasswd.cshtml.vbhtml";
+ public static string ALLOWED_EDIT_EXTENSIONS = ".txt,.htm,.html,.php,.pl,.sql,.cs,.vb,.ascx,.aspx,.inc,.asp,.config,.xml,.xsl,.xslt,.xsd,.master,.htaccess,.htpasswd,.cshtml,.vbhtml,.ini,.config";
protected void Page_Load(object sender, EventArgs e)
{
@@ -204,12 +206,16 @@ function SetCreateZipFocus()
if (file.IsDirectory)
return false;
+ // Get the Editable Extensions from the System Settings
+ // If it has not yet been set, we will use the original WebsitePanel allowed editable extensions
+ EnterpriseServer.SystemSettings settings = ES.Services.Files.GetFileManagerSettings();
+ if (!String.IsNullOrEmpty(settings["EditableExtensions"]))
+ {
+ ALLOWED_EDIT_EXTENSIONS = settings["EditableExtensions"];
+ }
+
string ext = Path.GetExtension(file.Name);
- //allow to edit Master pages
- if (ext == ".Master")
- return true;
- else
- return ALLOWED_EDIT_EXTENSIONS.IndexOf(ext.ToLower()) != -1;
+ return ALLOWED_EDIT_EXTENSIONS.Split(',').ToArray().Contains(ext);
}
#region Path methods
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx
index 55b85a1a..24542dbe 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SystemSettings.ascx
@@ -58,6 +58,18 @@
+
+
+
+
+
+