Новости Joomla

Joomla 6: Автоматические обновления ядра в Joomla

Joomla 6: Автоматические обновления ядра в Joomla

👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla. В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности. Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.@joomlafeed#joomla #secutiry #jcm

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

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

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Я тут озадачен немного. Объявлений размещается много, но с фото только приблизительно 30%.

Провел небольшой эксперимент - после подачи объявлений переадресовывал пользователей с основного автобб сайта на другой мой автомобильный сайт (на движке cars2.ru), и оказалось что большинство тех, кто размести объявления без фото на основном автобб сайте, на вспомогательном разместили свои фотографии без проблем. Объем эксперимента 20 объявлений. Количество испорченных объявлений - 6 шт.

Это ведь проблема, причем очень серьезная. Фото 531 Кб компонент не осилил.

Для интереса скачал дистрибутив 2.3, заменил все файлы что лежали у меня на хостинге на те, что из дистрибутива, размещал объявления от реальных людей с их фото. Ничего не разместилось. Значит не у меня проблема, а в компоненте.

Как у других дела обстоят?
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
На своем сайте я описал рекомендуемые настройки при работе с фото, там же описаны все параметры, которые могут вызывать проблемы. Компонент, думаю, в порядке, а вот с настройками можете поиграться.
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
На своем сайте я описал рекомендуемые настройки при работе с фото, там же описаны все параметры, которые могут вызывать проблемы. Компонент, думаю, в порядке, а вот с настройками можете поиграться.

Если можно ссылку на этот материал? На форуме я нечто подобное видел, а на recly.ru не нашел.
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Статью я прочитал, но мне к сожалению это не помогло.

Вот кусочек кода, проверки убрал на максимальные размеры фото, но не загружает он большие размеры никак.

Код
//добавление фотографий
$database->setQuery ( "SELECT count (*) FROM #__autobb_photos WHERE msgid=$row->id");
$photos_count = intval ( $database->loadResult () );
for ( $i=0; $i < $autobbConfig->photos_maxnum - $photos_count; $i++ ) {
$photofile = 'photofile_'.$i;
if ( isset ( $_FILES[$photofile] ) && ( $_FILES[$photofile]['size'] > 0 ) /*&& ( $_FILES[$photofile]['size'] < 4*1024 ) */) {
if ( file_exists ( $_FILES[$photofile]['tmp_name'] ) ) {
$imagesize = array (0, 0, 0, 0);
$imagesize = getImageSize ( $_FILES[$photofile]['tmp_name'] );
if ( ( $imagesize[2] == 1 ) || ( $imagesize[2] == 2 ) || ( $imagesize[2] == 3 ) ) { // проверка типа изображения. Допустимы только GIF, PNG или JPG
//if ( ( $imagesize[0] <= 1500) && ( $imagesize[1] <= 2000 ) ) {

// проверка по габаритам изображения
$image = NULL;
if ( $imagesize[2] == 1 ): $image = @imageCreateFromGif ( $_FILES[$photofile]['tmp_name'] );
elseif ( $imagesize[2] == 2 ): $image = @imageCreateFromJpeg ( $_FILES[$photofile]['tmp_name'] );
else: $image = @imageCreateFromPng ( $_FILES[$photofile]['tmp_name'] );
endif;
if ($image) {
/* $filename = date ("YmdHis").'-'.($row->id).'-'.$i.'.jpg';
$uploadfile = $mosConfig_absolute_path.'/components/com_autobb/photos/'.$filename;*/
$photos_dir = $mosConfig_absolute_path.'/components/com_autobb/photos/';
$message_dir = $photos_dir.$row->id;
if ( !file_exists ( $message_dir ) ) {
mkdir ( $message_dir );
if ( $mosConfig_dirperms!='' ) @chmod ( message_dir, $mosConfig_dirperms );
}
$filename = ($row->id)."/".date ("YmdHis").'-'.($row->id).'-'.$i.'.jpg';
$uploadfile = $photos_dir.$filename;
imageJpeg ( $image, $uploadfile, $autobbConfig->photos_savequality );
/*TODO устнаовить права на файл в соответствии с настройкаим сайта*/
if ( $mosConfig_fileperms!='' ) @chmod ( $uploadfile, $mosConfig_fileperms );
$newphoto = new mosAutoBBPhoto ( $database );
$newphoto->title = $filename;
$newphoto->msgid = $row->id;
$newphoto->store ();
imageDestroy ( $image );
« Последнее редактирование: 12.08.2009, 01:23:10 от dmsoh »
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
Не хватает ресурсов сервера видимо. Как вариант можно переписать код под использование библиотеки IM, она пошустрей работает вроде бы, но не на каждом сервере она стоит.
*

eX

  • Захожу иногда
  • 256
  • 72 / 0
Поддерживаю.. ImageMagick гораздо шустрей нежели GD либа. Для многих хостингов требуется перевод режима работы PHP в CGI-режим. Плюс к тому IM гораздо лучше обрабатывает имиджи в плане ресайза изображений, плюс скорректировать параметры для обработки гораздо легче, плюс выигрываем в размере получаемых файлов при ресайзе в отличии от GD.
« Последнее редактирование: 12.08.2009, 10:31:46 от eX »
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Сервер вот такой
Код
CPU: Core 2 Duo E8400 3ГГц
RAM: 8192 мб ECC RAM

Там еще пару сайтиков крутиться, но ресурсы сервера все этому сайту предоставлены.
Т.е. думаю, что дело не в ресурсах.
Сайт на этом же сервере на движке cars2.ru ресайзит тоже фото без проблем: avtorunok.com.ua/info.php?id=57
« Последнее редактирование: 12.08.2009, 11:03:36 от dmsoh »
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
Ну так давайте разберем его код и посмотрим, как он работает с фото, сравним с текущей версией компонента и внесем коррективы.
Полагаю, что загвоздка вся в части обработки фото размером более 2000 пкс по какой-то стороне.
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Ну так давайте разберем его код и посмотрим, как он работает с фото, сравним с текущей версией компонента и внесем коррективы.
Полагаю, что загвоздка вся в части обработки фото размером более 2000 пкс по какой-то стороне.

Я готов. Что мне нужно сделать?
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
Нужно найти в коде что просходит с фото при загрузке фалов и привести код фкнкции/й
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Нужно найти в коде что просходит с фото при загрузке фалов и привести код фкнкции/й

Хорошо. Начнем все по порядку.

Сначала для автобб, а затем для карс2.ру.

Я скачал компонент с вашего сайта, подменил все свои php и XML файлы на файлы из дистрибутива.
Тестирую загрузку фото на изображении, которое можно скачать здесь avtorunok.com.ua/images/57_122_original.jpg

В файле admin.autobb.php есть следующий код

   
Код
//добавление фотографий
$database->setQuery ( "SELECT count (*) FROM #__autobb_photos WHERE msgid=$row->id");
$photos_count = intval ( $database->loadResult () );
for ( $i=0; $i < $autobbConfig->photos_maxnum - $photos_count; $i++ ) {
$photofile = 'photofile_'.$i;
if ( isset ( $_FILES[$photofile] ) && ( $_FILES[$photofile]['size'] > 0 ) ) {
if ( file_exists ( $_FILES[$photofile]['tmp_name'] ) ) {
$imagesize = array (0, 0, 0, 0);
$imagesize = getImageSize ( $_FILES[$photofile]['tmp_name'] );
$tmp2 = $_FILES[$photofile]['tmp_name'];
if ( ( $imagesize[2] == 1 ) || ( $imagesize[2] == 2 ) || ( $imagesize[2] == 3 ) ) { // проверка типа изображения. Допустимы только GIF, PNG или JPG
//if ( ( $imagesize[0] <= $autobbConfig->photos_maxwidth ) && ( $imagesize[1] <= $autobbConfig->photos_maxheight ) ) { // проверка по габаритам изображения
$image = NULL;
if ( $imagesize[2] == 1 ): $image = @imageCreateFromGif ( $_FILES[$photofile]['tmp_name'] );
elseif ( $imagesize[2] == 2 ): $image = @imageCreateFromJpeg ( $_FILES[$photofile]['tmp_name'] );
else: $image = @imageCreateFromPng ( $_FILES[$photofile]['tmp_name'] );
endif;
if ($image) {
/* $filename = date ("YmdHis").'-'.($row->id).'-'.$i.'.jpg';
$uploadfile = $mosConfig_absolute_path.'/components/com_autobb/photos/'.$filename;*/
$photos_dir = $mosConfig_absolute_path.'/components/com_autobb/photos/';
$message_dir = $photos_dir.$row->id;
if ( !file_exists ( $message_dir ) ) {
mkdir ( $message_dir );
if ( $mosConfig_dirperms!='' ) @chmod ( message_dir, $mosConfig_dirperms );
}
$filename = ($row->id)."/".date ("YmdHis").'-'.($row->id).'-'.$i.'.jpg';
$uploadfile = $photos_dir.$filename;
imageresize ($uploadfile,$tmp2);
//imageJpeg ( $image, $uploadfile, $autobbConfig->photos_savequality );
/*TODO устнаовить права на файл в соответствии с настройкаим сайта*/
if ( $mosConfig_fileperms!='' ) @chmod ( $uploadfile, $mosConfig_fileperms );
$newphoto = new mosAutoBBPhoto ( $database );
$newphoto->title = $filename;
$newphoto->msgid = $row->id;
$newphoto->store ();
imageDestroy ( $image );
}
В нем  закомментировал проверку на размеры изображения, чтобы исключить влияние настроек  и в файле autobb.class.php функцию imageresize привел к виду:

Код
/* Ресайз фото */
function imageresize ($outfile,$infile) {

global $autobbConfig;
$imagesize = array (0, 0, 0, 0);
$imagesize = getImageSize ($infile);


/* if ($imagesize[0]>$autobbConfig->photos_maxwidth) $neww=$autobbConfig->photos_maxwidth;
else*/


$neww=$imagesize[0];



$newh = intval (round ($neww*($imagesize[1]/$imagesize[0]) ));

switch ( $imagesize[2] ) {
case 1: $im = @imageCreateFromGif ( $infile ); break;
case 2: $im = @imageCreateFromJpeg ( $infile ); break;
case 3: $im = @imageCreateFromPng ( $infile ); break;
default: emptyImage ( 'spez', 800 );
}
    $im1=imagecreatetruecolor ($neww,$newh);
    
//if ( $autobbConfig->photos_antialias )

imagecopyresampled ( $im1, $im, 0, 0, 0, 0, $neww, $newh, imagesx ($im), imagesy ($im));

//else imagecopyresized ( $im1, $im, 0, 0, 0, 0, $neww, $newh,  imagesx ($im), imagesy ($im));
//$autobbConfig->photos_savequality

    imagejpeg ($im1,$outfile,80);
    imagedestroy ($im);
    imagedestroy ($im1);
unset ($imagesize, $neww, $newh);
    }
/* -- Ресайз */

На маленьких изображениях скрипт работает, на тестовом - нет.


У карс2.ру код выглядит следующим образом:

// Обработчик изображений
при размещении фото вызывается скрипт save_image.php, код ниже

Код
<?php


// Если через POST передан файл
if (!empty ($_FILES['file'])){


// Цикл по tmp_name файлов
foreach ($_FILES['file']['tmp_name'] as $id => $tmp_name) {


// Если файл существует
if (!empty ($tmp_name)){
if ($_FILES['file']['type'][$id] == 'image/jpeg' OR $_FILES['file']['type'][$id] == 'image/pjpeg'){


// Создаём запись, чтобы получить ID картинки
$insert_id = db_insert (array (
'images' => array (
'ads_id' => $ads_id,
),
));


// Сохраняем маленькое изображение
$image_size_small = save_image (array (
'width' => '50',
'height' => '50',
'quality' => '90',
'input' => $tmp_name,
'output' => $global['script_path'].'/images/'.$ads_id.'_'.$insert_id['images'].'_small.jpg',
'output_original' => $global['script_path'].'/images/'.$ads_id.'_'.$insert_id['images'].'_original.jpg',
));


// Сохраняем размер картинки
db_update (array (
'images' => array (
$insert_id['images'] => array (
'width_small' => $image_size_small['width'],
'height_small' => $image_size_small['height'],
),
),
));


// Сохраняем среднее изображение  (для /index.php)
$image_size_medium = save_image (array (
'width' => '120',
'height' => '120',
'quality' => '90',
'input' => $tmp_name,
'output' => $global['script_path'].'/images/'.$ads_id.'_'.$insert_id['images'].'_medium.jpg',
));


// Сохраняем размер картинки
db_update (array (
'images' => array (
$insert_id['images'] => array (
'width_medium' => $image_size_medium['width'],
'height_medium' => $image_size_medium['height'],
),
),
));


// Сохраняем большое изображение (для /info.php)
$image_size_big = save_image (array (
'width' => '380',
'height' => '380',
'quality' => '90',
'input' => $tmp_name,
'output' => $global['script_path'].'/images/'.$ads_id.'_'.$insert_id['images'].'_big.jpg',
));


// Сохраняем размер картинки
db_update (array (
'images' => array (
$insert_id['images'] => array (
'width_big' => $image_size_big['width'],
'height_big' => $image_size_big['height'],
),
),
));


// Отмечаем в объявлении что есть фотографии
db_update (array (
'ads' => array (
$ads_id => array (
'images' => '1',
),
),
));


}} // end if - Если файл существует


} // end foreach - Цикл по tmp_name файлов


} // end if - Если через POST передан файл


?>

В файле imit.php - библиотеке функций присутствует следующий код

Код
/*-------------------------------------------------------------------------
// Пример вызова функции
save_image (array (
'width' => '500',
'height' => '500',
'quality' => '90',
'input' => $_FILES['req_file']['tmp_name'],
'output' => $_SERVER[DOCUMENT_ROOT].'/images/normal/'.$last_id.'.jpg',
));
-------------------------------------------------------------------------*/


function save_image ($image){


// Если изображение существовало - его нужно предварительно удалить
if (file_exists ($image['output'])){unlink ($image['output']);}


// размер загруженного изображения
list ($width, $height) = getimagesize ($image['input']);


// проверяем - нужно-ли вообще уменьшать изображение
$resize = 0;
if ($image['width'] < $width){$resize = 1;}
if ($image['height'] < $height){$resize = 1;}


// пересчитываем пропорционально размеры
if ($resize == 1){
if ($height < $width){
$scale = $width / $image['width'];
$image['height'] = $height / $scale;
$image['height'] = ceil ($image['height']);
}
else{
$scale = $height / $image['height'];
$image['width'] = $width / $scale;
$image['width'] = ceil ($image['width']);
}
} // end if resize


// Если картинка меньше указанной - используем оригинальный размер картинки
else{
$image['height'] = $height;
$image['width'] = $width;
}


// Уменьшаем изображение
if ($resize == 1){
$image_p = imagecreatetruecolor ($image['width'], $image['height']);
$image_f = imagecreatefromjpeg ($image['input']);
imagecopyresampled ($image_p, $image_f, 0, 0, 0, 0, $image['width'], $image['height'], $width, $height);
imagejpeg ($image_p, $image['output'], $image['quality']);
}


// Копируем оригинальное изображение
else{
copy ($image['input'], $image['output']);
}


// Копируем большое изображение
if (!empty ($image['output_original'])){
copy ($image['input'], $image['output_original']);
}


// Возвращаем ширину и высоту картинки
$out['width'] = $image['width'];
$out['height'] = $image['height'];
return $out;


} // end function

« Последнее редактирование: 12.08.2009, 21:41:46 от dmsoh »
*

dmsoh

  • Захожу иногда
  • 195
  • 8 / 0
Сори, туплю, дело и правда в настройках фото.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

И все же, кто нибудь поможет разобраться? mod_autobb_latest = пропадают фото

Автор htmlcss

Ответов: 1
Просмотров: 5364
Последний ответ 30.10.2013, 20:23:38
от digor1
При выводе на главную обьявлений, пропадают фото

Автор htmlcss

Ответов: 4
Просмотров: 6064
Последний ответ 20.06.2013, 15:08:01
от htmlcss
Проблема с отображением фото

Автор muhammad23

Ответов: 0
Просмотров: 5077
Последний ответ 16.05.2013, 14:55:16
от muhammad23
[FAQ] Проблемы с фото в com_autobb

Автор stin

Ответов: 145
Просмотров: 55967
Последний ответ 13.01.2013, 23:52:58
от Alex Revo
Как сделать, что бы при нажатии на фото или добавить стрелочки, фото менялись по порядку

Автор pinkfloyd

Ответов: 25
Просмотров: 9659
Последний ответ 22.09.2012, 13:30:41
от ayrik