Public support added for Exchange 2013, Litigationhold implementation synced

with exchange 2013 provider
This commit is contained in:
robvde 2013-01-25 17:49:51 +04:00
parent 73cd732e6d
commit 22e56f6af2
9 changed files with 482 additions and 276 deletions

View file

@ -836,7 +836,7 @@ namespace WebsitePanel.EnterpriseServer
// get stats
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
return exchange.GetPublicFoldersStatistics(folderNames.ToArray());
return exchange.GetPublicFoldersStatistics(org.OrganizationId, folderNames.ToArray());
}
catch (Exception ex)
{
@ -4073,7 +4073,7 @@ namespace WebsitePanel.EnterpriseServer
PackageController.UpdatePackageItem(org);
}
exchange.CreatePublicFolder(
exchange.CreatePublicFolder(org.DistinguishedName,
org.OrganizationId,
org.SecurityGroup,
parentFolder,
@ -4084,7 +4084,7 @@ namespace WebsitePanel.EnterpriseServer
domain);
ExchangePublicFolder folder = exchange.GetPublicFolderGeneralSettings(parentFolder + "\\" + folderName);
ExchangePublicFolder folder = exchange.GetPublicFolderGeneralSettings(org.OrganizationId, parentFolder + "\\" + folderName);
// add meta-item
int accountId = AddAccount(itemId, ExchangeAccountType.PublicFolder, accountName,
@ -4147,7 +4147,7 @@ namespace WebsitePanel.EnterpriseServer
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.DeletePublicFolder(account.DisplayName);
exchange.DeletePublicFolder(org.OrganizationId, account.DisplayName);
// unregister account
DeleteAccount(itemId, accountId);
@ -4269,7 +4269,7 @@ namespace WebsitePanel.EnterpriseServer
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.DisableMailPublicFolder(account.DisplayName);
exchange.DisableMailPublicFolder(org.OrganizationId, account.DisplayName);
// update and save account
@ -4336,7 +4336,7 @@ namespace WebsitePanel.EnterpriseServer
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
ExchangePublicFolder folder = exchange.GetPublicFolderGeneralSettings(account.DisplayName);
ExchangePublicFolder folder = exchange.GetPublicFolderGeneralSettings(org.OrganizationId, account.DisplayName);
folder.MailEnabled = account.MailEnabledPublicFolder;
folder.DisplayName = account.DisplayName;
return folder;
@ -4381,6 +4381,7 @@ namespace WebsitePanel.EnterpriseServer
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.SetPublicFolderGeneralSettings(
org.OrganizationId,
account.DisplayName,
newName,
hideAddressBook,
@ -4449,7 +4450,7 @@ namespace WebsitePanel.EnterpriseServer
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
ExchangePublicFolder folder = exchange.GetPublicFolderMailFlowSettings(account.DisplayName);
ExchangePublicFolder folder = exchange.GetPublicFolderMailFlowSettings(org.OrganizationId, account.DisplayName);
folder.DisplayName = account.DisplayName;
return folder;
}
@ -4492,7 +4493,7 @@ namespace WebsitePanel.EnterpriseServer
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.SetPublicFolderMailFlowSettings(account.DisplayName,
exchange.SetPublicFolderMailFlowSettings(org.OrganizationId, account.DisplayName,
acceptAccounts,
rejectAccounts,
requireSenderAuthentication);
@ -4565,6 +4566,7 @@ namespace WebsitePanel.EnterpriseServer
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.SetPublicFolderEmailAddresses(
org.OrganizationId,
account.DisplayName,
GetAccountSimpleEmailAddresses(itemId, accountId));
@ -4609,6 +4611,7 @@ namespace WebsitePanel.EnterpriseServer
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.SetPublicFolderPrimaryEmailAddress(
org.OrganizationId,
account.DisplayName,
emailAddress);
@ -4664,6 +4667,7 @@ namespace WebsitePanel.EnterpriseServer
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
exchange.SetPublicFolderEmailAddresses(
org.OrganizationId,
account.DisplayName,
GetAccountSimpleEmailAddresses(itemId, accountId));

View file

@ -78,7 +78,7 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
try
{
item.TotalPublicFoldersSize = exchange.GetPublicFolderSize("\\" + org.OrganizationId);
item.TotalPublicFoldersSize = exchange.GetPublicFolderSize(org.OrganizationId, "\\" + org.OrganizationId);
}
catch (Exception ex)
{

View file

@ -96,20 +96,20 @@ namespace WebsitePanel.Providers.HostedSolution
void SetDistributionListPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] sendOnBehalfAccounts, string[] addressLists);
// Public Folders
void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain);
void DeletePublicFolder(string folder);
void CreatePublicFolder(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain);
void DeletePublicFolder(string organizationId, string folder);
void EnableMailPublicFolder(string organizationId, string folder, string accountName, string name, string domain);
void DisableMailPublicFolder(string folder);
ExchangePublicFolder GetPublicFolderGeneralSettings(string folder);
void SetPublicFolderGeneralSettings(string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts );
ExchangePublicFolder GetPublicFolderMailFlowSettings(string folder);
void SetPublicFolderMailFlowSettings(string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string folder);
void SetPublicFolderEmailAddresses(string folder, string[] emailAddresses);
void SetPublicFolderPrimaryEmailAddress(string folder, string emailAddress);
ExchangeItemStatistics[] GetPublicFoldersStatistics(string[] folders);
string[] GetPublicFoldersRecursive(string parent);
long GetPublicFolderSize(string folder);
void DisableMailPublicFolder(string organizationId, string folder);
ExchangePublicFolder GetPublicFolderGeneralSettings(string organizationId, string folder);
void SetPublicFolderGeneralSettings(string organizationId, string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts);
ExchangePublicFolder GetPublicFolderMailFlowSettings(string organizationId, string folder);
void SetPublicFolderMailFlowSettings(string organizationId, string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication);
ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string organizationId, string folder);
void SetPublicFolderEmailAddresses(string organizationId, string folder, string[] emailAddresses);
void SetPublicFolderPrimaryEmailAddress(string organizationId, string folder, string emailAddress);
ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders);
string[] GetPublicFoldersRecursive(string organizationId, string parent);
long GetPublicFolderSize(string organizationId, string folder);
//ActiveSync
void CreateOrganizationActiveSyncPolicy(string organizationId);

View file

@ -83,6 +83,7 @@ namespace WebsitePanel.Providers.HostedSolution
CreateMailbox,
CreateContact,
CreatePublicFolder,
CreatePublicFolderMailbox,
CreateActiveSyncPolicy,
AddMailboxFullAccessPermission,
AddSendAsPermission,

View file

@ -431,16 +431,16 @@ namespace WebsitePanel.Providers.HostedSolution
#endregion
#region Public folders
public void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder,
public void CreatePublicFolder(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder,
string folderName, bool mailEnabled, string accountName, string name, string domain)
{
CreatePublicFolderInternal(organizationId, securityGroup, parentFolder, folderName,
CreatePublicFolderInternal(organizationDistinguishedName, organizationId, securityGroup, parentFolder, folderName,
mailEnabled, accountName, name, domain);
}
public void DeletePublicFolder(string folder)
public void DeletePublicFolder(string organizationId, string folder)
{
DeletePublicFolderInternal(folder);
DeletePublicFolderInternal(organizationId, folder);
}
public void EnableMailPublicFolder(string organizationId, string folder, string accountName,
@ -521,60 +521,60 @@ namespace WebsitePanel.Providers.HostedSolution
}
public void DisableMailPublicFolder(string folder)
public void DisableMailPublicFolder(string organizationId, string folder)
{
DisableMailPublicFolderInternal(folder);
DisableMailPublicFolderInternal(organizationId, folder);
}
public ExchangePublicFolder GetPublicFolderGeneralSettings(string folder)
public ExchangePublicFolder GetPublicFolderGeneralSettings(string organizationId, string folder)
{
return GetPublicFolderGeneralSettingsInternal(folder);
return GetPublicFolderGeneralSettingsInternal(organizationId, folder);
}
public void SetPublicFolderGeneralSettings(string folder, string newFolderName,
public void SetPublicFolderGeneralSettings(string organizationId, string folder, string newFolderName,
bool hideFromAddressBook, ExchangeAccount[] accounts)
{
SetPublicFolderGeneralSettingsInternal(folder, newFolderName, hideFromAddressBook, accounts);
SetPublicFolderGeneralSettingsInternal(organizationId, folder, newFolderName, hideFromAddressBook, accounts);
}
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string folder)
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string organizationId, string folder)
{
return GetPublicFolderMailFlowSettingsInternal(folder);
return GetPublicFolderMailFlowSettingsInternal(organizationId, folder);
}
public void SetPublicFolderMailFlowSettings(string folder,
public void SetPublicFolderMailFlowSettings(string organizationId, string folder,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
SetPublicFolderMailFlowSettingsInternal(folder, acceptAccounts, rejectAccounts, requireSenderAuthentication);
SetPublicFolderMailFlowSettingsInternal(organizationId, folder, acceptAccounts, rejectAccounts, requireSenderAuthentication);
}
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string folder)
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string organizationId, string folder)
{
return GetPublicFolderEmailAddressesInternal(folder);
return GetPublicFolderEmailAddressesInternal(organizationId, folder);
}
public void SetPublicFolderEmailAddresses(string folder, string[] emailAddresses)
public void SetPublicFolderEmailAddresses(string organizationId, string folder, string[] emailAddresses)
{
SetPublicFolderEmailAddressesInternal(folder, emailAddresses);
SetPublicFolderEmailAddressesInternal(organizationId, folder, emailAddresses);
}
public void SetPublicFolderPrimaryEmailAddress(string folder, string emailAddress)
public void SetPublicFolderPrimaryEmailAddress(string organizationId, string folder, string emailAddress)
{
SetPublicFolderPrimaryEmailAddressInternal(folder, emailAddress);
SetPublicFolderPrimaryEmailAddressInternal(organizationId, folder, emailAddress);
}
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string[] folders)
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders)
{
return GetPublicFoldersStatisticsInternal(folders);
return GetPublicFoldersStatisticsInternal(organizationId, folders);
}
public string[] GetPublicFoldersRecursive(string parent)
public string[] GetPublicFoldersRecursive(string organizationId, string parent)
{
return GetPublicFoldersRecursiveInternal(parent);
return GetPublicFoldersRecursiveInternal(organizationId, parent);
}
public long GetPublicFolderSize(string folder)
public long GetPublicFolderSize(string organizationId, string folder)
{
return GetPublicFolderSizeInternal(folder);
return GetPublicFolderSizeInternal(organizationId, folder);
}
#endregion
@ -1128,10 +1128,8 @@ namespace WebsitePanel.Providers.HostedSolution
{
cmd = new Command("Get-PublicFolder");
cmd.Parameters.Add("Identity", "\\" + organizationId);
cmd.Parameters.Add("Mailbox", GetPublicFolderMailboxName(organizationId));
cmd.Parameters.Add("GetChildren", new SwitchParameter(true));
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
ret = false;
@ -1159,7 +1157,7 @@ namespace WebsitePanel.Providers.HostedSolution
id = ObjToString(GetPSObjectProperty(obj, "Identity"));
RemoveDevicesInternal(runSpace, id);
RemoveMailbox(runSpace, id);
RemoveMailbox(runSpace, id, false);
}
catch (Exception ex)
{
@ -1243,7 +1241,8 @@ namespace WebsitePanel.Providers.HostedSolution
string publicFolder = "\\" + organizationId;
try
{
RemovePublicFolder(runSpace, publicFolder);
DisableMailPublicFolderRecursiveInternal(runSpace, organizationId, publicFolder);
RemovePublicFolder(runSpace, GetPublicFolderMailboxName(organizationId), publicFolder);
}
catch (Exception ex)
{
@ -1393,7 +1392,7 @@ namespace WebsitePanel.Providers.HostedSolution
size += CalculateMailboxDiskSpace(runSpace, organizationDistinguishedName);
size += CalculatePublicFolderDiskSpace(runSpace, "\\" + organizationId);
size += CalculatePublicFolderDiskSpace(runSpace, GetPublicFolderMailboxName(organizationId), "\\" + organizationId);
}
finally
{
@ -1434,7 +1433,7 @@ namespace WebsitePanel.Providers.HostedSolution
return size;
}
internal virtual long CalculatePublicFolderDiskSpace(Runspace runSpace, string folder)
internal virtual long CalculatePublicFolderDiskSpace(Runspace runSpace, string mailbox, string folder)
{
ExchangeLog.LogStart("CalculatePublicFolderDiskSpace");
ExchangeLog.DebugInfo("Folder: {0}", folder);
@ -1447,8 +1446,7 @@ namespace WebsitePanel.Providers.HostedSolution
{
cmd = new Command("Get-PublicFolderStatistics");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
cmd.Parameters.Add("Mailbox", mailbox);
result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
@ -1460,14 +1458,13 @@ namespace WebsitePanel.Providers.HostedSolution
cmd = new Command("Get-PublicFolder");
cmd.Parameters.Add("Identity", folder);
cmd.Parameters.Add("Mailbox", mailbox);
cmd.Parameters.Add("GetChildren", new SwitchParameter(true));
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
result = ExecuteShellCommand(runSpace, cmd);
foreach (PSObject obj in result)
{
string id = ObjToString(GetPSObjectProperty(obj, "Identity"));
size += CalculatePublicFolderDiskSpace(runSpace, id);
size += CalculatePublicFolderDiskSpace(runSpace, mailbox, id);
}
}
else
@ -2027,7 +2024,7 @@ namespace WebsitePanel.Providers.HostedSolution
RemoveDevicesInternal(runSpace, accountName);
RemoveMailbox(runSpace, accountName);
RemoveMailbox(runSpace, accountName, false);
if (addressbookPolicy == (upn + " AP"))
{
@ -2077,15 +2074,42 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogStart("GetDatabase");
ExchangeLog.LogInfo("DAG: " + dagName);
//Get Dag Servers
// this part of code handles mailboxnames like in the old 2007 provider
// check if DAG is in reality DAG\mailboxdatabase
string dagNameDAG = string.Empty;
string dagNameMBX = string.Empty;
bool isFixedDatabase = false;
if (dagName.Contains("\\"))
{
// split the two parts and extract DAG-Name and mailboxdatabase-name
string[] parts = dagName.Split(new char[] { '\\' }, 2, StringSplitOptions.None);
dagNameDAG = parts[0];
dagNameMBX = parts[1];
// check that we realy have a database name
if (!String.IsNullOrEmpty(dagNameMBX))
{
isFixedDatabase = true;
}
}
else
{
// there is no mailboxdatabase-name use the loadbalancing-code
dagNameDAG = dagName;
isFixedDatabase = false;
}
//Get Dag Servers - with the name of the database availability group
Collection<PSObject> dags = null;
Command cmd = new Command("Get-DatabaseAvailabilityGroup");
cmd.Parameters.Add("Identity", dagName);
cmd.Parameters.Add("Identity", dagNameDAG);
dags = ExecuteShellCommand(runSpace, cmd);
if (htBbalancer == null)
htBbalancer = new Hashtable();
// use fully qualified dagName for loadbalancer. Thus if there are two services and one of them
// contains only the DAG, the "fixed" database could also be used in loadbalancing. If you do not want this,
// set either IsExcludedFromProvisioning or IsSuspendedFromProvisioning - it is not evaluated for fixed databases
if (htBbalancer[dagName] == null)
htBbalancer.Add(dagName, 0);
@ -2098,6 +2122,8 @@ namespace WebsitePanel.Providers.HostedSolution
{
System.Collections.Generic.List<string> lstDatabase = new System.Collections.Generic.List<string>();
if (!isFixedDatabase) // "old" loadbalancing code
{
foreach (object objServer in servers)
{
Collection<PSObject> databases = null;
@ -2130,6 +2156,25 @@ namespace WebsitePanel.Providers.HostedSolution
}
}
}
}
else // new fixed database code
{
Collection<PSObject> databases = null;
cmd = new Command("Get-MailboxDatabase");
cmd.Parameters.Add("Identity", dagNameMBX);
databases = ExecuteShellCommand(runSpace, cmd);
// do not check "IsExcludedFromProvisioning" or "IsSuspended", just check if it is a member of the DAG
foreach (PSObject objDatabase in databases)
{
string dagSetting = ObjToString(GetPSObjectProperty(objDatabase, "MasterServerOrAvailabilityGroup"));
if (dagNameDAG.Equals(dagSetting, StringComparison.OrdinalIgnoreCase))
{
lstDatabase.Add(dagNameMBX);
ExchangeLog.LogInfo("AddFixedDatabase: " + dagNameMBX);
}
}
}
int balancer = (int)htBbalancer[dagName];
balancer++;
@ -2144,13 +2189,15 @@ namespace WebsitePanel.Providers.HostedSolution
return database;
}
internal void RemoveMailbox(Runspace runSpace, string id)
internal void RemoveMailbox(Runspace runSpace, string id, bool isPublicFolder)
{
ExchangeLog.LogStart("RemoveMailbox");
Command cmd = new Command("Remove-Mailbox");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("Permanent", false);
cmd.Parameters.Add("Confirm", false);
if (isPublicFolder) cmd.Parameters.Add("PublicFolder");
ExecuteShellCommand(runSpace, cmd);
ExchangeLog.LogEnd("RemoveMailbox");
}
@ -2220,6 +2267,7 @@ namespace WebsitePanel.Providers.HostedSolution
info.DisplayName = (string)GetPSObjectProperty(mailbox, "DisplayName");
info.HideFromAddressBook = (bool)GetPSObjectProperty(mailbox, "HiddenFromAddressListsEnabled");
info.EnableLitigationHold = (bool)GetPSObjectProperty(mailbox, "LitigationHoldEnabled");
Command cmd = new Command("Get-User");
cmd.Parameters.Add("Identity", accountName);
@ -2895,6 +2943,7 @@ namespace WebsitePanel.Providers.HostedSolution
string path = AddADPrefix(dn);
DirectoryEntry entry = GetADObject(path);
info.Enabled = !(bool)entry.InvokeGet("AccountDisabled");
info.LitigationHoldEnabled = (bool)GetPSObjectProperty(mailbox, "LitigationHoldEnabled");
info.DisplayName = (string)GetPSObjectProperty(mailbox, "DisplayName");
SmtpAddress smtpAddress = (SmtpAddress)GetPSObjectProperty(mailbox, "PrimarySmtpAddress");
@ -2926,8 +2975,10 @@ namespace WebsitePanel.Providers.HostedSolution
Unlimited<ByteQuantifiedSize> totalItemSize =
(Unlimited<ByteQuantifiedSize>)GetPSObjectProperty(statistics, "TotalItemSize");
info.TotalSize = ConvertUnlimitedToBytes(totalItemSize);
uint? itemCount = (uint?)GetPSObjectProperty(statistics, "ItemCount");
info.TotalItems = ConvertNullableToInt32(itemCount);
DateTime? lastLogoffTime = (DateTime?)GetPSObjectProperty(statistics, "LastLogoffTime");
DateTime? lastLogonTime = (DateTime?)GetPSObjectProperty(statistics, "LastLogonTime");
info.LastLogoff = ConvertNullableToDateTime(lastLogoffTime);
@ -2940,6 +2991,29 @@ namespace WebsitePanel.Providers.HostedSolution
info.LastLogoff = DateTime.MinValue;
info.LastLogon = DateTime.MinValue;
}
if (info.LitigationHoldEnabled)
{
cmd = new Command("Get-MailboxFolderStatistics");
cmd.Parameters.Add("FolderScope", "RecoverableItems");
cmd.Parameters.Add("Identity", id);
result = ExecuteShellCommand(runSpace, cmd);
if (result.Count > 0)
{
PSObject statistics = result[0];
ByteQuantifiedSize totalItemSize = (ByteQuantifiedSize)GetPSObjectProperty(statistics, "FolderAndSubfolderSize");
info.LitigationHoldTotalSize = (totalItemSize == null) ? 0 : ConvertUnlimitedToBytes(totalItemSize);
Int32 itemCount = (Int32)GetPSObjectProperty(statistics, "ItemsInFolder");
info.LitigationHoldTotalItems = (itemCount == null) ? 0 : itemCount;
}
}
else
{
info.LitigationHoldTotalSize = 0;
info.LitigationHoldTotalItems = 0;
}
}
finally
{
@ -4139,7 +4213,7 @@ namespace WebsitePanel.Providers.HostedSolution
#region Public folders
private void CreatePublicFolderInternal(string organizationId, string securityGroup, string parentFolder,
private void CreatePublicFolderInternal(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder,
string folderName, bool mailEnabled, string accountName, string name, string domain)
{
ExchangeLog.LogStart("CreatePublicFolderInternal");
@ -4154,12 +4228,16 @@ namespace WebsitePanel.Providers.HostedSolution
{
runSpace = OpenRunspace();
string orgCanonicalName = ConvertADPathToCanonicalName(organizationDistinguishedName);
//create organization public folder mailbox if required
CheckOrganizationPublicFolderMailbox(runSpace, orgCanonicalName, organizationId);
//create organization root folder if required
CheckOrganizationRootFolder(runSpace, organizationId, securityGroup);
CheckOrganizationRootFolder(runSpace, organizationId, securityGroup, orgCanonicalName, organizationId);
string id = AddPublicFolder(runSpace, folderName, parentFolder);
transaction.RegisterNewPublicFolder(id);
string id = AddPublicFolder(runSpace, folderName, parentFolder, orgCanonicalName+"/"+GetPublicFolderMailboxName(organizationId));
transaction.RegisterNewPublicFolder(GetPublicFolderMailboxName(organizationId), id);
SetPublicFolderPermissions(runSpace, id, securityGroup);
@ -4183,18 +4261,43 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("CreatePublicFolderInternal");
}
private void CheckOrganizationRootFolder(Runspace runSpace, string folder, string user)
private void CheckOrganizationPublicFolderMailbox(Runspace runSpace, string orgCanonicalName, string organizationId)
{
ExchangeLog.LogStart("CheckOrganizationRootFolder");
ExchangeLog.LogStart("CheckOrganizationPublicFolderMailbox");
Collection<PSObject> result = GetPublicFolderObject(runSpace, "\\" + folder);
Collection<PSObject> result = GetPublicFolderMailbox(runSpace, orgCanonicalName, GetPublicFolderMailboxName(organizationId));
if (result == null || result.Count == 0)
{
ExchangeTransaction transaction = StartTransaction();
try
{
string rootId = AddPublicFolder(runSpace, folder, "\\");
transaction.RegisterNewPublicFolder(rootId);
string rootId = AddPublicFolderMailbox(runSpace, orgCanonicalName, GetPublicFolderMailboxName(organizationId));
transaction.RegisterNewPublicFolderMailbox(orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId));
}
catch
{
RollbackTransaction(transaction);
throw;
}
}
ExchangeLog.LogEnd("CheckOrganizationPublicFolderMailbox");
}
private void CheckOrganizationRootFolder(Runspace runSpace, string folder, string user, string orgCanonicalName, string organizationId)
{
ExchangeLog.LogStart("CheckOrganizationRootFolder");
Collection<PSObject> result = GetPublicFolderObject(runSpace, orgCanonicalName+"/"+GetPublicFolderMailboxName(organizationId), "\\" + folder);
if (result == null || result.Count == 0)
{
ExchangeTransaction transaction = StartTransaction();
try
{
string rootId = AddPublicFolder(runSpace, folder, "\\", orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId));
transaction.RegisterNewPublicFolder(orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId), rootId);
SetPublicFolderPermissions(runSpace, rootId, user);
}
catch
@ -4206,21 +4309,40 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("CheckOrganizationRootFolder");
}
private string AddPublicFolder(Runspace runSpace, string name, string path)
private string AddPublicFolder(Runspace runSpace, string name, string path, string mailbox)
{
ExchangeLog.LogStart("CreatePublicFolder");
Command cmd = new Command("New-PublicFolder");
cmd.Parameters.Add("Name", name);
cmd.Parameters.Add("Path", path);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
cmd.Parameters.Add("Mailbox", mailbox);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
string id = GetResultObjectIdentity(result);
ExchangeLog.LogEnd("CreatePublicFolder");
return id;
}
private void DeletePublicFolderInternal(string folder)
private string AddPublicFolderMailbox(Runspace runSpace, string organizationDistinguishedName, string name)
{
ExchangeLog.LogStart("CreatePublicFolderMailbox");
Command cmd = new Command("New-Mailbox");
cmd.Parameters.Add("Name", name);
cmd.Parameters.Add("PublicFolder");
cmd.Parameters.Add("OrganizationalUnit", organizationDistinguishedName);
string database = GetDatabase(runSpace, PrimaryDomainController, MailboxDatabase);
ExchangeLog.DebugInfo("database: " + database);
if (database != string.Empty)
{
cmd.Parameters.Add("Database", database);
}
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
string id = GetResultObjectIdentity(result);
ExchangeLog.LogEnd("CreatePublicFolderMailbox");
return id;
}
private void DeletePublicFolderInternal(string organizationId, string folder)
{
ExchangeLog.LogStart("DeletePublicFolderInternal");
ExchangeLog.DebugInfo("Folder: {0}", folder);
@ -4229,8 +4351,8 @@ namespace WebsitePanel.Providers.HostedSolution
try
{
runSpace = OpenRunspace();
RemovePublicFolder(runSpace, folder);
DisableMailPublicFolderRecursiveInternal(runSpace, organizationId, folder);
RemovePublicFolder(runSpace, GetPublicFolderMailboxName(organizationId), folder);
}
finally
{
@ -4240,27 +4362,42 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("DeletePublicFolderInternal");
}
private Collection<PSObject> GetPublicFolderObject(Runspace runSpace, string id)
private Collection<PSObject> GetPublicFolderObject(Runspace runSpace, string mailbox, string id)
{
Command cmd = new Command("Get-PublicFolder");
cmd.Parameters.Add("Identity", id);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
//cmd.Parameters.Add("Mailbox", mailbox);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
return result;
}
private bool PublicFolderExists(Runspace runSpace, string id)
private Collection<PSObject> GetPublicFolderMailbox(Runspace runSpace, string organizationDistinguishedName, string name)
{
Command cmd = new Command("Get-Mailbox");
cmd.Parameters.Add("Identity", name);
cmd.Parameters.Add("PublicFolder");
cmd.Parameters.Add("OrganizationalUnit", organizationDistinguishedName);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
return result;
}
private string GetPublicFolderMailboxName(string organizationId)
{
return string.Format("{0} Public Folder Mailbox", organizationId);
}
private bool PublicFolderExists(Runspace runSpace, string id, string organizationId)
{
ExchangeLog.LogStart("PublicFolderExists");
Collection<PSObject> result = GetPublicFolderObject(runSpace, id);
Collection<PSObject> result = GetPublicFolderObject(runSpace, GetPublicFolderMailboxName(organizationId), id);
bool ret = (result != null && result.Count == 1);
ExchangeLog.LogEnd("PublicFolderExists");
return ret;
}
private void RemovePublicFolder(Runspace runSpace, string id)
private void RemovePublicFolder(Runspace runSpace, string mailbox, string id)
{
ExchangeLog.LogStart("RemovePublicFolder");
@ -4268,8 +4405,6 @@ namespace WebsitePanel.Providers.HostedSolution
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("Recurse", new SwitchParameter(true));
cmd.Parameters.Add("Confirm", false);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
ExecuteShellCommand(runSpace, cmd);
ExchangeLog.LogEnd("RemovePublicFolder");
@ -4286,14 +4421,12 @@ namespace WebsitePanel.Providers.HostedSolution
string permission)
{
ExchangeLog.LogStart("RemovePublicFolderClientPermission");
ExchangeLog.DebugInfo("Id :{0}", id);
Command cmd = new Command("Remove-PublicFolderClientPermission");
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("User", user);
cmd.Parameters.Add("AccessRights", permission);
cmd.Parameters.Add("Confirm", false);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
ExecuteShellCommand(runSpace, cmd);
ExchangeLog.LogEnd("RemovePublicFolderClientPermission");
}
@ -4306,18 +4439,15 @@ namespace WebsitePanel.Providers.HostedSolution
cmd.Parameters.Add("Identity", id);
cmd.Parameters.Add("User", user);
cmd.Parameters.Add("AccessRights", permission);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
ExecuteShellCommand(runSpace, cmd);
ExchangeLog.LogEnd("AddPublicFolderClientPermission");
}
private void GetPublicFolderClientPermission(Runspace runSpace, string id)
private void GetPublicFolderClientPermission(Runspace runSpace, string mailbox, string id)
{
Command cmd = new Command("Get-PublicFolderClientPermission");
cmd.Parameters.Add("Identity", id);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
cmd.Parameters.Add("Mailbox", mailbox);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
PSObject obj = result[0];
}
@ -4337,8 +4467,6 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Enable-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
ExecuteShellCommand(runSpace, cmd);
string id = null;
@ -4350,8 +4478,6 @@ namespace WebsitePanel.Providers.HostedSolution
{
cmd = new Command("Get-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
@ -4418,9 +4544,10 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("EnableMailPublicFolderInternal");
}
private void DisableMailPublicFolderInternal(string folder)
private void DisableMailPublicFolderInternal(string organizationId, string folder)
{
ExchangeLog.LogStart("DisableMailPublicFolderInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
Runspace runSpace = null;
try
@ -4431,8 +4558,6 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Disable-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
cmd.Parameters.Add("Confirm", false);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
ExecuteShellCommand(runSpace, cmd);
}
finally
@ -4443,9 +4568,42 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("DisableMailPublicFolderInternal");
}
private ExchangePublicFolder GetPublicFolderGeneralSettingsInternal(string folder)
private void DisableMailPublicFolderRecursiveInternal(Runspace runSpace, string organizationId, string folder)
{
ExchangeLog.LogStart("DisableMailPublicFolderRecursiveInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
Command cmd = new Command("Disable-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
cmd.Parameters.Add("Confirm", false);
ExecuteShellCommand(runSpace, cmd);
cmd = new Command("Get-PublicFolder");
cmd.Parameters.Add("Identity", folder);
cmd.Parameters.Add("GetChildren");
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result.Count > 0)
{
foreach (PSObject obj in result)
{
string name = (string)GetPSObjectProperty(obj, "Name");
string parentPath = (string)GetPSObjectProperty(obj, "parentPath");
DisableMailPublicFolderRecursiveInternal(runSpace, organizationId, parentPath + "\\" + name);
}
}
ExchangeLog.LogEnd("DisableMailPublicFolderRecursiveInternal");
}
private ExchangePublicFolder GetPublicFolderGeneralSettingsInternal(string organizationId, string folder)
{
ExchangeLog.LogStart("GetPublicFolderGeneralSettingsInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
ExchangePublicFolder info = new ExchangePublicFolder();
@ -4454,26 +4612,25 @@ namespace WebsitePanel.Providers.HostedSolution
{
runSpace = OpenRunspace();
Collection<PSObject> result = GetPublicFolderObject(runSpace, folder);
Collection<PSObject> result = GetPublicFolderObject(runSpace, GetPublicFolderMailboxName(organizationId), folder);
PSObject publicFolder = result[0];
info.Name = (string)GetPSObjectProperty(publicFolder, "Name");
info.MailEnabled = (bool)GetPSObjectProperty(publicFolder, "MailEnabled");
info.HideFromAddressBook = (bool)GetPSObjectProperty(publicFolder, "HiddenFromAddressListsEnabled");
info.NETBIOS = GetNETBIOSDomainName();
info.Accounts = GetPublicFolderAccounts(runSpace, folder);
info.Accounts = GetPublicFolderAccounts(runSpace, GetPublicFolderMailboxName(organizationId), folder);
if (info.MailEnabled)
{
Command cmd = new Command("Get-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
result = ExecuteShellCommand(runSpace, cmd);
if (result.Count > 0)
{
publicFolder = result[0];
info.SAMAccountName = string.Format("{0}\\{1}", GetNETBIOSDomainName(), (string)GetPSObjectProperty(publicFolder, "Alias"));
info.HideFromAddressBook = (bool)GetPSObjectProperty(publicFolder, "HiddenFromAddressListsEnabled");
}
}
}
@ -4486,7 +4643,7 @@ namespace WebsitePanel.Providers.HostedSolution
return info;
}
private ExchangeAccount[] GetPublicFolderAccounts(Runspace runSpace, string folder)
private ExchangeAccount[] GetPublicFolderAccounts(Runspace runSpace, string mailbox, string folder)
{
ExchangeLog.LogStart("GetPublicFolderAccounts");
ExchangeLog.DebugInfo("Folder: {0}", folder);
@ -4496,8 +4653,7 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Get-PublicFolderClientPermission");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
cmd.Parameters.Add("Mailbox", mailbox);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
foreach (PSObject obj in result)
@ -4522,7 +4678,7 @@ namespace WebsitePanel.Providers.HostedSolution
return list.ToArray();
}
private void SetPublicFolderGeneralSettingsInternal(string folder, string newFolderName,
private void SetPublicFolderGeneralSettingsInternal(string organizationId, string folder, string newFolderName,
bool hideFromAddressBook, ExchangeAccount[] accounts)
{
ExchangeLog.LogStart("SetPublicFolderGeneralSettingsInternal");
@ -4534,10 +4690,10 @@ namespace WebsitePanel.Providers.HostedSolution
{
runSpace = OpenRunspace();
Collection<PSObject> result = GetPublicFolderObject(runSpace, folder);
Collection<PSObject> result = GetPublicFolderObject(runSpace, GetPublicFolderMailboxName(organizationId), folder);
PSObject publicFolder = result[0];
string folderName = (string)GetPSObjectProperty(publicFolder, "Name");
ExchangeAccount[] allAccounts = GetPublicFolderAccounts(runSpace, folder);
ExchangeAccount[] allAccounts = GetPublicFolderAccounts(runSpace, GetPublicFolderMailboxName(organizationId), folder);
//Remove all accounts and re-apply
List<ExchangeAccount> accountsToDelete = new List<ExchangeAccount>();
@ -4576,10 +4732,8 @@ namespace WebsitePanel.Providers.HostedSolution
}
//general settings
Command cmd = new Command("Set-PublicFolder");
Command cmd = new Command("Set-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
if (!folderName.Equals(newFolderName, StringComparison.OrdinalIgnoreCase))
{
cmd.Parameters.Add("Name", newFolderName);
@ -4595,9 +4749,10 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("SetPublicFolderGeneralSettingsInternal");
}
private ExchangePublicFolder GetPublicFolderMailFlowSettingsInternal(string folder)
private ExchangePublicFolder GetPublicFolderMailFlowSettingsInternal(string organizationId, string folder)
{
ExchangeLog.LogStart("GetPublicFolderMailFlowSettingsInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
ExchangePublicFolder info = new ExchangePublicFolder();
@ -4610,8 +4765,6 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Get-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
PSObject publicFolder = result[0];
@ -4628,10 +4781,11 @@ namespace WebsitePanel.Providers.HostedSolution
return info;
}
private void SetPublicFolderMailFlowSettingsInternal(string folder,
private void SetPublicFolderMailFlowSettingsInternal(string organizationId, string folder,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
ExchangeLog.LogStart("SetPublicFolderMailFlowSettingsInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
Runspace runSpace = null;
@ -4667,9 +4821,10 @@ namespace WebsitePanel.Providers.HostedSolution
}
private ExchangeEmailAddress[] GetPublicFolderEmailAddressesInternal(string folder)
private ExchangeEmailAddress[] GetPublicFolderEmailAddressesInternal(string organizationId, string folder)
{
ExchangeLog.LogStart("GetPublicFolderEmailAddressesInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
List<ExchangeEmailAddress> list = new List<ExchangeEmailAddress>();
@ -4681,8 +4836,6 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Get-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
PSObject publicFolder = result[0];
@ -4693,9 +4846,6 @@ namespace WebsitePanel.Providers.HostedSolution
if (smtpAddress != null)
primaryEmail = smtpAddress.ToString();
//SmtpAddress winAddress = (SmtpAddress)GetPSObjectProperty(publicFolder, "WindowsEmailAddress");
//if (winAddress != null)
// windowsEmail = winAddress.ToString();
windowsEmail = ObjToString(GetPSObjectProperty(publicFolder, "CustomAttribute3"));
@ -4721,9 +4871,10 @@ namespace WebsitePanel.Providers.HostedSolution
return list.ToArray();
}
private void SetPublicFolderEmailAddressesInternal(string folder, string[] emailAddresses)
private void SetPublicFolderEmailAddressesInternal(string organizationId, string folder, string[] emailAddresses)
{
ExchangeLog.LogStart("SetDistributionListEmailAddressesInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
Runspace runSpace = null;
@ -4734,8 +4885,6 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Get-MailPublicFolder");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
PSObject publicFolder = result[0];
@ -4772,9 +4921,10 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("SetPublicFolderEmailAddressesInternal");
}
private void SetPublicFolderPrimaryEmailAddressInternal(string folder, string emailAddress)
private void SetPublicFolderPrimaryEmailAddressInternal(string organizationId, string folder, string emailAddress)
{
ExchangeLog.LogStart("SetPublicFolderPrimaryEmailAddressInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
ExchangeLog.DebugInfo("Folder: {0}", folder);
ExchangeLog.DebugInfo("Email: {0}", emailAddress);
@ -4799,9 +4949,10 @@ namespace WebsitePanel.Providers.HostedSolution
ExchangeLog.LogEnd("SetPublicFolderPrimaryEmailAddressInternal");
}
private ExchangeItemStatistics[] GetPublicFoldersStatisticsInternal(string[] folders)
private ExchangeItemStatistics[] GetPublicFoldersStatisticsInternal(string organizationId, string[] folders)
{
ExchangeLog.LogStart("GetPublicFoldersStatisticsInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
Runspace runSpace = null;
List<ExchangeItemStatistics> ret = new List<ExchangeItemStatistics>();
@ -4814,8 +4965,7 @@ namespace WebsitePanel.Providers.HostedSolution
{
Command cmd = new Command("Get-PublicFolderStatistics");
cmd.Parameters.Add("Identity", folder);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
cmd.Parameters.Add("Mailbox", GetPublicFolderMailboxName(organizationId));
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null && result.Count > 0)
{
@ -4845,9 +4995,10 @@ namespace WebsitePanel.Providers.HostedSolution
return ret.ToArray();
}
private string[] GetPublicFoldersRecursiveInternal(string parent)
private string[] GetPublicFoldersRecursiveInternal(string organizationId, string parent)
{
ExchangeLog.LogStart("GetPublicFoldersRecursiveInternal");
ExchangeLog.DebugInfo("Organization: {0}", organizationId);
Runspace runSpace = null;
List<string> ret = new List<string>();
@ -4857,8 +5008,7 @@ namespace WebsitePanel.Providers.HostedSolution
Command cmd = new Command("Get-PublicFolder");
cmd.Parameters.Add("Identity", parent);
cmd.Parameters.Add("Recurse", true);
if (!string.IsNullOrEmpty(PublicFolderServer))
cmd.Parameters.Add("Server", PublicFolderServer);
cmd.Parameters.Add("Mailbox", GetPublicFolderMailboxName(organizationId));
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
if (result != null)
@ -4877,7 +5027,7 @@ namespace WebsitePanel.Providers.HostedSolution
return ret.ToArray();
}
private long GetPublicFolderSizeInternal(string folder)
private long GetPublicFolderSizeInternal(string organizationId, string folder)
{
ExchangeLog.LogStart("GetPublicFolderSizeInternal");
long size = 0;
@ -4885,7 +5035,7 @@ namespace WebsitePanel.Providers.HostedSolution
try
{
runSpace = OpenRunspace();
size += CalculatePublicFolderDiskSpace(runSpace, folder);
size += CalculatePublicFolderDiskSpace(runSpace, GetPublicFolderMailboxName(organizationId), folder);
}
finally
{
@ -6855,7 +7005,7 @@ namespace WebsitePanel.Providers.HostedSolution
RemoveUPNSuffix(action.Id, action.Suffix);
break;
case TransactionAction.TransactionActionTypes.CreateMailbox:
RemoveMailbox(runspace, action.Id);
RemoveMailbox(runspace, action.Id, false);
break;
case TransactionAction.TransactionActionTypes.EnableMailbox:
DisableMailbox(runspace, action.Id);
@ -6863,8 +7013,11 @@ namespace WebsitePanel.Providers.HostedSolution
case TransactionAction.TransactionActionTypes.CreateContact:
RemoveContact(runspace, action.Id);
break;
case TransactionAction.TransactionActionTypes.CreatePublicFolderMailbox:
RemoveMailbox(runspace, action.Id, true);
break;
case TransactionAction.TransactionActionTypes.CreatePublicFolder:
RemovePublicFolder(runspace, action.Id);
RemovePublicFolder(runspace, action.Account, action.Id);
break;
case TransactionAction.TransactionActionTypes.AddMailboxFullAccessPermission:
RemoveMailboxAccessPermission(runspace, action.Account, action.Id, "FullAccess");

View file

@ -429,14 +429,14 @@ namespace WebsitePanel.Providers.HostedSolution
#endregion
#region Public folders
public void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder,
public void CreatePublicFolder(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder,
string folderName, bool mailEnabled, string accountName, string name, string domain)
{
CreatePublicFolderInternal(organizationId, securityGroup, parentFolder, folderName,
mailEnabled, accountName, name, domain);
}
public void DeletePublicFolder(string folder)
public void DeletePublicFolder(string organizationId, string folder)
{
DeletePublicFolderInternal(folder);
}
@ -475,58 +475,58 @@ namespace WebsitePanel.Providers.HostedSolution
}
ExchangeLog.LogEnd("DisableMailboxIntenal");
}
public void DisableMailPublicFolder(string folder)
public void DisableMailPublicFolder(string organizationId, string folder)
{
DisableMailPublicFolderInternal(folder);
}
public ExchangePublicFolder GetPublicFolderGeneralSettings(string folder)
public ExchangePublicFolder GetPublicFolderGeneralSettings(string organizationId, string folder)
{
return GetPublicFolderGeneralSettingsInternal(folder);
}
public void SetPublicFolderGeneralSettings(string folder, string newFolderName,
public void SetPublicFolderGeneralSettings(string organizationId, string folder, string newFolderName,
bool hideFromAddressBook, ExchangeAccount[] accounts)
{
SetPublicFolderGeneralSettingsInternal(folder, newFolderName, hideFromAddressBook, accounts);
}
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string folder)
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string organizationId, string folder)
{
return GetPublicFolderMailFlowSettingsInternal(folder);
}
public void SetPublicFolderMailFlowSettings(string folder,
public void SetPublicFolderMailFlowSettings(string organizationId, string folder,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
SetPublicFolderMailFlowSettingsInternal(folder, acceptAccounts, rejectAccounts, requireSenderAuthentication);
}
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string folder)
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string organizationId, string folder)
{
return GetPublicFolderEmailAddressesInternal(folder);
}
public void SetPublicFolderEmailAddresses(string folder, string[] emailAddresses)
public void SetPublicFolderEmailAddresses(string organizationId, string folder, string[] emailAddresses)
{
SetPublicFolderEmailAddressesInternal(folder, emailAddresses);
}
public void SetPublicFolderPrimaryEmailAddress(string folder, string emailAddress)
public void SetPublicFolderPrimaryEmailAddress(string organizationId, string folder, string emailAddress)
{
SetPublicFolderPrimaryEmailAddressInternal(folder, emailAddress);
}
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string[] folders)
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders)
{
return GetPublicFoldersStatisticsInternal(folders);
}
public string[] GetPublicFoldersRecursive(string parent)
public string[] GetPublicFoldersRecursive(string organizationId, string parent)
{
return GetPublicFoldersRecursiveInternal(parent);
}
public long GetPublicFolderSize(string folder)
public long GetPublicFolderSize(string organizationId, string folder)
{
return GetPublicFolderSizeInternal(folder);
}
@ -4066,7 +4066,7 @@ namespace WebsitePanel.Providers.HostedSolution
CheckOrganizationRootFolder(runSpace, organizationId, securityGroup);
string id = AddPublicFolder(runSpace, folderName, parentFolder);
transaction.RegisterNewPublicFolder(id);
transaction.RegisterNewPublicFolder(string.Empty, id);
SetPublicFolderPermissions(runSpace, id, securityGroup);
@ -4101,7 +4101,7 @@ namespace WebsitePanel.Providers.HostedSolution
try
{
string rootId = AddPublicFolder(runSpace, folder, "\\");
transaction.RegisterNewPublicFolder(rootId);
transaction.RegisterNewPublicFolder(string.Empty, rootId);
SetPublicFolderPermissions(runSpace, rootId, user);
}
catch

View file

@ -162,11 +162,21 @@ namespace WebsitePanel.Providers.HostedSolution
Actions.Add(action);
}
public void RegisterNewPublicFolder(string id)
public void RegisterNewPublicFolder(string mailbox, string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreatePublicFolder;
action.Id = id;
action.Account = mailbox;
Actions.Add(action);
}
public void RegisterNewPublicFolderMailbox(string id)
{
TransactionAction action = new TransactionAction();
action.ActionType = TransactionAction.TransactionActionTypes.CreatePublicFolderMailbox;
action.Id = id;
Actions.Add(action);
}

View file

@ -49,7 +49,6 @@ namespace WebsitePanel.Providers.Exchange {
using WebsitePanel.Providers.HostedSolution;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
@ -2940,8 +2939,9 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreatePublicFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain) {
public void CreatePublicFolder(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain) {
this.Invoke("CreatePublicFolder", new object[] {
organizationDistinguishedName,
organizationId,
securityGroup,
parentFolder,
@ -2953,8 +2953,9 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public System.IAsyncResult BeginCreatePublicFolder(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginCreatePublicFolder(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("CreatePublicFolder", new object[] {
organizationDistinguishedName,
organizationId,
securityGroup,
parentFolder,
@ -2971,16 +2972,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void CreatePublicFolderAsync(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain) {
this.CreatePublicFolderAsync(organizationId, securityGroup, parentFolder, folderName, mailEnabled, accountName, name, domain, null);
public void CreatePublicFolderAsync(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain) {
this.CreatePublicFolderAsync(organizationDistinguishedName, organizationId, securityGroup, parentFolder, folderName, mailEnabled, accountName, name, domain, null);
}
/// <remarks/>
public void CreatePublicFolderAsync(string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain, object userState) {
public void CreatePublicFolderAsync(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder, string folderName, bool mailEnabled, string accountName, string name, string domain, object userState) {
if ((this.CreatePublicFolderOperationCompleted == null)) {
this.CreatePublicFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreatePublicFolderOperationCompleted);
}
this.InvokeAsync("CreatePublicFolder", new object[] {
organizationDistinguishedName,
organizationId,
securityGroup,
parentFolder,
@ -3001,14 +3003,16 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeletePublicFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void DeletePublicFolder(string folder) {
public void DeletePublicFolder(string organizationId, string folder) {
this.Invoke("DeletePublicFolder", new object[] {
organizationId,
folder});
}
/// <remarks/>
public System.IAsyncResult BeginDeletePublicFolder(string folder, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginDeletePublicFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("DeletePublicFolder", new object[] {
organizationId,
folder}, callback, asyncState);
}
@ -3018,16 +3022,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void DeletePublicFolderAsync(string folder) {
this.DeletePublicFolderAsync(folder, null);
public void DeletePublicFolderAsync(string organizationId, string folder) {
this.DeletePublicFolderAsync(organizationId, folder, null);
}
/// <remarks/>
public void DeletePublicFolderAsync(string folder, object userState) {
public void DeletePublicFolderAsync(string organizationId, string folder, object userState) {
if ((this.DeletePublicFolderOperationCompleted == null)) {
this.DeletePublicFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeletePublicFolderOperationCompleted);
}
this.InvokeAsync("DeletePublicFolder", new object[] {
organizationId,
folder}, this.DeletePublicFolderOperationCompleted, userState);
}
@ -3093,14 +3098,16 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DisableMailPublicFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void DisableMailPublicFolder(string folder) {
public void DisableMailPublicFolder(string organizationId, string folder) {
this.Invoke("DisableMailPublicFolder", new object[] {
organizationId,
folder});
}
/// <remarks/>
public System.IAsyncResult BeginDisableMailPublicFolder(string folder, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginDisableMailPublicFolder(string organizationId, string folder, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("DisableMailPublicFolder", new object[] {
organizationId,
folder}, callback, asyncState);
}
@ -3110,16 +3117,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void DisableMailPublicFolderAsync(string folder) {
this.DisableMailPublicFolderAsync(folder, null);
public void DisableMailPublicFolderAsync(string organizationId, string folder) {
this.DisableMailPublicFolderAsync(organizationId, folder, null);
}
/// <remarks/>
public void DisableMailPublicFolderAsync(string folder, object userState) {
public void DisableMailPublicFolderAsync(string organizationId, string folder, object userState) {
if ((this.DisableMailPublicFolderOperationCompleted == null)) {
this.DisableMailPublicFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDisableMailPublicFolderOperationCompleted);
}
this.InvokeAsync("DisableMailPublicFolder", new object[] {
organizationId,
folder}, this.DisableMailPublicFolderOperationCompleted, userState);
}
@ -3133,15 +3141,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPublicFolderGeneralSettings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public ExchangePublicFolder GetPublicFolderGeneralSettings(string folder) {
public ExchangePublicFolder GetPublicFolderGeneralSettings(string organizationId, string folder) {
object[] results = this.Invoke("GetPublicFolderGeneralSettings", new object[] {
organizationId,
folder});
return ((ExchangePublicFolder)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetPublicFolderGeneralSettings(string folder, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetPublicFolderGeneralSettings(string organizationId, string folder, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetPublicFolderGeneralSettings", new object[] {
organizationId,
folder}, callback, asyncState);
}
@ -3152,16 +3162,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void GetPublicFolderGeneralSettingsAsync(string folder) {
this.GetPublicFolderGeneralSettingsAsync(folder, null);
public void GetPublicFolderGeneralSettingsAsync(string organizationId, string folder) {
this.GetPublicFolderGeneralSettingsAsync(organizationId, folder, null);
}
/// <remarks/>
public void GetPublicFolderGeneralSettingsAsync(string folder, object userState) {
public void GetPublicFolderGeneralSettingsAsync(string organizationId, string folder, object userState) {
if ((this.GetPublicFolderGeneralSettingsOperationCompleted == null)) {
this.GetPublicFolderGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPublicFolderGeneralSettingsOperationCompleted);
}
this.InvokeAsync("GetPublicFolderGeneralSettings", new object[] {
organizationId,
folder}, this.GetPublicFolderGeneralSettingsOperationCompleted, userState);
}
@ -3175,8 +3186,9 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetPublicFolderGeneralSettings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void SetPublicFolderGeneralSettings(string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts) {
public void SetPublicFolderGeneralSettings(string organizationId, string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts) {
this.Invoke("SetPublicFolderGeneralSettings", new object[] {
organizationId,
folder,
newFolderName,
hideFromAddressBook,
@ -3184,8 +3196,9 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public System.IAsyncResult BeginSetPublicFolderGeneralSettings(string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginSetPublicFolderGeneralSettings(string organizationId, string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("SetPublicFolderGeneralSettings", new object[] {
organizationId,
folder,
newFolderName,
hideFromAddressBook,
@ -3198,16 +3211,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void SetPublicFolderGeneralSettingsAsync(string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts) {
this.SetPublicFolderGeneralSettingsAsync(folder, newFolderName, hideFromAddressBook, accounts, null);
public void SetPublicFolderGeneralSettingsAsync(string organizationId, string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts) {
this.SetPublicFolderGeneralSettingsAsync(organizationId, folder, newFolderName, hideFromAddressBook, accounts, null);
}
/// <remarks/>
public void SetPublicFolderGeneralSettingsAsync(string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts, object userState) {
public void SetPublicFolderGeneralSettingsAsync(string organizationId, string folder, string newFolderName, bool hideFromAddressBook, ExchangeAccount[] accounts, object userState) {
if ((this.SetPublicFolderGeneralSettingsOperationCompleted == null)) {
this.SetPublicFolderGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetPublicFolderGeneralSettingsOperationCompleted);
}
this.InvokeAsync("SetPublicFolderGeneralSettings", new object[] {
organizationId,
folder,
newFolderName,
hideFromAddressBook,
@ -3224,15 +3238,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPublicFolderMailFlowSettings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string folder) {
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string organizationId, string folder) {
object[] results = this.Invoke("GetPublicFolderMailFlowSettings", new object[] {
organizationId,
folder});
return ((ExchangePublicFolder)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetPublicFolderMailFlowSettings(string folder, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetPublicFolderMailFlowSettings(string organizationId, string folder, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetPublicFolderMailFlowSettings", new object[] {
organizationId,
folder}, callback, asyncState);
}
@ -3243,16 +3259,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void GetPublicFolderMailFlowSettingsAsync(string folder) {
this.GetPublicFolderMailFlowSettingsAsync(folder, null);
public void GetPublicFolderMailFlowSettingsAsync(string organizationId, string folder) {
this.GetPublicFolderMailFlowSettingsAsync(organizationId, folder, null);
}
/// <remarks/>
public void GetPublicFolderMailFlowSettingsAsync(string folder, object userState) {
public void GetPublicFolderMailFlowSettingsAsync(string organizationId, string folder, object userState) {
if ((this.GetPublicFolderMailFlowSettingsOperationCompleted == null)) {
this.GetPublicFolderMailFlowSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPublicFolderMailFlowSettingsOperationCompleted);
}
this.InvokeAsync("GetPublicFolderMailFlowSettings", new object[] {
organizationId,
folder}, this.GetPublicFolderMailFlowSettingsOperationCompleted, userState);
}
@ -3266,8 +3283,9 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetPublicFolderMailFlowSettings", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void SetPublicFolderMailFlowSettings(string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication) {
public void SetPublicFolderMailFlowSettings(string organizationId, string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication) {
this.Invoke("SetPublicFolderMailFlowSettings", new object[] {
organizationId,
folder,
acceptAccounts,
rejectAccounts,
@ -3275,8 +3293,9 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public System.IAsyncResult BeginSetPublicFolderMailFlowSettings(string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginSetPublicFolderMailFlowSettings(string organizationId, string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("SetPublicFolderMailFlowSettings", new object[] {
organizationId,
folder,
acceptAccounts,
rejectAccounts,
@ -3289,16 +3308,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void SetPublicFolderMailFlowSettingsAsync(string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication) {
this.SetPublicFolderMailFlowSettingsAsync(folder, acceptAccounts, rejectAccounts, requireSenderAuthentication, null);
public void SetPublicFolderMailFlowSettingsAsync(string organizationId, string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication) {
this.SetPublicFolderMailFlowSettingsAsync(organizationId, folder, acceptAccounts, rejectAccounts, requireSenderAuthentication, null);
}
/// <remarks/>
public void SetPublicFolderMailFlowSettingsAsync(string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication, object userState) {
public void SetPublicFolderMailFlowSettingsAsync(string organizationId, string folder, string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication, object userState) {
if ((this.SetPublicFolderMailFlowSettingsOperationCompleted == null)) {
this.SetPublicFolderMailFlowSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetPublicFolderMailFlowSettingsOperationCompleted);
}
this.InvokeAsync("SetPublicFolderMailFlowSettings", new object[] {
organizationId,
folder,
acceptAccounts,
rejectAccounts,
@ -3315,15 +3335,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPublicFolderEmailAddresses", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string folder) {
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string organizationId, string folder) {
object[] results = this.Invoke("GetPublicFolderEmailAddresses", new object[] {
organizationId,
folder});
return ((ExchangeEmailAddress[])(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetPublicFolderEmailAddresses(string folder, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetPublicFolderEmailAddresses(string organizationId, string folder, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetPublicFolderEmailAddresses", new object[] {
organizationId,
folder}, callback, asyncState);
}
@ -3334,16 +3356,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void GetPublicFolderEmailAddressesAsync(string folder) {
this.GetPublicFolderEmailAddressesAsync(folder, null);
public void GetPublicFolderEmailAddressesAsync(string organizationId, string folder) {
this.GetPublicFolderEmailAddressesAsync(organizationId, folder, null);
}
/// <remarks/>
public void GetPublicFolderEmailAddressesAsync(string folder, object userState) {
public void GetPublicFolderEmailAddressesAsync(string organizationId, string folder, object userState) {
if ((this.GetPublicFolderEmailAddressesOperationCompleted == null)) {
this.GetPublicFolderEmailAddressesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPublicFolderEmailAddressesOperationCompleted);
}
this.InvokeAsync("GetPublicFolderEmailAddresses", new object[] {
organizationId,
folder}, this.GetPublicFolderEmailAddressesOperationCompleted, userState);
}
@ -3357,15 +3380,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetPublicFolderEmailAddresses", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void SetPublicFolderEmailAddresses(string folder, string[] emailAddresses) {
public void SetPublicFolderEmailAddresses(string organizationId, string folder, string[] emailAddresses) {
this.Invoke("SetPublicFolderEmailAddresses", new object[] {
organizationId,
folder,
emailAddresses});
}
/// <remarks/>
public System.IAsyncResult BeginSetPublicFolderEmailAddresses(string folder, string[] emailAddresses, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginSetPublicFolderEmailAddresses(string organizationId, string folder, string[] emailAddresses, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("SetPublicFolderEmailAddresses", new object[] {
organizationId,
folder,
emailAddresses}, callback, asyncState);
}
@ -3376,16 +3401,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void SetPublicFolderEmailAddressesAsync(string folder, string[] emailAddresses) {
this.SetPublicFolderEmailAddressesAsync(folder, emailAddresses, null);
public void SetPublicFolderEmailAddressesAsync(string organizationId, string folder, string[] emailAddresses) {
this.SetPublicFolderEmailAddressesAsync(organizationId, folder, emailAddresses, null);
}
/// <remarks/>
public void SetPublicFolderEmailAddressesAsync(string folder, string[] emailAddresses, object userState) {
public void SetPublicFolderEmailAddressesAsync(string organizationId, string folder, string[] emailAddresses, object userState) {
if ((this.SetPublicFolderEmailAddressesOperationCompleted == null)) {
this.SetPublicFolderEmailAddressesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetPublicFolderEmailAddressesOperationCompleted);
}
this.InvokeAsync("SetPublicFolderEmailAddresses", new object[] {
organizationId,
folder,
emailAddresses}, this.SetPublicFolderEmailAddressesOperationCompleted, userState);
}
@ -3400,15 +3426,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetPublicFolderPrimaryEmailAddress", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void SetPublicFolderPrimaryEmailAddress(string folder, string emailAddress) {
public void SetPublicFolderPrimaryEmailAddress(string organizationId, string folder, string emailAddress) {
this.Invoke("SetPublicFolderPrimaryEmailAddress", new object[] {
organizationId,
folder,
emailAddress});
}
/// <remarks/>
public System.IAsyncResult BeginSetPublicFolderPrimaryEmailAddress(string folder, string emailAddress, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginSetPublicFolderPrimaryEmailAddress(string organizationId, string folder, string emailAddress, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("SetPublicFolderPrimaryEmailAddress", new object[] {
organizationId,
folder,
emailAddress}, callback, asyncState);
}
@ -3419,16 +3447,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void SetPublicFolderPrimaryEmailAddressAsync(string folder, string emailAddress) {
this.SetPublicFolderPrimaryEmailAddressAsync(folder, emailAddress, null);
public void SetPublicFolderPrimaryEmailAddressAsync(string organizationId, string folder, string emailAddress) {
this.SetPublicFolderPrimaryEmailAddressAsync(organizationId, folder, emailAddress, null);
}
/// <remarks/>
public void SetPublicFolderPrimaryEmailAddressAsync(string folder, string emailAddress, object userState) {
public void SetPublicFolderPrimaryEmailAddressAsync(string organizationId, string folder, string emailAddress, object userState) {
if ((this.SetPublicFolderPrimaryEmailAddressOperationCompleted == null)) {
this.SetPublicFolderPrimaryEmailAddressOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetPublicFolderPrimaryEmailAddressOperationCompleted);
}
this.InvokeAsync("SetPublicFolderPrimaryEmailAddress", new object[] {
organizationId,
folder,
emailAddress}, this.SetPublicFolderPrimaryEmailAddressOperationCompleted, userState);
}
@ -3443,15 +3472,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPublicFoldersStatistics", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string[] folders) {
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders) {
object[] results = this.Invoke("GetPublicFoldersStatistics", new object[] {
organizationId,
folders});
return ((ExchangeItemStatistics[])(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetPublicFoldersStatistics(string[] folders, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetPublicFoldersStatistics(string organizationId, string[] folders, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetPublicFoldersStatistics", new object[] {
organizationId,
folders}, callback, asyncState);
}
@ -3462,16 +3493,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void GetPublicFoldersStatisticsAsync(string[] folders) {
this.GetPublicFoldersStatisticsAsync(folders, null);
public void GetPublicFoldersStatisticsAsync(string organizationId, string[] folders) {
this.GetPublicFoldersStatisticsAsync(organizationId, folders, null);
}
/// <remarks/>
public void GetPublicFoldersStatisticsAsync(string[] folders, object userState) {
public void GetPublicFoldersStatisticsAsync(string organizationId, string[] folders, object userState) {
if ((this.GetPublicFoldersStatisticsOperationCompleted == null)) {
this.GetPublicFoldersStatisticsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPublicFoldersStatisticsOperationCompleted);
}
this.InvokeAsync("GetPublicFoldersStatistics", new object[] {
organizationId,
folders}, this.GetPublicFoldersStatisticsOperationCompleted, userState);
}
@ -3485,15 +3517,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPublicFoldersRecursive", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public string[] GetPublicFoldersRecursive(string parent) {
public string[] GetPublicFoldersRecursive(string organizationId, string parent) {
object[] results = this.Invoke("GetPublicFoldersRecursive", new object[] {
organizationId,
parent});
return ((string[])(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetPublicFoldersRecursive(string parent, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetPublicFoldersRecursive(string organizationId, string parent, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetPublicFoldersRecursive", new object[] {
organizationId,
parent}, callback, asyncState);
}
@ -3504,16 +3538,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void GetPublicFoldersRecursiveAsync(string parent) {
this.GetPublicFoldersRecursiveAsync(parent, null);
public void GetPublicFoldersRecursiveAsync(string organizationId, string parent) {
this.GetPublicFoldersRecursiveAsync(organizationId, parent, null);
}
/// <remarks/>
public void GetPublicFoldersRecursiveAsync(string parent, object userState) {
public void GetPublicFoldersRecursiveAsync(string organizationId, string parent, object userState) {
if ((this.GetPublicFoldersRecursiveOperationCompleted == null)) {
this.GetPublicFoldersRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPublicFoldersRecursiveOperationCompleted);
}
this.InvokeAsync("GetPublicFoldersRecursive", new object[] {
organizationId,
parent}, this.GetPublicFoldersRecursiveOperationCompleted, userState);
}
@ -3527,15 +3562,17 @@ namespace WebsitePanel.Providers.Exchange {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetPublicFolderSize", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public long GetPublicFolderSize(string folder) {
public long GetPublicFolderSize(string organizationId, string folder) {
object[] results = this.Invoke("GetPublicFolderSize", new object[] {
organizationId,
folder});
return ((long)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetPublicFolderSize(string folder, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetPublicFolderSize(string organizationId, string folder, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetPublicFolderSize", new object[] {
organizationId,
folder}, callback, asyncState);
}
@ -3546,16 +3583,17 @@ namespace WebsitePanel.Providers.Exchange {
}
/// <remarks/>
public void GetPublicFolderSizeAsync(string folder) {
this.GetPublicFolderSizeAsync(folder, null);
public void GetPublicFolderSizeAsync(string organizationId, string folder) {
this.GetPublicFolderSizeAsync(organizationId, folder, null);
}
/// <remarks/>
public void GetPublicFolderSizeAsync(string folder, object userState) {
public void GetPublicFolderSizeAsync(string organizationId, string folder, object userState) {
if ((this.GetPublicFolderSizeOperationCompleted == null)) {
this.GetPublicFolderSizeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPublicFolderSizeOperationCompleted);
}
this.InvokeAsync("GetPublicFolderSize", new object[] {
organizationId,
folder}, this.GetPublicFolderSizeOperationCompleted, userState);
}

View file

@ -822,13 +822,13 @@ namespace WebsitePanel.Server
#region Public Folders
[WebMethod, SoapHeader("settings")]
public void CreatePublicFolder(string organizationId, string securityGroup, string parentFolder,
public void CreatePublicFolder(string organizationDistinguishedName, string organizationId, string securityGroup, string parentFolder,
string folderName, bool mailEnabled, string accountName, string name, string domain)
{
try
{
LogStart("CreatePublicFolder");
ES.CreatePublicFolder(organizationId, securityGroup, parentFolder, folderName,
ES.CreatePublicFolder(organizationDistinguishedName, organizationId, securityGroup, parentFolder, folderName,
mailEnabled, accountName, name, domain);
LogEnd("CreatePublicFolder");
@ -841,12 +841,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public void DeletePublicFolder(string folder)
public void DeletePublicFolder(string organizationId, string folder)
{
try
{
LogStart("DeletePublicFolder");
ES.DeletePublicFolder(folder);
ES.DeletePublicFolder(organizationId, folder);
LogEnd("DeletePublicFolder");
}
catch (Exception ex)
@ -874,12 +874,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public void DisableMailPublicFolder(string folder)
public void DisableMailPublicFolder(string organizationId, string folder)
{
try
{
LogStart("DisableMailPublicFolder");
ES.DisableMailPublicFolder(folder);
ES.DisableMailPublicFolder(organizationId, folder);
LogEnd("DisableMailPublicFolder");
}
catch (Exception ex)
@ -890,12 +890,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public ExchangePublicFolder GetPublicFolderGeneralSettings(string folder)
public ExchangePublicFolder GetPublicFolderGeneralSettings(string organizationId, string folder)
{
try
{
LogStart("GetPublicFolderGeneralSettings");
ExchangePublicFolder ret = ES.GetPublicFolderGeneralSettings(folder);
ExchangePublicFolder ret = ES.GetPublicFolderGeneralSettings(organizationId, folder);
LogEnd("GetPublicFolderGeneralSettings");
return ret;
}
@ -907,13 +907,13 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public void SetPublicFolderGeneralSettings(string folder, string newFolderName,
public void SetPublicFolderGeneralSettings(string organizationId, string folder, string newFolderName,
bool hideFromAddressBook, ExchangeAccount[] accounts)
{
try
{
LogStart("SetPublicFolderGeneralSettings");
ES.SetPublicFolderGeneralSettings(folder, newFolderName, hideFromAddressBook, accounts);
ES.SetPublicFolderGeneralSettings(organizationId, folder, newFolderName, hideFromAddressBook, accounts);
LogEnd("SetPublicFolderGeneralSettings");
}
catch (Exception ex)
@ -924,12 +924,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string folder)
public ExchangePublicFolder GetPublicFolderMailFlowSettings(string organizationId, string folder)
{
try
{
LogStart("GetPublicFolderMailFlowSettings");
ExchangePublicFolder ret = ES.GetPublicFolderMailFlowSettings(folder);
ExchangePublicFolder ret = ES.GetPublicFolderMailFlowSettings(organizationId, folder);
LogEnd("GetPublicFolderMailFlowSettings");
return ret;
}
@ -941,13 +941,13 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public void SetPublicFolderMailFlowSettings(string folder,
public void SetPublicFolderMailFlowSettings(string organizationId, string folder,
string[] acceptAccounts, string[] rejectAccounts, bool requireSenderAuthentication)
{
try
{
LogStart("SetPublicFolderMailFlowSettings");
ES.SetPublicFolderMailFlowSettings(folder, acceptAccounts, rejectAccounts, requireSenderAuthentication);
ES.SetPublicFolderMailFlowSettings(organizationId, folder, acceptAccounts, rejectAccounts, requireSenderAuthentication);
LogEnd("SetPublicFolderMailFlowSettings");
}
catch (Exception ex)
@ -958,12 +958,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string folder)
public ExchangeEmailAddress[] GetPublicFolderEmailAddresses(string organizationId, string folder)
{
try
{
LogStart("GetPublicFolderEmailAddresses");
ExchangeEmailAddress[] ret = ES.GetPublicFolderEmailAddresses(folder);
ExchangeEmailAddress[] ret = ES.GetPublicFolderEmailAddresses(organizationId, folder);
LogEnd("GetPublicFolderEmailAddresses");
return ret;
}
@ -975,12 +975,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public void SetPublicFolderEmailAddresses(string folder, string[] emailAddresses)
public void SetPublicFolderEmailAddresses(string organizationId, string folder, string[] emailAddresses)
{
try
{
LogStart("SetPublicFolderEmailAddresses");
ES.SetPublicFolderEmailAddresses(folder, emailAddresses);
ES.SetPublicFolderEmailAddresses(organizationId, folder, emailAddresses);
LogEnd("SetPublicFolderEmailAddresses");
}
catch (Exception ex)
@ -991,12 +991,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public void SetPublicFolderPrimaryEmailAddress(string folder, string emailAddress)
public void SetPublicFolderPrimaryEmailAddress(string organizationId, string folder, string emailAddress)
{
try
{
LogStart("SetPublicFolderPrimaryEmailAddress");
ES.SetPublicFolderPrimaryEmailAddress(folder, emailAddress);
ES.SetPublicFolderPrimaryEmailAddress(organizationId, folder, emailAddress);
LogEnd("SetPublicFolderPrimaryEmailAddress");
}
catch (Exception ex)
@ -1007,12 +1007,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string[] folders)
public ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders)
{
try
{
LogStart("GetPublicFoldersStatistics");
ExchangeItemStatistics[] ret = ES.GetPublicFoldersStatistics(folders);
ExchangeItemStatistics[] ret = ES.GetPublicFoldersStatistics(organizationId, folders);
LogEnd("GetPublicFoldersStatistics");
return ret;
}
@ -1024,12 +1024,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public string[] GetPublicFoldersRecursive(string parent)
public string[] GetPublicFoldersRecursive(string organizationId, string parent)
{
try
{
LogStart("GetPublicFoldersRecursive");
string[] ret = ES.GetPublicFoldersRecursive(parent);
string[] ret = ES.GetPublicFoldersRecursive(organizationId, parent);
LogEnd("GetPublicFoldersRecursive");
return ret;
}
@ -1041,12 +1041,12 @@ namespace WebsitePanel.Server
}
[WebMethod, SoapHeader("settings")]
public long GetPublicFolderSize(string folder)
public long GetPublicFolderSize(string organizationId, string folder)
{
try
{
LogStart("GetPublicFolderSize");
long ret = ES.GetPublicFolderSize(folder);
long ret = ES.GetPublicFolderSize(organizationId, folder);
LogEnd("GetPublicFolderSize");
return ret;
}