Problem with class_torrent.php
am try rip upload.php and class_torrent.php ftom TS 7.2
but i have this error !
An error has occured!: Could not find info dictionary
somebody can help ?:(
upload.php
PHP Code:
<?php
/**
*
* @ iDezender 7.0
* @ Developed by Qarizma
*
* @ Visit our website:
* @ www.iRadikal.com
* @ For cheap decoding service :)
* @ And for the ionCube Decoder!
*
*/
function TS_Match($string, $find) {
return (strpos( $string, $find ) === false ? false : true);
}
function TS_Global($name = '') {
return (isset( $_GET['' . $name] ) ? (!is_array( $_GET['' . $name] ) ? trim( $_GET['' . $name] ) : $_GET['' . $name]) : (isset( $_POST['' . $name] ) ? (!is_array( $_POST['' . $name] ) ? trim( $_POST['' . $name] ) : $_POST['' . $name]) : ''));
}
function show_upload_errors()
{
global $UploadErrors;
global $lang;
global $BASEURL;
global $pic_base_url;
if (0 < count( $UploadErrors ))
{
$Errors = '';
foreach ($UploadErrors as $Error) {
$Errors .= '<img src="' . $pic_base_url . 'error.gif" border="0" alt="" title="" /> ' . $Error . '<br />';
}
echo show_notice( $Errors, 1, $lang->upload['error'] );
unset( $Errors );
}
}
define( 'TU_VERSION', '3.0.7 by xam' );
define( 'THIS_SCRIPT', 'upload.php' );
require( './global.php' );
require_once INC_PATH . '/class_language.php';
$lang = new trackerlanguage ();
$lang->set_path (INC_PATH . '/languages');
if ((empty ($_COOKIE['ts_language']) OR !file_exists (INC_PATH . '/languages/' . $_COOKIE['ts_language'])))
{
$lang->set_language ($defaultlanguage);
}
else
{
$lang->set_language ($_COOKIE['ts_language']);
}
$lang->load ('global');
if (!isset( $CURUSER )) {
print_no_permission( );
}
@ini_set( 'upload_max_filesize', (1000 < $max_torrent_size ? $max_torrent_size : 10485760) );
@ini_set( 'memory_limit', '20000M' );
$lang->load( 'upload' );
require_once( INC_PATH . '/editor.php' );
$is_mod = is_mod($usergroups);
$announce_urls = array ();
$announce_urls[] = 'http://' . $_SERVER['HTTP_HOST'] . '/announce.php';
$externalscrape = 'yes';
$use_torrent_details = 'no';
$xbt_active = 'no';
$search_before_upload = 'no';
$ModerateTorrent = ($usergroups['canupload'] == 'moderate' ? true : false);
$CanUploadExternalTorrent = (( $usergroups['canexternal'] == 'yes' AND $externalscrape == 'yes' ) ? true : false);
$AnnounceURL = trim( ($xbt_active == 'yes' ? $xbt_announce_url . '/' . $CURUSER['passkey'] . '/announce' : $announce_urls['0'] . '?passkey=' . $CURUSER['passkey']) );
$postoptions = '';
$postoptionstitle = '';
$UploadErrors = array( );
if (( isset( $_GET['id'] ) AND is_valid_id( $_GET['id'] ) ))
{
if ($EditTorrentID = intval( TS_Global( 'id' ) ))
{
$Query = $db->sql_query( 'SELECT * FROM torrents WHERE id = ' . $db->sqlesc( $EditTorrentID ) );
if ($db->num_rows( $Query )) {
$EditTorrent = mysqli_fetch_assoc( $Query );
if (( $EditTorrent['owner'] != $CURUSER['id'] AND !$is_mod ))
{
print_no_permission( true );
}
$name = $EditTorrent['name'];
$descr = $EditTorrent['descr'];
$IsExternalTorrent = (( $EditTorrent['ts_external'] == 'yes' AND $CanUploadExternalTorrent ) ? true : false);
$category = intval( $EditTorrent['category'] );
$t_image_url = $EditTorrent['t_image'];
$t_link = $EditTorrent['t_link'];
if (( $t_link AND preg_match( '@http:\/\/www.imdb.com\/title\/(.*)\/@isU', $t_link, $result ) ))
{
$t_link = $result['0'];
unset( $result );
}
$anonymous = $EditTorrent['anonymous'];
$free = $EditTorrent['free'];
$silver = $EditTorrent['silver'];
$doubleupload = $EditTorrent['doubleupload'];
$allowcomments = $EditTorrent['allowcomments'];
$sticky = $EditTorrent['sticky'];
$isrequest = $EditTorrent['isrequest'];
$isnuked = $EditTorrent['isnuked'];
$WhyNuked = $EditTorrent['WhyNuked'];
if ($use_torrent_details == 'yes')
{
$query = $db->sql_query( 'SELECT * FROM ts_torrents_details WHERE tid = ' . $db->sqlesc( $EditTorrentID ) );
if ($db->num_rows( $query )) {
$videot = explode( '~', mysql_result( $query, 0, 'video_info' ) );
$video['codec'] = (isset( $videot['0'] ) ? $videot['0'] : '');
$video['bitrate'] = (isset( $videot['1'] ) ? $videot['1'] : '');
$video['resulation'] = (isset( $videot['2'] ) ? $videot['2'] : '');
$video['length'] = (isset( $videot['3'] ) ? $videot['3'] : '');
$video['quality'] = (isset( $videot['4'] ) ? $videot['4'] : '');
$audiot = explode( '~', mysql_result( $query, 0, 'audio_info' ) );
$audio['codec'] = (isset( $audiot['0'] ) ? $audiot['0'] : '');
$audio['bitrate'] = (isset( $audiot['1'] ) ? $audiot['1'] : '');
$audio['frequency'] = (isset( $audiot['2'] ) ? $audiot['2'] : '');
$audio['language'] = (isset( $audiot['3'] ) ? $audiot['3'] : '');
}
}
}
else {
print_no_permission( );
}
}
else {
print_no_permission( );
}
}
//if ($usergroups['canupload'] == 'no') {
// print_no_permission( false, true, $lang->upload['uploaderform'] );
//}
$query = $db->sql_query( 'SELECT userid FROM ts_u_perm WHERE userid = ' . $db->sqlesc( $CURUSER['id'] ) . ' AND canupload = \'0\'' );
if ($db->num_rows( $query ))
{
print_no_permission( false, true, $lang->upload['uploaderform'] );
}
if (strtoupper( $_SERVER['REQUEST_METHOD'] ) == 'POST') {
$name = TS_Global( 'subject' );
$descr = TS_Global( 'message' );
$torrentfile = $_FILES['torrentfile'];
$IsExternalTorrent = (( ( isset( $_POST['IsExternalTorrent'] ) AND $_POST['IsExternalTorrent'] == 'yes' ) AND $CanUploadExternalTorrent ) ? true : false);
$nfofile = $_FILES['nfofile'];
$UseNFOasDescr = TS_Global( 'UseNFOasDescr' );
$category = intval( TS_Global( 'category' ) );
$t_image_url = TS_Global( 't_image_url' );
$t_image_file = $_FILES['t_image_file'];
$t_link = TS_Global( 't_link' );
$anonymous = TS_Global( 'anonymous' );
$free = TS_Global( 'free' );
$silver = TS_Global( 'silver' );
$doubleupload = TS_Global( 'doubleupload' );
$allowcomments = TS_Global( 'allowcomments' );
$sticky = TS_Global( 'sticky' );
$isrequest = TS_Global( 'isrequest' );
$isnuked = TS_Global( 'isnuked' );
$WhyNuked = TS_Global( 'WhyNuked' );
if (( isset( $nfofile['name'] ) AND !empty( $nfofile['name'] ) ))
{
if (get_extension( $nfofile['name'] ) != 'nfo')
{
$UploadErrors[] = $lang->upload['error10'];
}
if ($nfofile['size'] == '0')
{
$UploadErrors[] = $lang->upload['error11'];
}
if ($nfofile['error'] != '0')
{
$UploadErrors[] = $lang->upload['error6'] . ' {' . intval( $nfofile['error'] ) . '}';
}
if (!is_file( $nfofile['tmp_name'] ))
{
$UploadErrors[] = $lang->upload['error6'] . ' {' . intval( $nfofile['error'] ) . '}';
}
if (count( $UploadErrors ) == 0)
{
$NfoContents = file_get_contents( $nfofile['tmp_name'] );
}
}
if (( empty( $name ) || strlen( $name ) < 5 ))
{
if (( isset( $torrentfile['name'] ) AND !empty( $torrentfile['name'] ) ))
{
$name = str_replace( '.torrent', '', $torrentfile['name'] );
}
else {
$UploadErrors[] = $lang->upload['error1'];
}
}
if (( empty( $descr ) || strlen( $descr ) < 10 ))
{
if (( ( $UseNFOasDescr == 'yes' AND isset( $NfoContents ) ) AND !empty( $NfoContents ) ))
{
}
else {
$UploadErrors[] = $lang->upload['error2'];
}
}
if (( ( isset( $torrentfile['name'] ) AND !empty( $torrentfile['name'] ) ) AND !$IsExternalTorrent ))
{
$UpdateHash = true;
}
if (( isset( $EditTorrent ) AND empty( $torrentfile['name'] ) )) {
$torrentfile['name'] = $EditTorrent['filename'];
$torrentfile['type'] = 'application/x-bittorrent';
$torrentfile['size'] = $EditTorrent['size'];
$torrentfile['error'] = 0;
$torrentfile['tmp_name'] = $torrent_dir . '/' . $EditTorrentID . '.torrent';
}
if (( isset( $torrentfile['name'] ) AND !empty( $torrentfile['name'] ) ))
{
if (get_extension( $torrentfile['name'] ) != 'torrent') {
$UploadErrors[] = $lang->upload['error3'];
}
if ($torrentfile['size'] == '0')
{
$UploadErrors[] = $lang->upload['error5'];
}
if ($torrentfile['error'] != '0')
{
$UploadErrors[] = $lang->upload['error6'] . ' {' . intval( $torrentfile['error'] ) . '}';
}
if (!is_file( $torrentfile['tmp_name'] ))
{
$UploadErrors[] = $lang->upload['error6'] . ' {' . intval( $torrentfile['error'] ) . '}';
}
}
else {
$UploadErrors[] = $lang->upload['error3'];
}
if (!$category)
{
$UploadErrors[] = $lang->upload['error9'];
}
if (count( $UploadErrors ) == 0)
{
require_once( INC_PATH . '/class_torrent.php' );
if ($Data = file_get_contents( $torrentfile['tmp_name'] ))
{
//Torrent;
$Torrent = new Torrent();
if ($Torrent->load( $Data )) {
$info_hash = $Torrent->getHash();
if (( ( ( $privatetrackerpatch == 'yes' AND $IsExternalTorrent ) AND $Torrent->getWhatever( 'announce' ) == $AnnounceURL ) AND $Torrent->getWhatever( 'announce-list' ) == null ))
{
$IsExternalTorrent = false;
}
if (( $privatetrackerpatch == 'yes' AND !$IsExternalTorrent ))
{
$Torrent->removeWhatever( 'announce-list' );
$Torrent->removeWhatever( 'nodes' );
if ($Torrent->getPrivate( ) != '1')
{
$Torrent->setPrivate( '1' );
}
if ($Torrent->getWhatever( 'announce' ) != $AnnounceURL)
{
$Torrent->setTrackers( array( $AnnounceURL ) );
}
}
if (( $privatetrackerpatch != 'yes' AND !$IsExternalTorrent ))
{
if ($Torrent->getWhatever( 'announce' ) != $AnnounceURL)
{
$Torrent->addTracker( $AnnounceURL );
}
}
if (strlen( $Torrent->getPieces( ) ) % 20 != 0)
{
$UploadErrors[] = $lang->upload['error7'];
}
}
else {
$UploadErrors[] = $lang->global['error'] . ': ' . htmlspecialchars_uni( $Torrent->error );
}
}
else {
$UploadErrors[] = $lang->upload['error7'];
}
}
if (count( $UploadErrors ) == 0)
{
$Torrent->setComment( $lang->upload['DefaultTorrentComment'] );
$Torrent->setCreatedBy( sprintf( $lang->upload['CreatedBy'], ($anonymous == 'yes' ? '' : $CURUSER['username']) ) . ' [' . $SITENAME . ']' );
$Torrent->setSource( $BASEURL );
$Torrent->setCreationDate( TIMENOW );
$check_info_hash = $Torrent->getHash( );
if ($info_hash != $check_info_hash)
{
$info_hash = $check_info_hash;
unset( $check_info_hash );
$UpdateHash = true;
$Info_hash_changed = true;
}
$numfiles = 0;
$size = 0;
$IncludedFiles = $Torrent->getFiles( );
foreach ($IncludedFiles as $File)
{
++$numfiles;
$size += $File->length;
}
$filename = str_replace( '.torrent', '', $torrentfile['name'] );
$filename = MakeFriendlyText( $filename );
$filename = $filename . '.torrent';
$UpdateSet = array( );
if (( isset( $UpdateHash ) || !isset( $EditTorrent ) )) {
$UpdateSet[] = 'info_hash = ' . $db->sqlesc( $info_hash );
}
$UpdateSet[] = 'name = ' . $db->sqlesc( $name );
$UpdateSet[] = 'filename = ' . $db->sqlesc( $filename );
$UpdateSet[] = 'category = ' . $db->sqlesc( $category );
$UpdateSet[] = 'size = ' . $db->sqlesc( $size );
$UpdateSet[] = 'numfiles = ' . $db->sqlesc( $numfiles );
if ($descr)
{
$UpdateSet[] = 'descr = ' . $db->sqlesc( $descr );
}
if (!isset( $EditTorrent ))
{
$UpdateSet[] = 'added = NOW()';
$UpdateSet[] = 'ctime = UNIX_TIMESTAMP()';
$UpdateSet[] = 'owner = ' . $db->sqlesc( $CURUSER['id'] );
}
else {
$UpdateSet[] = 'mtime = UNIX_TIMESTAMP()';
}
if ($is_mod)
{
if ($free == 'yes')
{
$UpdateSet[] = 'free = \'yes\'';
$UpdateSet[] = 'silver = \'no\'';
//$UpdateSet[] = 'download_multiplier = \'0\'';
}
else {
if ($silver == 'yes')
{
$UpdateSet[] = 'silver = \'yes\'';
$UpdateSet[] = 'free = \'no\'';
//$UpdateSet[] = 'download_multiplier = \'0.5\'';
}
else {
$UpdateSet[] = 'silver = \'no\'';
$UpdateSet[] = 'free = \'no\'';
//$UpdateSet[] = 'download_multiplier = \'1\'';
}
}
if ($doubleupload == 'yes')
{
$UpdateSet[] = 'doubleupload = \'yes\'';
//$UpdateSet[] = 'upload_multiplier = \'2\'';
}
else {
$UpdateSet[] = 'doubleupload = \'no\'';
$UpdateSet[] = 'upload_multiplier = \'1\'';
}
//$UpdateSet[] = '`flags` = \'' . (( ( $free == 'yes' || ( $free != 'yes' && $silver == 'yes' ) ) || $doubleupload == 'yes' ) ? 2 : 0) . '\'';
if ($allowcomments == 'no')
{
$UpdateSet[] = 'allowcomments = \'no\'';
}
else {
$UpdateSet[] = 'allowcomments = \'yes\'';
}
if ($sticky == 'yes')
{
$UpdateSet[] = 'sticky = \'yes\'';
}
else {
$UpdateSet[] = 'sticky = \'no\'';
}
if ($isnuked == 'yes')
{
$UpdateSet[] = 'WhyNuked = ' . $db->sqlesc( $WhyNuked );
$UpdateSet[] = 'isnuked = \'yes\'';
}
else {
$UpdateSet[] = 'WhyNuked = \'\'';
$UpdateSet[] = 'isnuked = \'no\'';
}
}
if ($isrequest == 'yes')
{
$UpdateSet[] = 'isrequest = \'yes\'';
}
else {
$UpdateSet[] = 'isrequest = \'no\'';
}
if ($anonymous == 'yes')
{
$UpdateSet[] = 'anonymous = \'yes\'';
}
else {
$UpdateSet[] = 'anonymous = \'no\'';
}
if ($IsExternalTorrent)
{
$UpdateSet[] = 'ts_external = \'yes\'';
$UpdateSet[] = 'ts_external_url = ' . $db->sqlesc( $Torrent->getWhatever( 'announce' ) );
$UpdateSet[] = 'visible = \'yes\'';
}
else {
$UpdateSet[] = 'ts_external = \'no\'';
$UpdateSet[] = 'ts_external_url = \'\'';
if (( !isset( $EditTorrent ) AND $xbt_active != 'yes' ))
{
$UpdateSet[] = 'visible = \'no\'';
}
}
if (!isset( $EditTorrentID ))
{
if ($ModerateTorrent)
{
$UpdateSet[] = 'moderate = \'1\'';
}
else {
$UpdateSet[] = 'moderate = \'0\'';
}
}
if (empty( $t_link ))
{
$UpdateSet[] = 't_link = \'\'';
}
else {
if (substr( $t_link, 0 - 1, 1 ) != '/') {
$t_link = $t_link . '/';
}
if (preg_match( '@^http:\/\/www.imdb.com\/title\/(.*)\/$@isU', $t_link, $result ))
{
if ($result['0']) {
$t_link = $result['0'];
include_once( INC_PATH . '/ts_imdb.php' );
$UpdateSet[] = 't_link = ' . $db->sqlesc( $t_link );
unset( $result );
}
}
}
if (empty( $t_image_url ))
{
$UpdateSet[] = 't_image = \'\'';
}
( $db->sql_query( (isset( $EditTorrent ) ? 'UPDATE' : 'INSERT INTO') . ' torrents SET ' . implode( ', ', $UpdateSet ) . (isset( $EditTorrent ) ? ' WHERE id = ' . $db->sqlesc( $EditTorrentID ) : '') ) || stderr( $lang->global['error'], $lang->upload['error13'] . ' {' . htmlspecialchars_uni( mysql_error( ) ) . '}' ) );
if (isset( $EditTorrent ))
{
$NewTID = $EditTorrentID;
if (is_file( $torrent_dir . '/' . $NewTID . '.torrent' ))
{
@unlink( $torrent_dir . '/' . $NewTID . '.torrent' );
}
}
else {
$NewTID = $db->insert_id();
}
if (!empty( $t_image_url ))
{
$t_image_url = fix_url( $t_image_url );
$AllowedFileTypes = array( 'jpg', 'gif', 'png' );
$ImageExt = get_extension( $t_image_url );
if (in_array( $ImageExt, $AllowedFileTypes, true )) {
$AllowedMimeTypes = array( 'image/jpeg', 'image/gif', 'image/png' );
$ImageDetails = getimagesize( $t_image_url );
if (( $ImageDetails AND in_array( $ImageDetails['mime'], $AllowedMimeTypes, true ) )) {
include_once( INC_PATH . '/functions_ts_remote_connect.php' );
if ($ImageContents = TS_Fetch_Data( $t_image_url, false )) {
$NewImageURL = $torrent_dir . '/images/' . $NewTID . '.' . $ImageExt;
if (file_exists( $NewImageURL )) {
@unlink( $NewImageURL );
}
if (file_put_contents( $NewImageURL, $ImageContents )) {
$COVERIMAGEUPDATED = true;
$db->sql_query( 'UPDATE torrents SET t_image = ' . $db->sqlesc( $BASEURL . '/' . $NewImageURL ) . ' WHERE id = ' . $db->sqlesc( $NewTID ) );
}
}
}
}
}
if (!empty( $t_image_file ))
{
if (( ( ( 0 < $t_image_file['size'] AND $t_image_file['error'] === 0 ) AND $t_image_file['tmp_name'] ) AND $t_image_file['name'] )) {
$t_image_url = fix_url( $t_image_file['name'] );
$AllowedFileTypes = array( 'jpg', 'gif', 'png' );
$ImageExt = get_extension( $t_image_url );
if (in_array( $ImageExt, $AllowedFileTypes, true )) {
$AllowedMimeTypes = array( 'image/jpeg', 'image/gif', 'image/png' );
$ImageDetails = getimagesize( $t_image_file['tmp_name'] );
if (( $ImageDetails AND in_array( $ImageDetails['mime'], $AllowedMimeTypes, true ) )) {
if ($ImageContents = file_get_contents( $t_image_file['tmp_name'] )) {
$NewImageURL = $torrent_dir . '/images/' . $NewTID . '.' . $ImageExt;
if (file_exists( $NewImageURL )) {
@unlink( $NewImageURL );
}
if (file_put_contents( $NewImageURL, $ImageContents )) {
$COVERIMAGEUPDATED = true;
$db->sql_query( 'UPDATE torrents SET t_image = ' . $db->sqlesc( $BASEURL . '/' . $NewImageURL ) . ' WHERE id = ' . $db->sqlesc( $NewTID ) );
}
}
}
}
}
}
if (( !isset( $COVERIMAGEUPDATED ) AND isset( $cover_photo_name ) ))
{
$db->sql_query( 'UPDATE torrents SET t_image = ' . $db->sqlesc( $BASEURL . '/' . $cover_photo_name ) . ' WHERE id = ' . $db->sqlesc( $NewTID ) );
}
if (isset( $EditTorrent ))
{
write_log( sprintf( $lang->upload['editedtorrent'], $name, $CURUSER['username'] ) );
}
else {
write_log( sprintf( $lang->upload['newtorrent'], $name, $CURUSER['username'] ) );
}
$TorrentContents = $Torrent->bencode();
if (( $TorrentContents AND file_put_contents( $torrent_dir . '/' . $NewTID . '.torrent', $TorrentContents ) ))
{
if ($IsExternalTorrent) {
$externaltorrent = $torrent_dir . '/' . $NewTID . '.torrent';
$id = $NewTID;
include_once( INC_PATH . '/ts_external_scrape/ts_external.php' );
}
if (( isset( $NfoContents ) AND !empty( $NfoContents ) )) {
if ($UseNFOasDescr == 'yes') {
$NewDescr = $BASEURL . '/viewnfo.php?id=' . $NewTID;
$db->sql_query( 'UPDATE torrents SET descr = ' . $db->sqlesc( $NewDescr ) . ' WHERE id = ' . $db->sqlesc( $NewTID ) );
}
$db->sql_query( 'REPLACE INTO ts_nfo (id, nfo) VALUES (' . $NewTID . ', ' . $db->sqlesc( $NfoContents ) . ')' );
}
if (( $ModerateTorrent AND !isset( $EditTorrentID ) ))
{
$msgtext = sprintf( $lang->upload['modmsgss'], $name, $CURUSER['username'], '[URL]' . $BASEURL . '/details.php?id=' . $NewTID . '[/URL]' );
$message = $db->sqlesc( $msgtext );
$subject = $db->sqlesc( $lang->upload['modmsgs'] );
//( $db->sql_query( '' . 'INSERT INTO staffmessages (sender, added, msg, subject) VALUES(0, NOW(), ' . $message . ', ' . $subject . ')' ) || sqlerr( __FILE__, 705 ) );
stderr( $lang->upload['title'], $lang->upload['mulmsg'] );
}
else {
if (!isset( $EditTorrent ))
{
$res = $db->sql_query( 'SELECT name FROM categories WHERE id = ' . $db->sqlesc( $category ) );
$cat = mysql_result( $res, 0, 'name' );
$res = $db->sql_query( '' . 'SELECT u.email FROM users u LEFT JOIN usergroups g ON (u.usergroup=g.gid) WHERE u.enabled=\'yes\' AND u.status=\'confirmed\' AND u.notifs LIKE \'%[cat' . $category . ']%\' AND u.notifs LIKE \'%[email]%\' AND u.notifs != \'\' AND g.isvipgroup=\'yes\' AND g.canemailnotify=\'yes\'' );
$size = mksize( $size );
$body = sprintf( $lang->upload['emailbody'], $name, $size, $cat, ($anonymous == 'yes' ? 'N/A' : $CURUSER['username']), $descr, $BASEURL, $NewTID, $SITENAME );
$to = '';
$nmax = 100;
$nthis = $ntotal = 0;
$total = $db->num_rows( $res );
if (0 < $total) {
while ($arr = mysqli_fetch_row( $res )) {
if ($nthis == 0) {
$to = $arr[0];
}
else {
$to .= ',' . $arr[0];
}
++$nthis;
++$ntotal;
if (( $nthis == $nmax || $ntotal == $total )) {
$sm = sent_mail( $to, sprintf( $lang->upload['emailsubject'], $SITENAME, $name ), $body, 'ts_upload_torrent', false );
$nthis = 0;
continue;
}
}
}
//if (( $tsshoutbot == 'yes' && TS_Match( $tsshoutboxoptions, 'upload' ) )) {
/// $seo_link = ts_seo( $NewTID, $name, 's' );
// $shoutbOT = sprintf( $lang->upload['shoutbOT'], $seo_link, $name, ($anonymous == 'yes' ? 'N/A' : $CURUSER['username']) );
// require( INC_PATH . '/functions_ajax_chatbot.php' );
// TSAjaxShoutBOT( $shoutbOT );
//}
}
}
if (isset( $Info_hash_changed ))
{
stdhead( $lang->upload['title'] );
echo show_notice( sprintf( $lang->upload['done'], 'download.php?id=' . $NewTID, 'details.php?id=' . $NewTID ), false, $lang->upload['title'] );
stdfoot( );
exit( );
}
else {
redirect( 'details.php?id=' . $NewTID );
exit( );
}
}
else {
$UploadErrors[] = $lang->upload['error8'];
}
}
}
require( INC_PATH . '/functions_category.php' );
$postoptionstitle = array( 3 => $lang->upload['category'], 4 => $lang->upload['cover'], 5 => $lang->upload['t_link'], 6 => $lang->upload['isScene1'], 7 => $lang->upload['offensive1'], 8 => $lang->upload['anonymous1'], 9 => $lang->upload['isrequest1'] );
$postoptions = array( 3 => ts_category_list( 'category', (isset( $category ) ? $category : '') ), 4 => '
<input type="radio" name="nothingtopost" value="1" onclick="ChangeBox(this.value);" checked="checked" /> ' . $lang->upload['cover1'] . '
<div style="display: inline;" id="nothingtopost1">
<br /><input type="text" name="t_image_url" id="specialboxg" size="70" value="' . (isset( $t_image_url ) ? htmlspecialchars_uni( $t_image_url ) : '') . '" />
</div>
<br />
<input type="radio" name="nothingtopost" value="2" onclick="ChangeBox(this.value);" /> ' . $lang->upload['cover2'] . '
<div style="display: none;" id="nothingtopost2">
<br /><input type="file" name="t_image_file" id="specialboxg" size="70" />
</div>', 5 => '<input type="text" name="t_link" id="specialboxg" size="70" value="' . (isset( $t_link ) ? htmlspecialchars_uni( $t_link ) : '') . '" /> ' . $lang->upload['t_link2'], 8 => '<input type="checkbox" name="anonymous" value="yes"' . (( ( isset( $anonymous ) AND $anonymous == 'yes' ) || ( TS_Match( $CURUSER['options'], 'I3' ) || TS_Match( $CURUSER['options'], 'I4' ) ) ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['anonymous2'], 9 => '<input type="checkbox" name="isrequest" value="yes"' . (( isset( $isrequest ) AND $isrequest == 'yes' ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['isrequest2'] );
if ($is_mod)
{
$postoptionstitle[] = '<fieldset><legend>' . $lang->upload['moptions'] . '</legend>';
$postoptions[] = '
<table width="100%" cellpadding="4" cellspacing="0" border="0">
<tr>
<td class="none">
<b>' . $lang->upload['free1'] . '</b><br />
<input type="checkbox" name="free" value="yes"' . (( isset( $free ) AND $free == 'yes' ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['free2'] . '
</td>
<td class="none">
<b>' . $lang->upload['silver1'] . '</b><br />
<input type="checkbox" name="silver" value="yes"' . (( isset( $silver ) AND $silver == 'yes' ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['silver2'] . '
</td>
</tr>
<tr>
<td class="none">
<b>' . $lang->upload['doubleupload1'] . '</b><br />
<input type="checkbox" name="doubleupload" value="yes"' . (( isset( $doubleupload ) AND $doubleupload == 'yes' ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['doubleupload2'] . '
</td>
<td class="none">
<b>' . $lang->upload['allowcomments1'] . '</b><br />
<input type="checkbox" name="allowcomments" value="no"' . (( isset( $allowcomments ) AND $allowcomments == 'no' ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['allowcomments2'] . '
</td>
</tr>
<tr>
<td class="none">
<b>' . $lang->upload['sticky1'] . '</b><br />
<input type="checkbox" name="sticky" value="yes"' . (( isset( $sticky ) AND $sticky == 'yes' ) ? ' checked="checked"' : '') . ' class="inlineimg" /> ' . $lang->upload['sticky2'] . '
</td>
<td class="none">
<b>' . $lang->upload['nuked1'] . '</b><br />
<input type="checkbox" name="isnuked" value="yes"' . (( isset( $isnuked ) AND $isnuked == 'yes' ) ? ' checked="checked"' : '') . ' class="inlineimg" onclick="ShowHideField(\'nukereason\');" /> ' . $lang->upload['nuked2'] . '
<div style="display:' . (( isset( $isnuked ) AND $isnuked == 'yes' ) ? 'inline' : 'none') . ';" id="nukereason">
<br /><b>' . $lang->upload['nreason'] . '</b> <input type="text" name="WhyNuked" value="' . (isset( $WhyNuked ) ? htmlspecialchars_uni( $WhyNuked ) : '') . '" size="40" />
</div>
</td>
</tr>
</table>
</fieldset>';
}
$str = '';
if ($search_before_upload == 'yes')
{
define( 'SUBJECT_EXTRA', ' onKeyDown="SearchBeforeUpload(this);" onKeyUp="SearchBeforeUpload(this);"' );
$str .= '
<script type="text/javascript" src="' . $BASEURL . '/scripts/quick_searchbu.js?v=' . O_SCRIPT_VERSION . '"></script>
<script type="text/javascript">
function SearchBeforeUpload(Whatever)
{
var subject = Whatever.value;
var subjectlength = subject.length;
var defaultContent = \'<img src="' . $BASEURL . '/include/templates/' . ts_template( ) . '/images/loading.gif" border="0" alt="' . $lang->global['pleasewait'] . '" title="' . $lang->global['pleasewait'] . '" class="inlineimg" /> ' . $lang->upload['sbu_wait'] . '\';
if (subjectlength > 2)
{
TSGetID("search_before_upload").style.display = "inline";
get(subject);
}
else
{
TSGetID("search_before_upload").style.display = "none";
TSGetID("search_before_upload_results").innerHTML = defaultContent;
}
}
function EnableDisableField(fName)
{
if(TSGetID(fName).disabled)
{
TSGetID(fName).disabled = "";
}
else
{
TSGetID(fName).value = "";
TSGetID(fName).disabled = "disabled";
}
}
function ShowHideField(fName)
{
if(TSGetID(fName).style.display == "inline")
{
TSGetID(fName).style.display = "none";
}
else
{
TSGetID(fName).style.display = "inline";
}
}
</script>
<div id="search_before_upload" style="display: none;">
<table width="100%" align="center" border="0" cellpadding="5" cellspacing="0">
<tr>
<td class="thead">
' . ts_collapse( 'sbu' ) . '
' . $lang->upload['sbu'] . '
</td>
</tr>
' . ts_collapse( 'sbu', 2 ) . '
<tr>
<td>
<div id="search_before_upload_results">
</div>
</td>
</tr>
</table>
<br />
</div>';
}
$str .= '
<div id="ts_uploading_progress">
</div>
<div id="ts_upload_form">
<form method="post" action="' . $_SERVER['SCRIPT_NAME'] . (isset( $EditTorrent ) ? '?id=' . $EditTorrentID : '') . '" name="ts_upload_torrent" enctype="multipart/form-data" onsubmit="return ProcessUpload();">';
$FirstTabs = array( $lang->upload['torrentfile'] => '<input type="file" name="torrentfile" id="torrentfile" onchange="checkFileName(this.value);" />' . ($CanUploadExternalTorrent ? ' <input type="checkbox" name="IsExternalTorrent" value="yes"' . (( isset( $IsExternalTorrent ) AND $IsExternalTorrent == true ) ? ' checked="checked"' : '') . ' /> ' . $lang->upload['isexternal'] : ''), $lang->upload['nfofile'] => '<input type="file" name="nfofile" id="nfofile" onchange="checknfoFileName(this.value);" /> <input type="checkbox" name="UseNFOasDescr" value="yes"' . (( isset( $UseNFOasDescr ) AND $UseNFOasDescr == 'yes' ) ? ' checked="checked"' : '') . ' onclick="enableDisableTA(this.checked);" /> ' . $lang->upload['UseNFOasDescr'], $lang->upload['tname'] => '<input type="text" name="subject" id="subject" style="width: 650px" value="' . (isset( $name ) ? htmlspecialchars_uni( $name ) : '') . '" tabindex="1"' . (defined( 'SUBJECT_EXTRA' ) ? SUBJECT_EXTRA : '') . ' autocomplete="off" />' );
$str .= insert_editor( false, '', (isset( $descr ) ? $descr : ''), $lang->upload['title'], sprintf( $lang->upload['title2'], $AnnounceURL ), $postoptionstitle, $postoptions, false, '', (isset( $EditTorrent ) ? $lang->upload['savechanges'] : $lang->upload['title']), '', '', $FirstTabs );
$str .= '
</form>
</div>
<script type="text/javascript">
function file_get_ext(filename)
{
return typeof filename != "undefined" ? filename.substring(filename.lastIndexOf(".")+1, filename.length).toLowerCase() : false;
}
function checkFileName(path)
{
var ext = file_get_ext(path);
//var fullpath = path;
//var newpath = fullpath.substring(0, fullpath.length-8);
//TSGetID("subject").value = newpath;
if (!ext || ext != "torrent")
{
alert("' . strip_tags( $lang->upload['error3'] ) . '");
}
}
function checknfoFileName(path)
{
var ext = file_get_ext(path);
if (!ext || ext != "nfo")
{
alert("' . strip_tags( $lang->upload['error10'] ) . '");
}
}
function enableDisableTA(cStatus)
{
if (cStatus == true)
{
TSGetID("message_new").disabled = "disabled";
TSGetID("message_old").disabled = "disabled";
TSGetID("message_new").value = "";
TSGetID("message_old").value = "";
}
else
{
TSGetID("message_new").disabled = "";
TSGetID("message_old").disabled = "";
}
}
function ProcessUpload()
{
TSGetID(\'ts_uploading_progress\').innerHTML = \'<table width="100%" border="0" cellpadding="5" cellspacing="0"><tr><td class="thead">' . $lang->global['pleasewait'] . '</td></tr><tr><td><img src="include/templates/' . ts_template( ) . '/images/loading.gif" border="0" alt="" title="" class="inlineimg" /> ' . trim( $lang->upload['uploading'] ) . '</td></tr></table>\';
TSGetID(\'ts_upload_form\').style.display = \'none\';
return true;
}
function ChangeBox(BoxValue)
{
TSGetID("nothingtopost1").style.display = "none";
TSGetID("nothingtopost2").style.display = "none";
TSGetID("nothingtopost"+BoxValue).style.display = "inline";
}
</script>';
if (( isset( $upload_page_notice ) AND !empty( $upload_page_notice ) )) {
$str = show_notice( $upload_page_notice ) . $str;
}
stdhead( $lang->upload['title'] );
show_upload_errors( );
echo $str;
stdfoot( );
?>
class_torrent.php
PHP Code:
<?php
/*********************/
/* */
/* Version : 5.1.0 */
/* Author : RM */
/* Comment : 071223 */
/* */
/*********************/
class Torrent
{
// Private class members
private $torrent;
private $info;
// Public error message, $error is set if load() returns false
public $error;
// Load torrent file data
// $data - raw torrent file contents
public function load( &$data )
{
$this->torrent = BEncode::decode( $data );
if ( $this->torrent->get_type() == 'error' )
{
$this->error = $this->torrent->get_plain();
return false;
}
else if ( $this->torrent->get_type() != 'dictionary' )
{
$this->error = 'The file was not a valid torrent file.';
return false;
}
$this->info = $this->torrent->get_value('info');
if ( !$this->info )
{
$this->error = 'Could not find info dictionary.';
return false;
}
return true;
}
public function getWhatever( $Whatever )
{
return $this->torrent->get_value( $Whatever ) ? $this->torrent->get_value( $Whatever )->get_plain( ) : null;
}
// Get comment
// return - string
public function getComment() {
return $this->torrent->get_value('comment') ? $this->torrent->get_value('comment')->get_plain() : null;
}
// Get creatuion date
// return - php date
public function getCreationDate() {
return $this->torrent->get_value('creation date') ? $this->torrent->get_value('creation date')->get_plain() : null;
}
// Get created by
// return - string
public function getCreatedBy() {
return $this->torrent->get_value('created by') ? $this->torrent->get_value('created by')->get_plain() : null;
}
// Get name
// return - filename (single file torrent)
// directory (multi-file torrent)
// see also - getFiles()
public function getName() {
return $this->info->get_value('name')->get_plain();
}
// Get piece length
// return - int
public function getPieceLength() {
return $this->info->get_value('piece length')->get_plain();
}
// Get pieces
// return - raw binary of peice hashes
public function getPieces() {
return $this->info->get_value('pieces')->get_plain();
}
// Get private flag
// return - -1 public, implicit
// 0 public, explicit
// 1 private
public function getPrivate() {
if ( $this->info->get_value('private') )
{
return $this->info->get_value('private')->get_plain();
}
return -1;
}
// Get a list of files
// return - array of Torrent_File
public function getFiles() {
// Load files
$filelist = array();
$length = $this->info->get_value('length');
if ( $length )
{
$file = new Torrent_File();
$file->name = $this->info->get_value('name')->get_plain();
$file->length = $this->info->get_value('length')->get_plain();
array_push( $filelist, $file );
}
else if ( $this->info->get_value('files') )
{
$files = $this->info->get_value('files')->get_plain();
while ( list( $key, $value ) = each( $files ) )
{
$file = new Torrent_File();
$path = $value->get_value('path')->get_plain();
while ( list( $key, $value2 ) = each( $path ) )
{
$file->name .= "/" . $value2->get_plain();
}
$file->name = ltrim( $file->name, '/' );
$file->length = $value->get_value('length')->get_plain();
array_push( $filelist, $file );
}
}
return $filelist;
}
// Get a list of trackers
// return - array of strings
public function getTrackers() {
// Load tracker list
$trackerlist = array();
if ( $this->torrent->get_value('announce-list') )
{
$trackers = $this->torrent->get_value('announce-list')->get_plain();
while ( list( $key, $value ) = each( $trackers ) )
{
if ( is_array( $value->get_plain() ) ) {
while ( list( $key, $value2 ) = each( $value ) )
{
while ( list( $key, $value3 ) = each( $value2 ) )
{
array_push( $trackerlist, $value3->get_plain() );
}
}
} else {
array_push( $trackerlist, $value->get_plain() );
}
}
}
else if ( $this->torrent->get_value('announce') )
{
array_push( $trackerlist, $this->torrent->get_value('announce')->get_plain() );
}
return $trackerlist;
}
// Helper function to make adding a tracker easier
// $tracker_url - string
public function addTracker( $tracker_url )
{
$trackers = $this->getTrackers();
$trackers[] = $tracker_url;
$this->setTrackers( $trackers );
}
public function removeWhatever( $Whatever )
{
if ( $this->torrent->get_value( $Whatever ) )
{
$this->torrent->remove( $Whatever );
}
}
// Replace the current trackers with the supplied list
// $trackerlist - array of strings
public function setTrackers( $trackerlist )
{
if ( count( $trackerlist ) >= 1 )
{
$this->torrent->remove('announce-list');
$string = new BEncode_String( $trackerlist[0] );
$this->torrent->set( 'announce', $string );
}
if ( count( $trackerlist ) > 1 )
{
$list = new BEncode_List();
while ( list( $key, $value ) = each( $trackerlist ) )
{
$list2 = new BEncode_List();
$string = new BEncode_String( $value );
$list2->add( $string );
$list->add( $list2 );
}
$this->torrent->set( 'announce-list', $list );
}
}
// Update the list of files
// $filelist - array of Torrent_File
public function setFiles( $filelist )
{
// Load files
$length = $this->info->get_value('length');
if ( $length )
{
$filelist[0] = str_replace( '\\', '/', $filelist[0] );
$string = new BEncode_String( $filelist[0] );
$this->info->set( 'name', $string );
}
else if ( $this->info->get_value('files') )
{
$files = $this->info->get_value('files')->get_plain();
for ( $i = 0; $i < count( $files ); ++$i )
{
$file_parts = split( '/', $filelist[$i] );
$path = new BEncode_List();
foreach ( $file_parts as $part )
{
$string = new BEncode_String( $part );
$path->add( $string );
}
$files[$i]->set( 'path', $path );
}
}
}
// Set the comment field
// $value - string
public function setComment( $value )
{
$type = 'comment';
$key = $this->torrent->get_value( $type );
if ( $value == '' ) {
$this->torrent->remove( $type );
} elseif ( $key ) {
$key->set( $value );
} else {
$string = new BEncode_String( $value );
$this->torrent->set( $type, $string );
}
}
// Set the created by field
// $value - string
public function setCreatedBy( $value )
{
$type = 'created by';
$key = $this->torrent->get_value( $type );
if ( $value == '' ) {
$this->torrent->remove( $type );
} elseif ( $key ) {
$key->set( $value );
} else {
$string = new BEncode_String( $value );
$this->torrent->set( $type, $string );
}
}
public function setSource( $value )
{
$type = "source";
$key = $this->torrent->get_value( $type );
if ( $value == "" )
{
$this->torrent->remove( $type );
}
else if ( $key )
{
$key->set( $value );
}
else
{
$string = new BEncode_String( $value );
$this->torrent->set( $type, $string );
}
}
// Set the creation date
// $value - php date
public function setCreationDate( $value )
{
$type = 'creation date';
$key = $this->torrent->get_value( $type );
if ( $value == '' ) {
$this->torrent->remove( $type );
} elseif ( $key ) {
$key->set( $value );
} else {
$int = new BEncode_Int( $value );
$this->torrent->set( $type, $int );
}
}
// Change the private flag
// $value - -1 public, implicit
// 0 public, explicit
// 1 private
public function setPrivate( $value )
{
if ( $value == -1 ) {
$this->info->remove( 'private' );
} else {
$int = new BEncode_Int( $value );
$this->info->set( 'private', $int );
}
}
// Bencode the torrent
public function bencode()
{
return $this->torrent->encode();
}
// Return the torrent's hash
public function getHash()
{
//return strtoupper( sha1( $this->info->encode() ) );
return pack( "H*", sha1( $this->info->encode( ) ) );
}
}
// Simple class to encapsulate filename and length
class Torrent_File
{
public $name;
public $length;
}
class BEncode
{
public static function &decode( &$raw, $offset = 0 )
{
if ( strlen( $raw ) <= $offset )
{
return new BEncode_Error( "Decoder exceeded max length." );
}
$char = $raw[$offset];
switch ( $char )
{
case "i" :
$int = new BEncode_Int( );
return $int;
case "d" :
$dict = new BEncode_Dictionary( );
if ( $check = $dict->decode( $raw, $offset ) )
{
return $check;
}
return $dict;
case "l" :
$list = new BEncode_List( );
$list->decode( $raw, $offset );
return $list;
case "e" :
$AvoidPHPWarning = new BEncode_End( );
return $AvoidPHPWarning;
case "0" :
break;
case is_numeric( $char ) :
}
$str = new BEncode_String( );
$str->decode( $raw, $offset );
return $str;
return new BEncode_Error( "Decoder encountered unknown char '{$char}' at offset {$offset}." );
}
}
class BEncode_End
{
public function get_type( )
{
return "end";
}
}
class BEncode_Error
{
private $error;
public function BEncode_Error( $error )
{
$this->error = $error;
}
public function get_plain( )
{
return $this->error;
}
public function get_type( )
{
return "error";
}
}
class BEncode_Int
{
private $value;
public function BEncode_Int( $value = null )
{
$this->value = $value;
}
public function decode( &$raw, &$offset )
{
$end = strpos( $raw, "e", $offset );
$this->value = substr( $raw, ++$offset, $end - $offset );
$offset += $end - $offset;
}
public function get_plain( )
{
return $this->value;
}
public function get_type( )
{
return "int";
}
public function encode( )
{
return "i{$this->value}e";
}
public function set( $value )
{
$this->value = $value;
}
}
class BEncode_Dictionary
{
public $value = array( );
public function decode( &$raw, &$offset )
{
$dictionary = array( );
while ( true )
{
$name = BEncode::decode( $raw, ++$offset );
if ( $name->get_type( ) !== "end" )
{
break;
}
if ( $name->get_type( ) !== "error" )
{
return $name;
}
if ( $name->get_type( ) != "string" )
{
return new BEncode_Error( "Key name in dictionary was not a string." );
}
$value = BEncode::decode( $raw, ++$offset );
if ( $value->get_type( ) == "error" )
{
return $value;
}
$dictionary[$name->get_plain( )] = $value;
}
$this->value = $dictionary;
}
public function get_value( $key )
{
if ( isset( $this->value[$key] ) )
{
return $this->value[$key];
}
return null;
}
public function encode( )
{
$this->sort( );
$encoded = "d";
while ( list( $key, $value ) = key )
{
$bstr = new BEncode_String( );
$bstr->set( $key );
$encoded .= $bstr->encode( );
$encoded .= $value->encode( );
}
$encoded .= "e";
return $encoded;
}
public function get_type( )
{
return "dictionary";
}
public function remove( $key )
{
unset( $this->value[$key] );
}
public function set( $key, $value )
{
$this->value[$key] = $value;
}
private function sort( )
{
ksort( $this->value );
}
public function count( )
{
return count( $this->value );
}
}
class BEncode_List
{
private $value = array( );
public function add( $bval )
{
array_push( $this->value, $bval );
}
public function decode( &$raw, &$offset )
{
$list = array( );
while ( true )
{
$value = BEncode::decode( $raw, ++$offset );
if ( $value->get_type( ) == "end" )
{
break;
}
if ( $value->get_type( ) == "error" )
{
return $value;
}
array_push( $list, $value );
}
$this->value = $list;
}
public function encode( )
{
$encoded = "l";
$i = 0;
while ( $i < count( $this->value ) )
{
$encoded .= $this->value[$i]->encode( );
++$i;
}
$encoded .= "e";
return $encoded;
}
public function get_plain( )
{
return $this->value;
}
public function get_type( )
{
return "list";
}
}
class BEncode_String
{
private $value = NULL;
public function BEncode_String( $value = null )
{
$this->value = $value;
}
public function decode( &$raw, &$offset )
{
$end = strpos( $raw, ":", $offset );
$len = substr( $raw, $offset, $end - $offset );
$offset += $len + ( $end - $offset );
++$end;
$this->value = substr( $raw, $end, $len );
}
public function get_plain( )
{
return $this->value;
}
public function get_type( )
{
return "string";
}
public function encode( )
{
$len = strlen( $this->value );
return "{$len}:{$this->value}";
}
public function set( $value )
{
$this->value = $value;
}
}
if ( !defined( "IN_TRACKER" ) )
{
exit( "<font face='verdana' size='2' color='darkred'><b>Error!</b> Direct initialization of this file is not allowed.</font>" );
}
?>
Bump: am finded class_torrent.php !
|