bencoder. backup commit
This commit is contained in:
parent
e075c52488
commit
53b4985869
2 changed files with 65 additions and 43 deletions
44
announce.php
44
announce.php
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
require("../php/config.php");
|
require("../php/config.php");
|
||||||
require("network.php");
|
require("network.php");
|
||||||
|
require("bencoder.php");
|
||||||
$DB_NAME = "torrent";
|
$DB_NAME = "torrent";
|
||||||
$ANN_MIN_INTERVAL = 15;
|
$ANN_MIN_INTERVAL = 15;
|
||||||
$ANN_INTERVAL = 60;
|
$ANN_INTERVAL = 60;
|
||||||
|
|
@ -27,49 +28,6 @@ function hash_encode($str)
|
||||||
return hex2bin($str);
|
return hex2bin($str);
|
||||||
}
|
}
|
||||||
|
|
||||||
function bencode($var)
|
|
||||||
{
|
|
||||||
if (is_string($var)) {
|
|
||||||
return strlen($var) .':'. $var;
|
|
||||||
} else if (is_int($var)) {
|
|
||||||
return 'i'. $var .'e';
|
|
||||||
} else if (is_float($var)) {
|
|
||||||
return 'i'. sprintf('%.0f', $var) .'e';
|
|
||||||
} else if (is_array($var)) {
|
|
||||||
if (count($var) == 0) {
|
|
||||||
return 'de';
|
|
||||||
} else {
|
|
||||||
$assoc = false;
|
|
||||||
|
|
||||||
foreach ($var as $key => $val) {
|
|
||||||
if (!is_int($key)) {
|
|
||||||
$assoc = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($assoc) {
|
|
||||||
ksort($var, SORT_REGULAR);
|
|
||||||
$ret = 'd';
|
|
||||||
|
|
||||||
foreach ($var as $key => $val) {
|
|
||||||
$ret .= bencode($key) . bencode($val);
|
|
||||||
}
|
|
||||||
return $ret .'e';
|
|
||||||
} else {
|
|
||||||
$ret = 'l';
|
|
||||||
|
|
||||||
foreach ($var as $val) {
|
|
||||||
$ret .= bencode($val);
|
|
||||||
}
|
|
||||||
return $ret .'e';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
do_error('bencode wrong data type');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (!isset($_GET["info_hash"])) {
|
if (!isset($_GET["info_hash"])) {
|
||||||
bad_request("No info_hash");
|
bad_request("No info_hash");
|
||||||
|
|
|
||||||
64
bencoder.php
Normal file
64
bencoder.php
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
function bencode($var)
|
||||||
|
{
|
||||||
|
if (is_string($var)) {
|
||||||
|
return strlen($var) .':'. $var;
|
||||||
|
} else if (is_int($var)) {
|
||||||
|
return 'i'. $var .'e';
|
||||||
|
} else if (is_float($var)) {
|
||||||
|
return 'i'. sprintf('%.0f', $var) .'e';
|
||||||
|
} else if (is_array($var)) {
|
||||||
|
if (count($var) == 0) {
|
||||||
|
return 'de';
|
||||||
|
} else {
|
||||||
|
$assoc = false;
|
||||||
|
|
||||||
|
foreach ($var as $key => $val) {
|
||||||
|
if (!is_int($key)) {
|
||||||
|
$assoc = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($assoc) {
|
||||||
|
ksort($var, SORT_REGULAR);
|
||||||
|
$ret = 'd';
|
||||||
|
|
||||||
|
foreach ($var as $key => $val) {
|
||||||
|
$ret .= bencode($key) . bencode($val);
|
||||||
|
}
|
||||||
|
return $ret .'e';
|
||||||
|
} else {
|
||||||
|
$ret = 'l';
|
||||||
|
|
||||||
|
foreach ($var as $val) {
|
||||||
|
$ret .= bencode($val);
|
||||||
|
}
|
||||||
|
return $ret .'e';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
do_error('bencode wrong data type');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
function bdecode($enc)
|
||||||
|
{
|
||||||
|
if ($endPos = strpos($enc, 'e') == false) {
|
||||||
|
// string
|
||||||
|
}
|
||||||
|
if (!$endPos) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$type = substr($enc, 1, 1);
|
||||||
|
$data = substr($enc, 1, $endPos - 1);
|
||||||
|
switch ($type)
|
||||||
|
{
|
||||||
|
case 'i': return intval($data);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
?>
|
||||||
Loading…
Add table
Reference in a new issue