/// <summary>
        /// Метод запуска проверки урлов
        /// </summary>
        /// <param name="urlToCheck">Проверяемый урл</param>
        /// <param name="isAdmin">Признак проверки в админке или публичке</param>
        public static void Run(string urlToCheck, string isAdmin = "false")
        {
            Log.Gap();
            Log.MesNormal("Проверка всех урлов на наличие ошибок на сайте " + urlToCheck);

            lCheckOnes = new List <string>(MainForm.form.tbCheckOnce.Text.Replace("\r", "").Split('\n').Where(s => !string.IsNullOrWhiteSpace(s)).Distinct().ToList());

            if (Directory.Exists(urlToCheck + "CTest"))
            {
                BitrixFramework.OpenURL(urlToCheck, false, false);
            }
            else
            {
                BitrixFramework.OpenURL(urlToCheck, false);
            }
            try
            {
                if (isAdmin == "true")
                {
                    Case_Main.OpenAdmin();
                }
                if (MainForm.form.tbCheckUrlsLogin.Text.Trim() != "" && MainForm.form.tbCheckUrlsPass.Text.Trim() != "" && !urlToCheck.Contains(".bitrix24."))
                {
                    Case_General_Login.LoginAdminArea(MainForm.form.tbCheckUrlsLogin.Text.Trim(), MainForm.form.tbCheckUrlsPass.Text.Trim());
                }
            }
            catch { }

            BitrixFramework.OpenURL(urlToCheck, false);
            if (isAdmin == "true")
            {
                Case_Main.OpenAdmin();
            }
            else
            {
                Case_Main.OpenPublic();
            }

            var queueToCheck = new Queue <string>();

            queueToCheck.Enqueue(urlToCheck);

            FillCheckMasksCollection();

            //очищаем список ссылок
            Links.Clear();

            while (queueToCheck.Count > 0)
            {
                CheckAllUrls(queueToCheck, urlToCheck, queueToCheck.Dequeue(), isAdmin);
            }

            //выводим в лог все пройденные ссылки
            Log.NodeOpen("Ссылки:", collapsed: false);
            for (int link = 0; link < Links.Count; link++)
            {
                Log.MesNormal(Links[link].Item2);
            }
            Log.NodeClose();

            Log.Gap();
            Log.MesNormal("Проверка завершена");
        }
Exemple #2
0
        /// <summary>
        /// Метод проверки компонентов
        /// </summary>
        /// <param name="edition">тип редакции установки</param>
        /// <param name="dbType">тип БД</param>
        public static void Run(string edition, string dbType)
        {
            List <DirectoryInfo> folders = new List <DirectoryInfo>();
            string        PathToDistr    = Options.GetOption("/Options/PathToFolderWhereToInstall/edition[@title='" + edition + "']/" + dbType);
            string        urlToCheck     = "http://" + Options.GetOption("/Options/URLS/edition[@title='" + edition + "']/" + dbType);
            string        searchPrefix   = MainForm.form.tbComponentsCheckPrefix.Text.Trim();
            DirectoryInfo targetDir      = new DirectoryInfo(PathToDistr + "bitrix\\components\\bitrix\\");

            Log.MesNormal("Проверка всех компонентов установки");

            //получаем все компоненты (имена папок)
            if (searchPrefix != "")
            {
                foreach (DirectoryInfo d in targetDir.GetDirectories("*" + searchPrefix + "*"))
                {
                    folders.Add(d);
                }
            }
            else
            {
                foreach (DirectoryInfo d in targetDir.GetDirectories())
                {
                    folders.Add(d);
                }
            }

            BitrixFramework.OpenURL(urlToCheck, CheckPageOnErrors: false);

            if (MainForm.form.tbCheckComponentsLogin.Text.Trim() != " " && MainForm.form.tbCheckComponentsPassword.Text.Trim() != "")
            {
                Case_General_Login.LoginAdminArea(MainForm.form.tbCheckUrlsLogin.Text.Trim(), MainForm.form.tbCheckUrlsPass.Text.Trim());
            }

            //для каждого компонента создаем отдельный файл php с именем компонента, в котором размещается код вызова компонента
            foreach (var componentsFolder in folders)
            {
                //создаем папку CTest, если нет
                if (!Directory.Exists(PathToDistr + "CTest"))
                {
                    Directory.CreateDirectory(PathToDistr + "CTest");
                }

                //удалем файл с именем компонента, если есть
                if (File.Exists(PathToDistr + "CTest\\" + componentsFolder.ToString() + ".php"))
                {
                    File.Delete(PathToDistr + "CTest\\" + componentsFolder.ToString() + ".php");
                }

                File.AppendAllText(PathToDistr + "CTest\\" + componentsFolder.ToString() + ".php",
                                   "<?require($_SERVER[\"DOCUMENT_ROOT\"].\"/bitrix/header.php\");$APPLICATION->SetTitle(\"Тест компонента без параметров: bitrix:" +
                                   componentsFolder.ToString() + "\");?> <?$APPLICATION->IncludeComponent(\"bitrix:" + componentsFolder.ToString() +
                                   "\", \"\", Array(), false);?><?require($_SERVER[\"DOCUMENT_ROOT\"].\"/bitrix/footer.php\");?>");
                if (MainForm.form.cbComponentsCheckPageOnErrors.Checked)
                {
                    BitrixFramework.OpenURL(urlToCheck + "/ctest/" + componentsFolder.ToString() + ".php", false);
                }
                else
                {
                    BitrixFramework.OpenURL(urlToCheck + "/ctest/" + componentsFolder.ToString() + ".php", false, false);
                    GM.CheckContentOnErrors();
                }
                Log.MesNormal("компонент - bitrix:" + componentsFolder.ToString() + " проверен");
            }

            Log.Gap();
            Log.MesNormal("Все компоненты проверены. Всего компонентов: " + folders.Count);
        }