Буду краток: теперь я с телефона открываю адреса вида 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;
}
}
``
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];`. Вот он целиком:
4. Финальный аккорд — сам i2p-proxy.php, который делает так:
<?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);
?>
Пока не знаю нахуя, но уже дважды кончил от собственной охуенности.