БЕГЕМОТИКОВ МОЖНО! Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

В продолжение #XO4BOU я слегка поправил свои похапэкостыли, чтобы одни отдавали данные поточно. Теперь картинки грузятся ну натурально как по диалапу

<?php
function headerfunc($ch, $str){
    header($str);
    return strlen($str);
}

function writefunc($ch, $str){
    print $str;
    flush();
    return strlen($str);
}

$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

$curlSession = curl_init();

curl_setopt($curlSession, CURLOPT_URL, $url);
curl_setopt($curlSession, CURLOPT_HEADER, false);
curl_setopt($curlSession, CURLOPT_PROXY, '10.100.0.1:4444');
curl_setopt($curlSession, CURLOPT_HEADERFUNCTION, 'headerfunc');
curl_setopt($curlSession, CURLOPT_WRITEFUNCTION, 'writefunc');
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curlSession, CURLOPT_TIMEOUT, 300);
curl_setopt($curlSession, CURLOPT_FOLLOWLOCATION, 1);

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $postinfo = '';
    foreach($_POST as $key=>$value) {
        $postinfo .= $key.'='.urlencode($value).'&';
    }
    rtrim($postinfo,'&');

    curl_setopt ($curlSession, CURLOPT_POST, 1);
    curl_setopt ($curlSession, CURLOPT_POSTFIELDS, $postinfo);
}

curl_exec ($curlSession);

if (curl_error($curlSession)){
    print curl_error($curlSession);
}

curl_close ($curlSession);
?>
#I6KZ72 (4) / @hirthwork / 3655 дней назад

Буду краток: теперь я с телефона открываю адреса вида http://tracker2.postman.i2p
Как этого добился:
1. С телефона коннекчусь к vpn на vps. Ключевой момент в конфиге openvpn это пробрасывание DNS на клиент:
push "dhcp-option DNS 10.100.0.1"
2. Далее делаем резолвинг i2p на этот же хост в конфиге dnsmasq:
address=/.i2p/10.100.0.1
3. Там же висит nginx с таким вот сервером (этот же nginx tt-rss обслуживает):
```
server {
listen 10.100.0.1;
server_name *.i2p;

root /var/www/localhost/htdocs;

rewrite ^(.*)$ /i2p-proxy.php break;

location / {
    include fastcgi.conf;
    fastcgi_index i2p-proxy.php;
    fastcgi_pass 127.0.0.1:9000;
}

}
``
4. Финальный аккорд — сам i2p-proxy.php, который делает так:
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];`. Вот он целиком:

<?php
session_start();
ob_start();

$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

// Open the cURL session
$curlSession = curl_init();

curl_setopt($curlSession, CURLOPT_URL, $url);
curl_setopt($curlSession, CURLOPT_HEADER, 1);
curl_setopt($curlSession, CURLOPT_PROXY, '10.100.0.1:4444');
#curl_setopt($curlSession, CURLOPT_HTTPHEADER,
#    array('Host: ' . $_SERVER['HTTP_HOST']));


if($_SERVER['REQUEST_METHOD'] == 'POST'){
        $postinfo = '';
        foreach($_POST as $key=>$value) {
                $postinfo .= $key.'='.urlencode($value).'&';
        }
        rtrim($postinfo,'&');

        curl_setopt ($curlSession, CURLOPT_POST, 1);
        curl_setopt ($curlSession, CURLOPT_POSTFIELDS, $postinfo);
}

curl_setopt($curlSession, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curlSession, CURLOPT_TIMEOUT,300);

//Send the request and store the result in an array
$response = curl_exec ($curlSession);

// Check that a connection was made
if (curl_error($curlSession)){
        // If it wasn't...
        print curl_error($curlSession);
} else {
        $ar = explode("\r\n\r\n", $response, 2);

        $header = $ar[0];
        $body = $ar[1];

        //handle headers - simply re-outputing them
        $header_ar = explode("\r\n",$header);
        foreach($header_ar as $header){
                $header = trim($header);
                if(!preg_match("/^Transfer-Encoding/",$header)){
                        header($header);
                }
        }

        print $body;
}

curl_close ($curlSession);
?>

Пока не знаю нахуя, но уже дважды кончил от собственной охуенности.

#XO4BOU (12) / @hirthwork / 3658 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.