本文整理汇总了PHP中bdec_file函数的典型用法代码示例。如果您正苦于以下问题:PHP bdec_file函数的具体用法?PHP bdec_file怎么用?PHP bdec_file使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bdec_file函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: TDict
function TDict($fname = '', $fsize = 0)
{
if ($fname == '' && $fsize == 0) {
$this->_dict = null;
return;
}
if ($fname == '' && $fsize != 0) {
$this->setDict($fsize);
return;
}
$this->_dict = bdec_file($fname, $fsize);
if (!$this->_dict) {
$this->ErrorMsg = 'Error decoding file';
} else {
$this->ErrorMsg = '';
}
}
示例2: permissiondenied
if ($CURUSER['downloadpos'] == "no") {
permissiondenied();
}
if (!$row || !is_file($fn) || !is_readable($fn)) {
httperr();
}
if ($row['banned'] == 'yes' && get_user_class() < $seebanned_class) {
permissiondenied();
}
sql_query("UPDATE torrents SET hits = hits + 1 WHERE id = " . sqlesc($id)) or sqlerr(__FILE__, __LINE__);
require_once "include/benc.php";
if (strlen($CURUSER['passkey']) != 32) {
$CURUSER['passkey'] = md5($CURUSER['username'] . date("Y-m-d H:i:s") . $CURUSER['passhash']);
sql_query("UPDATE users SET passkey=" . sqlesc($CURUSER[passkey]) . " WHERE id=" . sqlesc($CURUSER[id]));
}
$dict = bdec_file($fn, $max_torrent_size);
$dict['value']['announce']['value'] = $ssl_torrent . $base_announce_url . "?passkey={$CURUSER['passkey']}";
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
/*if ($announce_urls[1] != "") // add multi-tracker
{
$dict['value']['announce-list']['type'] = "list";
$dict['value']['announce-list']['value'][0]['type'] = "list";
$dict['value']['announce-list']['value'][0]['value'][0]["type"] = "string";
$dict['value']['announce-list']['value'][0]['value'][0]["value"] = $ssl_torrent . $announce_urls[0] . "?passkey=$CURUSER[passkey]";
$dict['value']['announce-list']['value'][0]['value'][0]["string"] = strlen($dict['value']['announce-list']['value'][0]['value'][0]["value"]).":".$dict['value']['announce-list']['value'][0]['value'][0]["value"];
$dict['value']['announce-list']['value'][0]['value'][0]["strlen"] = strlen($dict['value']['announce-list']['value'][0]['value'][0]["string"]);
$dict['value']['announce-list']['value'][0]['string'] = "l".$dict['value']['announce-list']['value'][0]['value'][0]["string"]."e";
$dict['value']['announce-list']['value'][0]['strlen'] = strlen($dict['value']['announce-list']['value'][0]['string']);
$dict['value']['announce-list']['value'][1]['type'] = "list";
$dict['value']['announce-list']['value'][1]['value'][0]["type"] = "string";
示例3: foreach
$tmpname[] = $f2["tmp_name"];
$tmpname[] = $f3["tmp_name"];
$tmpname[] = $f4["tmp_name"];
$tmpname[] = $f5["tmp_name"];
$i = 0;
// i miss my normal for loops
// this is why!
foreach ($tmpname as $value) {
$shortfname[$i] = $torrent[$i] = $matches[$i];
if (!is_uploaded_file($value)) {
bark("Bad filename found on file no #{$i}");
}
if (!filesize($value)) {
bark("Empty file! {$value}");
}
$dict[] = bdec_file($value, $max_torrent_size);
if (!isset($dict[$i])) {
bark("What the hell did you upload? This is not a bencoded file 1!");
}
// I think i can just use $ann[] $dbname[] $info[] and $plen[] without specifying the index $i -- but this should work too
list($ann[$i], $info[$i]) = dict_check($dict[$i], "announce(string):info");
list($dname[$i], $plen[$i], $pieces[$i]) = dict_check($info[$i], "name(string):piece length(integer):pieces(string)");
if (!in_array($ann[$i], $announce_urls, 1)) {
bark("invalid announce url! in file no #{$i} must be " . $announce_urls[0] . " - Make sure its exactly like that even the port number should be in there like '80'");
}
if (strlen($pieces[$i]) % 20 != 0) {
bark("invalid pieces in file {$i}");
}
$totallen = dict_get($info[$i], "length", "integer");
if (isset($totallen)) {
$filelist[] = array($dname[$i], $totallen);
示例4: unesc
}
$shortfname = $torrent = $matches[1];
if (!empty($_POST["name"])) {
$torrent = unesc($_POST["name"]);
}
if ($f['size'] > $max_torrent_size) {
bark($lang_takeupload['std_torrent_file_too_big'] . number_format($max_torrent_size) . $lang_takeupload['std_remake_torrent_note']);
}
$tmpname = $f["tmp_name"];
if (!is_uploaded_file($tmpname)) {
bark("eek");
}
if (!filesize($tmpname)) {
bark($lang_takeupload['std_empty_file']);
}
$dict = bdec_file($tmpname, $max_torrent_size);
if (!isset($dict)) {
bark($lang_takeupload['std_not_bencoded_file']);
}
function dict_check($d, $s)
{
global $lang_takeupload;
if ($d["type"] != "dictionary") {
bark($lang_takeupload['std_not_a_dictionary']);
}
$a = explode(":", $s);
$dd = $d["value"];
$ret = array();
foreach ($a as $k) {
unset($t);
if (preg_match('/^(.*)\\((.*)\\)$/', $k, $m)) {
示例5: bdec_file
exit;
}
$filePath = "torrents/" . $id . ".torrent";
$sth = $db->prepare("SELECT filename FROM torrents WHERE id = ?");
$sth->bindParam(1, $id, PDO::PARAM_INT);
$sth->execute();
$torrent = $sth->fetch(PDO::FETCH_ASSOC);
if (!$torrent) {
echo "Torrent not found";
exit;
}
$sth = $db->prepare("SELECT https FROM users WHERE passkey = ? AND enabled = 'yes'");
$sth->bindParam(1, $passkey, PDO::PARAM_STR);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_ASSOC);
if (!$user) {
echo "User not found";
exit;
}
$dict = bdec_file($filePath, filesize($filePath));
$dict['value']['announce']['value'] = "http" . ($user["https"] == 1 ? "s" : "") . "://127.0.0.1:133" . ($user["https"] == 1 ? "8" : "7") . "/tracker.php/{$passkey}/announce";
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
$dict["value"]["comment"]["type"] = "string";
$dict["value"]["comment"]["value"] = "rartracker";
$dict["value"]["comment"]["strlen"] = strlen(strlen("127.0.0.1") . ":127.0.0.1");
$dict["value"]["comment"]["string"] = strlen("127.0.0.1") . ":127.0.0.1";
unset($dict['value']['announce-list']);
header('Content-Disposition: attachment;filename="' . $torrent['filename'] . '"');
header("Content-Type: application/x-bittorrent");
print benc($dict);
示例6: httperr
// moddifed logginorreturn by retro//Remember to change the following line to match your server
print "<html><h1>Not Found</h1><p>The requested URL /{$_SERVER['PHP_SELF']} was not found on this server.</p><hr /><address>Apache/1.1.11 " . $SITENAME . " Server at " . $_SERVER['SERVER_NAME'] . " Port 80</address></body></html>\n";
die;
}
if (!preg_match(':^/(\\d{1,10})/(.+)\\.torrent$:', $_SERVER["PATH_INFO"], $matches)) {
httperr();
}
$id = 0 + $matches[1];
if (!$id) {
httperr();
}
$res = mysql_query("SELECT name FROM torrents WHERE id = {$id}") or sqlerr(__FILE__, __LINE__);
$row = mysql_fetch_assoc($res);
$fn = "{$torrent_dir}/{$id}.torrent";
if (!$row || !is_file($fn) || !is_readable($fn)) {
httperr();
}
mysql_query("UPDATE torrents SET hits = hits + 1 WHERE id = {$id}");
require_once "include/benc.php";
if (strlen($CURUSER['passkey']) != 32) {
$CURUSER['passkey'] = md5($CURUSER['username'] . get_date_time() . $CURUSER['passhash']);
mysql_query("UPDATE users SET passkey='{$CURUSER['passkey']}' WHERE id={$CURUSER['id']}");
}
$dict = bdec_file($fn, 1024 * 1024);
$dict['value']['announce']['value'] = "{$announce_urls['0']}";
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
$dict['value']['created by'] = bdec(benc_str("" . $CURUSER['username'] . ""));
//header('Content-Disposition: attachment; filename="'.$torrent['filename'].'"');
header("Content-Type: application/x-bittorrent");
print benc($dict);
示例7: array
$ids = array();
$tmpname[] = $f1["tmp_name"];
$tmpname[] = $f2["tmp_name"];
$tmpname[] = $f3["tmp_name"];
$tmpname[] = $f4["tmp_name"];
$tmpname[] = $f5["tmp_name"];
$i = 0;
foreach ($tmpname as $value) {
$shortfname[$i] = $torrent[$i] = $matches[$i];
if (!is_uploaded_file($value)) {
stderr("Opps", "Bad filename found on file no #{$i}");
}
if (!filesize($value)) {
stderr("Oops", "Empty file! {$value}");
}
$dict[] = bdec_file($value, $INSTALLER09['max_torrent_size']);
if (!isset($dict[$i])) {
stderr("Oops", "What the hell did you upload? This is not a bencoded file 1!");
}
list($ann[$i], $info[$i]) = dict_check($dict[$i], "announce(string):info");
list($dname[$i], $plen[$i], $pieces[$i]) = dict_check($info[$i], "name(string):piece length(integer):pieces(string)");
if (!in_array($ann[$i], $INSTALLER09['announce_urls'], 1)) {
stderr("Oops", "invalid announce url! in file no #{$i} must be {$INSTALLER09['announce_urls'][0]} - Make sure its exactly like that even the port number should be in there like '80'");
}
if (strlen($pieces[$i]) % 20 != 0) {
stderr("Oops", "invalid pieces in file {$i}");
}
$totallen = dict_get($info[$i], "length", "integer");
if (isset($totallen)) {
$filelist[] = array($dname[$i], $totallen);
$type = "single";
示例8: download
public function download($id)
{
$torrent = $this->get($id);
include 'benc.php';
$filepath = $this->torrentDir . $torrent["id"] . ".torrent";
if (!file_exists($filepath)) {
throw new Exception('Torrentfilen saknas.');
}
if ($this->user->getHttps()) {
$announce = Helper::$trackerUrlSsl . "/tracker.php/" . $this->user->getPasskey() . "/announce";
} else {
$announce = Helper::$trackerUrl . "/tracker.php/" . $this->user->getPasskey() . "/announce";
}
$dict = bdec_file($filepath, filesize($filepath));
$dict['value']['announce']['value'] = $announce;
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
$dict["value"]["comment"]["type"] = "string";
$dict["value"]["comment"]["value"] = Helper::$siteName;
$dict["value"]["comment"]["strlen"] = strlen(strlen(Helper::$siteName) . ":" . Helper::$siteName);
$dict["value"]["comment"]["string"] = strlen(Helper::$siteName) . ":" . Helper::$siteName;
unset($dict['value']['announce-list']);
header('Content-Disposition: attachment;filename="' . $torrent['filename'] . '"');
header("Content-Type: application/x-bittorrent");
print benc($dict);
exit;
}
示例9: download
public function download($id, $passkey = null)
{
$useHttps = null;
if ($passkey) {
$sth = $this->db->prepare("SELECT https FROM users WHERE passkey = ? AND enabled = 'yes'");
$sth->bindParam(1, $passkey, PDO::PARAM_STR);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_ASSOC);
if (!$user) {
throw new Exception(L::get("USER_NOT_EXIST"), 404);
}
$useHttps = $user["https"] == 1;
} else {
$useHttps = $this->user->getHttps();
$passkey = $this->user->getPasskey();
}
$torrent = $this->get($id);
include 'benc.php';
$filepath = $this->torrentDir . $torrent["id"] . ".torrent";
if (!file_exists($filepath)) {
throw new Exception(L::get("TORRENT_NOT_FOUND"), 404);
}
if ($useHttps) {
$announce = Config::TRACKER_URL_SSL . "/tracker.php/" . $passkey . "/announce";
} else {
$announce = Config::TRACKER_URL . "/tracker.php/" . $passkey . "/announce";
}
$dict = bdec_file($filepath, filesize($filepath));
$dict['value']['announce']['value'] = $announce;
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
$dict["value"]["comment"]["type"] = "string";
$dict["value"]["comment"]["value"] = Config::SITE_NAME;
$dict["value"]["comment"]["strlen"] = strlen(strlen(Config::SITE_NAME) . ":" . Config::SITE_NAME);
$dict["value"]["comment"]["string"] = strlen(Config::SITE_NAME) . ":" . Config::SITE_NAME;
unset($dict['value']['announce-list']);
header('Content-Disposition: attachment;filename="' . $torrent['filename'] . '"');
header("Content-Type: application/x-bittorrent");
print benc($dict);
exit;
}
示例10: Exception
if (isset($_FILES['nfo']) && !empty($_FILES['nfo']['name'])) {
$nfofile = $_FILES['nfo'];
if ($nfofile['size'] == 0) {
throw new Exception("NFO file size to small.");
}
if ($nfofile['size'] > 65535) {
throw new Exception("NFO file size to big.");
}
$nfofilename = $nfofile['tmp_name'];
if (@(!is_uploaded_file($nfofilename))) {
throw new Exception("NFO file upload failed.");
}
$nfo = str_replace("\r\r\n", "\r\n", @file_get_contents($nfofilename));
}
$nfo = nfostrip($nfo);
$dict = bdec_file($tmpname, filesize($tmpname));
if (!isset($dict)) {
throw new Exception("torrent file not benc coded");
}
list($ann, $info) = dict_check($dict, "announce(string):info");
$tmaker = isset($dict['value']['created by']) && !empty($dict['value']['created by']['value']) ? $dict['value']['created by']['value'] : "Unknown";
list($dname, $plen, $pieces) = dict_check($info, "name(string):piece length(integer):pieces(string)");
if (strlen($pieces) % 20 != 0) {
throw new Exception("somthing bad happend. and we dont know what.");
}
$filelist = array();
$totallen = dict_get($info, "length", "integer");
if (isset($totallen)) {
$filelist[] = array($dname, $totallen);
$type = "single";
} else {
示例11: httperr
if (!$id) {
httperr();
}
$res = mysql_query("SELECT name, filename FROM torrents WHERE id = {$id}") or sqlerr(__FILE__, __LINE__);
$row = mysql_fetch_assoc($res);
$fn = "{$torrent_dir}/{$id}.torrent";
if (!$row || !is_file($fn) || !is_readable($fn)) {
httperr();
}
mysql_query("UPDATE torrents SET hits = hits + 1 WHERE id = {$id}");
require_once "include/benc.php";
if (!isset($CURUSER['passkey']) || strlen($CURUSER['passkey']) != 32) {
$CURUSER['passkey'] = md5($CURUSER['username'] . time() . $CURUSER['passhash']);
mysql_query("UPDATE users SET passkey='{$CURUSER['passkey']}' WHERE id={$CURUSER['id']}");
}
$dict = bdec_file($fn, filesize($fn));
$dict['value']['announce']['value'] = "{$announce_urls[0]}?passkey={$CURUSER['passkey']}";
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
//Added support for announce-list (if set by user's uploaded torrent)
//if(isset($dict['value']['announce-list']['value'][0]['value'][0]['value'])){
//$dict['value']['announce-list']['value'][0]['value'][0]['value'] = $dict['value']['announce']['value'];
//$dict['value']['announce-list']['value'][0]['value'][0]['string'] = strlen($dict['value']['announce-list']['value'][0]['value'][0]['value']).":".$dict['value']['announce-list']['value'][0]['value'][0]['value'];
//$dict['value']['announce-list']['value'][0]['value'][0]['strlen'] = strlen($dict['value']['announce-list']['value'][0]['value'][0]['string']);
//}
//Added support for using openbittorrent tracker
$announce_list = array(array('value' => $dict['value']['announce']['value'], 'type' => 'string'));
$announce_list2 = array(array('value' => $announce_urls[1], 'type' => 'string'));
#two trackers
#$dict['value']['announce-list']['value'] = array( array( 'value' => $announce_list, 'type' => 'list' ),array( 'value' => $announce_list2, 'type' => 'list' ));
#one tracker
示例12: stderr
}
if (!preg_match('/^(.+)\\.torrent$/si', $fname, $matches)) {
stderr($lang['takeupload_failed'], $lang['takeupload_not_torrent']);
}
$shortfname = $torrent = $matches[1];
if (!empty($_POST["name"])) {
$torrent = unesc($_POST["name"]);
}
$tmpname = $f["tmp_name"];
if (!is_uploaded_file($tmpname)) {
stderr($lang['takeupload_failed'], $lang['takeupload_eek']);
}
if (!filesize($tmpname)) {
stderr($lang['takeupload_failed'], $lang['takeupload_no_file']);
}
$dict = bdec_file($tmpname, $INSTALLER09['max_torrent_size']);
if (!isset($dict)) {
stderr($lang['takeupload_failed'], $lang['takeupload_not_benc']);
}
function dict_check($d, $s)
{
global $lang;
if ($d["type"] != "dictionary") {
stderr($lang['takeupload_failed'], $lang['takeupload_not_dict']);
}
$a = explode(":", $s);
$dd = $d["value"];
$ret = array();
$t = '';
foreach ($a as $k) {
unset($t);
示例13: stderr
}
if (!preg_match('/^(.+)\\.torrent$/si', $fname, $matches)) {
stderr($lang['takeupload_failed'], $lang['takeupload_not_torrent']);
}
$shortfname = $torrent = $matches[1];
if (!empty($_POST["name"])) {
$torrent = unesc($_POST["name"]);
}
$tmpname = $f["tmp_name"];
if (!is_uploaded_file($tmpname)) {
stderr($lang['takeupload_failed'], $lang['takeupload_eek']);
}
if (!filesize($tmpname)) {
stderr($lang['takeupload_failed'], $lang['takeupload_no_file']);
}
$dict = bdec_file($tmpname, $TBDEV['max_torrent_size']);
if (!isset($dict)) {
stderr($lang['takeupload_failed'], $lang['takeupload_not_benc']);
}
function dict_check($d, $s)
{
if ($d["type"] != "dictionary") {
stderr($lang['takeupload_failed'], $lang['takeupload_not_dict']);
}
$a = explode(":", $s);
$dd = $d["value"];
$ret = array();
$t = '';
foreach ($a as $k) {
unset($t);
if (preg_match('/^(.*)\\((.*)\\)$/', $k, $m)) {
示例14: videoname
function videoname($id)
{
$i = 0;
require_once "include/benc.php";
require_once "include/bittorrent.php";
function bark($msg)
{
global $lang_takeupload;
genbark($msg, $lang_takeupload['std_upload_failed']);
die;
}
function dict_get($d, $k, $t)
{
global $lang_takeupload;
if ($d["type"] != "dictionary") {
bark($lang_takeupload['std_not_a_dictionary']);
}
$dd = $d["value"];
if (!isset($dd[$k])) {
return;
}
$v = $dd[$k];
if ($v["type"] != $t) {
bark($lang_takeupload['std_invalid_dictionary_entry_type']);
}
return $v["value"];
}
function dict_check($d, $s)
{
global $lang_takeupload;
if ($d["type"] != "dictionary") {
bark($lang_takeupload['std_not_a_dictionary']);
}
$a = explode(":", $s);
$dd = $d["value"];
$ret = array();
foreach ($a as $k) {
unset($t);
if (preg_match('/^(.*)\\((.*)\\)$/', $k, $m)) {
$k = $m[1];
$t = $m[2];
}
if (!isset($dd[$k])) {
bark($lang_takeupload['std_dictionary_is_missing_key']);
}
if (isset($t)) {
if ($dd[$k]["type"] != $t) {
bark($lang_takeupload['std_invalid_entry_in_dictionary']);
}
$ret[] = $dd[$k]["value"];
} else {
$ret[] = $dd[$k];
}
}
return $ret;
}
$filename = "/var/www/nexusphp/torrents/" . $id . ".torrent";
echo $filename;
if (file_exists($filename) == 0) {
echo "没发现种子";
} else {
$dict = bdec_file($filename, $max_torrent_size);
list($ann, $info) = dict_check($dict, "announce(string):info");
list($dname, $plen, $pieces) = dict_check($info, "name(string):piece length(integer):pieces(string)");
$filelist = array();
$totallen = dict_get($info, "length", "integer");
if (isset($totallen)) {
$filelist[] = array($dname, $totallen);
$type = "single";
//echo $dname;
$ffa4 = $dname;
$ffa5[] = $dname;
//echo '<br>';
} else {
$flist = dict_get($info, "files", "list");
if (!isset($flist)) {
bark($lang_takeupload['std_missing_length_and_files']);
}
if (!count($flist)) {
bark("no files");
}
$totallen = 0;
foreach ($flist as $fn) {
list($ll, $ff) = dict_check($fn, "length(integer):path(list)");
$totallen += $ll;
$ffa = array();
foreach ($ff as $ffe) {
if ($ffe["type"] != "string") {
bark($lang_takeupload['std_filename_errors']);
}
$ffa[] = $ffe["value"];
// echo $ffe["value"];
//echo '<br>';
}
if (!count($ffa)) {
bark($lang_takeupload['std_filename_errors']);
}
//echo $ffa[0];
foreach ($ffa as $ffa1) {
$ffa2 = explode('.', $ffa1);
//.........这里部分代码省略.........
示例15: download
function download($id)
{
$this->autoRender = false;
$this->autoLayout = false;
Configure::write('debug', '0');
app::import('vendor', 'ztracker/dict');
app::import('vendor', 'ztracker/global');
$tfile = "../torrents/{$id}.torrent";
$torrent = $this->Torrent->find(array('id' => $id));
$user = $this->User->find(array('username' => $this->ZTAuth->user('username')));
if (strlen($user['User']['passkey']) != 40) {
$user['User']['passkey'] = sha1($user['User']['username'] . get_date_time() . $user['User']['username']);
$this->User->save($user['User']);
}
$passkey = $user['User']['passkey'];
$dict = bdec_file($tfile, 1024 * 1024);
$dict['value']['announce']['value'] = $this->webroot . "announce.php?passkey={$passkey}";
$dict['value']['announce']['string'] = strlen($dict['value']['announce']['value']) . ":" . $dict['value']['announce']['value'];
$dict['value']['announce']['strlen'] = strlen($dict['value']['announce']['string']);
header("Expires: Tue, 1 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("X-Powered-by: ZTracker (c) ZTSoft Research Lab - http://bymep.com");
header("Accept-Ranges: bytes");
header("Connection: close");
header("Content-Transfer-Encoding: binary");
header("Content-Type: application/x-bittorrent");
header("Content-Disposition: attachment; filename=\"" . $torrent['Torrent']['filename'] . "\"");
print benc($dict);
exit;
}