Merge with Exchange SP2 changes
This commit is contained in:
commit
39a8bd6797
3 changed files with 113 additions and 6 deletions
|
@ -67,6 +67,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
#region Constants
|
#region Constants
|
||||||
private const string CONFIG_CLEAR_QUERYBASEDN = "WebsitePanel.Exchange.ClearQueryBaseDN";
|
private const string CONFIG_CLEAR_QUERYBASEDN = "WebsitePanel.Exchange.ClearQueryBaseDN";
|
||||||
|
private const string CONFIG_ENABLESP2ABP = "WebsitePanel.Exchange.enableSP2abp";
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
@ -754,6 +755,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
info.GlobalAddressList = galId;
|
info.GlobalAddressList = galId;
|
||||||
info.OrganizationId = organizationId;
|
info.OrganizationId = organizationId;
|
||||||
info.Database = databaseId;
|
info.Database = databaseId;
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -838,7 +840,21 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
transaction.RegisterNewOfflineAddressBook(oabId);
|
transaction.RegisterNewOfflineAddressBook(oabId);
|
||||||
UpdateOfflineAddressBook(runSpace, oabId, securityGroupId);
|
UpdateOfflineAddressBook(runSpace, oabId, securityGroupId);
|
||||||
info.OfflineAddressBook = oabId;
|
info.OfflineAddressBook = oabId;
|
||||||
}
|
|
||||||
|
//create ABP
|
||||||
|
|
||||||
|
bool enableSP2abp = false;
|
||||||
|
if (ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP] != null)
|
||||||
|
enableSP2abp = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP]);
|
||||||
|
Version exchangeVersion = GetExchangeVersion();
|
||||||
|
|
||||||
|
if (enableSP2abp && (exchangeVersion >= new Version(14, 2)))
|
||||||
|
{
|
||||||
|
string abpId = CreateAddressPolicy(runSpace, organizationId);
|
||||||
|
transaction.RegisterNewAddressPolicy(abpId);
|
||||||
|
ExchangeLog.LogInfo(" Address Policy: {0}", abpId);
|
||||||
|
}
|
||||||
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogError("CreateOrganizationOfflineAddressBookInternal", ex);
|
ExchangeLog.LogError("CreateOrganizationOfflineAddressBookInternal", ex);
|
||||||
|
@ -851,6 +867,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
CloseRunspace(runSpace);
|
CloseRunspace(runSpace);
|
||||||
}
|
}
|
||||||
ExchangeLog.LogEnd("CreateOrganizationOfflineAddressBookInternal");
|
ExchangeLog.LogEnd("CreateOrganizationOfflineAddressBookInternal");
|
||||||
|
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -919,6 +937,30 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
if (!DeleteOrganizationPublicFolders(runSpace, organizationId))
|
if (!DeleteOrganizationPublicFolders(runSpace, organizationId))
|
||||||
ret = false;
|
ret = false;
|
||||||
|
|
||||||
|
//delete ABP
|
||||||
|
|
||||||
|
bool enableSP2abp = false;
|
||||||
|
if (ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP] != null)
|
||||||
|
enableSP2abp = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP]);
|
||||||
|
Version exchangeVersion = GetExchangeVersion();
|
||||||
|
|
||||||
|
if (enableSP2abp && (exchangeVersion >= new Version(14, 2)))
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
string adpstring = GetAddressPolicyName(organizationId);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(adpstring))
|
||||||
|
DeleteAddressPolicy(runSpace, adpstring);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ret = false;
|
||||||
|
ExchangeLog.LogError("Could not delete Address Policy " + globalAddressList, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//delete OAB
|
//delete OAB
|
||||||
try
|
try
|
||||||
|
@ -1748,6 +1790,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
int attempts = 0;
|
int attempts = 0;
|
||||||
string id = null;
|
string id = null;
|
||||||
|
|
||||||
|
Version exchangeVersion = GetExchangeVersion();
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -1795,6 +1838,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
//transaction.RegisterNewMailbox(id);
|
//transaction.RegisterNewMailbox(id);
|
||||||
|
|
||||||
string windowsEmailAddress = ObjToString(GetPSObjectProperty(result[0], "WindowsEmailAddress"));
|
string windowsEmailAddress = ObjToString(GetPSObjectProperty(result[0], "WindowsEmailAddress"));
|
||||||
|
string adpstring = GetAddressPolicyName(organizationId);
|
||||||
|
|
||||||
//update mailbox
|
//update mailbox
|
||||||
cmd = new Command("Set-Mailbox");
|
cmd = new Command("Set-Mailbox");
|
||||||
|
@ -1805,6 +1849,12 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
cmd.Parameters.Add("CustomAttribute3", windowsEmailAddress);
|
cmd.Parameters.Add("CustomAttribute3", windowsEmailAddress);
|
||||||
cmd.Parameters.Add("PrimarySmtpAddress", upn);
|
cmd.Parameters.Add("PrimarySmtpAddress", upn);
|
||||||
cmd.Parameters.Add("WindowsEmailAddress", upn);
|
cmd.Parameters.Add("WindowsEmailAddress", upn);
|
||||||
|
|
||||||
|
bool enableSP2abp = false;
|
||||||
|
if (ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP] != null)
|
||||||
|
enableSP2abp = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP]);
|
||||||
|
if (enableSP2abp && (exchangeVersion >= new Version(14, 2)))
|
||||||
|
cmd.Parameters.Add("AddressBookPolicy", adpstring);
|
||||||
|
|
||||||
cmd.Parameters.Add("UseDatabaseQuotaDefaults", new bool?(false));
|
cmd.Parameters.Add("UseDatabaseQuotaDefaults", new bool?(false));
|
||||||
cmd.Parameters.Add("UseDatabaseRetentionDefaults", false);
|
cmd.Parameters.Add("UseDatabaseRetentionDefaults", false);
|
||||||
|
@ -1814,6 +1864,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
cmd.Parameters.Add("RetainDeletedItemsFor", ConvertDaysToEnhancedTimeSpan(keepDeletedItemsDays));
|
cmd.Parameters.Add("RetainDeletedItemsFor", ConvertDaysToEnhancedTimeSpan(keepDeletedItemsDays));
|
||||||
ExecuteShellCommand(runSpace, cmd);
|
ExecuteShellCommand(runSpace, cmd);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//update AD object
|
//update AD object
|
||||||
string globalAddressListName = this.GetGlobalAddressListName(organizationId);
|
string globalAddressListName = this.GetGlobalAddressListName(organizationId);
|
||||||
string globalAddressListDN = this.GetGlobalAddressListDN(runSpace, globalAddressListName);
|
string globalAddressListDN = this.GetGlobalAddressListDN(runSpace, globalAddressListName);
|
||||||
|
@ -1824,7 +1876,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
bool clearQueryBaseDN = false;
|
bool clearQueryBaseDN = false;
|
||||||
if (ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN] != null)
|
if (ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN] != null)
|
||||||
clearQueryBaseDN = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN]);
|
clearQueryBaseDN = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN]);
|
||||||
Version exchangeVersion = GetExchangeVersion();
|
|
||||||
|
|
||||||
if (!(clearQueryBaseDN && (exchangeVersion >= new Version(14, 1))))
|
if (!(clearQueryBaseDN && (exchangeVersion >= new Version(14, 1))))
|
||||||
SetADObjectPropertyValue(mailbox, "msExchQueryBaseDN", globalAddressListDN);
|
SetADObjectPropertyValue(mailbox, "msExchQueryBaseDN", globalAddressListDN);
|
||||||
|
@ -1885,6 +1936,8 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeTransaction transaction = StartTransaction();
|
ExchangeTransaction transaction = StartTransaction();
|
||||||
Runspace runSpace = null;
|
Runspace runSpace = null;
|
||||||
|
|
||||||
|
Version exchangeVersion = GetExchangeVersion();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
runSpace = OpenRunspace();
|
runSpace = OpenRunspace();
|
||||||
|
@ -1916,6 +1969,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
transaction.RegisterNewMailbox(id);
|
transaction.RegisterNewMailbox(id);
|
||||||
|
|
||||||
string windowsEmailAddress = ObjToString(GetPSObjectProperty(result[0], "WindowsEmailAddress"));
|
string windowsEmailAddress = ObjToString(GetPSObjectProperty(result[0], "WindowsEmailAddress"));
|
||||||
|
string adpstring = GetAddressPolicyName(organizationId);
|
||||||
|
|
||||||
//update mailbox
|
//update mailbox
|
||||||
cmd = new Command("Set-Mailbox");
|
cmd = new Command("Set-Mailbox");
|
||||||
|
@ -1926,6 +1980,12 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
cmd.Parameters.Add("CustomAttribute3", windowsEmailAddress);
|
cmd.Parameters.Add("CustomAttribute3", windowsEmailAddress);
|
||||||
cmd.Parameters.Add("PrimarySmtpAddress", upn);
|
cmd.Parameters.Add("PrimarySmtpAddress", upn);
|
||||||
cmd.Parameters.Add("WindowsEmailAddress", upn);
|
cmd.Parameters.Add("WindowsEmailAddress", upn);
|
||||||
|
|
||||||
|
bool enableSP2abp = false;
|
||||||
|
if (ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP] != null)
|
||||||
|
enableSP2abp = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_ENABLESP2ABP]);
|
||||||
|
if (enableSP2abp && (exchangeVersion >= new Version(14, 2)))
|
||||||
|
cmd.Parameters.Add("AddressBookPolicy", adpstring);
|
||||||
|
|
||||||
cmd.Parameters.Add("UseDatabaseQuotaDefaults", new bool?(false));
|
cmd.Parameters.Add("UseDatabaseQuotaDefaults", new bool?(false));
|
||||||
cmd.Parameters.Add("UseDatabaseRetentionDefaults", false);
|
cmd.Parameters.Add("UseDatabaseRetentionDefaults", false);
|
||||||
|
@ -1944,7 +2004,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
bool clearQueryBaseDN = false;
|
bool clearQueryBaseDN = false;
|
||||||
if (ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN] != null)
|
if (ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN] != null)
|
||||||
clearQueryBaseDN = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN]);
|
clearQueryBaseDN = Boolean.Parse(ConfigurationManager.AppSettings[CONFIG_CLEAR_QUERYBASEDN]);
|
||||||
Version exchangeVersion = GetExchangeVersion();
|
|
||||||
|
|
||||||
if (!(clearQueryBaseDN && (exchangeVersion >= new Version(14, 1))))
|
if (!(clearQueryBaseDN && (exchangeVersion >= new Version(14, 1))))
|
||||||
SetADObjectPropertyValue(mailbox, "msExchQueryBaseDN", globalAddressListDN);
|
SetADObjectPropertyValue(mailbox, "msExchQueryBaseDN", globalAddressListDN);
|
||||||
|
@ -4671,7 +4730,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Address Lists (GAL, AL, OAB)
|
#region Address Lists (GAL, AL, OAB, ABP)
|
||||||
|
|
||||||
private string GetAddressListDN(Runspace runSpace, string id)
|
private string GetAddressListDN(Runspace runSpace, string id)
|
||||||
{
|
{
|
||||||
|
@ -4755,7 +4814,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogEnd("UpdateAddressList");
|
ExchangeLog.LogEnd("UpdateAddressList");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void DeleteAddressList(Runspace runSpace, string id)
|
private void DeleteAddressList(Runspace runSpace, string id)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("DeleteAddressList");
|
ExchangeLog.LogStart("DeleteAddressList");
|
||||||
|
@ -4814,7 +4872,6 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogEnd("UpdateGlobalAddressList");
|
ExchangeLog.LogEnd("UpdateGlobalAddressList");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void DeleteGlobalAddressList(Runspace runSpace, string id)
|
private void DeleteGlobalAddressList(Runspace runSpace, string id)
|
||||||
{
|
{
|
||||||
ExchangeLog.LogStart("DeleteGlobalAddressList");
|
ExchangeLog.LogStart("DeleteGlobalAddressList");
|
||||||
|
@ -4880,6 +4937,41 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
ExchangeLog.LogEnd("DeleteOfflineAddressBook");
|
ExchangeLog.LogEnd("DeleteOfflineAddressBook");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string CreateAddressPolicy(Runspace runSpace, string organizationId)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("CreateAddressPolicy");
|
||||||
|
|
||||||
|
string ABP = GetAddressPolicyName(organizationId);
|
||||||
|
string AL = GetAddressListName(organizationId);
|
||||||
|
string GAL = GetGlobalAddressListName(organizationId);
|
||||||
|
string OAB = GetOfflineAddressBookName(organizationId);
|
||||||
|
string RL = "All Rooms";
|
||||||
|
|
||||||
|
Command cmd = new Command("New-AddressBookPolicy");
|
||||||
|
cmd.Parameters.Add("Name", ABP);
|
||||||
|
cmd.Parameters.Add("GlobalAddressList", GAL);
|
||||||
|
cmd.Parameters.Add("OfflineAddressBook", OAB);
|
||||||
|
cmd.Parameters.Add("AddressLists", AL);
|
||||||
|
cmd.Parameters.Add("RoomList", RL);
|
||||||
|
|
||||||
|
|
||||||
|
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd);
|
||||||
|
string id = GetResultObjectDN(result);
|
||||||
|
|
||||||
|
ExchangeLog.LogEnd("CreateAddressPolicy");
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteAddressPolicy(Runspace runSpace, string id)
|
||||||
|
{
|
||||||
|
ExchangeLog.LogStart("DeleteAddressPolicy");
|
||||||
|
Command cmd = new Command("Remove-AddressBookPolicy");
|
||||||
|
cmd.Parameters.Add("Identity", id);
|
||||||
|
cmd.Parameters.Add("Confirm", false);
|
||||||
|
ExecuteShellCommand(runSpace, cmd);
|
||||||
|
ExchangeLog.LogEnd("DeleteAddressPolicy");
|
||||||
|
}
|
||||||
|
|
||||||
private string GetAddressListName(string orgName)
|
private string GetAddressListName(string orgName)
|
||||||
{
|
{
|
||||||
return orgName + " Address List";
|
return orgName + " Address List";
|
||||||
|
@ -4894,6 +4986,10 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
{
|
{
|
||||||
return orgName + " Offline Address Book";
|
return orgName + " Offline Address Book";
|
||||||
}
|
}
|
||||||
|
private string GetAddressPolicyName(string orgName)
|
||||||
|
{
|
||||||
|
return orgName + " Address Policy";
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,14 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
action.Id = id;
|
action.Id = id;
|
||||||
Actions.Add(action);
|
Actions.Add(action);
|
||||||
}
|
}
|
||||||
|
internal void RegisterNewAddressPolicy(string id)
|
||||||
|
{
|
||||||
|
TransactionAction action = new TransactionAction();
|
||||||
|
action.ActionType = TransactionAction.TransactionActionTypes.CreateAddressPolicy;
|
||||||
|
action.Id = id;
|
||||||
|
Actions.Add(action);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
internal void RegisterNewOfflineAddressBook(string id)
|
internal void RegisterNewOfflineAddressBook(string id)
|
||||||
{
|
{
|
||||||
|
@ -220,6 +228,7 @@ namespace WebsitePanel.Providers.HostedSolution
|
||||||
CreateOrganizationUnit,
|
CreateOrganizationUnit,
|
||||||
CreateGlobalAddressList,
|
CreateGlobalAddressList,
|
||||||
CreateAddressList,
|
CreateAddressList,
|
||||||
|
CreateAddressPolicy,
|
||||||
CreateOfflineAddressBook,
|
CreateOfflineAddressBook,
|
||||||
CreateDistributionGroup,
|
CreateDistributionGroup,
|
||||||
EnableDistributionGroup,
|
EnableDistributionGroup,
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
</configSections>
|
</configSections>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
<add key="WebsitePanel.HyperV.UseDiskPartClearReadOnlyFlag" value="false"/>
|
<add key="WebsitePanel.HyperV.UseDiskPartClearReadOnlyFlag" value="false"/>
|
||||||
|
<add key="WebsitePanel.Exchange.ClearQueryBaseDN" value="false" />
|
||||||
|
<add key="WebsitePanel.Exchange.enableSP2abp" value="false" />
|
||||||
<add key="SCVMMServerName" value=""/>
|
<add key="SCVMMServerName" value=""/>
|
||||||
<add key="SCVMMServerPort" value=""/>
|
<add key="SCVMMServerPort" value=""/>
|
||||||
</appSettings>
|
</appSettings>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue