VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Как обойти проверку прав при выполнении задач в cron?
0
Столкнулся с такой проблемой, вернее не проблемой, а фичей, но она не позволяет правильно выполнить функцию.
У меня есть функция, которая создает метки в темах на основании контекста.
Эта функция работает и все создается. Для этого я на хук newpost_complete повесил вызов этой функции и потом вызов стандартной функции аdd_tags_to_thread.
Но мне надо в cron запустить процесс для обработки не новых сообщений, а уже существующих. Я создал задачу, создал файл запуска. В момент начала выполнения все запускается и выполняется в том числе и стандартная функция add_tags_to_thread. Я проверил.
Но если выполняется в автоматическом режиме, почему то не отрабатывает валидация меток. Я просмотрел код этой функции и кажется понял, что дело в том, что при валидации происходит проверка прав пользователя создающего метки $vbulletin->userinfo['userid'].
В случае написания поста, валидация идет по пользователю писавшему пост, при выполнении задачи принудительно (в ручном режиме), валидация проходит от администратора. а вот если в автомате...
Может быть такое и как это побороть?
Или надо писать свои функции проверок и занесения в базу... очень не хочется.
В файле functions_newpost.php в функции fetch_valid_tags наверно где то 870 строка, там есть запрос и ограничение
WHERE threadid = " . intval($threadinfo['threadid']) . " AND userid = " . $vbulletin->userinfo['userid']
SMak044 добавил 23.10.2009 в 00:09
Я проверил от какого пользователя запускается cron. Лог показывает "0"
Last edited by SMak044 : 10-23-2009 at 01:09 AM.
Reason: Добавлено сообщение
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,715
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 7723
1
если перед этим кодом есть хук, прицепи к нему код, жестко указывающий ID узера от которого будет производиться запуск задачи
Когда создаю тему сам то получается вот такое:
check_browser_perms => 1
vbulletin->userinfo['permissions']['genericpermissions'] => 2147483583
vbulletin->bf_ugp_genericpermissions['cancreatetag'] => 1073741824
При выполнении задачи не в автоматическом, а в путем "Выполнить сейчас" то так же как и при создании темы:
check_browser_perms => 1
vbulletin->userinfo['permissions']['genericpermissions'] => 2147483583
vbulletin->bf_ugp_genericpermissions['cancreatetag'] => 1073741824
Если честно, то не могу понять этого условия.
Дело в том, что при формировании валидных меток, эта проверка создает массив меток, которые в последствии исключаются из валидных.
Что сделать, что бы условие не срабатывало?
SMak044 добавил 23.10.2009 в 02:53
Поборол.
Правда не очень красиво просто в файле cron указал указал:
$vbulletin->userinfo['userid'] = '1';
$vbulletin->userinfo['permissions']['genericpermissions'] = 2147483583;
Но понимаю, что это не совсем правильно. Чем это чревато на реальной системе?
Не является ли это дырой?
SMak044 добавил 23.10.2009 в 03:38
Сделал все через настройки в админке.
Last edited by SMak044 : 10-23-2009 at 04:38 AM.
Reason: Добавлено сообщение
@Yoskaldyr
Специалист
Join Date: Jan 2007
Posts: 543
Версия vB: 4.0.x
Reputation:
Professional 556
Репутация в разделе: 166
1
SMak044, Самый правильный вариант изменить биты $vbulletin->userinfo['permissions']['genericpermissions'] для разрешения добавления и изменения тегов, перед запуском стандартной функции булки (конечно предварительно сохранив текущее значение $vbulletin->userinfo['permissions']['genericpermissions']). После чего в конце своего скрипта вернуть права в исходное значение.
Возвращать надо, потому что после твоего скрипта могут другие крон задачи выполняться и им могут понадобится права (самой булке вряд-ли, но каким либо хакам может быть)
@SMak044
Эксперт
Join Date: May 2008
Награды в конкурсах:
Posts: 1,764
Версия vB: 3.8.4
Пол:
Reputation:
Expert 1705
Репутация в разделе: 132
0
Yoskaldyr, Гммм не подумал, так и сделаю. Это правильно. Спасибо!