Example #1
0
        public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (!(item is DnsZone))
            {
                return(0);
            }

            // DNS provider
            DNSServer dns = GetDNSServer(item.ServiceId);

            // zone records serialized
            XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord));

            try
            {
                // get zone records
                DnsRecord[] records = dns.GetZoneRecords(item.Name);

                // serialize zone records
                foreach (DnsRecord record in records)
                {
                    serializer.Serialize(writer, record);
                }
            }
            catch (Exception ex)
            {
                TaskManager.WriteError(ex, "Could not read zone records");
            }

            return(0);
        }
        private static MailAccount ConvertItemToMailAccount(ServiceProviderItem item)
        {
            MailAccount account = (MailAccount)item;
            account.Password = CryptoUtils.Decrypt(account.Password);

            return account;
        }
Example #3
0
        public static int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item)
        {
            // load item type
            ServiceProviderItemType itemType = PackageController.GetServiceItemType(item.TypeId);

            if (!itemType.Backupable)
            {
                return(-1);
            }

            // load group
            ResourceGroupInfo group = ServerController.GetResourceGroup(itemType.GroupId);

            // create controller
            IBackupController controller = null;

            try
            {
                controller = Activator.CreateInstance(Type.GetType(group.GroupController)) as IBackupController;
                if (controller != null)
                {
                    return(BackupItem(tempFolder, writer, item, group, controller));
                }
            }
            catch (Exception ex)
            {
                TaskManager.WriteError(ex);
            }

            return(-2);
        }
Example #4
0
        public override ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
        {
            ServiceProviderItemBandwidth[] itemsBandwidth = new ServiceProviderItemBandwidth[items.Length];

            //%ProgramData%\Cerberus LLC\Cerberus FTP Server\log

            // update items with diskspace
            for (int i = 0; i < items.Length; i++)
            {
                ServiceProviderItem item = items[i];

                // create new bandwidth object
                itemsBandwidth[i]        = new ServiceProviderItemBandwidth();
                itemsBandwidth[i].ItemId = item.Id;
                itemsBandwidth[i].Days   = new DailyStatistics[0];

                if (item is FtpAccount)
                {
                    try
                    {
                        // get daily statistics
                        itemsBandwidth[i].Days = Calculate(item.Name, since.AddDays(-1));
                    }
                    catch (Exception ex)
                    {
                        Log.WriteError(ex);
                    }
                }
            }
            return(itemsBandwidth);
        }
Example #5
0
        private static int BackupItem(string tempFolder, XmlWriter writer,
                                      ServiceProviderItem item, ResourceGroupInfo group, IBackupController controller)
        {
            writer.WriteStartElement("Item");
            writer.WriteAttributeString("itemId", item.Id.ToString());
            writer.WriteAttributeString("itemTypeId", item.TypeId.ToString());
            writer.WriteAttributeString("itemName", item.Name);
            writer.WriteAttributeString("packageId", item.PackageId.ToString());
            writer.WriteAttributeString("serviceId", item.ServiceId.ToString());

            try
            {
                return(controller.BackupItem(tempFolder, writer, item, group));
            }
            catch (Exception ex)
            {
                TaskManager.WriteError(ex);
            }
            finally
            {
                writer.WriteEndElement(); // Item
            }

            return(0);
        }
        // static methods
        public static SoapServiceProviderItem Wrap(ServiceProviderItem item)
        {
            if (item == null)
                return null;

            // wrap only "persistent" properties
            SoapServiceProviderItem sobj = new SoapServiceProviderItem();
            sobj.TypeName = item.GetType().AssemblyQualifiedName;

            // add common properties
            Hashtable props = GetObjectProperties(item, true);
            props.Add("Id", item.Id.ToString());
            props.Add("Name", item.Name);
            props.Add("ServiceId", item.ServiceId.ToString());
            props.Add("PackageId", item.PackageId.ToString());

            List<string> wrProps = new List<string>();
            foreach (string key in props.Keys)
            {
                wrProps.Add(key + "=" + props[key].ToString());
            }

            sobj.Properties = wrProps.ToArray();
            return sobj;
        }
Example #7
0
        public int BackupItem(string tempFolder, System.Xml.XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is SystemUser)
            {
                // backup system user
                SharePointServer sps = GetSharePoint(item.ServiceId);

                // read user info
                SystemUser user = sps.GetUser(item.Name);
                user.Password = ((SystemUser)item).Password;

                XmlSerializer serializer = new XmlSerializer(typeof(SystemUser));
                serializer.Serialize(writer, user);
            }
            else if (item is SystemGroup)
            {
                // backup system group
                SharePointServer sps = GetSharePoint(item.ServiceId);

                // read site info
                SystemGroup sysGroup = sps.GetGroup(item.Name);

                XmlSerializer serializer = new XmlSerializer(typeof(SystemGroup));
                serializer.Serialize(writer, group);
            }
            return(0);
        }
Example #8
0
        public override ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
        {
            ServiceProviderItemBandwidth[] itemsBandwidth = new ServiceProviderItemBandwidth[items.Length];

            // create parser object
            // and update statistics
            LogParser parser = new LogParser("Gene6Ftp", SiteId, GetLogsPath(), "cs-username");

            parser.ParseLogs();

            // update items with diskspace
            for (int i = 0; i < items.Length; i++)
            {
                ServiceProviderItem item = items[i];

                // create new bandwidth object
                itemsBandwidth[i]        = new ServiceProviderItemBandwidth();
                itemsBandwidth[i].ItemId = item.Id;
                itemsBandwidth[i].Days   = new DailyStatistics[0];

                if (item is FtpAccount)
                {
                    try
                    {
                        // get daily statistics
                        itemsBandwidth[i].Days = parser.GetDailyStatistics(since, new string[] { item.Name });
                    }
                    catch (Exception ex)
                    {
                        Log.WriteError(ex);
                    }
                }
            }
            return(itemsBandwidth);
        }
        public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is SqlDatabase)
            {
                // backup database
                DatabaseServer sql = GetDatabaseServer(item.ServiceId);

                string backupName       = String.Format("DatabaseBackup_{0}.zip", item.Id);
                string remoteBackupFile = sql.BackupDatabase(item.Name, backupName, true);

                // download remote backup
                string localBackupPath = Path.Combine(tempFolder, backupName);

                byte[]     buffer = null;
                FileStream stream = new FileStream(localBackupPath, FileMode.Create, FileAccess.Write);

                int  offset = 0;
                long length = 0;
                do
                {
                    // read remote content
                    buffer = sql.GetTempFileBinaryChunk(remoteBackupFile, offset, FILE_BUFFER_LENGTH);

                    // write remote content
                    stream.Write(buffer, 0, buffer.Length);

                    length += buffer.Length;
                    offset += FILE_BUFFER_LENGTH;
                }while (buffer.Length == FILE_BUFFER_LENGTH);
                stream.Close();

                // add file pointer

                BackupController.WriteFileElement(writer, "DatabaseBackup", backupName, length);

                // store meta item
                SqlDatabase   database   = sql.GetDatabase(item.Name);
                XmlSerializer serializer = new XmlSerializer(typeof(SqlDatabase));
                serializer.Serialize(writer, database);
            }
            else if (item is SqlUser)
            {
                // backup user
                DatabaseServer sql = GetDatabaseServer(item.ServiceId);

                SqlUser userItem = item as SqlUser;

                // store user info
                SqlUser user = sql.GetUser(item.Name, GetSqlDatabasesArray(item.PackageId, item.GroupName));
                user.Password = userItem.Password;

                XmlSerializer serializer = new XmlSerializer(typeof(SqlUser));
                serializer.Serialize(writer, user);
            }

            return(0);
        }
        private static FtpAccount ConvertItemToFtpAccount(ServiceProviderItem item)
        {
            FtpAccount account = (FtpAccount)item;

            string homeFolder = FilesController.GetHomeFolder(account.PackageId);
            if(!String.IsNullOrEmpty(account.Folder) && account.Folder.IndexOf(":") != -1)
                account.Folder = account.Folder.Substring(homeFolder.Length);
            account.Folder = (account.Folder == "") ? "\\" : account.Folder;

            // decode password
            account.Password = CryptoUtils.Decrypt(account.Password);

            return account;
        }
        private ServiceProviderItem[] UnwrapServiceProviderItems(SoapServiceProviderItem[] soapItems)
        {
            if (soapItems == null)
            {
                return(null);
            }
            ServiceProviderItem[] items = new ServiceProviderItem[soapItems.Length];
            for (int i = 0; i < items.Length; i++)
            {
                items[i] = SoapServiceProviderItem.Unwrap(soapItems[i]);
            }

            return(items);
        }
Example #12
0
        public int BackupItem(string tempFolder, System.Xml.XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is FtpAccount)
            {
                // backup FTP account
                FTPServer ftp = GetFTPServer(item.ServiceId);

                // read FTP account info
                FtpAccount account = ftp.GetAccount(item.Name);
                account.Password = ((FtpAccount)item).Password;

                XmlSerializer serializer = new XmlSerializer(typeof(FtpAccount));
                serializer.Serialize(writer, account);
            }
            return(0);
        }
        public int BackupItem(string tempFolder, System.Xml.XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is StatsSite)
            {
                // backup stats site
                StatisticsServer stats = GetStatisticsServer(item.ServiceId);

                // read site info
                StatsSite itemSite = item as StatsSite;
                StatsSite site     = stats.GetSite(itemSite.SiteId);

                XmlSerializer serializer = new XmlSerializer(typeof(StatsSite));
                serializer.Serialize(writer, site);
            }
            return(0);
        }
Example #14
0
 public override void DeleteServiceItems(ServiceProviderItem[] items)
 {
     foreach (ServiceProviderItem item in items)
     {
         try
         {
             if (item is HomeFolder)
                 // delete home folder
                 FileUtils.DeleteFile(item.Name);
         }
         catch (Exception ex)
         {
             Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex);
         }
     }
 }
Example #15
0
        private static FtpAccount ConvertItemToFtpAccount(ServiceProviderItem item)
        {
            FtpAccount account = (FtpAccount)item;

            string homeFolder = FilesController.GetHomeFolder(account.PackageId);

            if (!String.IsNullOrEmpty(account.Folder) && account.Folder.IndexOf(":") != -1)
            {
                account.Folder = account.Folder.Substring(homeFolder.Length);
            }
            account.Folder = (account.Folder == "") ? "\\" : account.Folder;

            // decode password
            account.Password = CryptoUtils.Decrypt(account.Password);

            return(account);
        }
Example #16
0
        public override ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
        {
            ServiceProviderItemBandwidth[] itemsBandwidth = new ServiceProviderItemBandwidth[items.Length];

            // calculate bandwidth for Default FTP Site
            FtpSite ftpSite  = GetSite(SiteId);
            string  siteId   = String.Concat("FTPSVC", ftpSite[FtpSite.MSFTP7_SITE_ID]);
            string  logsPath = Path.Combine(ftpSite.LogFileDirectory, siteId);

            // create parser object
            // and update statistics
            LogParser parser = new LogParser("Ftp", siteId, logsPath, "s-sitename", "cs-username");

            // Subscribe to the events because FTP 7.0 has several differences that should be taken into account
            // and processed in a specific way
            parser.ProcessKeyFields        += new ProcessKeyFieldsEventHandler(LogParser_ProcessKeyFields);
            parser.CalculateStatisticsLine += new CalculateStatsLineEventHandler(LogParser_CalculateStatisticsLine);
            //
            parser.ParseLogs();

            // update items with diskspace
            for (int i = 0; i < items.Length; i++)
            {
                ServiceProviderItem item = items[i];

                // create new bandwidth object
                itemsBandwidth[i]        = new ServiceProviderItemBandwidth();
                itemsBandwidth[i].ItemId = item.Id;
                itemsBandwidth[i].Days   = new DailyStatistics[0];

                if (item is FtpAccount)
                {
                    try
                    {
                        // get daily statistics
                        itemsBandwidth[i].Days = parser.GetDailyStatistics(since, new string[] { siteId, item.Name });
                    }
                    catch (Exception ex)
                    {
                        Log.WriteError(ex);
                    }
                }
            }
            return(itemsBandwidth);
        }
Example #17
0
        public override ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
        {
            ServiceProviderItemBandwidth[] itemsBandwidth = new ServiceProviderItemBandwidth[items.Length];

            // calculate bandwidth for Default FTP Site
            FtpSite fptSite  = GetSite(SiteId);
            string  siteId   = SiteId.Replace("/", "");
            string  logsPath = Path.Combine(fptSite.LogFileDirectory, siteId);

            // create parser object
            // and update statistics
            LogParser parser = new LogParser("Ftp", siteId, logsPath, "s-sitename", "cs-username");

            parser.ParseLogs();

            // update items with diskspace
            for (int i = 0; i < items.Length; i++)
            {
                ServiceProviderItem item = items[i];

                // create new bandwidth object
                itemsBandwidth[i]        = new ServiceProviderItemBandwidth();
                itemsBandwidth[i].ItemId = item.Id;
                itemsBandwidth[i].Days   = new DailyStatistics[0];

                if (item is FtpAccount)
                {
                    try
                    {
                        // get daily statistics
                        itemsBandwidth[i].Days = parser.GetDailyStatistics(since, new string[] { siteId, item.Name });
                    }
                    catch (Exception ex)
                    {
                        Log.WriteError(ex);
                    }
                }
            }
            return(itemsBandwidth);
        }
        /// <summary>
        /// Backups service item by serializing it into supplied writer.
        /// </summary>
        /// <param name="tempFolder">Temporary directory path.</param>
        /// <param name="writer">Xml wirter used to store backuped service provider items.</param>
        /// <param name="item">Service provider item to be backed up..</param>
        /// <param name="group">Service provider resource group.</param>
        /// <returns>Resulting code.</returns>
        public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            SharePointEnterpriseSiteCollection siteCollection = item as SharePointEnterpriseSiteCollection;

            if (siteCollection != null)
            {
                HostedSharePointServerEnt          hostedSharePointServer = GetHostedSharePointServer(siteCollection.ServiceId);
                SharePointEnterpriseSiteCollection loadedSiteCollection   = hostedSharePointServer.Enterprise_GetSiteCollection(siteCollection.Url);
                // Update item
                siteCollection.Url         = loadedSiteCollection.Url;
                siteCollection.OwnerLogin  = loadedSiteCollection.OwnerLogin;
                siteCollection.OwnerName   = loadedSiteCollection.OwnerName;
                siteCollection.OwnerEmail  = loadedSiteCollection.OwnerEmail;
                siteCollection.LocaleId    = loadedSiteCollection.LocaleId;
                siteCollection.Title       = loadedSiteCollection.Title;
                siteCollection.Description = loadedSiteCollection.Description;
                // Serialize it.
                XmlSerializer serializer = new XmlSerializer(typeof(SharePointEnterpriseSiteCollection));
                serializer.Serialize(writer, siteCollection);
            }
            return(0);
        }
 public virtual ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
 {
     // don't calculate bandwidth
     return null;
 }
 private static SystemDSN ConvertItemToSystemDSN(ServiceProviderItem item)
 {
     return (SystemDSN)item;
 }
 private static SqlUser ConvertItemToSqlUser(ServiceProviderItem item)
 {
     return((SqlUser)item);
 }
Example #22
0
        public static int DeleteSite(int itemId)
        {
            // check account
            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo);

            if (accountCheck < 0)
            {
                return(accountCheck);
            }

            // load original meta item
            SharePointSite origItem = (SharePointSite)PackageController.GetPackageItem(itemId);

            if (origItem == null)
            {
                return(BusinessErrorCodes.ERROR_SHAREPOINT_PACKAGE_ITEM_NOT_FOUND);
            }

            // place log record
            TaskManager.StartTask("SHAREPOINT", "DELETE_SITE", origItem.Name);
            TaskManager.ItemId = itemId;

            try
            {
                // get service
                SharePointServer sps = GetSharePoint(origItem.ServiceId);

                // delete service item
                sps.UnextendVirtualServer(origItem.Name, true);

                try
                {
                    // delete database
                    ServiceProviderItem dbItem = PackageController.GetPackageItemByName(origItem.PackageId, origItem.DatabaseGroupName,
                                                                                        origItem.DatabaseName, typeof(SqlDatabase));
                    if (dbItem != null)
                    {
                        DatabaseServerController.DeleteSqlDatabase(dbItem.Id);
                    }

                    // delete database user
                    dbItem = PackageController.GetPackageItemByName(origItem.PackageId, origItem.DatabaseGroupName,
                                                                    origItem.DatabaseUser, typeof(SqlUser));
                    if (dbItem != null)
                    {
                        DatabaseServerController.DeleteSqlUser(dbItem.Id);
                    }
                }
                catch (Exception ex2)
                {
                    TaskManager.WriteError(ex2);
                }

                // delete meta item
                PackageController.DeletePackageItem(origItem.Id);

                try
                {
                    // start web site
                    WebSite site = WebServerController.GetWebSite(origItem.PackageId, origItem.Name);
                    if (site != null)
                    {
                        WebServerController.ChangeSiteState(site.Id, ServerState.Started);
                    }
                }
                catch (Exception ex)
                {
                    TaskManager.WriteError(ex);
                }

                return(0);
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            finally
            {
                TaskManager.CompleteTask();
            }
        }
Example #23
0
		public override void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled)
		{
			foreach (ServiceProviderItem item in items)
			{
				if (item is FtpAccount)
				{
					try
					{
						// change FTP account state
						FtpAccount account = GetAccount(item.Name);
						account.Enabled = enabled;
						UpdateAccount(account);
					}
					catch (Exception ex)
					{
						Log.WriteError(String.Format("Error switching '{0}' {1}", item.Name, item.GetType().Name), ex);
					}
				}
			}
		}
 private static WebSite ConvertItemToWebSite(ServiceProviderItem item)
 {
     return (WebSite)item;
 }
Example #25
0
 private static SystemUser ConvertItemToSharePointUser(ServiceProviderItem item)
 {
     return((SystemUser)item);
 }
Example #26
0
 public override void DeleteServiceItems(ServiceProviderItem[] items)
 {
     foreach (ServiceProviderItem item in items)
     {
         if (item is DnsZone)
         {
             try
             {
                 // delete DNS zone
                 DeleteZone(item.Name);
             }
             catch (Exception ex)
             {
                 Log.WriteError(String.Format("Error deleting '{0}' Power DNS zone", item.Name), ex);
             }
         }
     }
 }
Example #27
0
		public override void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled)
		{
			foreach (ServiceProviderItem item in items)
			{
				if (item is MailDomain)
				{
					try
					{
						// enable/disable mail domain
						if (DomainExists(item.Name))
						{
							MailDomain mailDomain = GetDomain(item.Name);
							mailDomain.Enabled = enabled;
							UpdateDomain(mailDomain);
						}
					}
					catch (Exception ex)
					{
						Log.WriteError(String.Format("Error switching '{0}' SmarterMail domain", item.Name), ex);
					}
				}
			}
		}
Example #28
0
 public override void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled)
 {
     foreach (ServiceProviderItem item in items)
     {
         if (item is VirtualMachine)
         {
             // start/stop virtual machine
             VirtualMachine vm = item as VirtualMachine;
             ChangeVirtualMachineServiceItemState(vm, enabled);
         }
     }
 }
Example #29
0
 public override void DeleteServiceItems(ServiceProviderItem[] items)
 {
     foreach (ServiceProviderItem item in items)
     {
         if (item is VirtualMachine)
         {
             // delete virtual machine
             VirtualMachine vm = item as VirtualMachine;
             DeleteVirtualMachineServiceItem(vm);
         }
         else if (item is VirtualSwitch)
         {
             // delete switch
             VirtualSwitch vs = item as VirtualSwitch;
             DeleteVirtualSwitchServiceItem(vs);
         }
     }
 }
Example #30
0
 private static SystemGroup ConvertItemToSharePointGroup(ServiceProviderItem item)
 {
     return((SystemGroup)item);
 }
Example #31
0
        private List <ImportAction> GetImportActions()
        {
            List <ImportAction> list   = new List <ImportAction>();
            ImportAction        action = null;

            if (Global.ImportAccountsOnly)
            {
                ServiceProviderItem item = PackageController.GetPackageItemByName(Global.Space.PackageId, ResourceGroups.HostedOrganizations, Global.OrganizationName, typeof(Organization));
                if (item == null)
                {
                    Global.ErrorMessage = string.Format("Organization {0} not found.", Global.OrganizationName);
                    throw new Exception(Global.ErrorMessage);
                }
                Global.ItemId = item.Id;
            }
            else
            {
                action             = new ImportAction(ActionTypes.ImportOrganization);
                action.Description = "Importing organization...";
                list.Add(action);

                DirectoryEntry          org   = Global.OrgDirectoryEntry;
                PropertyValueCollection props = org.Properties["uPNSuffixes"];
                if (props != null)
                {
                    foreach (string domainName in props)
                    {
                        action             = new ImportAction(ActionTypes.ImportOrganizationDomain);
                        action.Description = "Importing organization domains...";
                        action.Name        = domainName;
                        list.Add(action);
                    }
                }
            }

            if (Global.SelectedAccounts != null)
            {
                foreach (DirectoryEntry entry in Global.SelectedAccounts)
                {
                    switch (entry.SchemaClassName)
                    {
                    case "user":
                        action                = new ImportAction(ActionTypes.ImportMailbox);
                        action.Description    = "Importing mailbox...";
                        action.DirectoryEntry = entry;
                        list.Add(action);
                        break;

                    case "contact":
                        action                = new ImportAction(ActionTypes.ImportContact);
                        action.Description    = "Importing contact...";
                        action.DirectoryEntry = entry;
                        list.Add(action);
                        break;

                    case "group":
                        action                = new ImportAction(ActionTypes.ImportGroup);
                        action.Description    = "Importing group...";
                        action.DirectoryEntry = entry;
                        list.Add(action);
                        break;
                    }
                }
            }


            return(list);
        }
Example #32
0
		public override void DeleteServiceItems(ServiceProviderItem[] items)
		{
			foreach (ServiceProviderItem item in items)
			{
				if (item is FtpAccount)
				{
					try
					{
						// delete FTP account
						DeleteAccount(item.Name);
					}
					catch (Exception ex)
					{
						Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex);
					}
				}
			}
		}
 private static SharedSSLFolder ConvertItemToSharedSSLFolder(ServiceProviderItem item)
 {
     return (SharedSSLFolder)item;
 }
Example #34
0
		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();
		}
        public int BackupItem(string tempFolder, System.Xml.XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is WebSite)
            {
                WebServer web = GetWebServer(item.ServiceId);

                // read web site
                WebSite itemSite = item as WebSite;
                string siteId = itemSite.SiteId;
                WebSite site = web.GetSite(siteId);
                site.SiteId = itemSite.SiteId;
                site.SiteIPAddressId = itemSite.SiteIPAddressId;
                site.DataPath = itemSite.DataPath;
                site.FrontPageAccount = itemSite.FrontPageAccount;
                site.FrontPagePassword = itemSite.FrontPagePassword;

                // serialize web site
                XmlSerializer serializer = new XmlSerializer(typeof(WebSite));
                serializer.Serialize(writer, site);

                // process virtual directories
                WebVirtualDirectory[] vdirs = web.GetVirtualDirectories(siteId);
                foreach (WebVirtualDirectory vdirShort in vdirs)
                {
                    WebVirtualDirectory vdir = web.GetVirtualDirectory(siteId, vdirShort.Name);

                    // serialize vdir
                    serializer = new XmlSerializer(typeof(WebVirtualDirectory));
                    serializer.Serialize(writer, vdir);
                }
            }
            else if (item is SharedSSLFolder)
            {
                SharedSSLFolder sslFolder = GetSharedSSLFolder(item.Id);

                // convert content path to physical
                sslFolder.ContentPath = FilesController.GetFullPackagePath(item.PackageId, sslFolder.ContentPath);

                XmlSerializer serializer = new XmlSerializer(typeof(SharedSSLFolder));
                serializer.Serialize(writer, sslFolder);
            }

            return 0;
        }
        private static string EvaluateItemVariables(string str, ServiceProviderItem item)
        {
            str = Utils.ReplaceStringVariable(str, "vps_hostname", item.Name);

            return EvaluateSpaceVariables(str, item.PackageId);
        }
Example #37
0
 private static SharePointSite ConvertItemToSharePointSiteItem(ServiceProviderItem item)
 {
     return((SharePointSite)item);
 }
        public override void DeleteServiceItems(ServiceProviderItem[] items)
        {
            foreach (ServiceProviderItem item in items)
            {
                try
                {
                    if (item is Organization)
                    {
                        Organization org = item as Organization;
                        DeleteOrganizationInternal(org.OrganizationId);
                    }

                }
                catch (Exception ex)
                {
                    HostedSolutionLog.LogError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex);
                }
            }

        }
 private static StatsSite ConvertItemToStatisticsSiteItem(ServiceProviderItem item)
 {
     return((StatsSite)item);
 }
Example #40
0
 private static SystemDSN ConvertItemToSystemDSN(ServiceProviderItem item)
 {
     return((SystemDSN)item);
 }
Example #41
0
 public override void DeleteServiceItems(ServiceProviderItem[] items)
 {
     foreach (ServiceProviderItem item in items)
     {
         if (item is StatsSite)
         {
             try
             {
                 DeleteSite(((StatsSite)item).SiteId);
             }
             catch (Exception ex)
             {
                 Log.WriteError(String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex);
             }
         }
     }
 }
        public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (!(item is DnsZone))
                return 0;

            // DNS provider
            DNSServer dns = GetDNSServer(item.ServiceId);

            // zone records serialized
            XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord));

            try
            {
                // get zone records
                DnsRecord[] records = dns.GetZoneRecords(item.Name);

                // serialize zone records
                foreach (DnsRecord record in records)
                    serializer.Serialize(writer, record);
            }
            catch (Exception ex)
            {
                TaskManager.WriteError(ex, "Could not read zone records");
            }

            return 0;
        }
Example #43
0
		public override void DeleteServiceItems(ServiceProviderItem[] items)
		{
			foreach (ServiceProviderItem item in items)
			{
				if (item is MailDomain)
				{
					try
					{
						// delete mail domain
						DeleteDomain(item.Name);
					}
					catch (Exception ex)
					{
						Log.WriteError(String.Format("Error deleting '{0}' SmarterMail domain", item.Name), ex);
					}
				}
			}
		}
Example #44
0
		public override ServiceProviderItemDiskSpace[] GetServiceItemsDiskSpace(ServiceProviderItem[] items)
		{
			List<ServiceProviderItemDiskSpace> itemsDiskspace = new List<ServiceProviderItemDiskSpace>();

			// update items with diskspace
			foreach (ServiceProviderItem item in items)
			{
				if (item is WebSite)
				{
					try
					{
						Log.WriteStart(String.Format("Calculating '{0}' site logs size", item.Name));

						WebSite site = GetSite(item.Name);
						//
						string logsPath = Path.Combine(site.LogsPath, site[WebSite.IIS7_SITE_ID]);

						// calculate disk space
						ServiceProviderItemDiskSpace diskspace = new ServiceProviderItemDiskSpace();
						diskspace.ItemId = item.Id;
						diskspace.DiskSpace = -1 * FileUtils.CalculateFolderSize(logsPath);
						itemsDiskspace.Add(diskspace);

						Log.WriteEnd(String.Format("Calculating '{0}' site logs size", item.Name));
					}
					catch (Exception ex)
					{
						Log.WriteError(ex);
					}
				}
			}
			return itemsDiskspace.ToArray();
		}
Example #45
0
		public override ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
		{
			ServiceProviderItemBandwidth[] itemsBandwidth = new ServiceProviderItemBandwidth[items.Length];

			// update items with diskspace
			for (int i = 0; i < items.Length; i++)
			{
				ServiceProviderItem item = items[i];

				// create new bandwidth object
				itemsBandwidth[i] = new ServiceProviderItemBandwidth();
				itemsBandwidth[i].ItemId = item.Id;
				itemsBandwidth[i].Days = new DailyStatistics[0];

				if (item is MailDomain)
				{
					try
					{
						// get daily statistics
						itemsBandwidth[i].Days = GetDailyStatistics(since, item.Name);
					}
					catch (Exception ex)
					{
						Log.WriteError(ex);
						System.Diagnostics.Debug.WriteLine(ex);
					}
				}
			}

			return itemsBandwidth;
		}
        /// <summary>
        /// Backups service item by serializing it into supplied writer.
        /// </summary>
        /// <param name="tempFolder">Temporary directory path.</param>
        /// <param name="writer">Xml wirter used to store backuped service provider items.</param>
        /// <param name="item">Service provider item to be backed up..</param>
        /// <param name="group">Service provider resource group.</param>
        /// <returns>Resulting code.</returns>
        public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            SharePointSiteCollection siteCollection = item as SharePointSiteCollection;
            if (siteCollection != null)
            {
                HostedSharePointServer hostedSharePointServer = GetHostedSharePointServer(siteCollection.ServiceId);
                SharePointSiteCollection loadedSiteCollection = hostedSharePointServer.GetSiteCollection(siteCollection.Url);
                // Update item
                siteCollection.Url = loadedSiteCollection.Url;
                siteCollection.OwnerLogin = loadedSiteCollection.OwnerLogin;
                siteCollection.OwnerName = loadedSiteCollection.OwnerName;
                siteCollection.OwnerEmail = loadedSiteCollection.OwnerEmail;
                siteCollection.LocaleId = loadedSiteCollection.LocaleId;
                siteCollection.Title = loadedSiteCollection.Title;
                siteCollection.Description = loadedSiteCollection.Description;
                // Serialize it.
                XmlSerializer serializer = new XmlSerializer(typeof(SharePointSiteCollection));
                serializer.Serialize(writer, siteCollection);

            }
            return 0;
        }
        public override void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled)
        {

            foreach (ServiceProviderItem item in items)
            {
                try
                {
                    if (item is Organization)
                    {
                        Organization org = item as Organization;
                        ChangeOrganizationState(org, enabled);
                    }
                }
                catch (Exception ex)
                {
                    HostedSolutionLog.LogError(
                        String.Format("Error deleting '{0}' {1}", item.Name, item.GetType().Name), ex);
                }
            }
        }
 public virtual void ChangeServiceItemsState(ServiceProviderItem[] items, bool enabled)
 {
     
     // do nothing
 }
Example #49
0
        public int BackupItem(string tempFolder, System.Xml.XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is HomeFolder)
            {
                // backup home folder files
                string backupName = String.Format("SpaceFiles_{0}_{1}.zip",
                                                  item.Id, DateTime.Now.Ticks);

                // get the list of remote files
                List <SystemFile> files = FilesController.GetFiles(item.PackageId, "\\", true);

                string[] zipFiles = new string[files.Count];
                for (int i = 0; i < zipFiles.Length; i++)
                {
                    zipFiles[i] = files[i].Name;
                }

                // zip remote files
                FilesController.ZipFiles(item.PackageId, zipFiles, backupName);

                // download zipped file
                string localBackupPath = Path.Combine(tempFolder, backupName);

                byte[]     buffer = null;
                FileStream stream = new FileStream(localBackupPath, FileMode.Create, FileAccess.Write);

                int  offset = 0;
                long length = 0;
                do
                {
                    // read remote content
                    buffer = FilesController.GetFileBinaryChunk(item.PackageId, backupName, offset, FILE_BUFFER_LENGTH);

                    // write remote content
                    stream.Write(buffer, 0, buffer.Length);

                    length += buffer.Length;
                    offset += FILE_BUFFER_LENGTH;
                }while (buffer.Length == FILE_BUFFER_LENGTH);
                stream.Close();

                // delete zipped file
                if (FilesController.FileExists(item.PackageId, backupName))
                {
                    FilesController.DeleteFiles(item.PackageId, new string[] { backupName });
                }

                // add file pointer
                BackupController.WriteFileElement(writer, "SpaceFiles", backupName, length);

                // store meta item
                XmlSerializer serializer = new XmlSerializer(typeof(HomeFolder));
                serializer.Serialize(writer, item);
            }
            else if (item is SystemDSN)
            {
                // backup ODBC DSN
                OS.OperatingSystem os = GetOS(item.ServiceId);

                // read DSN info
                SystemDSN itemDsn = item as SystemDSN;
                SystemDSN dsn     = os.GetDSN(item.Name);
                dsn.DatabasePassword = itemDsn.DatabasePassword;

                XmlSerializer serializer = new XmlSerializer(typeof(SystemDSN));
                serializer.Serialize(writer, dsn);
            }

            return(0);
        }
 public virtual void DeleteServiceItems(ServiceProviderItem[] items)
 {
     // do nothing
 }
        public int BackupItem(string tempFolder, System.Xml.XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
        {
            if (item is HomeFolder)
            {
                // backup home folder files
                string backupName = String.Format("SpaceFiles_{0}_{1}.zip",
                    item.Id, DateTime.Now.Ticks);
                
                // get the list of remote files
                List<SystemFile> files = FilesController.GetFiles(item.PackageId, "\\", true);

                string[] zipFiles = new string[files.Count];
                for(int i = 0; i < zipFiles.Length; i++)
                    zipFiles[i] = files[i].Name;

                // zip remote files
                FilesController.ZipFiles(item.PackageId, zipFiles, backupName);

                // download zipped file
                string localBackupPath = Path.Combine(tempFolder, backupName);

                byte[] buffer = null;
                FileStream stream = new FileStream(localBackupPath, FileMode.Create, FileAccess.Write);

                int offset = 0;
                long length = 0;
                do
                {
                    // read remote content
                    buffer = FilesController.GetFileBinaryChunk(item.PackageId, backupName, offset, FILE_BUFFER_LENGTH);

                    // write remote content
                    stream.Write(buffer, 0, buffer.Length);

                    length += buffer.Length;
                    offset += FILE_BUFFER_LENGTH;
                }
                while (buffer.Length == FILE_BUFFER_LENGTH);
                stream.Close();

				// delete zipped file
				if (FilesController.FileExists(item.PackageId, backupName))
					FilesController.DeleteFiles(item.PackageId, new string[] { backupName });

                // add file pointer
                BackupController.WriteFileElement(writer, "SpaceFiles", backupName, length);

                // store meta item
                XmlSerializer serializer = new XmlSerializer(typeof(HomeFolder));
                serializer.Serialize(writer, item);
            }
            else if (item is SystemDSN)
            {
                // backup ODBC DSN
                OS.OperatingSystem os = GetOS(item.ServiceId);

                // read DSN info
                SystemDSN itemDsn = item as SystemDSN;
                SystemDSN dsn = os.GetDSN(item.Name);
                dsn.DatabasePassword = itemDsn.DatabasePassword;

                XmlSerializer serializer = new XmlSerializer(typeof(SystemDSN));
                serializer.Serialize(writer, dsn);
            }

            return 0;
        }
 public virtual ServiceProviderItemDiskSpace[] GetServiceItemsDiskSpace(ServiceProviderItem[] items)
 {
     // don't calculate disk space
     return null;
 }
Example #53
0
		public override ServiceProviderItemBandwidth[] GetServiceItemsBandwidth(ServiceProviderItem[] items, DateTime since)
		{
			ServiceProviderItemBandwidth[] itemsBandwidth = new ServiceProviderItemBandwidth[items.Length];

			// update items with diskspace
			for (int i = 0; i < items.Length; i++)
			{
				ServiceProviderItem item = items[i];

				// create new bandwidth object
				itemsBandwidth[i] = new ServiceProviderItemBandwidth();
				itemsBandwidth[i].ItemId = item.Id;
				itemsBandwidth[i].Days = new DailyStatistics[0];

				if (item is WebSite)
				{
					try
					{
						WebSite site = GetSite(item.Name);
						string siteId = site[WebSite.IIS7_SITE_ID];
						string logsPath = Path.Combine(site.LogsPath, siteId);

						if (!Directory.Exists(logsPath))
							continue;

						// create parser object
						// and update statistics
						LogParser parser = new LogParser("Web", siteId, logsPath, "s-sitename");
						parser.ParseLogs();

						// get daily statistics
						itemsBandwidth[i].Days = parser.GetDailyStatistics(since, new string[] { siteId });
					}
					catch (Exception ex)
					{
						Log.WriteError(ex);
					}
				}
			}
			return itemsBandwidth;
		}
 private static SqlDatabase ConvertItemToSqlDatabase(ServiceProviderItem item)
 {
     return((SqlDatabase)item);
 }