Esempio n. 1
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            try
            {
                ProbeHelper.InstallProbe(instanceInfo.Directory);

                var            uri     = new Uri(instanceInfo.Uri, "CMSPages/KInspectorProbe.aspx");
                HttpWebRequest request = WebRequest.CreateHttp(uri);
                using (WebResponse response = request.GetResponse())
                {
                    DataTable result = new DataTable();
                    result.ReadXml(response.GetResponseStream());

                    return(new ModuleResults
                    {
                        Result = result,
                    });
                }
            }
            catch (Exception e)
            {
                // Probably 404
                return(new ModuleResults
                {
                    Result = e.ToString(),
                    Status = Status.Error
                });
            }
            finally
            {
                ProbeHelper.UninstallProbe(instanceInfo.Directory);
            }
        }
Esempio n. 2
0
        public static ISxcInstance SxcInstanceForModule(IInstanceInfo moduleInfo)
        {
            var dnnModule = ((EnvironmentInstance <ModuleInfo>)moduleInfo).Original;
            var tenant    = new DnnTenant(new PortalSettings(dnnModule.OwnerPortalID));

            return(new ModuleContentBlock(moduleInfo, parentLog: null, tenant: tenant).SxcInstance);
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("TaskProcessingIssueModule.sql");

            var hasUnprocessedTasks = false;
            if (results != null && results.Rows.Count > 0)
            {
                var row = results.Rows[0];

                foreach (DataColumn column in results.Columns)
                {
                    var value = int.Parse(row[column].ToString());
                    if (value > 0)
                    {
                        hasUnprocessedTasks = true;
                        break;
                    }
                }
            }

            return new ModuleResults
            {
                Result = results,
                Status = hasUnprocessedTasks ? Status.Warning : Status.Good,
                ResultComment = hasUnprocessedTasks ? "There are unprocessed tasks that should be reviewed." : "All tasks have been processed."
            };
        }
Esempio n. 4
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            // Initialize database connection service
            var dbService = instanceInfo.DBService;

            // Retrieve data
            var tablesWithoutClass = dbService.ExecuteAndGetTableFromFile("ClassTableValidationTables.sql");

            tablesWithoutClass.TableName = "Database tables without Kentico Class";
            var classesWithoutTable = dbService.ExecuteAndGetTableFromFile("ClassTableValidationClasses.sql");

            classesWithoutTable.TableName = "Kentico Classes without database table";

            // Merge data into result
            var result = new DataSet("Non-matching Tables-Class entries");

            if (tablesWithoutClass.Rows.Count > 0)
            {
                result.Merge(tablesWithoutClass);
            }
            if (classesWithoutTable.Rows.Count > 0)
            {
                result.Merge(classesWithoutTable);
            }

            // Calculate total number of identified issues (if any)
            int issues = tablesWithoutClass.Rows.Count + classesWithoutTable.Rows.Count;

            return(new ModuleResults
            {
                Result = result,
                ResultComment = $"{issues} invalid entries found",
                Status = (issues > 0) ? Status.Error : Status.Good
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            try
            {
                ProbeHelper.InstallProbe(instanceInfo.Directory);

                var uri = new Uri(instanceInfo.Uri, "CMSPages/KInspectorProbe.aspx");
                HttpWebRequest request = WebRequest.CreateHttp(uri);
                using (WebResponse response = request.GetResponse())
                {
                    DataTable result = new DataTable();
                    result.ReadXml(response.GetResponseStream());

                    return new ModuleResults
                    {
                        Result = result,
                    };
                }
            }
            catch (Exception e)
            {
                // Probably 404
                return new ModuleResults
                {
                    Result = e.ToString(),
                    Status = Status.Error
                };
            }
            finally
            {
                ProbeHelper.UninstallProbe(instanceInfo.Directory);
            }
        }
 public ModuleResults GetResults(IInstanceInfo instanceInfo)
 {
     return new ModuleResults
     {
         Result = GetAndJoinDataTables(instanceInfo),
     };
 }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            try
            {
                var dbService = instanceInfo.DBService;
                var results = dbService.ExecuteAndGetTableFromFile("FloodProtectionModule.sql");

                // Make sure there are records
                if (results.Rows.Count > 0)
                {
                    // Return the issues
                    return new ModuleResults
                    {
                        Result = results,
                        Status = Status.Warning
                    };
                }
                else
                {
                    return new ModuleResults
                    {
                        ResultComment = "Flood Protection is enabled.",
                        Status = Status.Good
                    };
                }
            }
            catch (Exception ex)
            {
                return new ModuleResults
                {
                    ResultComment = "Failed to check settings as expected.<br />" + ex.Message,
                    Status = Status.Error
                };
            }
        }
 public ModuleResults GetResults(IInstanceInfo instanceInfo)
 {
     return(new ModuleResults
     {
         Result = GetAndJoinDataTables(instanceInfo),
     });
 }
Esempio n. 9
0
        public void SetAppIdForInstance(IInstanceInfo instance, IAppEnvironment env, int?appId, Log parentLog)
        {
            Log.Add($"SetAppIdForInstance({instance.Id}, -, appid: {appId})");
            // Reset temporary template
            ContentGroupManager.ClearPreviewTemplate(instance.Id);

            // ToDo: Should throw exception if a real ContentGroup exists

            var module = (instance as EnvironmentInstance <ModuleInfo>).Original;
            var zoneId = env.ZoneMapper.GetZoneId(module.OwnerPortalID);

            if (appId == 0 || !appId.HasValue)
            {
                DnnStuffToRefactor.UpdateInstanceSettingForAllLanguages(instance.Id, Settings.AppNameString, null, Log);
            }
            else
            {
                var appName = ((BaseCache)DataSource.GetCache(0, 0)).ZoneApps[zoneId].Apps[appId.Value];
                DnnStuffToRefactor.UpdateInstanceSettingForAllLanguages(instance.Id, Settings.AppNameString, appName, Log);
            }

            // Change to 1. available template if app has been set
            if (appId.HasValue)
            {
                var app          = App.LightWithoutData(new DnnTenant(null), zoneId, appId.Value, parentLog: Log);
                var templateGuid = app.TemplateManager.GetAllTemplates().FirstOrDefault(t => !t.IsHidden)?.Guid;
                if (templateGuid.HasValue)
                {
                    ContentGroupManager.SetPreviewTemplate(instance.Id, templateGuid.Value);
                }
            }
        }
        private void OnConfigurableFileChanged(ICacheItem item, bool dirty)
        {
            if (dirty)
            {
                var fileCacheItem = item as IFileCacheItem;
                if (fileCacheItem == null)
                {
                    return;
                }

                IInstanceInfo         instanceInfo         = null;
                IConfigurableFileInfo configurableFileInfo = null;

                foreach (var objectName in ObjectMappings.ToArray().Where(x => string.Equals(x.Value.Path, fileCacheItem.Path)).Select(x => x.Key))
                {
                    RegisterInstances.TryRemove(objectName, out instanceInfo);

                    ObjectMappings.TryRemove(objectName, out configurableFileInfo);
                }

                if (configurableFileInfo != null)
                {
                    RegisterConfigurableFile(configurableFileInfo);
                }
            }
        }
Esempio n. 11
0
        private static void ProcessMissingFormAttachmentFiles(IInstanceInfo instanceInfo, DataSet allData, AllSiteSettings siteSettings, DataSet resultSet, Dictionary <int, Dictionary <string, bool> > formAttachmentRecords)
        {
            AddMissingFormAttachmentFilesTable(allData, resultSet);

            /* bizform Attachments:
             * //UploadedFormFiles/SiteName?/unknownguid.filetype)
             * AttachmentGuid is unknownguid.filetype/filename.filetype
             */
            foreach (DataRow row in allData.Tables["BizFormAttachmentRecords"].Rows)
            {
                var siteID    = Convert.ToInt32(row["SiteID"]);
                var guidSplit = row["AttachmentGUID"].ToString().Split(new char[] { '/' }, 2);
                if (guidSplit.Length != 2)
                {
                    throw new ApplicationException($"AttachmentGUID of '{row["AttachmentGUID"].ToString()}' expected a '/' but did not find one.");
                }
                var rowURL = UriExtensions.Combine(siteSettings[siteID].baseFormAttachmentsFolder, guidSplit[0]);
                if (!UriExtensions.Exists(rowURL, instanceInfo))
                {
                    var tempArray = new List <object>(row.ItemArray);
                    tempArray[0] = guidSplit[0];
                    tempArray.Add(guidSplit[1]);
                    tempArray.Add(rowURL);
                    resultSet.Tables["BizFormAttachmentMissingFiles"].Rows.Add(tempArray.ToArray());
                }

                //As long as we're looping over the Attachment records anyways, take note of which records were found.
                if (formAttachmentRecords[siteID].ContainsKey(guidSplit[0]))
                {
                    formAttachmentRecords[siteID][guidSplit[0]] = true;
                }
            }
        }
Esempio n. 12
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;

            string scriptFileName = string.Empty;

            if (instanceInfo.Version.Major == 6)
            {
                scriptFileName = "WebPartColumnsModule6.sql";
            }

            if (instanceInfo.Version.Major == 7 || instanceInfo.Version.Major == 8)
            {
                scriptFileName = "WebPartColumnsModule7.sql";
            }

            if (instanceInfo.Version.Major >= 9)
            {
                scriptFileName = "WebPartColumnsModule9.sql";
            }


            return(new ModuleResults
            {
                Result = string.IsNullOrWhiteSpace(scriptFileName) ? null : dbService.ExecuteAndGetPrintsFromFile(scriptFileName)
            });
        }
Esempio n. 13
0
        public int?GetAppIdFromInstance(IInstanceInfo instance, int zoneId)
        {
            var module = (instance as EnvironmentInstance <ModuleInfo>)?.Original
                         ?? throw new Exception("instance is not of type ModuleInfo");

            var msg = $"get appid from instance for Z:{zoneId} Mod:{module.ModuleID}";

            if (module.DesktopModule.ModuleName == "2sxc")
            {
                var appId = new ZoneRuntime(zoneId, null).DefaultAppId;
                Log.Add($"{msg} - use def app: {appId}");
                return(appId);
            }

            if (module.ModuleSettings.ContainsKey(Settings.AppNameString))
            {
                var guid  = module.ModuleSettings[Settings.AppNameString].ToString();
                var appId = AppHelpers.GetAppIdFromGuidName(zoneId, guid);
                Log.Add($"{msg} AppG:{guid} = app:{appId}");
                return(appId);
            }

            Log.Add($"{msg} not found = null");
            return(null);
        }
Esempio n. 14
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            try
            {
                var dbService = instanceInfo.DBService;
                var results   = dbService.ExecuteAndGetTableFromFile("FloodProtectionModule.sql");

                // Make sure there are records
                if (results.Rows.Count > 0)
                {
                    // Return the issues
                    return(new ModuleResults
                    {
                        Result = results,
                        Status = Status.Warning
                    });
                }
                else
                {
                    return(new ModuleResults
                    {
                        ResultComment = "Flood Protection is enabled.",
                        Status = Status.Good
                    });
                }
            }
            catch (Exception ex)
            {
                return(new ModuleResults
                {
                    ResultComment = "Failed to check settings as expected.<br />" + ex.Message,
                    Status = Status.Error
                });
            }
        }
Esempio n. 15
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetTableFromFile("TaskProcessingIssueModule.sql");

            var hasUnprocessedTasks = false;

            if (results != null && results.Rows.Count > 0)
            {
                var row = results.Rows[0];

                foreach (DataColumn column in results.Columns)
                {
                    var value = int.Parse(row[column].ToString());
                    if (value > 0)
                    {
                        hasUnprocessedTasks = true;
                        break;
                    }
                }
            }

            return(new ModuleResults
            {
                Result = results,
                Status = hasUnprocessedTasks ? Status.Warning : Status.Good,
                ResultComment = hasUnprocessedTasks ? "There are unprocessed tasks that should be reviewed." : "All tasks have been processed."
            });
        }
Esempio n. 16
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetTableFromFile("EventLogSizeModule.sql");

            if (results.Rows.Count > 0)
            {
                foreach (DataRow resultRow in results.Rows)
                {
                    if (!EventLogIsRecommendedSize(resultRow))
                    {
                        return(new ModuleResults
                        {
                            Result = results,
                            ResultComment = "The event log settings are set outside the recommended range.",
                            Status = Status.Warning,
                        });
                    }
                }
            }

            return(new ModuleResults
            {
                ResultComment = "The event log settings are as per recommendations.",
                Status = Status.Good
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            this.instanceInfo = instanceInfo;

            List <string> report             = new List <string>();
            List <string> xssReport          = new List <string>();
            List <string> customMacrosReport = new List <string>();

            var webPartConfigurations = GetWebPartConfigurationsForTemplates();

            var transformationInfos  = GetTransformationInfo(webPartConfigurations);
            var checkForCustomMacros = MacroValidator.Current.CheckForCustomMacros(instanceInfo.Version);

            PerformAnalysis(transformationInfos, checkForCustomMacros, xssReport, customMacrosReport);

            report.Add("------------------------ Transformations - XSS Analysis report -----------------");
            report.AddRange(xssReport);
            report.Add("<br /><br />");

            if (customMacrosReport.Count > 0)
            {
                report.Add("------------------------ Transformations - Using deprecated Custom Macros -----------------");
                report.AddRange(customMacrosReport);
                report.Add("<br /><br />");
            }

            return(new ModuleResults
            {
                Result = report,
                Trusted = true
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            List<string> report = new List<string>();

            bool isWebSite = ProjectCodeFilesHelper.Current.IsWebSiteProject(instanceInfo.Directory);

            List<string> customerCodeFiles = ProjectCodeFilesHelper.Current.GetCustomerProjectCodeFiles(instanceInfo.Directory, instanceInfo.Version, isWebSite, true).ToList();
            if (customerCodeFiles.Count == 0)
            {
                return new ModuleResults
                {
                    ResultComment = "No customer files found.",
                    Status = Status.Good
                };
            }

            report.AddRange(customerCodeFiles);

            VulnerabilityAnalysisResults results = new VulnerabilityAnalysisResults();
            AnalyseVulnerabilities(instanceInfo.Directory, customerCodeFiles, ref results);
            string resultString = PrintResults(results);
            if (!String.IsNullOrEmpty(resultString))
            {
                report.Add(String.Empty);
                report.AddRange(resultString.Split(new[] { "<br />" }, StringSplitOptions.None));
            }

            return new ModuleResults
            {
                Result = report,
                Trusted = true
            };
        }
Esempio n. 19
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var sitemaps  = dbService.ExecuteAndGetDataSetFromFile("SiteMapModule.sql");

            // Postprocess sitemaps of all sites
            foreach (DataTable sitemap in sitemaps.Tables)
            {
                bool outputCacheEnabled = dbService.GetSetting <bool>("CMSEnableOutputCache", sitemap.TableName);

                // process every row of the sitemap
                foreach (DataRow row in sitemap.Rows)
                {
                    // Get effective value of columns that can be inherited
                    foreach (var column in ColumnsWithInheritance)
                    {
                        string origColName = column.Key + "Orig";

                        // Add new column to the table for storing original column value
                        if (!sitemap.Columns.Contains(origColName))
                        {
                            int colIndex = sitemap.Columns.IndexOf(column.Key);
                            sitemap.Columns.Add(origColName).SetOrdinal(colIndex);
                        }

                        // Copy original value to the new column
                        row[origColName] = row[column.Key];

                        if (column.Key == "OutputCache" && !outputCacheEnabled)
                        {
                            // Special case - output cache can be disabled in settings and then effective value is always 0
                            row[column.Key] = 0;
                        }
                        else if (column.Key == SEO_DESCRIPTION || column.Key == SEO_KEYWORDS)
                        {
                            // SEO columns have two possible values -> EMPTY or SET
                            row[column.Key] = GetParentSeoDefinition(sitemap, row, column.Key);
                        }
                        else
                        {
                            // Other columns have DBNULL in case no explicit content is added
                            // Therefore we look for parent until we find matching type - string (value is set, no DBNULL)
                            row[column.Key] = GetEffectiveColumnResult(sitemap, row, column.Key, column.Value);
                        }
                    }
                }

                // All post processing for the table is done - remove columns that might not be visible
                sitemap.Columns.Cast <DataColumn>()
                .Select(x => x.ColumnName)
                .Except(VisibleColumns)
                .ToList()
                .ForEach(x => sitemap.Columns.Remove(x));
            }

            return(new ModuleResults
            {
                Result = sitemaps,
            });
        }
Esempio n. 20
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("EventLogSizeModule.sql");

            if (results.Rows.Count > 0)
            {
                foreach (DataRow resultRow in results.Rows)
                {
                    if(!EventLogIsRecommendedSize(resultRow))
                    {
                        return new ModuleResults
                        {
                            Result = results,
                            ResultComment = "The event log settings are set outside the recommended range.",
                            Status = Status.Warning,
                        };
                    }
                }

            }

            return new ModuleResults
            {
                ResultComment = "The event log settings are as per recommendations.",
                Status = Status.Good
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            List<string> responses = new List<string>();

            var dbService = instanceInfo.DBService;
            var taskRowCount = dbService.ExecuteAndGetScalar<int>("SELECT count(*) FROM CMS_WebFarmTask WHERE TaskCreated < DATEADD(hour, -24, GETDATE());");

            if (taskRowCount > 0)
            {
                responses.Add("There are tasks over 24 hours old in the web farm (" + taskRowCount + " tasks exactly).");
                return new ModuleResults
                {
                    Result = responses,
                    ResultComment = "There are tasks that are over 24 hours old in the CMS_WebFarmTask table. Please check the health of the web farm.",
                    Status = Status.Error,
                };

            }

            return new ModuleResults
            {
                ResultComment = "There are no aged tasks pending.",
                Status = Status.Good
            };
        }
Esempio n. 22
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var sitemaps = dbService.ExecuteAndGetDataSetFromFile("SiteMapModule.sql");

            // Postprocess sitemaps of all sites
            foreach (DataTable sitemap in sitemaps.Tables)
            {
                bool outputCacheEnabled = dbService.GetSetting<bool>("CMSEnableOutputCache", sitemap.TableName);

                // process every row of the sitemap
                foreach (DataRow row in sitemap.Rows)
                {
                    // Get effective value of columns that can be inherited
                    foreach (var column in ColumnsWithInheritance)
                    {
                        string origColName = column.Key + "Orig";

                        // Add new column to the table for storing original column value
                        if (!sitemap.Columns.Contains(origColName))
                        {
                            int colIndex = sitemap.Columns.IndexOf(column.Key);
                            sitemap.Columns.Add(origColName).SetOrdinal(colIndex);
                        }

                        // Copy original value to the new column
                        row[origColName] = row[column.Key];

                        if (column.Key == "OutputCache" && !outputCacheEnabled)
                        {
                            // Special case - output cache can be disabled in settings and then effective value is always 0
                            row[column.Key] = 0;
                        }
                        else if (column.Key == SEO_DESCRIPTION || column.Key == SEO_KEYWORDS)
                        {
                            // SEO columns have two possible values -> EMPTY or SET
                            row[column.Key] = GetParentSeoDefinition(sitemap, row, column.Key);
                        }
                        else
                        {
                            // Other columns have DBNULL in case no explicit content is added
                            // Therefore we look for parent until we find matching type - string (value is set, no DBNULL)
                            row[column.Key] = GetEffectiveColumnResult(sitemap, row, column.Key, column.Value);
                        }
                    }
                }

                // All post processing for the table is done - remove columns that might not be visible
                sitemap.Columns.Cast<DataColumn>()
                    .Select(x => x.ColumnName)
                    .Except(VisibleColumns)
                    .ToList()
                    .ForEach(x => sitemap.Columns.Remove(x));
            }

            return new ModuleResults
            {
                Result = sitemaps,
            };
        }
Esempio n. 23
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;

            DataTable urls;

            if (instanceInfo.Version.Major >= 9)
            {
                urls = dbService.ExecuteAndGetTableFromFile("ScreenshotterModule-v9.sql");
            }
            else
            {
                urls = dbService.ExecuteAndGetTableFromFile("ScreenshotterModule.sql");
            }

            // Start process in separate thread to make website responsive.
            Thread t = new Thread(StartScreenshotting);

            t.Start(new object[] { instanceInfo, urls });

            return(new ModuleResults
            {
                Result = urls
            });
        }
Esempio n. 24
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            List <string> report = new List <string>();

            mDatabaseService = instanceInfo.DBService;
            mInstancePath    = instanceInfo.Directory.FullName;

            HashSet <string> transformationNames = new HashSet <string>();

            mTransformationFullNames = new HashSet <string>();

            DataTable webPartsInTransformationsTable = GetPageTemplateWebParts(LikePageTemplateDisplayName);

            foreach (DataRow webPart in webPartsInTransformationsTable.Rows)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(webPart["PageTemplateWebParts"] as string);

                IEnumerable <string> templateTransformationFullNames = GetTransformationNamesInPageTemplateWebParts(xmlDoc);

                foreach (string templateTransformationFullName in templateTransformationFullNames)
                {
                    mTransformationFullNames.Add(templateTransformationFullName);
                    string transformationName = templateTransformationFullName.Substring(templateTransformationFullName.LastIndexOf('.') + 1);
                    transformationNames.Add(transformationName);
                }
            }

            DataTable transformationCodesTable = GetTransformationCodes(transformationNames);

            foreach (DataRow transformation in transformationCodesTable.Rows)
            {
                int    transformationId   = (int)transformation["TransformationID"];
                string transformationName = transformation["TransformationName"] as string;
                string transformationCode = transformation["TransformationCode"] as string;

                string xssResult = null;
                AnalyseXss(transformationId, transformationName, transformationCode, ref xssResult);
                if (!string.IsNullOrEmpty(xssResult))
                {
                    report.Add(xssResult);
                }
            }

            if (report.Count == 0)
            {
                return(new ModuleResults
                {
                    ResultComment = "No problems in transformations found.",
                    Status = Status.Good
                });
            }

            return(new ModuleResults
            {
                Result = report,
                Trusted = true
            });
        }
Esempio n. 25
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            // Initialize database connection service
            var dbService = instanceInfo.DBService;

            // Retrieve data
            var tablesWithoutClass = dbService.ExecuteAndGetTableFromFile("ClassTableValidationTables.sql");

            tablesWithoutClass.TableName = "Database tables without Kentico Class";
            var formattedTableWhitelist = string.Join(",", GetTableWhitelist(instanceInfo.Version).Select(tn => string.Format("'{0}'", tn)));
            var tablesWithoutClassCount = 0;

            if (!string.IsNullOrEmpty(formattedTableWhitelist) && formattedTableWhitelist != ",")
            {
                tablesWithoutClassCount = tablesWithoutClass.Select($"TABLE_NAME not in ({formattedTableWhitelist})").Count();
            }
            else
            {
                tablesWithoutClassCount = tablesWithoutClass.Select().Count();
            }

            var classesWithoutTable = dbService.ExecuteAndGetTableFromFile("ClassTableValidationClasses.sql");

            classesWithoutTable.TableName = "Kentico Classes without database table";
            var formattedClassWhitelist  = string.Join(",", GetClassWhitelist(instanceInfo.Version).Select(tn => string.Format("'{0}'", tn)));
            var classesWithoutTableCount = 0;

            if (!string.IsNullOrEmpty(formattedClassWhitelist) && formattedClassWhitelist != ",")
            {
                classesWithoutTableCount = classesWithoutTable.Select($"ClassTableName not in ({formattedClassWhitelist})").Count();
            }
            else
            {
                classesWithoutTableCount = classesWithoutTable.Select().Count();
            }

            // Merge data into result
            var result = new DataSet("Non-matching Tables-Class entries");

            if (tablesWithoutClassCount > 0)
            {
                result.Merge(tablesWithoutClass);
            }
            if (classesWithoutTableCount > 0)
            {
                result.Merge(classesWithoutTable);
            }

            // Calculate total number of identified issues (if any)
            int issues = tablesWithoutClassCount + classesWithoutTableCount;

            return(new ModuleResults
            {
                Result = result,
                ResultComment = $"{issues} invalid entries found",
                Status = (issues > 0) ? Status.Error : Status.Good
            });
        }
Esempio n. 26
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var            dbService    = instanceInfo.DBService;
            var            results      = dbService.ExecuteAndGetTableFromFile("SecuritySettingsModule.sql");
            List <DataRow> rowsToDelete = new List <DataRow>();

            // Iterate through and check int/double settings
            foreach (DataRow row in results.Rows)
            {
                if (!String.IsNullOrEmpty(row["Key value"].ToString()))
                {
                    switch (row["Key name"].ToString())
                    {
                    case "CMSResetPasswordInterval":
                        if (GetValueAndCheckInterval(row, 1, 12))
                        {
                            rowsToDelete.Add(row);
                        }
                        break;

                    case "CMSPolicyMinimalLength":
                        if (GetValueAndCheckInterval(row, 8))
                        {
                            rowsToDelete.Add(row);
                        }
                        break;

                    case "CMSPolicyNumberOfNonAlphaNumChars":
                        if (GetValueAndCheckInterval(row, 2))
                        {
                            rowsToDelete.Add(row);
                        }
                        break;

                    case "CMSMaximumInvalidLogonAttempts":
                        if (GetValueAndCheckInterval(row, 0, 5))
                        {
                            rowsToDelete.Add(row);
                        }
                        break;

                    default: break;
                    }
                }
            }

            foreach (DataRow row in rowsToDelete)
            {
                results.Rows.Remove(row);
            }

            return(new ModuleResults
            {
                Result = results,
                ResultComment = "",
                Status = Status.Warning,
            });
        }
Esempio n. 27
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            List <string> responses = new List <string>();

            var dbService     = instanceInfo.DBService;
            var activityCount = dbService.ExecuteAndGetScalar <int>("SELECT COUNT(*) FROM OM_Activity");

            if (activityCount > 10000000)
            {
                responses.Add("There are over 10 000 000 (" + activityCount + " exactly) activities in the database. Consider using deleting old page visits or setting up the old contact's deletion");
            }

            var contactsCount = dbService.ExecuteAndGetScalar <int>("SELECT COUNT(*) FROM OM_Contact");

            if (contactsCount > 1000000)
            {
                responses.Add("There are over 1 000 000 (" + contactsCount + " exactly) contacts in the database. Consider using old contact's deletion");

                var anonymousCount = dbService.ExecuteAndGetScalar <int>("SELECT COUNT(*) FROM OM_Contact WHERE ContactLastName LIKE 'Anonymous%'");
                var mergedCount    = dbService.ExecuteAndGetScalar <int>("SELECT COUNT(*) FROM OM_Contact WHERE ContactMergedWithContactID NOT NULL");

                responses.Add("Out of these " + contactsCount + " contacts, " + anonymousCount + " are anonymous and " + mergedCount + " are merged");
            }

            var contactGroupCount = dbService.ExecuteAndGetScalar <int>("SELECT COUNT(*) FROM OM_ContactGroup");

            if (contactGroupCount > 50)
            {
                responses.Add("There are over 50 contact groups (" + contactGroupCount + " exactly). This might affect performance, are all of those really necessary?");
            }

            var scoringRuleCount = dbService.ExecuteAndGetScalar <int>("SELECT COUNT(*) FROM OM_Rule");

            if (scoringRuleCount > 50)
            {
                responses.Add("There are over 50 scoring rules (" + scoringRuleCount + " exactly). This might affect performance, are all of those really necessary?");
            }

            if (responses.Any())
            {
                return(new ModuleResults
                {
                    Result = responses,
                    ResultComment = @"Check the counts in the result table. Exceeding the limits doesn't mean it must be wrong. 
It depends on other things like traffic, hardware and so on.",
                    Status = Status.Error,
                });
            }
            else
            {
                return(new ModuleResults
                {
                    ResultComment = "All of critical Online marketing are small enough to use Online marketing without affecting performance.",
                    Status = Status.Good
                });
            }
        }
Esempio n. 28
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var identicalTemplateLayouts = dbService.ExecuteAndGetTableFromFile("IdenticalTemplateLayoutsModule.sql");

            return(new ModuleResults
            {
                Result = identicalTemplateLayouts
            });
        }
Esempio n. 29
0
        private DataSet GetAndJoinDataTables(IInstanceInfo instanceInfo)
        {
            var result = instanceInfo.DBService.ExecuteAndGetDataSetFromFile("NumberOfAliasesModule.sql");

            result.Tables[0].TableName = "Number of documents";
            result.Tables[1].TableName = "Number of aliases";
            result.Tables[2].TableName = "Aliases per node";

            return result;
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("ApplicationRestartsModule.sql");

            return new ModuleResults
            {
                Result = results,
            };
        }
Esempio n. 31
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetDataSetFromFile("Setup/GlobalAdminSetupModule.sql");

            return new ModuleResults
            {
                ResultComment = "The default administrator user with UserID=53 has been reset. You may need to recycle the application pool for changes to take effect."
            };
        }
Esempio n. 32
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetDataSetFromFile(VersionConfig[instanceInfo.Version]);

            return(new ModuleResults
            {
                Result = results,
            });
        }
Esempio n. 33
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService       = instanceInfo.DBService;
            var unusedTemplates = dbService.ExecuteAndGetTableFromFile("UnusedTemplatesModule.sql");

            return(new ModuleResults
            {
                Result = unusedTemplates
            });
        }
Esempio n. 34
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetTableFromFile("ApplicationRestartsModule.sql");

            return(new ModuleResults
            {
                Result = results,
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("AttachmentsBySizeModule.sql");

            return new ModuleResults
            {
                Result = results,
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetPrintsFromFile("CMSFileModule.sql");

            return new ModuleResults
            {
                Result = results,
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetDataSetFromFile("Setup/GlobalAdminSetupModule.sql");

            return new ModuleResults
            {
                ResultComment = "The default administrator user with UserID=53 has been reset. You may need to recycle the application pool for changes to take effect."
            };
        }
Esempio n. 38
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var unusedTemplates = dbService.ExecuteAndGetTableFromFile("UnusedPageTypesModule.sql");

            return new ModuleResults
            {
                Result = unusedTemplates
            };
        }
Esempio n. 39
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetTableFromFile("AttachmentsBySizeModule.sql");

            return(new ModuleResults
            {
                Result = results,
            });
        }
Esempio n. 40
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetPrintsFromFile("CMSFileModule.sql");

            return(new ModuleResults
            {
                Result = results,
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetDataSetFromFile("Setup/LicenseSetupModule.sql");

            return new ModuleResults
            {
                Result = results
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetPrintsFromFile("Setup/SiteDomainAliasesSetupModule.sql");

            return new ModuleResults
            {
                Result = results
            };
        }
Esempio n. 43
0
        private DataSet GetAndJoinDataTables(IInstanceInfo instanceInfo)
        {
            var result = instanceInfo.DBService.ExecuteAndGetDataSetFromFile("NumberOfAliasesModule.sql");

            result.Tables[0].TableName = "Number of documents";
            result.Tables[1].TableName = "Number of aliases";
            result.Tables[2].TableName = "Aliases per node";

            return(result);
        }
Esempio n. 44
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetPrintsFromFile("Setup/SiteDomainAliasesSetupModule.sql");

            return(new ModuleResults
            {
                Result = results
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results   = dbService.ExecuteAndGetDataSetFromFile("Setup/WebFarmServerSetupModule.sql");

            return(new ModuleResults
            {
                Result = results
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("SecuritySettingsModule.sql");
            List<DataRow> rowsToDelete = new List<DataRow>();

            // Iterate through and check int/double settings 
            foreach (DataRow row in results.Rows)
            {
                if (!String.IsNullOrEmpty(row["Key value"].ToString()))
                {
                    switch (row["Key name"].ToString()) 
                    {
                        case "CMSResetPasswordInterval":
                            if (GetValueAndCheckInterval(row, 1, 12))
                            {
                                rowsToDelete.Add(row);
                            }
                            break;
                        case "CMSPolicyMinimalLength":
                            if (GetValueAndCheckInterval(row, 8))
                            {
                                rowsToDelete.Add(row);
                            }
                            break;
                        case "CMSPolicyNumberOfNonAlphaNumChars":
                            if (GetValueAndCheckInterval(row, 2))
                            {
                                rowsToDelete.Add(row);
                            }
                            break;
                        case "CMSMaximumInvalidLogonAttempts":
                            if (GetValueAndCheckInterval(row, 0, 5))
                            {
                                rowsToDelete.Add(row); 
                            }
                            break;
                        default: break;
                    }
                }
            }

            foreach(DataRow row in rowsToDelete)
            {
                results.Rows.Remove(row);
            }

            return new ModuleResults
            {
                Result = results,
                ResultComment = "",
                Status = Status.Warning,
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("WebPartsInTransformationsModule.sql");

            return new ModuleResults
            {
                Result = results,
                Status = results.Rows.Count > 0 ? Status.Error : Status.Good
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            DataTable expiredTokens = new DataTable("Expired account tokens");

            expiredTokens.Columns.Add("SocialNetwork");
            expiredTokens.Columns.Add("SiteName");
            expiredTokens.Columns.Add("AccountName");

            var dbService = instanceInfo.DBService;

            if (instanceInfo.Version != new Version("8.0"))
            {
                // LinkedIn integration is in 8.1 and newer
                var linResults = dbService.ExecuteAndGetTableFromFile("ExpiredTokensModule-LinkedIn.sql");
                foreach (DataRow token in linResults.Rows)
                {
                    var row = expiredTokens.NewRow();
                    row["SocialNetwork"] = "LinkedIn";
                    row["SiteName"]      = token["SiteName"];
                    row["AccountName"]   = token["AccountName"];
                    expiredTokens.Rows.Add(row);
                }
            }

            var fbResults = dbService.ExecuteAndGetTableFromFile("ExpiredTokensModule-Facebook.sql");

            if (fbResults.Rows.Count > 0)
            {
                foreach (DataRow token in fbResults.Rows)
                {
                    var row = expiredTokens.NewRow();
                    row["SocialNetwork"] = "Facebook";
                    row["SiteName"]      = token["SiteName"];
                    row["AccountName"]   = token["AccountName"];
                    expiredTokens.Rows.Add(row);
                }
            }

            if (expiredTokens.Rows.Count > 0)
            {
                return(new ModuleResults
                {
                    Result = expiredTokens,
                    Status = Status.Error,
                    ResultComment = "Tokens have expired, posting stuff on some social markenting accounts doesn't work at all for accounts in results. Tell customer to reauthorize the pages.",
                });
            }

            return(new ModuleResults
            {
                Status = Status.Good,
                ResultComment = "There are no expired tokens.",
            });
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var results = dbService.ExecuteAndGetTableFromFile("PageTypeFieldsDataTypeMismatchModule.sql");

            return new ModuleResults
            {
                Result = results,
                Status = results.Rows.Count > 0 ? Status.Warning : Status.Good,
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            InstanceInfo = instanceInfo;

            var result = GetInconsistenciesDataTable();

            return new ModuleResults
            {
                Result = result,
                Status = result.Rows.Count == 0 ? Status.Good : Status.Error
            };
        }
Esempio n. 51
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;

            int databaseSizeInMB = dbService.ExecuteAndGetScalar<int>("SELECT SUM(reserved_page_count) * 8.0 / 1024 FROM sys.dm_db_partition_stats");
            var results = dbService.ExecuteAndGetTableFromFile("BigTablesModule.sql");

            return new ModuleResults
            {
                Result = results,
                ResultComment = $"The overall database size is {databaseSizeInMB} MB"};
        }
Esempio n. 52
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            List<string> responses = new List<string>();

            var dbService = instanceInfo.DBService;
            var activityCount = dbService.ExecuteAndGetScalar<int>("SELECT COUNT(*) FROM OM_Activity");
            if (activityCount > 10000000)
            {
                responses.Add("There are over 10 000 000 (" + activityCount + " exactly) activities in the database. Consider using deleting old page visits or setting up the old contact's deletion");
            }

            var contactsCount = dbService.ExecuteAndGetScalar<int>("SELECT COUNT(*) FROM OM_Contact");
            if (contactsCount > 1000000)
            {
                responses.Add("There are over 1 000 000 (" + contactsCount + " exactly) contacts in the database. Consider using old contact's deletion");

                var anonymousCount = dbService.ExecuteAndGetScalar<int>("SELECT COUNT(*) FROM OM_Contact WHERE ContactLastName LIKE 'Anonymous%'");
                var mergedCount = dbService.ExecuteAndGetScalar<int>("SELECT COUNT(*) FROM OM_Contact WHERE ContactMergedWithContactID NOT NULL");

                responses.Add("Out of these " + contactsCount + " contacts, " + anonymousCount + " are anonymous and " + mergedCount + " are merged");
            }

            var contactGroupCount = dbService.ExecuteAndGetScalar<int>("SELECT COUNT(*) FROM OM_ContactGroup");
            if (contactGroupCount > 50)
            {
                responses.Add("There are over 50 contact groups (" + contactGroupCount + " exactly). This might affect performance, are all of those really neccessary?");
            }

            var scoringRuleCount = dbService.ExecuteAndGetScalar<int>("SELECT COUNT(*) FROM OM_Rule");
            if (scoringRuleCount > 50)
            {
                responses.Add("There are over 50 scoring rules (" + scoringRuleCount + " exactly). This might affect performance, are all of those really neccessary?");
            }

            if (responses.Any())
            {
                return new ModuleResults
                {
                    Result = responses,
                    ResultComment = @"Check the counts in the result table. Exceeding the limits doesn't mean it must be wrong. 
It depends on other things like traffic, hardware and so on.",
                    Status = Status.Error,
                };
            }
            else
            {
                return new ModuleResults
                {
                    ResultComment = "All of critical Online marketing are small enough to use Online marketing without affecting performance.",
                    Status = Status.Good
                };
            }
        }
Esempio n. 53
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var disableAllDatabaseDebugs = false;
            var enabledDatabaseDebugs = new List<string>();

            bool compilationDebugActive = IsCompilationDebugActive(instanceInfo);

            var databaseDebugSettings = GetDatabaseDebugSettings(instanceInfo.DBService);
            foreach (var setting in databaseDebugSettings)
            {
                if (setting.Key == "CMSDisableDebug")
                {
                    disableAllDatabaseDebugs = setting.Value;
                }
                else if (setting.Value)
                {
                    enabledDatabaseDebugs.Add(string.Format("The {0} setting is enabled", setting.Key));
                }
            }

            var databaseDebugsActive = !disableAllDatabaseDebugs && enabledDatabaseDebugs.Count > 0;

            if (compilationDebugActive || databaseDebugsActive)
            {
                var result = new List<string>();

                if (compilationDebugActive)
                {
                    result.Add("Compilation debug is enabled in the web.config");
                }

                if (databaseDebugsActive)
                {
                    result.AddRange(enabledDatabaseDebugs);
                }

                return new ModuleResults
                {
                    Status = Status.Error,
                    Result = result,
                    ResultComment = "Debug settings should be disabled on production instances!"
                };
            }
            else
            {
                return new ModuleResults
                {
                    Status = Status.Good,
                    ResultComment = "Debug settings have been disabled!"
                };
            }
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            DataTable expiredTokens = new DataTable("Expired account tokens");
            expiredTokens.Columns.Add("SocialNetwork");
            expiredTokens.Columns.Add("SiteName");
            expiredTokens.Columns.Add("AccountName");

            var dbService = instanceInfo.DBService;
            if (instanceInfo.Version != new Version("8.0"))
            {
                // LinkedIn integration is in 8.1 and newer
                var linResults = dbService.ExecuteAndGetTableFromFile("ExpiredTokensModule-LinkedIn.sql");
                foreach (DataRow token in linResults.Rows)
                {
                    var row = expiredTokens.NewRow();
                    row["SocialNetwork"] = "LinkedIn";
                    row["SiteName"] = token["SiteName"];
                    row["AccountName"] = token["AccountName"];
                    expiredTokens.Rows.Add(row);
                }
            }

            var fbResults = dbService.ExecuteAndGetTableFromFile("ExpiredTokensModule-Facebook.sql");
            if (fbResults.Rows.Count > 0)
            {
                foreach (DataRow token in fbResults.Rows)
                {
                    var row = expiredTokens.NewRow();
                    row["SocialNetwork"] = "Facebook";
                    row["SiteName"] = token["SiteName"];
                    row["AccountName"] = token["AccountName"];
                    expiredTokens.Rows.Add(row);
                }                
            }

            if (expiredTokens.Rows.Count > 0)
            {
                return new ModuleResults
                {
                    Result = expiredTokens,
                    Status = Status.Error,
                    ResultComment = "Tokens have expired, posting stuff on some social markenting accounts doesn't work at all for accounts in results. Tell customer to reauthorize the pages.",
                };
            }

            return new ModuleResults
            {
                Status = Status.Good,
                ResultComment = "There are no expired tokens.",
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            var urls = dbService.ExecuteAndGetTableFromFile("ScreenshotterModule.sql");

            // Start process in separate thread to make website responsive.
            Thread t = new Thread(StartScreenshotting);
            t.Start(new object[] { instanceInfo, urls });

            return new ModuleResults
            {
                Result = urls
            };
        }
Esempio n. 56
0

        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;

            int databaseSizeInMB = dbService.ExecuteAndGetScalar<int>("SELECT SUM(reserved_page_count) * 8.0 / 1024 FROM sys.dm_db_partition_stats");
            var results = dbService.ExecuteAndGetDataSetFromFile("BigTablesModule.sql");
            results.Tables[0].TableName = "Top 25 Tables By Rows";
            results.Tables[1].TableName = "Top 25 Tables By Data";

            return new ModuleResults
            {
                Result = results,
                ResultComment = String.Format("The overall database size is {0} MB", databaseSizeInMB)
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            List<string> report = new List<string>();

            mDatabaseService = instanceInfo.DBService;

            DataTable webPartsInTransformationsTable = GetPageTemplateWebParts(LikePageTemplateDisplayName);
            List<string> whereOrderResults = new List<string>();
            List<string> otherResults = new List<string>();
            foreach (DataRow webPart in webPartsInTransformationsTable.Rows)
            {
                string pageTemplateDisplayName = webPart["PageTemplateDisplayName"] as string;
                XmlDocument webPartsXmlDoc = new XmlDocument();
                webPartsXmlDoc.LoadXml(webPart["PageTemplateWebParts"] as string);

                whereOrderResults.AddRange(AnalyseWhereAndOrderByConditionsInPageTemplateWebParts(webPartsXmlDoc, pageTemplateDisplayName));
                otherResults.AddRange(AnalysePageTemplateWebParts(webPartsXmlDoc, pageTemplateDisplayName));
            }

            if (whereOrderResults.Count > 0)
            {
                report.Add("------------------------ Web parts - Where and Order condition results - Potential SQL injections -----------------");
                report.AddRange(whereOrderResults);
            }
            if (otherResults.Count > 0)
            {
                report.Add("------------------------ Macros in DB - Potential XSS -----------------");
                report.AddRange(otherResults);
            }

            if (report.Count == 0)
            {
                return new ModuleResults
                {
                    ResultComment = "No problems in web parts found.",
                    Status = Status.Good
                };
            }

            StringBuilder res = new StringBuilder();
            report.ForEach(it => res.Append(it.Replace("\n", "<br />")));

            return new ModuleResults
            {
                Result = report,
                Trusted = true
            };
        }
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            var dbService = instanceInfo.DBService;
            if (instanceInfo.Version == new Version("6.0"))
            {
                return new ModuleResults
                {
                    Result = dbService.ExecuteAndGetPrintsFromFile("WebPartColumnsModule6.sql"),
                };
            }

            return new ModuleResults
            {
                Result = dbService.ExecuteAndGetPrintsFromFile("WebPartColumnsModule.sql"),
            };
        }
Esempio n. 59
0
        private static bool IsCompilationDebugActive(IInstanceInfo instanceInfo)
        {
            Version kenticoVersion = instanceInfo.Version;
            string pathToWebConfig = instanceInfo.Directory.ToString();

            if ((kenticoVersion >= new Version("8.0")) && !(instanceInfo.Directory.ToString().EndsWith("\\CMS\\") || instanceInfo.Directory.ToString().EndsWith("\\CMS")))
            {
                pathToWebConfig += "\\CMS";
            }

            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap { ExeConfigFilename = pathToWebConfig + "\\web.config" };
            Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

            CompilationSection compilationSection = (CompilationSection)configuration.GetSection(@"system.web/compilation");
            var compilationDebugActive = compilationSection != null ? compilationSection.Debug : false;
            return compilationDebugActive;
        }
Esempio n. 60
0
        public ModuleResults GetResults(IInstanceInfo instanceInfo)
        {
            if (!TestUrl(instanceInfo.Uri, "robots.txt"))
            {
                return new ModuleResults
                {
                    Status = Status.Warning,
                    Result = "Missing! Please add the robots.txt into the web root",
                };
            }

            return new ModuleResults
            {
                Status = Status.Good,
                Result = "All good, robots.txt found.",
            };
        }