Exemple #1
0
 public int UpdateOdbcSource(SystemDSN item)
 {
     object[] results = this.Invoke("UpdateOdbcSource", new object[] {
         item
     });
     return((int)(results[0]));
 }
Exemple #2
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;
     }
 }
Exemple #5
0
        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();
            }
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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);
        }
Exemple #8
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);
        }
Exemple #9
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();
            }
        }
Exemple #10
0
        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);
            }
        }
Exemple #12
0
 /// <remarks/>
 public System.IAsyncResult BeginUpdateOdbcSource(SystemDSN item, System.AsyncCallback callback, object asyncState)
 {
     return(this.BeginInvoke("UpdateOdbcSource", new object[] {
         item
     }, callback, asyncState));
 }
Exemple #13
0
 /// <remarks/>
 public void AddOdbcSourceAsync(SystemDSN item)
 {
     this.AddOdbcSourceAsync(item, null);
 }
Exemple #14
0
 public int UpdateOdbcSource(SystemDSN item)
 {
     return(OperatingSystemController.UpdateOdbcSource(item));
 }
Exemple #15
0
 public int AddOdbcSource(SystemDSN item)
 {
     return(OperatingSystemController.AddOdbcSource(item));
 }
Exemple #16
0
        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);
        }
Exemple #17
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();
        }