Dec['encrypted_files'])) { $Err = 'At least one of the torrents contain an encrypted file list which is not supported here'; break; } if (!$ExtraTor->is_private()) { $ExtraTor->make_private(); // The torrent is now private. $PublicTorrent = true; } // File list and size list($ExtraTotalSize, $ExtraFileList) = $ExtraTor->file_list(); $ExtraDirName = isset($ExtraTor->Dec['info']['files']) ? Format::make_utf8($ExtraTor->get_name()) : ''; $ExtraTmpFileList = []; foreach ($ExtraFileList as $ExtraFile) { list($ExtraSize, $ExtraName) = $ExtraFile; check_file($Type, $ExtraName); // Make sure the file name is not too long if (mb_strlen($ExtraName, 'UTF-8') + mb_strlen($ExtraDirName, 'UTF-8') + 1 > MAX_FILENAME_LENGTH) { $Err = "The torrent contained one or more files with too long of a name:
$ExtraDirName/$ExtraName"; break; } // Add file and size to array $ExtraTmpFileList[] = Torrents::filelist_format_file($ExtraFile); } // To be stored in the database $ThisInsert['FilePath'] = db_string($ExtraDirName); $ThisInsert['FileString'] = db_string(implode("\n", $ExtraTmpFileList)); $ThisInsert['InfoHash'] = pack('H*', $ExtraTor->info_hash()); $ThisInsert['NumFiles'] = count($ExtraFileList); $ThisInsert['TorEnc'] = db_string($ExtraTor->encode()); $ThisInsert['TotalSize'] = $ExtraTotalSize; $Debug->set_flag('upload: torrent decoded'); $DB->query(" SELECT ID FROM torrents WHERE info_hash = '" . db_string($ThisInsert['InfoHash']) . "'"); if ($DB->has_results()) { list($ExtraID) = $DB->next_record(); if (file_exists(TORRENT_STORE.$ExtraID.'.torrent')) { $Err = "The exact same torrent file already exists on the site!"; } else { //One of the lost torrents. file_put_contents(TORRENT_STORE.$ExtraID.'.torrent', $ThisInsert['TorEnc']); $Err = "Thank you for fixing this torrent."; } } } unset($ThisInsert); ?>