https://www.garfieldtech.com/blog/tmi-outing
Мужик утверждает, что его выгнали из друпал-коммьюнити за то, что он бдсм-роулплеер по какой-то там серии фэнтези-книжонок для спермотоксикозников. Единственный мудак-феминист смог доебать лидера проекта и совет директоров до того, что они выкинули мужика втихую, несмотря на то, что специальная гэбня не нашла нарушений Code of Conduct.
В продолжение #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);
?>
Буду краток: теперь я с телефона открываю адреса вида 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);
?>
Пока не знаю нахуя, но уже дважды кончил от собственной охуенности.
константы битовых маск в десятичной системе, не делайте так, посоны
Вконтакт написал свой ПРИНЦИПИАЛЬНО НОВЫЙ транслятор из PHP в C++
http://habrahabr.ru/post/187214/
Плюс, там есть дополнительные встроенные возможности оптимизации. Создавался чемпионами ACM. Из минусов — поддерживается не весь синтаксис PHP, а только то подмножество, которое мы использовали в ВК. Скажем, там сильно ограничено все, что связано с ООП.
http://web.archive.org/web/20070125181458/http://2ch.ru/s/src/1158095011998.gif пикча еще с того двача