public int UpdateOdbcSource(SystemDSN item) { object[] results = this.Invoke("UpdateOdbcSource", new object[] { item }); return((int)(results[0])); }
/// <remarks/> public void UpdateOdbcSourceAsync(SystemDSN item, object userState) { if ((this.UpdateOdbcSourceOperationCompleted == null)) { this.UpdateOdbcSourceOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateOdbcSourceOperationCompleted); } this.InvokeAsync("UpdateOdbcSource", new object[] { item }, this.UpdateOdbcSourceOperationCompleted, userState); }
public void UpdateDSN(SystemDSN dsn) { try { Log.WriteStart("'{0}' UpdateDSN", ProviderSettings.ProviderName); OsProvider.UpdateDSN(dsn); Log.WriteEnd("'{0}' UpdateDSN", ProviderSettings.ProviderName); } catch (Exception ex) { Log.WriteError(String.Format("'{0}' UpdateDSN", ProviderSettings.ProviderName), ex); throw; } }
public SystemDSN GetDSN(string dsnName) { try { Log.WriteStart("'{0}' GetDSN", ProviderSettings.ProviderName); SystemDSN result = OsProvider.GetDSN(dsnName); Log.WriteEnd("'{0}' GetDSN", ProviderSettings.ProviderName); return(result); } catch (Exception ex) { Log.WriteError(String.Format("'{0}' GetDSN", ProviderSettings.ProviderName), ex); throw; } }
public static int DeleteOdbcSource(int itemId) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); if (accountCheck < 0) { return(accountCheck); } // load original meta item SystemDSN origItem = (SystemDSN)PackageController.GetPackageItem(itemId); if (origItem == null) { return(BusinessErrorCodes.ERROR_OS_DSN_PACKAGE_ITEM_NOT_FOUND); } // place log record TaskManager.StartTask("ODBC_DSN", "DELETE", origItem.Name); TaskManager.ItemId = itemId; try { // get service OS.OperatingSystem os = GetOS(origItem.ServiceId); // delete service item os.DeleteDSN(origItem.Name); // delete meta item PackageController.DeletePackageItem(origItem.Id); return(0); } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }
public void ImportItem(int packageId, int itemTypeId, Type itemType, ResourceGroupInfo group, string itemName) { // get service id int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName); if (serviceId == 0) { return; } if (itemType == typeof(SystemDSN)) { // save DSN info SystemDSN dsn = new SystemDSN(); dsn.Name = itemName; dsn.ServiceId = serviceId; dsn.PackageId = packageId; PackageController.AddPackageItem(dsn); } }
public static SystemDSN GetOdbcSource(int itemId) { // load meta item SystemDSN item = (SystemDSN)PackageController.GetPackageItem(itemId); // load service item OS.OperatingSystem os = GetOS(item.ServiceId); SystemDSN dsn = os.GetDSN(item.Name); // add common properties dsn.Id = item.Id; dsn.PackageId = item.PackageId; dsn.ServiceId = item.ServiceId; if (dsn.Driver == "MsAccess" || dsn.Driver == "Excel" || dsn.Driver == "Text") { dsn.DatabaseName = FilesController.GetVirtualPackagePath(item.PackageId, dsn.DatabaseName); } return(dsn); }
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 static int UpdateOdbcSource(SystemDSN item) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); if (accountCheck < 0) { return(accountCheck); } // load original meta item SystemDSN origItem = (SystemDSN)PackageController.GetPackageItem(item.Id); if (origItem == null) { return(BusinessErrorCodes.ERROR_OS_DSN_PACKAGE_ITEM_NOT_FOUND); } // check package int packageCheck = SecurityContext.CheckPackage(origItem.PackageId, DemandPackage.IsActive); if (packageCheck < 0) { return(packageCheck); } // place log record TaskManager.StartTask("ODBC_DSN", "UPDATE", origItem.Name); TaskManager.ItemId = item.Id; try { // get service OS.OperatingSystem os = GetOS(origItem.ServiceId); // password item.Driver = origItem.Driver; item.Name = origItem.Name; if (item.DatabasePassword == "") { item.DatabasePassword = CryptoUtils.Decrypt(origItem.DatabasePassword); } string[] dbNameParts = item.DatabaseName.Split('|'); string groupName = null; if (dbNameParts.Length > 1) { item.DatabaseName = dbNameParts[0]; groupName = dbNameParts[1]; } // get database server address item.DatabaseServer = GetDatabaseServerName(groupName, item.PackageId); if (item.Driver == "MsAccess" || item.Driver == "Excel" || item.Driver == "Text") { item.DatabaseName = FilesController.GetFullPackagePath(origItem.PackageId, item.DatabaseName); } // update service item os.UpdateDSN(item); // update meta item if (item.DatabasePassword != "") { item.DatabasePassword = CryptoUtils.Encrypt(item.DatabasePassword); PackageController.UpdatePackageItem(item); } return(0); } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }
public static int AddOdbcSource(SystemDSN item) { // check account int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); if (accountCheck < 0) { return(accountCheck); } // check package int packageCheck = SecurityContext.CheckPackage(item.PackageId, DemandPackage.IsActive); if (packageCheck < 0) { return(packageCheck); } // check quota QuotaValueInfo quota = PackageController.GetPackageQuota(item.PackageId, Quotas.OS_ODBC); if (quota.QuotaExhausted) { return(BusinessErrorCodes.ERROR_OS_DSN_RESOURCE_QUOTA_LIMIT); } // check if mail resource is available int serviceId = PackageController.GetPackageServiceId(item.PackageId, ResourceGroups.Os); if (serviceId == 0) { return(BusinessErrorCodes.ERROR_OS_RESOURCE_UNAVAILABLE); } // check package items if (PackageController.GetPackageItemByName(item.PackageId, item.Name, typeof(SystemDSN)) != null) { return(BusinessErrorCodes.ERROR_OS_DSN_PACKAGE_ITEM_EXISTS); } // place log record TaskManager.StartTask("ODBC_DSN", "ADD", item.Name); try { // check service items OS.OperatingSystem os = GetOS(serviceId); if (os.GetDSN(item.Name) != null) { return(BusinessErrorCodes.ERROR_OS_DSN_SERVICE_ITEM_EXISTS); } string[] dbNameParts = item.DatabaseName.Split('|'); string groupName = null; if (dbNameParts.Length > 1) { item.DatabaseName = dbNameParts[0]; groupName = dbNameParts[1]; } // get database server address item.DatabaseServer = GetDatabaseServerName(groupName, item.PackageId); if (item.Driver == "MsAccess" || item.Driver == "Excel" || item.Driver == "Text") { item.DatabaseName = FilesController.GetFullPackagePath(item.PackageId, item.DatabaseName); } // add service item os.CreateDSN(item); // save item item.DatabasePassword = CryptoUtils.Encrypt(item.DatabasePassword); item.ServiceId = serviceId; int itemId = PackageController.AddPackageItem(item); TaskManager.ItemId = itemId; return(itemId); } catch (Exception ex) { throw TaskManager.WriteError(ex); } finally { TaskManager.CompleteTask(); } }
private void BindItem() { try { if (!IsPostBack) { string[] supportedDrivers = null; ArrayList drivers = null; // load item if required if (PanelRequest.ItemID > 0) { // existing item try { item = ES.Services.OperatingSystems.GetOdbcSource(PanelRequest.ItemID); } catch (Exception ex) { ShowErrorMessage("DSN_GET", ex); return; } if (item != null) { // save package info ViewState["PackageId"] = item.PackageId; fileLookup.PackageId = item.PackageId; dsnName.SetPackagePolicy(item.PackageId, UserSettings.OS_POLICY, "DsnNamePolicy"); supportedDrivers = ES.Services.OperatingSystems.GetInstalledOdbcDrivers(item.PackageId); } else { RedirectToBrowsePage(); } } else { // new item bool isMsSQLavailable = false; ViewState["PackageId"] = PanelSecurity.PackageId; dsnName.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.OS_POLICY, "DsnNamePolicy"); fileLookup.PackageId = PanelSecurity.PackageId; fileLookup.SelectedFile = "\\"; supportedDrivers = ES.Services.OperatingSystems.GetInstalledOdbcDrivers(PanelSecurity.PackageId); PackageInfo pack = ES.Services.Packages.GetPackage(PanelSecurity.PackageId); HostingPlanContext cont = ES.Services.Packages.GetHostingPlanContext(pack.PlanId); HostingPlanGroupInfo[] groups = cont.GroupsArray; foreach (HostingPlanGroupInfo info in (groups)) { if (info.GroupName.Contains("MsSQL")) { isMsSQLavailable = true; } } drivers = new ArrayList(supportedDrivers); if (!isMsSQLavailable) { //remove unnecessary drivers from list if MS SQL Server is not available in Hosting Plan drivers.Remove("MsSql"); drivers.Remove("MsSqlNative"); } } // bind drivers if (supportedDrivers != null) { foreach (string driver in supportedDrivers) { ddlDriver.Items.Add(new ListItem(driver, driver)); } } ToggleDriverControls(ddlDriver.SelectedValue); } if (!IsPostBack) { // bind item to controls if (item != null) { // bind item to controls passwordControl.EditMode = true; fileLookup.PackageId = item.PackageId; dsnName.Text = item.Name; dsnName.EditMode = true; Utils.SelectListItem(ddlDriver, item.Driver); ddlDriver.Enabled = false; ddlDatabaseName.Enabled = false; ddlDatabaseUser.Enabled = false; ToggleDriverControls(ddlDriver.SelectedValue); // database string driverName = item.Driver; if (driverName == "MsSql" || driverName == "MsSqlNative" || driverName == "MySql") { // unselect currently selected item if (ddlDatabaseName.SelectedIndex != -1) { ddlDatabaseName.SelectedItem.Selected = false; } foreach (ListItem li in ddlDatabaseName.Items) { if (li.Value.StartsWith(item.DatabaseName + "|")) { li.Selected = true; break; } } } else { fileLookup.SelectedFile = item.DatabaseName; } // user if (driverName == "MsAccess") { txtUser.Text = item.DatabaseUser; } else { Utils.SelectListItem(ddlDatabaseUser, item.DatabaseUser); } } } } catch { ShowWarningMessage("INIT_SERVICE_ITEM_FORM"); DisableFormControls(this, btnCancel); } }
/// <remarks/> public System.IAsyncResult BeginUpdateOdbcSource(SystemDSN item, System.AsyncCallback callback, object asyncState) { return(this.BeginInvoke("UpdateOdbcSource", new object[] { item }, callback, asyncState)); }
/// <remarks/> public void AddOdbcSourceAsync(SystemDSN item) { this.AddOdbcSourceAsync(item, null); }
public int UpdateOdbcSource(SystemDSN item) { return(OperatingSystemController.UpdateOdbcSource(item)); }
public int AddOdbcSource(SystemDSN item) { return(OperatingSystemController.AddOdbcSource(item)); }
public int RestoreItem(string tempFolder, System.Xml.XmlNode itemNode, int itemId, Type itemType, string itemName, int packageId, int serviceId, ResourceGroupInfo group) { if (itemType == typeof(HomeFolder)) { OS.OperatingSystem os = GetOS(serviceId); // extract meta item XmlSerializer serializer = new XmlSerializer(typeof(HomeFolder)); HomeFolder homeFolder = (HomeFolder)serializer.Deserialize( new XmlNodeReader(itemNode.SelectSingleNode("HomeFolder"))); // create home folder if required if (!os.DirectoryExists(homeFolder.Name)) { os.CreatePackageFolder(homeFolder.Name); } // copy database backup to remote server XmlNode fileNode = itemNode.SelectSingleNode("File[@name='SpaceFiles']"); string backupFileName = fileNode.Attributes["path"].Value; long backupFileLength = Int64.Parse(fileNode.Attributes["size"].Value); string localBackupFilePath = Path.Combine(tempFolder, backupFileName); if (new FileInfo(localBackupFilePath).Length != backupFileLength) { return(-3); } FileStream stream = new FileStream(localBackupFilePath, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[FILE_BUFFER_LENGTH]; int readBytes = 0; long length = 0; string remoteBackupPath = Path.Combine(homeFolder.Name, backupFileName); do { // read package file readBytes = stream.Read(buffer, 0, FILE_BUFFER_LENGTH); length += readBytes; if (readBytes < FILE_BUFFER_LENGTH) { // resize buffer Array.Resize <byte>(ref buffer, readBytes); } // write remote backup file os.AppendFileBinaryContent(remoteBackupPath, buffer); }while (readBytes == FILE_BUFFER_LENGTH); stream.Close(); // unzip files os.UnzipFiles(remoteBackupPath, homeFolder.Name); // delete archive if (os.FileExists(remoteBackupPath)) { os.DeleteFile(remoteBackupPath); } // add meta-item if required if (PackageController.GetPackageItemByName(packageId, itemName, typeof(HomeFolder)) == null) { homeFolder.PackageId = packageId; homeFolder.ServiceId = serviceId; PackageController.AddPackageItem(homeFolder); } } else if (itemType == typeof(SystemDSN)) { OS.OperatingSystem os = GetOS(serviceId); // extract meta item XmlSerializer serializer = new XmlSerializer(typeof(SystemDSN)); SystemDSN dsn = (SystemDSN)serializer.Deserialize( new XmlNodeReader(itemNode.SelectSingleNode("SystemDSN"))); // create DSN if required if (os.GetDSN(itemName) == null) { dsn.DatabasePassword = CryptoUtils.Decrypt(dsn.DatabasePassword); os.CreateDSN(dsn); // restore password dsn.DatabasePassword = CryptoUtils.Encrypt(dsn.DatabasePassword); } // add meta-item if required if (PackageController.GetPackageItemByName(packageId, itemName, typeof(SystemDSN)) == null) { dsn.PackageId = packageId; dsn.ServiceId = serviceId; PackageController.AddPackageItem(dsn); } } return(0); }
/// <remarks/> public void UpdateOdbcSourceAsync(SystemDSN item) { this.UpdateOdbcSourceAsync(item, null); }
private void SaveItem() { if (!Page.IsValid) { return; } // get form data SystemDSN item = new SystemDSN(); item.Id = PanelRequest.ItemID; item.PackageId = PanelSecurity.PackageId; item.Name = dsnName.Text.Trim(); item.DatabasePassword = passwordControl.Password; // database string driverName = ddlDriver.SelectedValue; item.Driver = driverName; if (driverName == "MsSql" || driverName == "MsSqlNative" || driverName == "MySql") { item.DatabaseName = ddlDatabaseName.SelectedValue; } else { item.DatabaseName = fileLookup.SelectedFile; } // user if (driverName == "MsAccess") { item.DatabaseUser = txtUser.Text.Trim(); } else { item.DatabaseUser = ddlDatabaseUser.SelectedValue; } if (PanelRequest.ItemID == 0) { try { // new item int result = ES.Services.OperatingSystems.AddOdbcSource(item); if (result < 0) { ShowResultMessage(result); return; } } catch (Exception ex) { ShowErrorMessage("DSN_ADD", ex); return; } } else { try { // existing item int result = ES.Services.OperatingSystems.UpdateOdbcSource(item); if (result < 0) { ShowResultMessage(result); return; } } catch (Exception ex) { ShowErrorMessage("DSN_UPDATE", ex); return; } } // return RedirectSpaceHomePage(); }