From 6942c229fe877747a2bb8c1dd7d18b2e979abb3a Mon Sep 17 00:00:00 2001 From: robvde Date: Mon, 30 Jul 2012 22:37:41 +0400 Subject: [PATCH] Fix: Unable to create public folders with the same name. "sAMAccountName" didnt get registered within ExchangeAccounts. Server Component updated to ensure either netbios domain or "samaccountname" is returned. ES Server Component updated to ensure it's stored within the database. --- .../ExchangeServer/ExchangeServerController.cs | 5 ++++- .../HostedSolution/ExchangePublicFolder.cs | 16 ++++++++++++++++ .../Exchange2007.cs | 16 +++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs index f2a66144..232439d8 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/ExchangeServer/ExchangeServerController.cs @@ -3674,10 +3674,13 @@ namespace WebsitePanel.EnterpriseServer name, domain); + + ExchangePublicFolder folder = exchange.GetPublicFolderGeneralSettings(parentFolder + "\\" + folderName); + // add meta-item int accountId = AddAccount(itemId, ExchangeAccountType.PublicFolder, accountName, folderPath, email, mailEnabled, - 0, "", null, 0 , null); + 0, folder.NETBIOS+"\\"+accountName, null, 0, null); // register email address if(mailEnabled) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangePublicFolder.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangePublicFolder.cs index 2a530ce8..8e0b5b50 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangePublicFolder.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ExchangePublicFolder.cs @@ -31,7 +31,9 @@ namespace WebsitePanel.Providers.HostedSolution public class ExchangePublicFolder { string name; + string netbios; string displayName; + string sAMAccountName; bool hideFromAddressBook; bool mailEnabled; @@ -89,5 +91,19 @@ namespace WebsitePanel.Providers.HostedSolution get { return requireSenderAuthentication; } set { requireSenderAuthentication = value; } } + + public string SAMAccountName + { + get { return this.sAMAccountName; } + set { this.sAMAccountName = value; } + } + + public string NETBIOS + { + get { return this.netbios; } + set { this.netbios = value; } + } + + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs index d7e56871..598a133f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/Exchange2007.cs @@ -4321,8 +4321,22 @@ namespace WebsitePanel.Providers.HostedSolution 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, 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")); + } + } } finally {