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; }
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); }
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); }
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; }
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); }
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); }
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); }
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); } } }
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); }
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); }
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); }
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(); } }
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; }
private static SystemUser ConvertItemToSharePointUser(ServiceProviderItem item) { return((SystemUser)item); }
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); } } } }
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); } } } }
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); } } }
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); } } }
private static SystemGroup ConvertItemToSharePointGroup(ServiceProviderItem item) { return((SystemGroup)item); }
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); }
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; }
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); }
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); }
private static SystemDSN ConvertItemToSystemDSN(ServiceProviderItem item) { return((SystemDSN)item); }
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; }
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); } } } }
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(); }
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 }
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; }
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); }