Public support added for Exchange 2013, Litigationhold implementation synced
with exchange 2013 provider
This commit is contained in:
parent
73cd732e6d
commit
22e56f6af2
9 changed files with 482 additions and 276 deletions
|
@ -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));
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -83,6 +83,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
CreateMailbox,
|
||||
CreateContact,
|
||||
CreatePublicFolder,
|
||||
CreatePublicFolderMailbox,
|
||||
CreateActiveSyncPolicy,
|
||||
AddMailboxFullAccessPermission,
|
||||
AddSendAsPermission,
|
||||
|
|
|
@ -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,35 +2122,56 @@ namespace WebsitePanel.Providers.HostedSolution
|
|||
{
|
||||
System.Collections.Generic.List<string> lstDatabase = new System.Collections.Generic.List<string>();
|
||||
|
||||
foreach (object objServer in servers)
|
||||
if (!isFixedDatabase) // "old" loadbalancing code
|
||||
{
|
||||
foreach (object objServer in servers)
|
||||
{
|
||||
Collection<PSObject> databases = null;
|
||||
cmd = new Command("Get-MailboxDatabase");
|
||||
cmd.Parameters.Add("Server", ObjToString(objServer));
|
||||
databases = ExecuteShellCommand(runSpace, cmd);
|
||||
|
||||
foreach (PSObject objDatabase in databases)
|
||||
{
|
||||
if (((bool)GetPSObjectProperty(objDatabase, "IsExcludedFromProvisioning") == false) &&
|
||||
((bool)GetPSObjectProperty(objDatabase, "IsSuspendedFromProvisioning") == false))
|
||||
{
|
||||
string db = ObjToString(GetPSObjectProperty(objDatabase, "Identity"));
|
||||
|
||||
bool bAdd = true;
|
||||
foreach (string s in lstDatabase)
|
||||
{
|
||||
if (s.ToLower() == db.ToLower())
|
||||
{
|
||||
bAdd = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bAdd)
|
||||
{
|
||||
lstDatabase.Add(db);
|
||||
ExchangeLog.LogInfo("AddDatabase: " + db);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else // new fixed database code
|
||||
{
|
||||
Collection<PSObject> databases = null;
|
||||
cmd = new Command("Get-MailboxDatabase");
|
||||
cmd.Parameters.Add("Server", ObjToString(objServer));
|
||||
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)
|
||||
{
|
||||
if (((bool)GetPSObjectProperty(objDatabase, "IsExcludedFromProvisioning") == false) &&
|
||||
((bool)GetPSObjectProperty(objDatabase, "IsSuspendedFromProvisioning") == false))
|
||||
string dagSetting = ObjToString(GetPSObjectProperty(objDatabase, "MasterServerOrAvailabilityGroup"));
|
||||
if (dagNameDAG.Equals(dagSetting, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
string db = ObjToString(GetPSObjectProperty(objDatabase, "Identity"));
|
||||
|
||||
bool bAdd = true;
|
||||
foreach (string s in lstDatabase)
|
||||
{
|
||||
if (s.ToLower() == db.ToLower())
|
||||
{
|
||||
bAdd = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bAdd)
|
||||
{
|
||||
lstDatabase.Add(db);
|
||||
ExchangeLog.LogInfo("AddDatabase: " + db);
|
||||
}
|
||||
lstDatabase.Add(dagNameMBX);
|
||||
ExchangeLog.LogInfo("AddFixedDatabase: " + dagNameMBX);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue