Advertisement
Guest User

Untitled

a guest
Apr 11th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.34 KB | None | 0 0
  1. <?php
  2. class vtracker
  3. {
  4.         protected static $sess_cookie;
  5.         protected static $exucution;
  6.         protected static $warning;
  7.  
  8.         //проверяем cookie
  9.         public static function checkCookie($sess_cookie)
  10.         {
  11.         $result = Sys::getUrlContent(
  12.                 array(
  13.                         'type'           => 'POST',
  14.                         'returntransfer' => 1,
  15.                         'url'            => 'http://vtracker.org/forum/index.php',
  16.                         'cookie'         => $sess_cookie,
  17.                         'sendHeader'     => array('Host' => 'vtracker.org', 'Content-length' => strlen($sess_cookie)),
  18.                         'convert'        => array('windows-1251', 'utf-8//IGNORE'),
  19.                 )
  20.         );
  21.  
  22.                 if (preg_match('/Вы зашли как:/', $result))
  23.                         return TRUE;
  24.                 else
  25.                         return FALSE;
  26.         }
  27.  
  28.         //функция проверки введёного URL`а
  29.         public static function checkRule($data)
  30.         {
  31.                 if (preg_match('/\D+/', $data))
  32.                         return FALSE;
  33.                 else
  34.                         return TRUE;
  35.         }
  36.  
  37.         //функция преобразования даты
  38. /*      private static function dateStringToNum($data)
  39.         {
  40.                 $monthes = array('Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек');
  41.                 $month = substr($data, 3, 6);
  42.                 $date = preg_replace('/(\d\d)-(\d\d)-(\d\d)/', '$3-$2-$1', str_replace($month, str_pad(array_search($month, $monthes)+1, 2, 0, STR_PAD_LEFT), $data));
  43.                 $date = date('Y-m-d H:i:s', strtotime($date));
  44.  
  45.                 return $date;
  46.         }
  47.  
  48. */
  49. //функция преобразования даты
  50. private static function dateStringToNum($data)
  51.         {
  52.                 $date = date('Y-m-d H:i:s', strtotime($data));
  53.  
  54.                 return $date;
  55.         }
  56.  
  57.  
  58.         //функция преобразования даты
  59.         private static function dateNumToString($data)
  60.         {
  61.                 $data = str_replace('-', ' ', $data);
  62.                 $arr = preg_split('/\s/', $data);
  63.                 $date = $arr[0].' '.$arr[1].' 20'.$arr[2].' '.$arr[3];
  64.  
  65.                 return $date;
  66.         }
  67.  
  68.  
  69.                                                                                                                                                                                                                                                  
  70. /*        //функция преобразования даты                                                                                                                                
  71.         private static function dateNumToString($data)
  72.         {
  73.                 $data = str_replace('-', ' ', vtracker::dateStringToNum($data));
  74.                 $arr = preg_split("/\s/", $data);
  75.                 $date = $arr[0] . ' ' . Sys::dateNumToString($arr[1]) . ' ' . $arr[2] . ' ' . $arr[3];
  76.  
  77.                 return $date;
  78.         }
  79. */
  80.         //функция получения кук
  81.         protected static function getCookie($tracker)
  82.         {
  83.                 //проверяем заполнены ли учётные данные
  84.                 if (Database::checkTrackersCredentialsExist($tracker))
  85.                 {
  86.                         //получаем учётные данные
  87.                         $credentials = Database::getCredentials($tracker);
  88.                         $login = iconv('utf-8', 'windows-1251', $credentials['login']);
  89.                         $password = $credentials['password'];
  90.  
  91.                         //авторизовываемся на трекере
  92.                         $page = Sys::getUrlContent(
  93.                 array(
  94.                         'type'           => 'POST',
  95.                         'header'         => 1,
  96.                         'returntransfer' => 1,
  97.                         'url'            => 'http://vtracker.org/forum/login.php',
  98.                         'postfields'     => 'login_username='.$login.'&login_password='.$password.'&login=%C2%F5%EE%E4',
  99.                         'convert'        => array('windows-1251', 'utf-8//IGNORE'),
  100.                 )
  101.             );
  102.  
  103.                         if ( ! empty($page))
  104.                         {
  105.                                 //проверяем подходят ли учётные данные
  106.                                 if (preg_match('/profile\.php\?mode=register/', $page, $array))
  107.                                 {
  108.                                         //устанавливаем варнинг
  109.                                         Errors::setWarnings($tracker, 'credential_wrong');
  110.                                         //останавливаем процесс выполнения, т.к. не может работать без кук
  111.                                         vtracker::$exucution = FALSE;
  112.                                 }
  113.                                 //если подходят - получаем куки
  114.                                 elseif (preg_match('/bb_data=.+;/U', $page, $array))
  115.                                 {
  116.                                         vtracker::$sess_cookie = $array[0];
  117.                                         Database::setCookie($tracker, vtracker::$sess_cookie);
  118.                                         //запускам процесс выполнения, т.к. не может работать без кук
  119.                                         vtracker::$exucution = TRUE;
  120.                                 }
  121.                                 else
  122.                                 {
  123.                                         //устанавливаем варнинг
  124.                                         if (vtracker::$warning == NULL)
  125.                                         {
  126.                                                 vtracker::$warning = TRUE;
  127.                                                 Errors::setWarnings($tracker, 'cant_find_cookie');
  128.                                         }
  129.                                         //останавливаем процесс выполнения, т.к. не может работать без кук
  130.                                         vtracker::$exucution = FALSE;
  131.                                 }
  132.                         }
  133.                         //если вообще ничего не найдено
  134.                         else
  135.                         {
  136.                                 //устанавливаем варнинг
  137.                                 if (vtracker::$warning == NULL)
  138.                                 {
  139.                                         vtracker::$warning = TRUE;
  140.                                         Errors::setWarnings($tracker, 'cant_get_auth_page');
  141.                                 }
  142.                                 //останавливаем процесс выполнения, т.к. не может работать без кук
  143.                                 vtracker::$exucution = FALSE;
  144.                         }
  145.                 }
  146.                 else
  147.                 {
  148.                         //устанавливаем варнинг
  149.                         if (vtracker::$warning == NULL)
  150.                         {
  151.                                 vtracker::$warning = TRUE;
  152.                                 Errors::setWarnings($tracker, 'credential_miss');
  153.                         }
  154.                         //останавливаем процесс выполнения, т.к. не может работать без кук
  155.                         vtracker::$exucution = FALSE;
  156.                 }
  157.         }
  158.  
  159.         //основная функция
  160.         public static function main($params)
  161.         {
  162.         extract($params);
  163.                 $cookie = Database::getCookie($tracker);
  164.                 if (vtracker::checkCookie($cookie))
  165.                 {
  166.                         vtracker::$sess_cookie = $cookie;
  167.                         //запускам процесс выполнения
  168.                         vtracker::$exucution = TRUE;
  169.                 }
  170.                 else
  171.                 vtracker::getCookie($tracker);
  172.  
  173.                 if (vtracker::$exucution)
  174.                 {
  175.                         //получаем страницу для парсинга
  176.             $page = Sys::getUrlContent(
  177.                 array(
  178.                         'type'           => 'POST',
  179.                         'header'         => 0,
  180.                         'returntransfer' => 1,
  181.                         'url'            => 'http://vtracker.org/forum/viewtopic.php?t='.$torrent_id,
  182.                         'cookie'         => vtracker::$sess_cookie,
  183.                         'sendHeader'     => array('Host' => 'vtracker.org', 'Content-length' => strlen(vtracker::$sess_cookie)),
  184.                         'convert'        => array('windows-1251', 'utf-8//IGNORE'),
  185.                 )
  186.             );
  187.  
  188.                         if ( ! empty($page))
  189.                         {
  190.                         //проверяем не закрыта ли тема
  191.                         if (preg_match('/alt=\"Тема закрыта\"/', $page, $array))
  192.                         {
  193.                                 //ставим галочку что тема закрыта
  194.                     Database::setClosedThreme($id, 1);
  195.                         }
  196.                         else
  197.                         {
  198.                                 //ищем на странице дату регистрации торрента
  199.                                 if (preg_match('/<td>Зарегистрирован:<\/td>\r\n{1,2}\s{4}<td>(.*)<\/td>/', $page, $array))
  200.                                 {
  201.                                         //проверяем удалось ли получить дату со страницы
  202.                                         if (isset($array[1]))
  203.                                         {
  204.                                                 //если дата не равна ничему
  205.                                                 if ( ! empty($array[1]))
  206.                                                 {
  207.                                                         //сбрасываем варнинг
  208.                                                         Database::clearWarnings($tracker);
  209.                                                         //приводим дату к общему виду
  210.                                                         $date = vtracker::dateStringToNum($array[1]);
  211.                                                         $date_str = vtracker::dateNumToString($array[1]);
  212.                                                         //если даты не совпадают, перекачиваем торрент
  213.                                                         if ($date != $timestamp)
  214.                                                         {
  215.                                                                 //сохраняем торрент в файл
  216.                                     $torrent = Sys::getUrlContent(
  217.                                         array(
  218.                                                 'type'           => 'POST',
  219.                                                 'returntransfer' => 1,
  220.                                                 'url'            => 'http://vtracker.org/forum/dl.php?t='.$torrent_id,
  221.                                                 'cookie'         => vtracker::$sess_cookie.'; bb_dl='.$torrent_id,
  222.                                                 'sendHeader'     => array('Host' => 'vtracker.org', 'Content-length' => strlen(vtracker::$sess_cookie.'; bb_dl='.$torrent_id)),
  223.                                                 'referer'        => 'http://vtracker.org/forum/viewtopic.php?t='.$torrent_id,
  224.                                         )
  225.                                     );
  226.                                    
  227.                                     if (Sys::checkTorrentFile($torrent))
  228.                                     {
  229.                                                                         if ($auto_update)
  230.                                                                         {
  231.                                                                             $name = Sys::parseHeader($tracker, $page);
  232.                                                                             //обновляем заголовок торрента в базе
  233.                                             Database::setNewName($id, $name);
  234.                                                                         }
  235.        
  236.                                                                         $message = $name.' обновлён.';
  237.                                                                         $status = Sys::saveTorrent($tracker, $torrent_id, $torrent, $id, $hash, $message, $date_str, $name);
  238.        
  239.                                                                         //обновляем время регистрации торрента в базе
  240.                                                                         Database::setNewDate($id, $date);
  241.                                                                         Database::setErrorToThreme($id, 0);
  242.                                                                         Database::setClosedThreme($id, 0);
  243.                                     }
  244.                                     else
  245.                                         Errors::setWarnings($tracker, 'torrent_file_fail', $id);
  246.                                                         }
  247.                                                         Database::setErrorToThreme($id, 0);
  248.                                                 }
  249.                                                 else
  250.                                                 {
  251.                                                         //устанавливаем варнинг
  252.                                                         if (vtracker::$warning == NULL)
  253.                                                         {
  254.                                                                 vtracker::$warning = TRUE;
  255.                                                                 Errors::setWarnings($tracker, 'cant_find_date', $id);
  256.                                                         }
  257.                                                         //останавливаем процесс выполнения, т.к. не может работать без кук
  258.                                                         vtracker::$exucution = FALSE;
  259.                                                 }
  260.                                         }
  261.                                         else
  262.                                         {
  263.                                                 //устанавливаем варнинг
  264.                                                 if (vtracker::$warning == NULL)
  265.                                                 {
  266.                                                         vtracker::$warning = TRUE;
  267.                                                         Errors::setWarnings($tracker, 'cant_find_date', $id);
  268.                                                 }
  269.                                                 //останавливаем процесс выполнения, т.к. не может работать без кук
  270.                                                 vtracker::$exucution = FALSE;
  271.                                         }
  272.                                 }
  273.                                 else
  274.                                 {
  275.                                         //устанавливаем варнинг
  276.                                         if (vtracker::$warning == NULL)
  277.                                         {
  278.                                                 vtracker::$warning = TRUE;
  279.                                                 Errors::setWarnings($tracker, 'cant_find_date', $id);
  280.                                         }
  281.                                         //останавливаем процесс выполнения, т.к. не может работать без кук
  282.                                         vtracker::$exucution = FALSE;
  283.                                 }
  284.                 }
  285.                         }
  286.                         else
  287.                         {
  288.                                 //устанавливаем варнинг
  289.                                 if (vtracker::$warning == NULL)
  290.                                 {
  291.                                         vtracker::$warning = TRUE;
  292.                                         Errors::setWarnings($tracker, 'cant_get_forum_page', $id);
  293.                                 }
  294.                                 //останавливаем процесс выполнения, т.к. не может работать без кук
  295.                                 vtracker::$exucution = FALSE;
  296.                         }
  297.                 }
  298.                 vtracker::$warning = NULL;
  299.         }
  300. }
  301. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement