🏴☠️
This commit is contained in:
73
proxy.php
Normal file
73
proxy.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
$config = [
|
||||
// Включение записи отладочной информации
|
||||
'log' => true,
|
||||
|
||||
// Список "проксируемых" трекеров
|
||||
'allow' => [
|
||||
'rutracker' => [
|
||||
'hosts' => [
|
||||
'bt.t-ru.org', 'bt2.t-ru.org', 'bt3.t-ru.org', 'bt4.t-ru.org',
|
||||
'bt.rutracker.cc', 'bt2.rutracker.cc', 'bt3.rutracker.cc', 'bt4.rutracker.cc',
|
||||
],
|
||||
// Адрес анонсера на данном трекере
|
||||
'uri' => '/ann',
|
||||
// Заменить на актуальный пасскей, либо закомментировать, если проверка не требуется
|
||||
'check' => [ 'pk' => '0123456789abcdef', ],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
$_GET['ip'] = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
$host = $_GET['dst'];
|
||||
unset($_GET['dst']);
|
||||
|
||||
$uri = null;
|
||||
foreach ($config['allow'] as $item) {
|
||||
// Разрешаем проксирование только для известных хостов
|
||||
if (in_array($host, $item['hosts'])) {
|
||||
$uri = $item['uri'];
|
||||
// Проверяем допустимые для данного трекера параметры в запросе, например пасскей
|
||||
foreach ($item['check'] as $key => $value) {
|
||||
if (!isset($_GET[$key]) || $_GET[$key] != $value) {
|
||||
$uri = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($uri) {
|
||||
$announce = "http://{$host}{$uri}?" . http_build_query($_GET);
|
||||
$ses = curl_init($announce);
|
||||
curl_setopt_array($ses, [
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_TIMEOUT => 20,
|
||||
CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], // Может проверяться анонсером
|
||||
]);
|
||||
$result = curl_exec($ses);
|
||||
$info = curl_getinfo($ses);
|
||||
header("Content-Type: {$info['content_type']}", true, $info['http_code']);
|
||||
print $result;
|
||||
} else {
|
||||
header('Content-Type: text/plain', true, 404);
|
||||
}
|
||||
|
||||
if ($config['log']) {
|
||||
// Сохраняем лог запроса/ответа для отладки
|
||||
$logfile = __DIR__ . '/btlog/' . date('Y-m-d/U') . '.txt';
|
||||
mkdir(dirname($logfile), 0700, true);
|
||||
file_put_contents(
|
||||
$logfile,
|
||||
var_export($_GET, true) . PHP_EOL . PHP_EOL .
|
||||
var_export($_POST, true) . PHP_EOL . PHP_EOL .
|
||||
var_export($_SERVER, true) . PHP_EOL . PHP_EOL .
|
||||
var_export($info, true) . PHP_EOL . PHP_EOL .
|
||||
$result
|
||||
);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user