DynDNS proxy |
И так начну с того, что есть такой провайдер в Саратове - ВолгаТелеком.
Есть такое понятие: ФОС - файло-обменная сеть. Т.е. - можно качать друг у друга посредством p2p, открывать свои игровые сервера, веб, ftp, email (дополнить своим ;-)...
Решил я воспользоваться сервисом dynamic dns (в интернете несколько таких сервисов), но вот только из под ФОС`а до него нельзя добраться. И вот решил я написать что-то типа прокси. Т.е. клиентом (программой) отсылается запрос на web сервер, который доступен из ФОС`а и подключен к `нормальному` интернету запрос на изменение ip адреса для сервиса dyndns.com. Далее скрипт, передаёт информацию на сервер members.dyndns.org, который и делает своё `грязное` дело.
На клиентской стороне работает программа, которая следит за изменением ip адреса и `стучит` серверу в случае его изменения.
Если кому надо, то вот исходник:
<? if( strlen($_SERVER["QUERY_STRING"]) == 0) die("nothing todo..."); //пїЅпїЅпїЅпїЅпїЅ $cur_dir = getcwd(); chdir($_SERVER["DOCUMENT_ROOT"] . "/_inc/countler/"); require_once("include.inc.php"); counter(); //пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ chdir($cur_dir); //end $site = "members.dyndns.org"; $port = "8245"; $page = "/nic/update"; $log_fname = "log/" . date("Y-m-d_H_i_s") . ".html"; $user = $_SERVER["PHP_AUTH_USER"]; $pass = $_SERVER["PHP_AUTH_PW"]; $base64_up = base64_encode($user . ":" . $pass); $sock = fsockopen($site, $port, $errno, $errstr); if(!$sock) { echo "Error: ". $errstr . "(" . $errno . ")<br>\n"; } else { fputs($sock, "GET " . $page . "?" . $_SERVER["QUERY_STRING"] . " HTTP/1.0\r\n"); fputs($sock, "User-Agent: " . $_SERVER["HTTP_USER_AGENT"] . "\r\n"); fputs($sock, "Authorization: Basic " . $base64_up ."\n\n"); ob_start(); echo urldecode($_SERVER["QUERY_STRING"]) . "<br><br>\n\n"; echo "user=" . $user . ", pass=" . $pass . "<br>\n\n"; echo "<xmp>\n\n"; $answer = 0; while ( !feof($sock) ) { $html = trim( fgets($sock) ); if( $answer == 1) $out .= $html; if( strlen($html) == 0) $answer = 1; echo $html . "\n"; } $buf = ob_get_clean(); //пїЅпїЅпїЅ пїЅ пїЅпїЅпїЅ if( strlen($buf) > 0 ) { $f = fopen($log_fname, "w+"); fwrite($f, $buf); fclose($f); } //end ob_end_clean(); echo $out; fclose($sock); } ?> Обсудить на форуме |
Pekлamкa |