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
|
||||
require("../php/config.php");
|
||||
require("network.php");
|
||||
require("bencoder.php");
|
||||
$DB_NAME = "torrent";
|
||||
$ANN_MIN_INTERVAL = 15;
|
||||
$ANN_INTERVAL = 60;
|
||||
|
|
@ -27,49 +28,6 @@ function hash_encode($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"])) {
|
||||
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