сначала немного злой преамбулы...
===
В связи с тем, что гугол
заставил многих перейти с HTTP на HTTPS, у этих "многих" добавилось головняка (помимо получения/подключения сертификатов, телодвижений в хтаксесс и/или апаче/нгинкс) с контентом в постах, который по прежнему передается через "небезопасный" (по мнению супер сцуко компетентного гугола) протокол
и если свои ссылки можно поправить парой запросов в БД, то основная проблема, что делать с теми имгхостингами, которые проигнорили или забили на "китайские предупреждения" гугола и отдают загруженные картинки через HTTP?
скрипт из аттача, на какое то время решит проблему (ну пока гугол не заставит весь интернет перейти на https)
он проксирует все картинки с внешних ресурсов "через себя", т.е. гугол будет видеть в постах ссылки с вашим http
s протоколом, хоть картинка и будет находиться на ресурсе с http
пара скринов для примера

в данном случае, yandex - внешний источник, по отношению к моему сайту/форуму/ресурсу
поэтому картинки из этого источника передаются через свой скрипт
================

здесь, картинка передается через протокол HTTPS
передаем ее в браузер не используя свой скрипт
================

в этом случае, ресурс vbsupport.ru добавлен в "белый список" (см. пояснения ниже)
поэтому и передается как есть, без использования прокси-скрипта
================

в этом случае, картинка "у себя", поэтому показываем ее как есть
для использования скрипта, понадобится редактирование функции
handle_bbcode_img_match() из файла парсера ббкодов воблы
includes/class_bbcode.php
итак...
загружаем скрипт imgproxy.php (из аттача) в корень форума
находим указанную выше функцию и заменяем ее всю, на этот код
PHP Code:
function handle_bbcode_img_match($link, $alt = '')
{
$link = $this->strip_smilies(str_replace('\\"', '"', $link));
// remove double spaces -- fixes issues with wordwrap
$link = str_replace(array(' ', '"'), '', $link);
static $current_url, $current_host, $allowed;
$do_proxy = true;
if (!isset($current_url))
{
$current_url = @parse_url($this->registry->options['bburl']);
$current_host = preg_replace('#:(\d)+$#', '', $current_url['host']);
$allowed = array();//preg_split('#\s+#', $this->registry->options['kr_external_links_whitelist'], -1, PREG_SPLIT_NO_EMPTY);
$allowed[] = preg_replace('#^www\.#i', '', $current_host);
$allowed[] = preg_replace('#^www\.#i', '', $current_url['host']);
}
$target_url_parsed = @parse_url($link);
$target_url = $target_url_parsed['host'];
if($target_url_parsed['scheme'] == 'https')
{
$do_proxy = false;
}
if($do_proxy)
{
foreach ($allowed AS $host)
{
if(stripos($target_url, $host) !== false)
{
$do_proxy = false;
break;
}
}
}
if($do_proxy)
{
$link = $this->registry->options['bburl'] . '/imgproxy.php?i=' . rawurlencode($link);
}
return '<img src="' . $link . '" border="0" alt="" />';
}
обратить внимание на строку
PHP Code:
$allowed = array();//preg_split('#\s+#', $this->registry->options['kr_external_links_whitelist'], -1, PREG_SPLIT_NO_EMPTY);
кусок кода закомментирован
это для тех, у кого установлен хак
Закрытие/редирект внешних ссылок
и если таки он установлен, можно раскомментировать строку
*, что бы была возможность оптимизации работы скрипта
к примеру прописывать в настройку сервисы картинок, которые работают с протоколом HTTPS
чем меньше картинок проходит через скрипт и передается напрямую, тем быстрей загружается страница ресурса
*заменить всю строку на эту
PHP Code:
$allowed = preg_split('#\s+#', $this->registry->options['kr_external_links_whitelist'], -1, PREG_SPLIT_NO_EMPTY);
ссылка на новую версию скрипта
Для vB3.8.x
Проксирование изображений из внешних источников + кеширование (Proxy external images + cache) vB 3.8.x (11.5 Кб)
Для vB4.2.x
Проксирование изображений из внешних источников + кеширование (Proxy external images + cache) vB 4.2.x (10.4 Кб)
Внимание!
Поддержка скрипта оказывается на условиях
Donate:
скачали скрипт
И оплатили любую сумму на ваше усмотрение -
поддержка есть
в противном случае, все вопросы по данному скрипту игнорируются
Вэбмани
Paypal в ЛС
Paypal USD
Paypal RUB
Paypal EUR