+20.99
333 читателя, 272 топика

Модуль гео, сломалось отображение местоположения!

Раньше все было отлично до какого-то момента.
Сейчас на странице пользователя местоположение отображается прочерком, awesomescreenshot.com/06c15lfied
Но в настройках все отлично — awesomescreenshot.com/02315lfr62
Так же в блоке городов и стран все отлично учитывается и считается — awesomescreenshot.com/0f715lft28

Кто знает почему сломалось?

В логах sql.log есть вот такая ошибка:
[2013-04-11 17:08:11][15950][7253][ERROR][SQL Error: Table 'name_www.prefix_country_user' doesn't exist at /www/name/www/plugins/aceadminpanel/classes/modules/admin/mapper/Admin.mapper.class.php line 698
Array
(
    [code] => 1146
    [message] => Table 'name_www.prefix_country_user' doesn't exist
    [query] => DELETE FROM prefix_country_user WHERE user_id=1959
    [context] => /www/name/www/plugins/aceadminpanel/classes/modules/admin/mapper/Admin.mapper.class.php line 698
)
]


Пробовал удалял даже aceadminpanel — не помогло, так же чистил кеш.

Если список приглашенных большой, то жрет прилично много ресурсов сервера!

Если список приглашенных большой, то жрет прилично много ресурсов сервера!

Как тут — awesomescreenshot.com/0cc14fwp7d

Memory
memory limit: 256M
memory usage: 17.902 M
peak usage: 131.500 M

Как оптимизировать?

Ноль фото в фотосете

если поставить в конфиге:
$config['module']['topic']['photoset']['count_photos_min'] = 0;


… то при попытке сохранить фотосет без загруженных фототграфий выдает:
Notice: Undefined offset: 0 in /home/delfi171/public_html/betshot.ru/classes/actions/ActionPhotoset.class.php on line 492

Fatal error: Call to a member function getId() on a non-object in /home/delfi171/public_html/betshot.ru/classes/actions/ActionPhotoset.class.php on line 494


p.s.: А почему пользователь обязан загружать фото? Не лучше при отсутствии загруженных фото просто не выводить блок с фотографиями в фотосете? как это допилить??

Отправитель письма при использовании sendmail

При отправки писем движком LiveStreet используя sendmail есть один нюанс, что отправителем письма (Return-Path) является какой-нибудь nobody@localhost или www-data@localhost или ещё что-то в подобном духе. (всё зависит от настроек сервера, но при виртуальном хостинге возможность исправить настройки сервера отсутствуют).

Изза чего письма могут оседать на некоторых спам фильтрах. или в некоторых webmailах или почтовых программах высвечиваться типа ваш@мейл On Behalf Of: nobody@localhost, что в принципе не кошерно.

Решение проблемы достаточно простое. (я думаю этот момент стоит внести в штатную сборку LiveStreet)

в файле engine/modules/mail/Mail.class.php

176 строка файла
в функции Init() находим
$this->oMailer->From=$this->sFrom;

и добавляем
$this->oMailer->Sender=$this->sFrom;


т.е. вот так выглядить функция после исправлений
	public function Init() {
		/**
		 * Настройки SMTP сервера для отправки писем
		 */
		$this->sHost     = Config::Get('sys.mail.smtp.host');
		$this->iPort     = Config::Get('sys.mail.smtp.port');
		$this->sUsername = Config::Get('sys.mail.smtp.user');
		$this->sPassword = Config::Get('sys.mail.smtp.password');
		$this->bSmtpAuth = Config::Get('sys.mail.smtp.auth');
		$this->sSmtpSecure = Config::Get('sys.mail.smtp.secure');
		/**
		 * Метод отправки почты
		 */
		$this->sMailerType=Config::Get('sys.mail.type');
		/**
		 * Кодировка писем
		 */
		$this->sCharSet=Config::Get('sys.mail.charset');
		/**
		 * Мыло от кого отправляется вся почта
		 */
		$this->sFrom=Config::Get('sys.mail.from_email');
		/**
		 * Имя от кого отправляется вся почта
		 */
		$this->sFromName=Config::Get('sys.mail.from_name');

		/**
		 * Создаём объект phpMailer и устанвливаем ему необходимые настройки
		 */
		$this->oMailer = new phpmailer();
		$this->oMailer->Host=$this->sHost;
		$this->oMailer->Port=$this->iPort;
		$this->oMailer->Username=$this->sUsername;
		$this->oMailer->Password=$this->sPassword;
		$this->oMailer->SMTPAuth=$this->bSmtpAuth;
		$this->oMailer->SMTPSecure=$this->sSmtpSecure;
		$this->oMailer->Mailer=$this->sMailerType;
		$this->oMailer->WordWrap=$this->iWordWrap;
		$this->oMailer->CharSet=$this->sCharSet;

		$this->oMailer->From=$this->sFrom;
		$this->oMailer->Sender=$this->sFrom; // 176 строка. фиксит return-path
		$this->oMailer->FromName=$this->sFromName;
	}

В заголовки отправлять 404 если по тегу нету топиков

Сейчас на ЛС есть «замечательная» возможность — если подставить любой тег, которого не существует:

http://livestreet.ru/tag/any_value


То показывается страница без топиков с кодом 200. Таким образом, если случайно где-то засветить такую ссылку, то она станет вполне адекватно индексироваться поисковиками.

Примечание:

«засветить» в данном контексте означает, что был топик с тегом «мывкиывиывиы», его проиндексировали ПС, потом топик отредактировали, невнятный тег удалили, но в кеше ПС эта ссылка осталась и будет там висеть вечно достаточно долго.

Нужно в ActionTag.class.php если не найдено топиков по тегу, то возвращать 404 или 301 на главную чтобы поисковики не индексировали отсутствующий тег.

Раскрытие директории в модуле сессий, часть 2

Что ж… модуль сессий в ЛС оказался слегка дырявым всего-навсего в пределах одного метода. Первая часть по раскрытию путей находится здесь, все тесты и описание будут приводится на основе исправленного модуля сессий из предыдущего топика.
В данном топике будет рассмотрено и исправлено 2 способа раскрытия путей на сайте под управлением ливстрит последней доступной версии (1.0.2).

Читать дальше →

Раскрытие директории в модуле сессий

В LiveStreet CMS последней версии (1.0.2) обнаружена уязвимость, которая раскрывает пути на сервере, связанная с модулем сессий. Ошибка связана с отсутствием проверки типа значения для установки нового id сессии при подмене User Agent.

Читать дальше →

Раскрытие директории в плагине «Sitemap»

В текущей версии плагина (0.4.0) Sitemap для LiveStreet CMS возможно раскрытие директории через вызов файла из директории /plugins/sitemap/tests/behat/features/bootstrap/FeatureContext.php, что приведет к ошибке php.

Читать дальше →