12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?
- $ExtraTorrentsInsert = array();
- foreach ($ExtraTorrents as $ExtraTorrent) {
- $Name = $ExtraTorrent['Name'];
- $ExtraTorrentsInsert[$Name] = $ExtraTorrent;
- $ThisInsert =& $ExtraTorrentsInsert[$Name];
- $ExtraTor = new BencodeTorrent($Name, true);
- if (isset($ExtraTor->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 = array();
- 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: <br />$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 = "<a href=\"torrents.php?torrentid=$ExtraID\">The exact same torrent file already exists on the site!</a>";
- } else {
- //One of the lost torrents.
- file_put_contents(TORRENT_STORE.$ExtraID.'.torrent', $ThisInsert['TorEnc']);
- $Err = "<a href=\"torrents.php?torrentid=$ExtraID\">Thank you for fixing this torrent.</a>";
- }
- }
- }
- unset($ThisInsert);
- ?>
|