Новости Joomla

Перевод и публикация интервью на греческом портале Joomla Утро, просматриваешь входящие письма и...

Перевод и публикация интервью на греческом портале Joomla 🇬🇷Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции.Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью. Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент. 🇬🇷 Интервью на греческом портале (joomla.gr)🌐 Оригинальное интервью (на английском)Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

Sl@vk@

  • Захожу иногда
  • 147
  • 2 / 0
Есть такая задача:
необходимо перенести 700 пользователей с какой-то там CMS в таблицу Joomla 1.5 . Пароли открытые (то есть незашифрованные) - как шифрует Joomla мне понятно смутно. Я нашел файл, в котором шифруются пароли. А как организовать прогон моих паролей и зашифровать я не понял, т.к. я не могу найти концы, т.е. какие файлы надо подключить, что использовать шифрование Joomla?

\components\com_user\models\reset.php - здесь происходит шифрование

Код
$salt	= JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword($password1, $salt);
$password = $crypt.':'.$salt;
- само шифрование

как подключиться извне и прогнать мои пароли под этим алгоритмом?
*

Sl@vk@

  • Захожу иногда
  • 147
  • 2 / 0
Re: Шифрование данных в Joomla 1.5
« Ответ #1 : 24.04.2010, 11:30:04 »
Неужто никто не переносил пользователей?
« Последнее редактирование: 25.04.2010, 13:54:59 от Sl@vk@ »
*

Sl@vk@

  • Захожу иногда
  • 147
  • 2 / 0
Re: Шифрование данных в Joomla 1.5
« Ответ #2 : 26.04.2010, 12:31:21 »
Объясните мне. Я нашел 2 функции, отвечающие за шифрование и сделал такое вот дело - вынес их (чуть-чуть видоизменил) и они стали выдавать пароли. Но проблема в том, что если просто добавить нового пользователя в jos_user - то он не виден в панели. И еще пароль-то генериться каждый раз разный - как же происходит авторизация?

Код
<?php		
function genRandomPassword($length = 8)
{
$salt = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$len = strlen($salt);
$makepass = '';

$stat = @stat(__FILE__);
if(empty($stat) || !is_array($stat)) $stat = array(php_uname());

mt_srand(crc32(microtime(). implode('|', $stat)));

for ($i = 0; $i < $length; $i ++) {
$makepass .= $salt[mt_rand(0, $len -1)];
}

return $makepass;
}

function getCryptedPassword($plaintext, $salt = '', $encryption = 'md5-hex', $show_encrypt = false)
{
// Get the salt to use.
$salt = getSalt($encryption, $salt, $plaintext);

// Encrypt the password.
switch ($encryption)
{
case 'plain' :
return $plaintext;

case 'sha' :
$encrypted = base64_encode(mhash(MHASH_SHA1, $plaintext));
return ($show_encrypt)? '{SHA}'.$encrypted : $encrypted;

case 'crypt' :
case 'crypt-des' :
case 'crypt-md5' :
case 'crypt-blowfish' :
return ($show_encrypt ? '{crypt}' : '').crypt($plaintext, $salt);

case 'md5-base64' :
$encrypted = base64_encode(mhash(MHASH_MD5, $plaintext));
return ($show_encrypt)? '{MD5}'.$encrypted : $encrypted;

case 'ssha' :
$encrypted = base64_encode(mhash(MHASH_SHA1, $plaintext.$salt).$salt);
return ($show_encrypt)? '{SSHA}'.$encrypted : $encrypted;

case 'smd5' :
$encrypted = base64_encode(mhash(MHASH_MD5, $plaintext.$salt).$salt);
return ($show_encrypt)? '{SMD5}'.$encrypted : $encrypted;

case 'aprmd5' :
$length = strlen($plaintext);
$context = $plaintext.'$apr1$'.$salt;
$binary = JUserHelper::_bin(md5($plaintext.$salt.$plaintext));

for ($i = $length; $i > 0; $i -= 16) {
$context .= substr($binary, 0, ($i > 16 ? 16 : $i));
}
for ($i = $length; $i > 0; $i >>= 1) {
$context .= ($i & 1)? chr(0) : $plaintext[0];
}

$binary = JUserHelper::_bin(md5($context));

for ($i = 0; $i < 1000; $i ++) {
$new = ($i & 1)? $plaintext : substr($binary, 0, 16);
if ($i % 3) {
$new .= $salt;
}
if ($i % 7) {
$new .= $plaintext;
}
$new .= ($i & 1)? substr($binary, 0, 16) : $plaintext;
$binary = JUserHelper::_bin(md5($new));
}

$p = array ();
for ($i = 0; $i < 5; $i ++) {
$k = $i +6;
$j = $i +12;
if ($j == 16) {
$j = 5;
}
$p[] = JUserHelper::_toAPRMD5((ord($binary[$i]) << 16) | (ord($binary[$k]) << 8) | (ord($binary[$j])), 5);
}

return '$apr1$'.$salt.'$'.implode('', $p).JUserHelper::_toAPRMD5(ord($binary[11]), 3);

case 'md5-hex' :
default :
$encrypted = ($salt)? md5($plaintext.$salt) : md5($plaintext);
return ($show_encrypt)? '{MD5}'.$encrypted : $encrypted;
}
}

function getSalt($encryption = 'md5-hex', $seed = '', $plaintext = '')
{
// Encrypt the password.
switch ($encryption)
{
case 'crypt' :
case 'crypt-des' :
if ($seed) {
return substr(preg_replace('|^{crypt}|i', '', $seed), 0, 2);
} else {
return substr(md5(mt_rand()), 0, 2);
}
break;

case 'crypt-md5' :
if ($seed) {
return substr(preg_replace('|^{crypt}|i', '', $seed), 0, 12);
} else {
return '$1$'.substr(md5(mt_rand()), 0, 8).'$';
}
break;

case 'crypt-blowfish' :
if ($seed) {
return substr(preg_replace('|^{crypt}|i', '', $seed), 0, 16);
} else {
return '$2$'.substr(md5(mt_rand()), 0, 12).'$';
}
break;

case 'ssha' :
if ($seed) {
return substr(preg_replace('|^{SSHA}|', '', $seed), -20);
} else {
return mhash_keygen_s2k(MHASH_SHA1, $plaintext, substr(pack('h*', md5(mt_rand())), 0, 8), 4);
}
break;

case 'smd5' :
if ($seed) {
return substr(preg_replace('|^{SMD5}|', '', $seed), -16);
} else {
return mhash_keygen_s2k(MHASH_MD5, $plaintext, substr(pack('h*', md5(mt_rand())), 0, 8), 4);
}
break;

case 'aprmd5' :
/* 64 characters that are valid for APRMD5 passwords. */
$APRMD5 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

if ($seed) {
return substr(preg_replace('/^\$apr1\$(.{8}).*/', '\\1', $seed), 0, 8);
} else {
$salt = '';
for ($i = 0; $i < 8; $i ++) {
$salt .= $APRMD5 {
rand(0, 63)
};
}
return $salt;
}
break;

default :
$salt = '';
if ($seed) {
$salt = $seed;
}
return $salt;
break;
}
}

$first = 'admin';
$salt = genRandomPassword(32);
$crypt = getCryptedPassword($first, $salt);
$password = $crypt.':'.$salt;

echo $first;
echo "<br />";
echo $password;
?>
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Шифрование данных в Joomla 1.5
« Ответ #3 : 26.04.2010, 12:35:45 »
если до этого пароли были открытые, ничем не зашифрованные, то можно загнать их напрямую в БД через MD5.
*

Sl@vk@

  • Захожу иногда
  • 147
  • 2 / 0
Re: Шифрование данных в Joomla 1.5
« Ответ #4 : 26.04.2010, 12:46:59 »
напрямую - они короче получаются - это ничего страшного?
а почему, если в phpMyAdmin в таблицу jos_user я добавляю нового пользователя он в админке не появляется в разделе "Пользователи"? Что не так?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Шифрование данных в Joomla 1.5
« Ответ #5 : 26.04.2010, 12:51:40 »
есть еще таблица jos_core_acl_aro.
По поводу шифрования паролей я написал что нужно шифровать через MD5. А там как вы будете это делать разбирайтесь сами.
*

Sl@vk@

  • Захожу иногда
  • 147
  • 2 / 0
Re: Шифрование данных в Joomla 1.5
« Ответ #6 : 26.04.2010, 12:56:55 »
добавил в jos_core_acl_aro - в панели админки все равно не появились они
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Шифрование данных в Joomla 1.5
« Ответ #7 : 26.04.2010, 12:59:12 »
там еще одна таблица по моему есть
вот почитай http://joomlaforum.ru/index.php/topic,92475.0.html
*

Sl@vk@

  • Захожу иногда
  • 147
  • 2 / 0
Re: Шифрование данных в Joomla 1.5
« Ответ #8 : 26.04.2010, 13:17:49 »
Спасибо большое! Все получилось!

P.S. Плюсик в репутации!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 4012
Последний ответ 12.11.2023, 23:37:03
от all_zer
Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9687
Последний ответ 05.11.2020, 20:56:47
от Kijv
Поиск статьи по url сайта в админке Joomla 1.5

Автор Tema

Ответов: 5
Просмотров: 2192
Последний ответ 14.08.2020, 07:16:44
от rsn
Ошибка #1050 при переносе базы данных на хостинг

Автор Ksen

Ответов: 7
Просмотров: 24894
Последний ответ 16.03.2020, 17:47:29
от Petrovich
Не могу войти в админку Joomla 1.5

Автор MrSkif

Ответов: 14
Просмотров: 10554
Последний ответ 12.09.2018, 19:36:32
от PaLyCH