public override ServiceProviderItemDiskSpace[] GetServiceItemsDiskSpace(ServiceProviderItem[] items) { List<ServiceProviderItemDiskSpace> itemsDiskspace = new List<ServiceProviderItemDiskSpace>(); // update items with diskspace foreach (ServiceProviderItem item in items) { if (item is MailAccount) { try { // 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)); // 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)); } catch (Exception ex) { Log.WriteError(ex); } } } return itemsDiskspace.ToArray(); }
private string BuildDiskSpaceStatisticsXml(ServiceProviderItemDiskSpace[] itemsDiskspace) { StringBuilder sb = new StringBuilder(); sb.Append("<items>"); if (itemsDiskspace != null) { foreach (ServiceProviderItemDiskSpace item in itemsDiskspace) { sb.Append("<item id=\"").Append(item.ItemId).Append("\"") .Append(" bytes=\"").Append(item.DiskSpace).Append("\"></item>\n"); } } sb.Append("</items>"); return sb.ToString(); }
public override ServiceProviderItemDiskSpace[] GetServiceItemsDiskSpace(ServiceProviderItem[] items) { List<ServiceProviderItemDiskSpace> itemsDiskspace = new List<ServiceProviderItemDiskSpace>(); // update items with diskspace foreach (ServiceProviderItem item in items) { if (item is MailAccount) { try { svcUserAdmin users = new svcUserAdmin(); PrepareProxy(users); 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 = userStats.BytesSize; itemsDiskspace.Add(diskspace); Log.WriteEnd(String.Format("Calculating mail account '{0}' size", item.Name)); } catch (Exception ex) { Log.WriteError(ex); } } } return itemsDiskspace.ToArray(); }
public ServiceProviderItemDiskSpace[] CalculateItems(int serviceId, List<ServiceProviderItem> items) { // convert items to SoapObjects List<SoapServiceProviderItem> objItems = new List<SoapServiceProviderItem>(); //hack for organization... Refactoring!!! List<ServiceProviderItemDiskSpace> organizationDiskSpaces = new List<ServiceProviderItemDiskSpace>(); foreach (ServiceProviderItem item in items) { long size = 0; if (item is Organization) { Organization org = (Organization) item; //Exchange DiskSpace if (!string.IsNullOrEmpty(org.GlobalAddressList)) { int exchangeServiceId = GetExchangeServiceID(org.PackageId); ServiceProvider exchangeProvider = ExchangeServerController.GetExchangeServiceProvider(exchangeServiceId, item.Id); SoapServiceProviderItem soapOrg = SoapServiceProviderItem.Wrap(org); ServiceProviderItemDiskSpace[] itemsDiskspace = exchangeProvider.GetServiceItemsDiskSpace(new SoapServiceProviderItem[] {soapOrg}); if (itemsDiskspace != null && itemsDiskspace.Length > 0) { size += itemsDiskspace[0].DiskSpace; } } // Crm DiskSpace if (org.CrmOrganizationId != Guid.Empty) { //CalculateCrm DiskSpace } //SharePoint DiskSpace int res; PackageContext cntx = PackageController.GetPackageContext(org.PackageId); if (cntx.Groups.ContainsKey(ResourceGroups.HostedSharePoint)) { SharePointSiteDiskSpace[] sharePointSiteDiskSpaces = HostedSharePointServerController.CalculateSharePointSitesDiskSpace(org.Id, out res); if (res == 0) { foreach (SharePointSiteDiskSpace currecnt in sharePointSiteDiskSpaces) { size += currecnt.DiskSpace; } } } ServiceProviderItemDiskSpace tmp = new ServiceProviderItemDiskSpace(); tmp.ItemId = item.Id; tmp.DiskSpace = size; organizationDiskSpaces.Add(tmp); } else objItems.Add(SoapServiceProviderItem.Wrap(item)); } int attempt = 0; int ATTEMPTS = 3; while (attempt < ATTEMPTS) { // increment attempt attempt++; try { // send packet for calculation // invoke service provider //TaskManager.Write(String.Format("{0} - Invoke GetServiceItemsDiskSpace method ('{1}' items) - {2} attempt", // DateTime.Now, objItems.Count, attempt)); ServiceProvider prov = new ServiceProvider(); ServiceProviderProxy.Init(prov, serviceId); ServiceProviderItemDiskSpace[] itemsDiskSpace = prov.GetServiceItemsDiskSpace(objItems.ToArray()); if (itemsDiskSpace != null && itemsDiskSpace.Length > 0) organizationDiskSpaces.AddRange(itemsDiskSpace); return organizationDiskSpaces.ToArray(); } catch (Exception ex) { TaskManager.WriteError(ex.ToString()); } } throw new Exception("The number of attemtps has been reached. The package calculation has been aborted."); }
public override ServiceProviderItemDiskSpace[] GetServiceItemsDiskSpace(ServiceProviderItem[] items) { List<ServiceProviderItemDiskSpace> itemsDiskspace = new List<ServiceProviderItemDiskSpace>(); // update items with diskspace foreach (ServiceProviderItem item in items) { if (item is SqlDatabase) { try { // get database details Log.WriteStart(String.Format("Calculating '{0}' database size", item.Name)); // calculate disk space ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace(); diskspace.ItemId = item.Id; diskspace.DiskSpace = CalculateDatabaseSize(item.Name); itemsDiskspace.Add(diskspace); Log.WriteEnd(String.Format("Calculating '{0}' database size", item.Name)); } catch (Exception ex) { Log.WriteError(String.Format("Error calculating '{0}' SQL Server database size", item.Name), ex); } } } return itemsDiskspace.ToArray(); }