Exchange2013 Creating org public folders when creating organization and interface for set DefaultPublicFolderMailbox
This commit is contained in:
parent
b3dc88fe86
commit
2f3c726b69
7 changed files with 245 additions and 3 deletions
|
@ -5319,6 +5319,42 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
TaskManager.CompleteTask();
|
TaskManager.CompleteTask();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string CreateOrganizationRootPublicFolder(int itemId)
|
||||||
|
{
|
||||||
|
string res = null;
|
||||||
|
|
||||||
|
// place log record
|
||||||
|
TaskManager.StartTask("EXCHANGE", "CREATE_ORG_PUBLIC_FOLDER", itemId);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// load organization
|
||||||
|
Organization org = GetOrganization(itemId);
|
||||||
|
if (org == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// get mailbox settings
|
||||||
|
int exchangeServiceId = GetExchangeServiceID(org.PackageId);
|
||||||
|
ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);
|
||||||
|
|
||||||
|
if (exchange == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
res = exchange.CreateOrganizationRootPublicFolder(org.OrganizationId, org.DistinguishedName, org.SecurityGroup, org.DefaultDomain);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
TaskManager.CompleteTask();
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private Helpers
|
#region Private Helpers
|
||||||
|
|
|
@ -419,6 +419,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
};
|
};
|
||||||
|
|
||||||
PackageController.AddPackageItem(orgDomain);
|
PackageController.AddPackageItem(orgDomain);
|
||||||
|
|
||||||
|
ExchangeServerController.CreateOrganizationRootPublicFolder(itemId);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,6 +76,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
void SetMailboxPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] fullAccessAccounts);
|
void SetMailboxPermissions(string organizationId, string accountName, string[] sendAsAccounts, string[] fullAccessAccounts);
|
||||||
ExchangeMailbox GetMailboxPermissions(string organizationId, string accountName);
|
ExchangeMailbox GetMailboxPermissions(string organizationId, string accountName);
|
||||||
ExchangeMailboxStatistics GetMailboxStatistics(string accountName);
|
ExchangeMailboxStatistics GetMailboxStatistics(string accountName);
|
||||||
|
bool SetDefaultPublicFolderMailbox(string id, string organizationId, string organizationDistinguishedName, out string oldValue, out string newValue);
|
||||||
|
|
||||||
|
|
||||||
// Contacts
|
// Contacts
|
||||||
void CreateContact(string organizationId, string organizationDistinguishedName, string contactDisplayName, string contactAccountName, string contactEmail, string defaultOrganizationDomain);
|
void CreateContact(string organizationId, string organizationDistinguishedName, string contactDisplayName, string contactAccountName, string contactEmail, string defaultOrganizationDomain);
|
||||||
|
@ -115,6 +117,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders);
|
ExchangeItemStatistics[] GetPublicFoldersStatistics(string organizationId, string[] folders);
|
||||||
string[] GetPublicFoldersRecursive(string organizationId, string parent);
|
string[] GetPublicFoldersRecursive(string organizationId, string parent);
|
||||||
long GetPublicFolderSize(string organizationId, string folder);
|
long GetPublicFolderSize(string organizationId, string folder);
|
||||||
|
string CreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain);
|
||||||
|
|
||||||
|
|
||||||
//ActiveSync
|
//ActiveSync
|
||||||
void CreateOrganizationActiveSyncPolicy(string organizationId);
|
void CreateOrganizationActiveSyncPolicy(string organizationId);
|
||||||
|
|
|
@ -4460,8 +4460,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogEnd("CheckOrganizationPublicFolderMailbox");
|
ExchangeLog.LogEnd("CheckOrganizationPublicFolderMailbox");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void CheckOrganizationRootFolder(Runspace runSpace, string folder, string user, string orgCanonicalName, string organizationId)
|
private void CheckOrganizationRootFolder(Runspace runSpace, string folder, string user, string orgCanonicalName, string organizationId)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("CheckOrganizationRootFolder");
|
ExchangeLog.LogStart("CheckOrganizationRootFolder");
|
||||||
|
@ -4486,6 +4484,38 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogEnd("CheckOrganizationRootFolder");
|
ExchangeLog.LogEnd("CheckOrganizationRootFolder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string CreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("AddOrganizationRootPublicFolder");
|
||||||
|
|
||||||
|
string res = null;
|
||||||
|
|
||||||
|
Runspace runSpace = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runSpace = OpenRunspace();
|
||||||
|
|
||||||
|
// default public folder
|
||||||
|
string orgCanonicalName = ConvertADPathToCanonicalName(organizationDistinguishedName);
|
||||||
|
|
||||||
|
//create organization public folder mailbox if required
|
||||||
|
CheckOrganizationPublicFolderMailbox(runSpace, orgCanonicalName, organizationId, organizationDomain);
|
||||||
|
|
||||||
|
//create organization root folder if required
|
||||||
|
CheckOrganizationRootFolder(runSpace, organizationId, securityGroup, orgCanonicalName, organizationId);
|
||||||
|
|
||||||
|
res = orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExchangeLog.LogEnd("AddOrganizationRootPublicFolder");
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
private string AddPublicFolder(Runspace runSpace, string name, string path, string mailbox)
|
private string AddPublicFolder(Runspace runSpace, string name, string path, string mailbox)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("CreatePublicFolder");
|
ExchangeLog.LogStart("CreatePublicFolder");
|
||||||
|
@ -5228,6 +5258,50 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool SetDefaultPublicFolderMailbox(string id, string organizationId, string organizationDistinguishedName, out string oldValue, out string newValue)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("SetDefaultPublicFolderMailbox");
|
||||||
|
|
||||||
|
bool res = false;
|
||||||
|
oldValue = null;
|
||||||
|
newValue = null;
|
||||||
|
|
||||||
|
Runspace runSpace = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runSpace = OpenRunspace();
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-Mailbox");
|
||||||
|
cmd.Parameters.Add("Identity", id);
|
||||||
|
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
|
||||||
|
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
oldValue = ObjToString(GetPSObjectProperty(result[0], "DefaultPublicFolderMailbox"));
|
||||||
|
}
|
||||||
|
|
||||||
|
string orgCanonicalName = ConvertADPathToCanonicalName(organizationDistinguishedName);
|
||||||
|
|
||||||
|
newValue = orgCanonicalName + "/" + GetPublicFolderMailboxName(organizationId);
|
||||||
|
|
||||||
|
if (newValue != oldValue)
|
||||||
|
{
|
||||||
|
cmd = new Command("Set-Mailbox");
|
||||||
|
cmd.Parameters.Add("Identity", id);
|
||||||
|
cmd.Parameters.Add("DefaultPublicFolderMailbox", newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runSpace);
|
||||||
|
}
|
||||||
|
ExchangeLog.LogEnd("SetDefaultPublicFolderMailbox");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Address Lists (GAL, AL, RAL, OAB, ABP)
|
#region Address Lists (GAL, AL, RAL, OAB, ABP)
|
||||||
|
|
|
@ -4854,6 +4854,21 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string CreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain)
|
||||||
|
{
|
||||||
|
// not implemented
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SetDefaultPublicFolderMailbox(string id, string organizationId, string organizationDistinguishedName, out string oldValue, out string newValue)
|
||||||
|
{
|
||||||
|
// not implemented
|
||||||
|
oldValue = null;
|
||||||
|
newValue = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Address Lists (GAL, AL, RAL, OAB, ABP)
|
#region Address Lists (GAL, AL, RAL, OAB, ABP)
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
using WebsitePanel.Providers.HostedSolution;
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
|
@ -65,6 +64,8 @@ namespace WebsitePanel.Providers.Exchange
|
||||||
|
|
||||||
public ServiceProviderSettingsSoapHeader ServiceProviderSettingsSoapHeaderValue;
|
public ServiceProviderSettingsSoapHeader ServiceProviderSettingsSoapHeaderValue;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback CreateOrganizationRootPublicFolderOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback CreateOrganizationActiveSyncPolicyOperationCompleted;
|
private System.Threading.SendOrPostCallback CreateOrganizationActiveSyncPolicyOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetActiveSyncPolicyOperationCompleted;
|
private System.Threading.SendOrPostCallback GetActiveSyncPolicyOperationCompleted;
|
||||||
|
@ -223,6 +224,9 @@ namespace WebsitePanel.Providers.Exchange
|
||||||
this.Url = "http://localhost:9004/ExchangeServer.asmx";
|
this.Url = "http://localhost:9004/ExchangeServer.asmx";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event CreateOrganizationRootPublicFolderCompletedEventHandler CreateOrganizationRootPublicFolderCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event CreateOrganizationActiveSyncPolicyCompletedEventHandler CreateOrganizationActiveSyncPolicyCompleted;
|
public event CreateOrganizationActiveSyncPolicyCompletedEventHandler CreateOrganizationActiveSyncPolicyCompleted;
|
||||||
|
|
||||||
|
@ -451,6 +455,65 @@ namespace WebsitePanel.Providers.Exchange
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetPublicFolderSizeCompletedEventHandler GetPublicFolderSizeCompleted;
|
public event GetPublicFolderSizeCompletedEventHandler GetPublicFolderSizeCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateOrganizationRootPublicFolder", 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 CreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain)
|
||||||
|
{
|
||||||
|
object[] results = this.Invoke("CreateOrganizationRootPublicFolder", new object[] {
|
||||||
|
organizationId,
|
||||||
|
organizationDistinguishedName,
|
||||||
|
securityGroup,
|
||||||
|
organizationDomain});
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginCreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain, System.AsyncCallback callback, object asyncState)
|
||||||
|
{
|
||||||
|
return this.BeginInvoke("CreateOrganizationRootPublicFolder", new object[] {
|
||||||
|
organizationId,
|
||||||
|
organizationDistinguishedName,
|
||||||
|
securityGroup,
|
||||||
|
organizationDomain}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string EndCreateOrganizationRootPublicFolder(System.IAsyncResult asyncResult)
|
||||||
|
{
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void CreateOrganizationRootPublicFolderAsync(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain)
|
||||||
|
{
|
||||||
|
this.CreateOrganizationRootPublicFolderAsync(organizationId, organizationDistinguishedName, securityGroup, organizationDomain, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void CreateOrganizationRootPublicFolderAsync(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain, object userState)
|
||||||
|
{
|
||||||
|
if ((this.CreateOrganizationRootPublicFolderOperationCompleted == null))
|
||||||
|
{
|
||||||
|
this.CreateOrganizationRootPublicFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateOrganizationRootPublicFolderOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("CreateOrganizationRootPublicFolder", new object[] {
|
||||||
|
organizationId,
|
||||||
|
organizationDistinguishedName,
|
||||||
|
securityGroup,
|
||||||
|
organizationDomain}, this.CreateOrganizationRootPublicFolderOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCreateOrganizationRootPublicFolderOperationCompleted(object arg)
|
||||||
|
{
|
||||||
|
if ((this.CreateOrganizationRootPublicFolderCompleted != null))
|
||||||
|
{
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.CreateOrganizationRootPublicFolderCompleted(this, new CreateOrganizationRootPublicFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateOrganizationActiveSyncPolicy", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateOrganizationActiveSyncPolicy", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
@ -5146,6 +5209,36 @@ namespace WebsitePanel.Providers.Exchange
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
|
||||||
|
public delegate void CreateOrganizationRootPublicFolderCompletedEventHandler(object sender, CreateOrganizationRootPublicFolderCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class CreateOrganizationRootPublicFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
|
||||||
|
{
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal CreateOrganizationRootPublicFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState)
|
||||||
|
{
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string Result
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
|
||||||
public delegate void CreateOrganizationActiveSyncPolicyCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
public delegate void CreateOrganizationActiveSyncPolicyCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
|
@ -1088,6 +1088,23 @@ namespace WebsitePanel.Server
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public string CreateOrganizationRootPublicFolder(string organizationId, string organizationDistinguishedName, string securityGroup, string organizationDomain)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
LogStart("CreateOrganizationRootPublicFolder");
|
||||||
|
string ret = ES.CreateOrganizationRootPublicFolder(organizationId, organizationDistinguishedName, securityGroup, organizationDomain);
|
||||||
|
LogEnd("CreateOrganizationRootPublicFolder");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError("GetPublicFolderSize", ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue