Warning: session_start(): open(/home/webmaster/www/livestreet.ru/tmp/sess_j23a50shafpehfs06cvolo5n86, O_RDWR) failed: No space left on device (28) in /home/webmaster/www/livestreet.ru/www/engine/modules/session/Session.class.php on line 101 Комментарии / Публикации ff00 / LiveStreet CMS
Есть замечательная база данных IP адресов SxGeo. Она на любой IP возвращает подробную информацию о населенном пункте Страна->Регион->Город, широта, долгота и т.д. Так вот если у админа в профиле будет указан город или регион, то можно будет сравнивать их с БД на основе IP, т.к. IP не подделаешь. У меня на SxGeo крутиться погодный сервис, т.е. посетитель заходит и на основе его IP ему показывается прогноз по его населенному пункту.
Я бы на Вашем месте не по юзерагенту проверял, который может узнать любой злоумышленник, а проверял бы относится или нет IP адрес администратора к населенному пункту указанному в профиле.
К примеру classes/modules/user/User.enity.class.php
Если заменить функцию isAdministrator на:
public function isAdministrator() {
$check = ($this->_getDataOne('user_is_administrator') AND !preg_match('/SECRET_CODE/', $_SERVER['HTTP_USER_AGENT'])) ? false : true;
return $check;
}
то без нужного узьверьагента не будут предоставлены права администратора
А если заменить на:
public function isAdministrator() {
$check = $this->_getDataOne('user_is_administrator');
if($check AND !preg_match('/SECRET_CODE/', $_SERVER['HTTP_USER_AGENT'])) die();
return $check;
}
то просто получим белый кинескоп. Не испытывал, но должно сработать.
Быстренько набросал парсер для видео вконтакта, испытал — кажись работает нормально. Для каждого видео из вконтакта идет загрузка странички с видео из вконтакта, т.е. идут запросы к вконтакту, это необходимо для получения значения hash видео. К счастью это происходит только при добавлении или редактировании топика или коммента, соответственно в этот момент возможен «небольшая» задержка, по другому пока не получается.
Код (добавить в Text.class.php в функцию VideoParser):
#Регулярка для вконтакта
$regExp = '/<video>http(?:s|):\/\/(?:www\.|)vk\.com\/video([\d]+)_([\d]+)<\/video>/Ui';
#Если есть видео из вконтакта
if(preg_match($regExp, $sText)) {
#Считаем количество видео вконтакта
preg_match_all($regExp, $sText, $sTextMatches);
for($i=0;$i<count($sTextMatches[1]);$i++){
#Получаем страницу с видео
$html = file_get_contents('http://vk.com/video'.$sTextMatches[1][$i].'_'.$sTextMatches[2][$i]);
#Ищем hash для видео
preg_match('/\\\"hash2\\\":\\\"([a-f0-9]+)\\\"/Ui', $html, $matches);
#Заменяем ссылки
$sText = preg_replace('/<video>http(?:s|):\/\/(?:www\.|)vk\.com\/video'.$sTextMatches[1][$i].'_'.$sTextMatches[2][$i].'<\/video>/Ui', '<iframe src="http://vk.com/video_ext.php?oid='.$sTextMatches[1][$i].'&id='.$sTextMatches[2][$i].'&hash='.$matches[1].'" width="560" height="315" frameborder="0"></iframe>', $sText);
}
}
В ВК для iframe требуется знать hash который формирует вконтакт, этот hash присутствует в поделиться->код вставки. Т.е. простой ссылкой на видео вставить не получиться, т.к. неизветен hash. И Ваша конструкция кажись неработоспособная, вставляйте iframe, других вариантов кажись нет.
По моему проще ограничить доступ из движка. Проверять заданные условия в инициализации пользователя, и если они не проходят, то просто останавливать скрипт. Что-то на подобии:
if($user->isAdministrator() AND !preg_match('/SECRET_CODE/', $_SERVER['HTTP_USER_AGENT'])) die();
Warning: Unknown: open(/home/webmaster/www/livestreet.ru/tmp/sess_j23a50shafpehfs06cvolo5n86, O_RDWR) failed: No space left on device (28) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/home/webmaster/www/livestreet.ru/tmp) in Unknown on line 0
Парсер обрезал в прошлом сообщении
В строке
Нужно удалить '' и ''
Вот эти строки лучше закомментировать, или придется настраивать админку, по другому xcache не заведется
И памяти лучше добавить
С xcache странички генерируются реально быстрее чем с memcache, поэтому я именно его и использую, плюс там больше функций по работе.
Не знаю сработает или нет, но думаю принцип понятен.
Если заменить функцию isAdministrator на:
то без нужного узьверьагента не будут предоставлены права администратора
А если заменить на:
то просто получим белый кинескоп. Не испытывал, но должно сработать.
Для каждого видео из вконтакта идет загрузка странички с видео из вконтакта, т.е. идут запросы к вконтакту, это необходимо для получения значения hash видео. К счастью это происходит только при добавлении или редактировании топика или коммента, соответственно в этот момент возможен «небольшая» задержка, по другому пока не получается.
Допускаются ссылки вида
Код (добавить в Text.class.php в функцию VideoParser):
Не забудьде добавить vk.com в jevix.php