diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs index ac586b4b..77c16c9c 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.CsvBulk/ExchangeImport.cs @@ -92,7 +92,10 @@ namespace WebsitePanel.Import.CsvBulk private int PagerIndex = -1; private int WebPageIndex = -1; private int NotesIndex = -1; + private int PlanIndex = -1; + private int defaultPlanId = -1; + private Dictionary planName2Id = new Dictionary(); public ExchangeImport() { @@ -184,6 +187,8 @@ namespace WebsitePanel.Import.CsvBulk } index = 0; + GetMailboxPlans(orgId); + using (StreamReader sr = new StreamReader(inputFile)) { string line; @@ -210,6 +215,22 @@ namespace WebsitePanel.Import.CsvBulk } } + private void GetMailboxPlans(int orgId) + { + ExchangeMailboxPlan[] plans = ES.Services.ExchangeServer.GetExchangeMailboxPlans(orgId); + foreach (ExchangeMailboxPlan plan in plans) + { + if (!planName2Id.ContainsKey(plan.MailboxPlan)) + { + planName2Id.Add(plan.MailboxPlan, plan.MailboxPlanId); + } + if (plan.IsDefault) + { + defaultPlanId = plan.MailboxPlanId; + } + } + } + private void ShowSummary() { Log.WriteLine(string.Format("{0} line(s) processed", index)); @@ -286,7 +307,9 @@ namespace WebsitePanel.Import.CsvBulk WebPageIndex = i; else if (StringEquals(cells[i], "Notes")) NotesIndex = i; - } + else if (StringEquals(cells[i], "Mailbox Plan")) + PlanIndex = i; + } return true; } //check csv structure @@ -430,6 +453,29 @@ namespace WebsitePanel.Import.CsvBulk string webPage = cells[WebPageIndex]; string notes = cells[NotesIndex]; + int planId; + // do we have plan-column? + if (PlanIndex > -1) + { + string planName = cells[PlanIndex]; + if (!planName2Id.TryGetValue(planName, out planId)) + { + Log.WriteInfo(String.Format("Warning at line {0}: Plan named {1} does not exist!", index + 1, planName)); + // fall back to default plan + planId = defaultPlanId; + } + } + // or not? + else + { + // fall back to default plan + planId = defaultPlanId; + } + if (planId < 0) + { + Log.WriteError(string.Format("Error at line {0}: No valid plan name and/or no valid default plan", index + 1)); + return false; + } @@ -480,7 +526,7 @@ namespace WebsitePanel.Import.CsvBulk //create mailbox using web service if (!CreateMailbox(index, orgId, displayName, emailAddress, password, firstName, middleName, lastName, address, city, state, zip, country, jobTitle, company, department, office, - businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes)) + businessPhone, fax, homePhone, mobilePhone, pager, webPage, notes, planId)) { return false; } @@ -517,7 +563,7 @@ namespace WebsitePanel.Import.CsvBulk /// private bool CreateMailbox(int index, int orgId, string displayName, string emailAddress, string password, string firstName, string middleName, string lastName, string address, string city, string state, string zip, string country, string jobTitle, string company, string department, string office, - string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes) + string businessPhone, string fax, string homePhone, string mobilePhone, string pager, string webPage, string notes, int planId) { bool ret = false; try @@ -528,7 +574,7 @@ namespace WebsitePanel.Import.CsvBulk //create mailbox //ES.Services.ExchangeServer. string accountName = string.Empty; - int accountId = ES.Services.ExchangeServer.CreateMailbox(orgId, 0, ExchangeAccountType.Mailbox, accountName, displayName, name, domain, password, false, string.Empty, 0, string.Empty); + int accountId = ES.Services.ExchangeServer.CreateMailbox(orgId, 0, ExchangeAccountType.Mailbox, accountName, displayName, name, domain, password, false, string.Empty, planId, string.Empty); if (accountId < 0) { string errorMessage = GetErrorMessage(accountId); @@ -557,7 +603,6 @@ namespace WebsitePanel.Import.CsvBulk mailbox.WebPage = webPage; mailbox.Notes = notes; - //update mailbox /* ES.Services.ExchangeServer.SetMailboxGeneralSettings(orgId, accountId, mailbox.DisplayName, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs index c30c70aa..44556807 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/Code/Wizards/UserCreationWizard.cs @@ -310,25 +310,25 @@ namespace WebsitePanel.EnterpriseServer // error while creating mail account throw new Exception("Could not create mail account", ex); } + } - // Instant Alias / Temporary URL - if (tempDomain && (domainId > 0)) + // Instant Alias / Temporary URL + if (tempDomain && (domainId > 0)) + { + int instantAliasId = ServerController.CreateDomainInstantAlias("", domainId); + if (instantAliasId < 0) { - int instantAliasId = ServerController.CreateDomainInstantAlias("", domainId); - if (instantAliasId < 0) - { - // rollback wizard - Rollback(); + // rollback wizard + Rollback(); - return instantAliasId; - } + return instantAliasId; } + } - // Domain DNS Zone - if (createZoneRecord && (domainId > 0)) - { - ServerController.EnableDomainDns(domainId); - } + // Domain DNS Zone + if (createZoneRecord && (domainId > 0)) + { + ServerController.EnableDomainDns(domainId); } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail10/SmarterMail10.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail10/SmarterMail10.cs index 97ece705..2fd4a4d7 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail10/SmarterMail10.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail10/SmarterMail10.cs @@ -200,29 +200,23 @@ namespace WebsitePanel.Providers.Mail { try { + svcUserAdmin users = new svcUserAdmin(); + PrepareProxy(users); - // get mailbox size - string name = item.Name; + StatInfoResult userStats = users.GetUserStats(AdminUsername, AdminPassword, item.Name, DateTime.Now, DateTime.Now); + if (!userStats.Result) + { + throw new Exception(userStats.Message); + } - // try to get SmarterMail postoffices path - string poPath = DomainsPath; - if (poPath == null) - continue; - - string mailboxName = name.Substring(0, name.IndexOf("@")); - string domainName = name.Substring(name.IndexOf("@") + 1); - - string mailboxPath = Path.Combine(DomainsPath, String.Format("{0}\\Users\\{1}", domainName, mailboxName)); - - Log.WriteStart(String.Format("Calculating '{0}' folder size", mailboxPath)); - - // calculate disk space - ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); - diskspace.ItemId = item.Id; - //diskspace.DiskSpace = 0; - diskspace.DiskSpace = FileUtils.CalculateFolderSize(mailboxPath); - itemsDiskspace.Add(diskspace); - Log.WriteEnd(String.Format("Calculating '{0}' folder size", mailboxPath)); + Log.WriteStart(String.Format("Calculating mail account '{0}' size", item.Name)); + // calculate disk space + ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); + diskspace.ItemId = item.Id; + //diskspace.DiskSpace = 0; + diskspace.DiskSpace = userStats.BytesSize; + itemsDiskspace.Add(diskspace); + Log.WriteEnd(String.Format("Calculating mail account '{0}' size", item.Name)); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail5/SmarterMail5.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail5/SmarterMail5.cs index 56e8cb21..2433bff8 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail5/SmarterMail5.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail5/SmarterMail5.cs @@ -1570,29 +1570,23 @@ namespace WebsitePanel.Providers.Mail { try { + svcUserAdmin users = new svcUserAdmin(); + PrepareProxy(users); - // get mailbox size - string name = item.Name; - - // try to get SmarterMail postoffices path - string poPath = DomainsPath; - if (poPath == null) - continue; - - string mailboxName = name.Substring(0, name.IndexOf("@")); - string domainName = name.Substring(name.IndexOf("@") + 1); - - string mailboxPath = Path.Combine(DomainsPath, String.Format("{0}\\Users\\{1}", domainName, mailboxName)); - - Log.WriteStart(String.Format("Calculating '{0}' folder size", mailboxPath)); + StatInfoResult userStats = users.GetUserStats(AdminUsername, AdminPassword, item.Name, DateTime.Now, DateTime.Now); + if (!userStats.Result) + { + throw new Exception(userStats.Message); + } + Log.WriteStart(String.Format("Calculating mail account '{0}' size", item.Name)); // calculate disk space ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); diskspace.ItemId = item.Id; //diskspace.DiskSpace = 0; - diskspace.DiskSpace = FileUtils.CalculateFolderSize(mailboxPath); + diskspace.DiskSpace = userStats.BytesSize; itemsDiskspace.Add(diskspace); - Log.WriteEnd(String.Format("Calculating '{0}' folder size", mailboxPath)); + Log.WriteEnd(String.Format("Calculating mail account '{0}' size", item.Name)); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail6/SmarterMail6.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail6/SmarterMail6.cs index cfa88210..64a3369d 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail6/SmarterMail6.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail6/SmarterMail6.cs @@ -200,29 +200,23 @@ namespace WebsitePanel.Providers.Mail { try { + svcUserAdmin users = new svcUserAdmin(); + PrepareProxy(users); - // get mailbox size - string name = item.Name; - - // try to get SmarterMail postoffices path - string poPath = DomainsPath; - if (poPath == null) - continue; - - string mailboxName = name.Substring(0, name.IndexOf("@")); - string domainName = name.Substring(name.IndexOf("@") + 1); - - string mailboxPath = Path.Combine(DomainsPath, String.Format("{0}\\Users\\{1}", domainName, mailboxName)); - - Log.WriteStart(String.Format("Calculating '{0}' folder size", mailboxPath)); + StatInfoResult userStats = users.GetUserStats(AdminUsername, AdminPassword, item.Name, DateTime.Now, DateTime.Now); + if (!userStats.Result) + { + throw new Exception(userStats.Message); + } + Log.WriteStart(String.Format("Calculating mail account '{0}' size", item.Name)); // calculate disk space ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); diskspace.ItemId = item.Id; //diskspace.DiskSpace = 0; - diskspace.DiskSpace = FileUtils.CalculateFolderSize(mailboxPath); + diskspace.DiskSpace = userStats.BytesSize; itemsDiskspace.Add(diskspace); - Log.WriteEnd(String.Format("Calculating '{0}' folder size", mailboxPath)); + Log.WriteEnd(String.Format("Calculating mail account '{0}' size", item.Name)); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs index 5f6df0b4..7d5d69a0 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail7/SmarterMail7.cs @@ -200,29 +200,23 @@ namespace WebsitePanel.Providers.Mail { try { + svcUserAdmin users = new svcUserAdmin(); + PrepareProxy(users); - // get mailbox size - string name = item.Name; + StatInfoResult userStats = users.GetUserStats(AdminUsername, AdminPassword, item.Name, DateTime.Now, DateTime.Now); + if (!userStats.Result) + { + throw new Exception(userStats.Message); + } - // try to get SmarterMail postoffices path - string poPath = DomainsPath; - if (poPath == null) - continue; - - string mailboxName = name.Substring(0, name.IndexOf("@")); - string domainName = name.Substring(name.IndexOf("@") + 1); - - string mailboxPath = Path.Combine(DomainsPath, String.Format("{0}\\Users\\{1}", domainName, mailboxName)); - - Log.WriteStart(String.Format("Calculating '{0}' folder size", mailboxPath)); - - // calculate disk space - ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); - diskspace.ItemId = item.Id; - //diskspace.DiskSpace = 0; - diskspace.DiskSpace = FileUtils.CalculateFolderSize(mailboxPath); - itemsDiskspace.Add(diskspace); - Log.WriteEnd(String.Format("Calculating '{0}' folder size", mailboxPath)); + Log.WriteStart(String.Format("Calculating mail account '{0}' size", item.Name)); + // calculate disk space + ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); + diskspace.ItemId = item.Id; + //diskspace.DiskSpace = 0; + diskspace.DiskSpace = userStats.BytesSize; + itemsDiskspace.Add(diskspace); + Log.WriteEnd(String.Format("Calculating mail account '{0}' size", item.Name)); } catch (Exception ex) { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail9/SmarterMail9.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail9/SmarterMail9.cs index 3ce85581..4a1bbde2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail9/SmarterMail9.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Mail.SmarterMail9/SmarterMail9.cs @@ -200,29 +200,23 @@ namespace WebsitePanel.Providers.Mail { try { + svcUserAdmin users = new svcUserAdmin(); + PrepareProxy(users); - // get mailbox size - string name = item.Name; - - // try to get SmarterMail postoffices path - string poPath = DomainsPath; - if (poPath == null) - continue; - - string mailboxName = name.Substring(0, name.IndexOf("@")); - string domainName = name.Substring(name.IndexOf("@") + 1); - - string mailboxPath = Path.Combine(DomainsPath, String.Format("{0}\\Users\\{1}", domainName, mailboxName)); - - Log.WriteStart(String.Format("Calculating '{0}' folder size", mailboxPath)); + StatInfoResult userStats = users.GetUserStats(AdminUsername, AdminPassword, item.Name, DateTime.Now, DateTime.Now); + if (!userStats.Result) + { + throw new Exception(userStats.Message); + } + Log.WriteStart(String.Format("Calculating mail account '{0}' size", item.Name)); // calculate disk space ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); diskspace.ItemId = item.Id; //diskspace.DiskSpace = 0; - diskspace.DiskSpace = FileUtils.CalculateFolderSize(mailboxPath); + diskspace.DiskSpace = userStats.BytesSize; itemsDiskspace.Add(diskspace); - Log.WriteEnd(String.Format("Calculating '{0}' folder size", mailboxPath)); + Log.WriteEnd(String.Format("Calculating mail account '{0}' size", item.Name)); } catch (Exception ex) {