Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 "А как сделать..." » reg_invites :: Плагин+хак для регистрации по инвайтам » 2012-10-06 22:06:48

wget
Ответов: 4

Скриншот: http://d.pr/i/pF0G
Еще достаточно сырой плагин, не стесняйтесь отписываться о багах.
Установка.
В файле engine/plugins/auth_basic/auth_basic.php:
После строчек:

LoadPluginLang('auth_basic', 'auth','','auth');

                $error = 0;
                $userid = 0;
                $values['login'] = trim($values['login']);
                /*
                 * reg_invites by wget
                 */
                $values['invite'] = trim($_POST['invite']);
                if (pluginGetVariable('reg_invites', 'enabled') && !($mysql->record('SELECT `id` FROM '.uprefix.'_invites WHERE `invite`='.db_squote($values$
                        LoadPluginLang('reg_invites', 'config','','',':');
                        $msg = $lang['reg_invites:invalidInvite'];
                        return 0;
                }
                /*
                * /end reg_invites
                */

Дальше в той же функции перед:

return ($userid>0)?$userid:1;

но после "}" вставляем:

                /*
                 * reg_invites by wget
                 */
                if (pluginGetVariable('reg_invites', 'enabled') && $userid) {
                        $mysql->result("UPDATE ".uprefix."_invites SET `userid`='".$userid."' WHERE `invite`=".db_squote($values['invite'])." LIMIT 1;");
                }
                /*
                * /end reg_invites
                */

В шаблоне registration.tpl после {entries} но перед [captcha]:

<tr>
<td width="50%" style="padding: 5px;" class="contentEntry1">Инвайт<br /><small>Инвайт - это приглашение для регистрации на данном ресурсе</small></td>
<td width="50%" style="padding: 5px;" class="contentEntry2"><input type="text" name="invite"/></td>
</tr>

И собственно ставим сам плагин.
http://dev.minehell.ru/dl/reg_invites.zip
http://d.pr/f/U9jf
А, ну и хотел предложить добавить мой код в оффициальный свн, имхо - лишним не будет

#2 Запросы плагинов » bb_syntax :: Подсветка кода » 2012-10-03 22:55:21

wget
Ответов: 5

Оформил в качестве плагина, подсветка осуществляется с помощью GeSHi. Поддерживает огромное множество языков.
Скриншот:
http://d.pr/i/HwDL
Установка:
В css вашего шаблона добавить:

/*geshi*/
.geshi-syn ol {display: inline-block;}

И установить плагин в панели. Использование:
[ syntax=php ]<?php die(); ?>[ /syntax ]
Ссылка на загрузку:
http://dev.minehell.ru/ngcms/engine/plu … syntax.zip
http://d.pr/f/U9jf

#3 Re: Страницы плагинов » [ГОТОВЫЙ ПЛАГИН] Akismet Antispam » 2012-09-28 19:31:53

есть альтернативный сервер - http://antispam.typepad.com/
для него сервер в настройках плагина - api.antispam.typepad.com, ключ получать на сайте.
после долгого ожидания (~20 дней, ну вообще ***дец) ответа от поддержки команды Yandex.CleanWeb API, возможно таки перепишу плагин под него.

#4 Re: "А как сделать..." » Запись файлов и картинок на поддомен » 2012-09-16 14:23:09

может настройками php запрещен доступ в папки другого сайта? (open_basedir или т.п.)

#5 Страницы плагинов » [ГОТОВЫЙ ПЛАГИН] Akismet Antispam » 2012-08-30 17:17:26

wget
Ответов: 12

Перенесите пожалуйста тему в раздел "Страницы плагинов", там создать тему прав не хватает.
Наименование: comments_akismet
Описание: Плагин проверяет добавляемые комментарии на спам с помощью сервиса Akismet.
Текущая версия: 0.1 [выпуск: 30.08.2012]

Функции
- Проверка сообщения на спам. В случае, если akismet вынесет положительный вердик, комментарий добавлен не будет.

Планы на будущее:
- Добавлять спам-комментарии с пометкой о том, что комментарий является спамом.

Как получить API-ключ:
Для сервера rest.akismet.com:
Идем по ссылке https://akismet.com/signup/ и выбираем режим Personal.
Ползунок цены выкручиваем на минимум, получится $0.00/yr. Вводим свои
данные, жмем Continue. На указанную почту придет API-ключ.

Скриншоты:
cb2e29b41f.png
c22bf52a22.png
Ссылка на скачку:
http://dev.minehell.ru/dl/comments_akismet.zip
http://anonymousdelivers.us/20051
он же во вложении

#6 Re: "А как сделать..." » Антиспам на основе Яндекс.Чистый веб » 2012-08-29 13:12:40

Knopik пишет:

wget, выводить по аналогии с выводом в полную новость
сам фильтр посмотри comments\inc\comments.lib.php

не совсем понял, мне же нужно перехватывать не вывод, а добавление комментария. если комментарий посчитается спамом, то мы выводим капчу.

//..понял

#7 "А как сделать..." » Антиспам на основе Яндекс.Чистый веб » 2012-08-29 01:35:07

wget
Ответов: 2

Вобщем, я написал проверку комментария на спам при отправке ( на основе http://api.yandex.ru/cleanweb/ ). Но вот добиться того, чтобы API комментарий посчитал спамом у меня не получилось, посему прошу о помощи. Свои правки я конечно же выложу в общий доступ и распишу где как и что править, чтобы заработал антиспам.

dev.minehell.ru /ngcms/none/gygygygy-prikolno-yyyy.html - попробуйте добиться. пока что нужно вводить обе капчи (старую я отключу как будет дебаг). У кого получится, отпишите сюда какой комментарий вы писали и какой email вводили (имя пользователя не учитывается). Если так и не разберемся с этим апи - сделаю под другой.

//кстати, сначала хотел оформить как плагин, но не понял как перехватить добавление комментария, может кто с этим помочь?
p.s. извините, если не тот раздел.

#8 Re: Релизы версий » Версия 0.9.3 Release » 2012-08-29 01:28:23

irbees2008 пишет:
wget пишет:
irbees2008 пишет:

при переходе в полную новость

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@main-hosting.eu and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

версия [17.08.2012] 0.9.3 + SVN [SVN1047]

mod_rewrite установлен?

а по подробнее можно?что это mod_rewrite,и где его искать

апачевский модуль. вообще, если можешь, скинь error log сюда.
вообще лучше отпиши в техподдержку хостинга, там должны помочь

#9 Re: FAQ » Подсветка синтаксиса в статьях с использованием GeSHi » 2012-08-28 20:46:06

Для начала был выбран js-скрипт для подсветки кода в браузере - jquery-syntaxhighlighter. Он был исправлен под себя, перелопачен (подправлены стили и скрипт). Скачаем и распакуем в папку с шаблоном наш скрипт. Сразу скажу, что он требует jquery, так что если ваш шаблон не использует его, то его тоже надо подключить. Делается это так:

<head>
...
<script type="text/javascript" src="{tpl_url}/syntaxhighlighter/scripts/jquery-1.4.2.min.js"></script>
...
</head>

После того, как мы подключили JQuery, нужно подключить Highlighter и проинициализировать его:

...
<подключение JQuery>
<script type="text/javascript" src="{tpl_url}/syntaxhighlighter/scripts/jquery.syntaxhighlighter.min.js"></script>
<script type="text/javascript">$.SyntaxHighlighter.init();</script>
...

Готово! Больше никаких правок в шаблон вносить не надо.
Теперь открываем engine/includes/classes/parse.class.php. Наш тег [ code ] будет использоваться так -  [ code=<язык> ], поэтому будем изменять регулярку. Ищем такой фрагмент:

		// Special BB tag [ code] - blocks all other tags inside
		while (preg_match("#\[code\](.+?)\[/code\]#ies", $content, $res)) {
			$content = str_replace($res[0], '<pre>'.str_replace(array('[', '<'), array('[', '<'), $res[1]).'</pre>', $content);
		}

И меняем на:

		// Special BB tag [ code] - blocks all other tags inside
		// assd: replaced: [code\] => [code=(.*?)\] | '<pre>' => '<pre class="language-'.$res[1].'">' | $res[1]).'</pre>' => $res[2]).'</pre>'
		while (preg_match("#\[code=(.*?)\](.+?)\[/code\]#ies", $content, $res)) {
			$content = str_replace($res[0], '<pre class="language-'.$res[1].'">'.str_replace(array('[', '<'),  array('[', '<'), $res[2]).'</pre>', $content);
			$content = str_replace('<br>', "\n", $content);
		}

Далее ищем:

		$content	=	preg_replace("/<code>(.*?)<\/code>/es", "phphighlight('$1')", $content);
		$content	=	str_replace("\n</p>\n", "</p>", $content);

И добавляем после этих строк:

		#Added to prevent adding <br />s in highlighted code
		preg_match_all("#<pre class=\\\"brush: (.*?)\\\">(.+?)</pre>#ies", $content, $ress);
		foreach ($ress as $res) {
			$content = str_replace($res[0],str_replace('<br />', "\n", $res[0]),$content);
		}

Все, сохраняем. После этих нехитрых манипуляций подсветка кода должна заработать.
1d16bef878.png
няшка.

//by wget

#10 Re: Релизы версий » Версия 0.9.3 Release » 2012-08-28 15:18:24

irbees2008 пишет:

при переходе в полную новость

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@main-hosting.eu and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

версия [17.08.2012] 0.9.3 + SVN [SVN1047]

mod_rewrite установлен?

#11 Re: Вопросы функционирования системы в целом » Уязвимости и замечания по админке » 2012-08-27 21:16:01

ROZARD пишет:
wget пишет:
ROZARD пишет:

wget, Ты это к тому что не фильтруется?

К тому, что да. Я же вроде бы достаточно расписал, даже привел конкретный запрос.

Хотел написать, что не критично, но нет чуть критично. Одно тянет другое.
Спасибо.

SQL-иньекция это всегда критично. А так, в целом, движок отличный.

#12 Re: Вопросы функционирования системы в целом » Уязвимости и замечания по админке » 2012-08-27 21:01:39

ROZARD пишет:

wget, Ты это к тому что не фильтруется?

К тому, что да. Я же вроде бы достаточно расписал, даже привел конкретный запрос. Или что-то пояснить надо?

#13 Re: Вопросы функционирования системы в целом » Уязвимости и замечания по админке » 2012-08-27 20:35:14

ROZARD пишет:

Проверил, всё там фильтруется.

if (!is_array($row = $mysql->record("select * from ".prefix."_news where id = ".db_squote($id),1))) {

Скуля в запросе выбора комментов, смотри сообщение об ошибке.
ynJ0.png
p.s. (хотя я не уверен, что это именно тот кусок кода)
/engine/includes/inc/lib_admin.php:264
foreach ($mysql->select("select * from ".prefix."_comments where post=".$nrow['id']) as $crow) {
..=>понял, что не тот.
/engine/plugins/comments/comments.php:32
foreach ($mysql->select("select * from ".prefix."_comments where post='".$newsID."' order by id") as $crow) {

#14 Re: "А как сделать..." » Как сделать автоформатирование текста при добавлении данных о себе? » 2012-08-27 18:40:15

/engine/plugins/uprofile/uprofile.php, 95ая строка:

'info'          =>      secure_html($urow['info']),

замени на:

'info'          =>      nl2br(secure_html($urow['info'])),

#15 Re: "А как сделать..." » Как сделать обязательным для заполнения поле для ввода E-mail? » 2012-08-27 17:45:41

Файл /engine/plugins/uprofile/uprofile.php, ищешь:

        if (!is_array($userROW)) {
                msg(array("type" => "error", "text" => $lang['uprofile:msge_notlogged']));
                return;
        }

        $currentUser = $userROW;

после этого вставляешь:

        //Now checking if field 'editemail' is valid email address
        if (!filter_var($_POST['editmail'], FILTER_VALIDATE_EMAIL)) {
                msg(array("type"=>"error", "text"=>"Email is mandatory field! "));
                return;
        }

Будет вылазить:
Ошибка: Email is mandatory field!

#16 Вопросы функционирования системы в целом » Уязвимости и замечания по админке » 2012-08-27 16:34:11

wget
Ответов: 11

На днях увидел ngCms (последний night build) (за что отдельное спасибо beliy) - хотелось бы отписать о замечаниях.
Первое.
Скуля в админке - это фейл. Хотя из админки есть возможность бэкапить БД и таким образом иметь полный доступ к ней, она может нехило помочь в заливке шелла (особенно, если ngcms работает от юзера root или любого другого mysql юзера с правами на запись файлов). Например, таким запросом заливается скрипт, выполняющий phpinfo:

/ngcms/engine/admin.php?mod=news&action=edit&id=1' UNION SELECT 1,2,3,4,5,6,7,8,9,'<?php phpinfo(); ?>',11 INTO OUTFILE '/var/www/ngcms/uploads/files/222.php' -- '

Сразу успокою, что использовать ее можно только с правами админа (для заливки шелла - только с определенными правами юзера бд), но если у вас утащат базу, то все плохо.
Как решение (для пользователей) - хотя бы с помощью .htaccess запретить выполнение скриптов в директории uploads, с правами на остальные директории быть внимательнее.

Второе.
Редактирование шаблонов. Ну это вообще просто о***ть. Переходим по адресу:

/ngcms/engine/admin.php?mod=templates&action=edit&filename=index.php&where=site&theme=../&skin=

И... редактируем index.php. Тот самый, что в корне /ngcms/. Разработчики, прикрутите фильтрацию слэшей и лишних точек, а так же прослеживайте, чтобы расширение имени шаблона было строго ".tpl".

Третье. Не столь значительное.
Пароли хранятся в базе в md5(md5($password)). Не кажется, что слабовато? Особенно после недавних скандалов с утечек паролей с last.fm и linkedin. Сейчас рекомендуют использовать bcrypt. Ну и хотя бы использовать соль.

Ну и еще, в некоторых местах в админке, если GET параметр, например, id=1, изменить на id[]=1, выскочит ошибка БД.
Пока что все. Буду дополнять по мере нахождения уязвимостей.

p.s. извините, возможно написал немного агрессивно.

Подвал раздела

Работает на FluxBB