Парсер сайтов для phpbbEx

Board index phpBBex 1.x Поддержка

Description: У вас проблемы с phpBBex 1.x и вам необходима помощь? Спрашивайте здесь!
Forum rules: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть вопроса. Подробно описывайте проблему. Не забудьте указать версию phpBBex и какие моды установлены, по возможности добавьте скриншоты проблемы или ссылку на страницу с проблемой.
Moderator: Поддержка

Post #21by vbnm » 07.07.2014, 14:49

VEG wrote:проще сразу на PHP под конкретный источник информации писать
это,- да
но ведь есть стандартные сборки движков, на которые можно настроить парсинг один раз
причем, за счет использования библиотек для парсинга это сейчас сделать не сложно
если речь идет об источнике информаци

вопрос остается в том, как это внедрять в phpBBex, то ли это будет внутренний модуль, то ли это будет отдельный скрипт, который можно разместить где угодно.

И потом, какой дорогой идти при создании самого скрипта?
1)То ли мы просто напрямую копируем в БД нужную нам информацию используя СКЛ запросы.
2)То ли мы пользуемся набором функционала движка?
Автор RSS Ленты пошел вторым путем создав свой класс PHP в котором собрал то что ему было нужно.

Какой из вариантов более оптимален, в отношении нагрузки на сервер, безопасности, сложности исполнения?

VEG wrote:Я писал бота для fb2k.ru, который генерирует темы о новых плагинах, и внутри тем пишет сообщения об обновлениях этих плагинов
А можно его скачать и посмотреть внутренности?
Я пока в своих изысканиях дошел только до того, что размещено на гурупхпбб в теме об атоматическом создании тем.
Spoiler
https://wiki.phpbb.com/Using_phpBB3's_Basic_Funct ... sertingPostsandPrivateMessages

http://www.phpbbguru.net/community/topic21144.html
сам пробовал напрямую заливать данные в БД(этот путь в начале мне показался более простым), но пока не смог найти все необходимые таблицы, которые должны быть задействованы, чтобы создать тему, а затем и продолжить ее
оказывается этот процесс не такой простой, где-то должны срабатывать механизмы, которые регистрируют тему, 1- пост, а затем и ответы, и только тогда они появляются на форуме
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #22by Sumanai » 07.07.2014, 14:59

vbnm wrote:2)То ли мы пользуемся набором функционала движка?

Так лучше.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #23by vbnm » 07.07.2014, 15:25

Sumanai, да?
но есть одна загвоздка, которую пока не обойти
Сессии пользователя, от имени которого размещается сообщение, пусть даже это бот
И автор темы и последующие ответы идут под одним ником
даже, если при этом в БД автор ответа указан другой
Ведь на автомате ID пользоваеля берется из сессии и по нему определяется автор
Spoiler
<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin();
$auth->acl($user->data);
$user->setup();
это если мы хотим, чтобы был автор

вот для бота:
Spoiler
<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

навскидку я поробовал напрямую подключится к БД

Spoiler

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . '../config.' . $phpEx);

//Подключение к БД;
$db = mysql_connect("$dbhost","$dbuser","$dbpasswd");
mysql_select_db("$dbname",$db);
mysql_query("SET NAMES utf8");
нормально, конект есть, но теперь пришлось искать какие именно таблицы нужно заполнять?
навскидку пробовал так
мы создаем тему:
INSERT INTO `phpbb_topics`
INSERT INTO `phpbb_posts`

так мы реализуем оветы в теме:
INSERT INTO `phpbb_posts`

логика была простая, избежать вопросов связанный с сессиями и ID пользователя.

вот и думаю, просто нужно найти опред таблицы в БД, которые должны быть заполенны опред образом
тогда уже можно думать и о том, что скрипт может работать отдельно от движка
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #24by Sumanai » 07.07.2014, 15:33

vbnm wrote:Сессии пользователя, от имени которого размещается сообщение, пусть даже это бот

Зачем вам сессия? В БД пишется айди, никаких проблем с записью числа не должно быть.
Вы сами привели ссылки на гуру и вики, где это всё подробно объяснено.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #25by VEG » 07.07.2014, 15:54

Сессию для бота я создаю так:
Code: Select all
// Start session management
$user->session_begin();
$sql = 'SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . $bot_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$row['is_registered'] = true;
$db->sql_freeresult($result);
$user->data = array_merge($user->data, $row);
$auth->acl($user->data);

А вот сам постинг:
Code: Select all
   $poll = $uid = $bitfield = $options = '';
   $subject = utf8_normalize_nfc($title.' ['.implode('.',array_reverse(explode('-', $updated))).']');
   generate_text_for_storage($subject, $uid, $bitfield, $options, false, false, false);

   // ...

   $message = $plugin_row
      ? utf8_normalize_nfc("Вышла новая версия плагина: {$title} [" .implode('.',array_reverse(explode('-', $updated))). "]")
      : utf8_normalize_nfc($description . "\n" . 'Страница плагина: http://foobar2000.org/components/view/' . $plugin);
   generate_text_for_storage($message, $uid, $bitfield, $options, true, true, true);

   $data = array(
      'forum_id'            => $forum_id,      // The forum ID in which the post will be placed. (int)
      'topic_id'            => $plugin_row ? $plugin_row['topic_id'] : 0, // Post a new topic or in an existing one? Set to 0 to create a new one, if not, specify your topic ID here instead.
      'icon_id'            => false,         // The Icon ID in which the post will be displayed with on the viewforum, set to false for icon_id. (int)

      'enable_bbcode'         => true,         // Enable BBcode in this post. (bool)
      'enable_smilies'      => true,         // Enabe smilies in this post. (bool)
      'enable_urls'         => true,         // Enable self-parsing URL links in this post. (bool)
      'enable_sig'         => true,         // Enable the signature of the poster to be displayed in the post. (bool)

      'message'            => $message,      // Your text you wish to have submitted. It should pass through generate_text_for_storage() before this. (string)
      'message_md5'         => md5($message),   // The md5 hash of your message
      'bbcode_bitfield'      => $bitfield,      // Value created from the generate_text_for_storage() function.
      'bbcode_uid'         => $uid,         // Value created from the generate_text_for_storage() function.

      'post_edit_locked'      => 0,            // Disallow post editing? 1 = Yes, 0 = No
      'topic_title'         => $subject,      // Subject/Title of the topic. (string)
      'force_approved_state'   => true,         // Allow the post to be submitted without going into unapproved queue
      'enable_indexing'      => true,         // Allow indexing the post? (bool)

      'notify_set'         => false,
      'notify'            => false,
      'post_time'            => 0,            // Set a specific time, use 0 to let submit_post() take care of getting the proper time (int)
      'forum_name'         => '',            // For identifying the name of the forum in a notification email. (string)
   );
   $result = submit_post($plugin_row ? 'reply' : 'post', $plugin_row ? '' : $subject, $user->data['username'], POST_NORMAL, $poll, $data, true, true);
С наилучшими пожеланиями, Евгений
VEG M
Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months

Post #26by vbnm » 07.07.2014, 18:35

VEG, Спасибо, было бы легче если бы весь код был, а то логику не вижу.
Немного упростил код, потому что не совсем врубился, но тему с его помощью уже можно создать, терь надо думать , как ответы (риплики) включать, ну а затем, как под разными никами это все представить.
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #27by vbnm » 08.07.2014, 13:38

Пока весь код привел вот в такой вид, чтобы понять, как он работает:

Spoiler
Code: Select all
<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);

$bot_id = '62'; //выставляя ай-ди юзера мы присваеваем ему авторство постика

// Start session management

$user->session_begin();
$sql = 'SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . $bot_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$row['is_registered'] = true;
$db->sql_freeresult($result);
$user->data = array_merge($user->data, $row);
$auth->acl($user->data);

// Start  management

 
$title = 'Прива!'; //название темы
$plugin_row = 1; // значение 0 создает тему и пост ('reply' ,'post'), значение 1  создает ответ ('reply') в теме при этом необходимо определить ($topic_id) Ай-Ди темы
$message_pars = "67898 yabuf ct"; //постик, сообщение в теме
   // ...
   $poll = $uid = $bitfield = $options = '';
   $subject = utf8_normalize_nfc("$title");
   generate_text_for_storage($subject, $uid, $bitfield, $options, false, false, false);


   $message = $plugin_row
      ? utf8_normalize_nfc("$message_pars")
      : utf8_normalize_nfc($description . "\n" . '22888Страница плагина: http://foobar2000.org/components/view/' . $plugin);
   generate_text_for_storage($message, $uid, $bitfield, $options, true, true, true);


   
   $data = array(
      'forum_id'            => $forum_id = '2',      // The forum ID in which the post will be placed. (int)
      'topic_id'            => $topic_id = '47', //$plugin_row ? $plugin_row['topic_id'] : 3, // Post a new topic or in an existing one? Set to 0 to create a new one, if not, specify your topic ID here instead.
      'icon_id'            => false,         // The Icon ID in which the post will be displayed with on the viewforum, set to false for icon_id. (int)

      'enable_bbcode'         => true,         // Enable BBcode in this post. (bool)
      'enable_smilies'      => true,         // Enabe smilies in this post. (bool)
      'enable_urls'         => true,         // Enable self-parsing URL links in this post. (bool)
      'enable_sig'         => true,         // Enable the signature of the poster to be displayed in the post. (bool)

      'message'            => $message,      // Your text you wish to have submitted. It should pass through generate_text_for_storage() before this. (string)
      'message_md5'         => md5($message),   // The md5 hash of your message
      'bbcode_bitfield'      => $bitfield,      // Value created from the generate_text_for_storage() function.
      'bbcode_uid'         => $uid,         // Value created from the generate_text_for_storage() function.

      'post_edit_locked'      => 0,            // Disallow post editing? 1 = Yes, 0 = No
      'topic_title'         => $subject,      // Subject/Title of the topic. (string)
      'force_approved_state'   => true,         // Allow the post to be submitted without going into unapproved queue
      'enable_indexing'      => true,         // Allow indexing the post? (bool)
      //'topic_first_poster_name'  => $topic_first_poster_name = 'Мить',
      'notify_set'         => false,
      'notify'            => false,
      'post_time'            => 0,            // Set a specific time, use 0 to let submit_post() take care of getting the proper time (int)
      'forum_name'         => '',            // For identifying the name of the forum in a notification email. (string)
   );
   $result = submit_post($plugin_row ? 'reply' : 'post', $plugin_row ? '' : $subject, $user->data['username'], POST_NORMAL, $poll, $data, true, true);
   
  echo "$topic_id"."</br>";
 
if ($result = $plugin_row)
{
echo "Добавлен ответ в теме". "\n".($title);

}
else
{
echo "Создана новая тема: "."\n". ($title);
}
?>

появились вопросы:
1. как вытаскивать $topic_id после создания темы///
обращаться к БД?

то есть логика такая, после создания темы мы обращаемся к БД достаем там ID вновь созданной темы и заводим в цикл уже для ответов в этой же теме?

2. $plugin_row - идет, как php класс?
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #28by VEG » 08.07.2014, 13:48

$plugin_row — это обычный ассоциативный массив. Если у плагина уже есть тема — в таблице бота я сохраняю запись с ID темы, куда писать обновления. Если такая запись есть, то в $plugin_row хранится эта запись из базы. Если же плагина такого ещё нет, то $plugin_row = null. Там перед вызовом функции добавления каждая строчка почти откомментирована ведь. Заполняйте этот массив как вам нужно, вызывайте функцию — и она в зависимости от переданных данных будет создавать тему или ответ в заданной теме.
С наилучшими пожеланиями, Евгений
VEG M
Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months

Post #29by vbnm » 08.07.2014, 15:59

VEG, Сенкс, в принципе так и предположил, но уточнить все ж надо
у меня в этой строке
$plugin_row ? $plugin_row['topic_id'] : 3, // Post a new topic or in an existing one? Set to 0 to create a new one, if not, specify your topic ID here instead
постоянно выскакивает ошибка, что она содержи не (int) а (str)
на этом весь затык пока :smoke:
Last edited by vbnm on 08.07.2014, 16:14, edited 1 time in total.
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #30by Sumanai » 08.07.2014, 16:11

vbnm wrote:VEG, Секс,

Чего?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #31by vbnm » 08.07.2014, 16:15

Sumanai, :biggrin: очепятка, клава давно стерлась))

Added after 13 minutes 28 seconds:
vbnm wrote:постоянно выскакивает ошибка, что она содержи не (int) а (str)
хм, может это из-за версии php?
У меня на локале сейчас выставлен PHP 5.4

Added after 44 seconds:
Spoiler
Code: Select all
<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// Начиная с PHP 5.4
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #32by Sumanai » 08.07.2014, 16:43

vbnm wrote:хм, может это из-за версии php?

Вряд ли. Приведённый вами пример- лишь альтернативный синтаксис создания массивов, а не заменяющий.
Попробуйте явно указать тип переменной
Code: Select all
$plugin_row = (int)$plugin_row;
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #33by vbnm » 08.07.2014, 16:50

Sumanai, пробовал, не идет :smoke:
чего-то я не понимаю, надо найти чего
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #34by Sumanai » 08.07.2014, 16:53

Покажите конкретный текст ошибки и строку, на которую указывает ошибка, и +- 10 строк от неё.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #35by vbnm » 08.07.2014, 18:14

Sumanai, немного потерял этот момент. Сейчас все по-новой пытаюсь собрать.

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

SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 [1064]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

Spoiler
Code: Select all
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);

// Start session management
$user->session_begin();
$sql = 'SELECT * FROM ' . USERS_TABLE . ' WHERE user_id = ' . $bot_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$row['is_registered'] = true;
$db->sql_freeresult($result);
$user->data = array_merge($user->data, $row);
$auth->acl($user->data);

   $poll = $uid = $bitfield = $options = '';
   $subject = utf8_normalize_nfc($title.' ['.implode('.',array_reverse(explode('-', $updated))).']');
   generate_text_for_storage($subject, $uid, $bitfield, $options, false, false, false);

   // ...

   $message = $plugin_row
      ? utf8_normalize_nfc("Вышла новая версия плагина: {$title} [" .implode('.',array_reverse(explode('-', $updated))). "]")
      : utf8_normalize_nfc($description . "\n" . 'Страница плагина: http://foobar2000.org/components/view/' . $plugin);
   generate_text_for_storage($message, $uid, $bitfield, $options, true, true, true);
   
 
   $data = array(
      'forum_id'            => $forum_id ='2',      // The forum ID in which the post will be placed. (int)
      'topic_id'            => $plugin_row ? $plugin_row['topic_id'] : 0, // Post a new topic or in an existing one? Set to 0 to create a new one, if not, specify your topic ID here instead.
      'icon_id'            => false,         // The Icon ID in which the post will be displayed with on the viewforum, set to false for icon_id. (int)

      'enable_bbcode'         => true,         // Enable BBcode in this post. (bool)
      'enable_smilies'      => true,         // Enabe smilies in this post. (bool)
      'enable_urls'         => true,         // Enable self-parsing URL links in this post. (bool)
      'enable_sig'         => true,         // Enable the signature of the poster to be displayed in the post. (bool)

      'message'            => $message,      // Your text you wish to have submitted. It should pass through generate_text_for_storage() before this. (string)
      'message_md5'         => md5($message),   // The md5 hash of your message
      'bbcode_bitfield'      => $bitfield,      // Value created from the generate_text_for_storage() function.
      'bbcode_uid'         => $uid,         // Value created from the generate_text_for_storage() function.

      'post_edit_locked'      => 0,            // Disallow post editing? 1 = Yes, 0 = No
      'topic_title'         => $subject,      // Subject/Title of the topic. (string)
      'force_approved_state'   => true,         // Allow the post to be submitted without going into unapproved queue
      'enable_indexing'      => true,         // Allow indexing the post? (bool)

      'notify_set'         => false,
      'notify'            => false,
      'post_time'            => 0,            // Set a specific time, use 0 to let submit_post() take care of getting the proper time (int)
      'forum_name'         => '',            // For identifying the name of the forum in a notification email. (string)
   );
   $result = submit_post($plugin_row ? 'reply' : 'post', $plugin_row ? '' : $subject, $user->data['username'], POST_NORMAL, $poll, $data, true, true);
   ?>
может у вас получится найти решение
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #36by Sumanai » 08.07.2014, 18:59

vbnm wrote:там поэтапно будут вылазить ошибки начиная с

А если выше посмотреть? Включите дебаг на форуме, проще будет. Ошибка- $bot_id не определён. Добавьте
Code: Select all
$bot_id = 1;
Далее:
Code: Select all
[phpBB Debug] PHP Notice: in file [ROOT]/n.php on line 21: Undefined variable: title
[phpBB Debug] PHP Notice: in file [ROOT]/n.php on line 21: Undefined variable: updated
[phpBB Debug] PHP Notice: in file [ROOT]/n.php on line 27: Undefined variable: plugin_row
[phpBB Debug] PHP Notice: in file [ROOT]/n.php on line 28: Undefined variable: description
[phpBB Debug] PHP Notice: in file [ROOT]/n.php on line 28: Undefined variable: plugin

Определяйте эти переменные.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #37by vbnm » 08.07.2014, 19:07

Sumanai wrote:Ошибка- $bot_id не определён. Добавьте
Это первая ошибка и я её исправляю так:
vbnm wrote:$bot_id = '62'; //выставляя ай-ди юзера мы присваеваем ему авторство постика
Дает возможность присваивать посты разным юзерам.
под 62 у меня новый юзер, а не бот, но это не важно..
давайе дальше.
траблу с индификацией автора поста, темы мы пока решили.
:smoke:
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #38by Sumanai » 08.07.2014, 19:11

Я всё написал. Вы просто скопировали решение VEG без понимания сути и подгонки под себя, не определили переменные и способ формирования заголовка. Конечно нижеследующий код создаст пост в теме с айди 1
Code: Select all
$title = 'тайтл';
$updated = 0;
$plugin_row['topic_id'] = 1;
$description = 'Опейсание';
$plugin = 1;
Но это ни о чём. Вам нужно делать под себя. Прочитайте код, поймите, как он работает, и переделывайте под свои нужды.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1516
With us: 4 yaers 2 months

Post #39by vbnm » 08.07.2014, 19:31

Sumanai wrote:нижеследующий код создаст пост в теме с айди 1
вот это я и пытаюсь выяснить, как получать айди только что созданной темы, чтобы её продолжить
не вручную, а чтобы он определялся автоматом и возвращался обратно
подставлялся бы сюда:
$plugin_row['topic_id'] = 1;
и продолжался в цикле пока сообщения не закончатся.
на гуру только это http://www.phpbbguru.net/community/topic21144-45.html#p323203
vbnm
Гуру
Reputation: 77
With us: 4 yaers

Post #40by VEG » 08.07.2014, 19:35

Присвоенный топику id должен после вызова submit_post оказаться в $data['topic_id'], если я не ошибаюсь.
С наилучшими пожеланиями, Евгений
VEG M
Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1608
With us: 4 yaers 11 months

PreviousNext

Forum name: Поддержка
Description: У вас проблемы с phpBBex 1.x и вам необходима помощь? Спрашивайте здесь!
Forum rules: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть вопроса. Подробно описывайте проблему. Не забудьте указать версию phpBBex и какие моды установлены, по возможности добавьте скриншоты проблемы или ссылку на страницу с проблемой.

Quick reply


Enter the code exactly as it appears. All letters are case insensitive.
Confirmation code
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: View more smilies

   

Return to Поддержка



cron