BioTorrents.de’s version of Gazelle
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ocelot.php 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. #declare(strict_types=1);
  3. $ENV = ENV::go();
  4. $Key = $_REQUEST['key'];
  5. $Type = $_REQUEST['type'];
  6. if (($Key !== $ENV->getPriv('TRACKER_SECRET')) || $_SERVER['REMOTE_ADDR'] !== $ENV->getPriv('TRACKER_HOST')) {
  7. send_irc(DEBUG_CHAN, 'Ocelot Auth Failure '.$_SERVER['REMOTE_ADDR']);
  8. error(403);
  9. }
  10. switch ($Type) {
  11. case 'expiretoken':
  12. if (isset($_GET['tokens'])) {
  13. $Tokens = explode(',', $_GET['tokens']);
  14. if (empty($Tokens)) {
  15. error(0);
  16. }
  17. $Cond = $UserIDs = [];
  18. foreach ($Tokens as $Key => $Token) {
  19. list($UserID, $TorrentID) = explode(':', $Token);
  20. if (!is_number($UserID) || !is_number($TorrentID)) {
  21. continue;
  22. }
  23. $Cond[] = "(UserID = $UserID AND TorrentID = $TorrentID)";
  24. $UserIDs[] = $UserID;
  25. }
  26. if (!empty($Cond)) {
  27. $Query = "
  28. UPDATE users_freeleeches
  29. SET Expired = TRUE
  30. WHERE ".implode(" OR ", $Cond);
  31. $DB->query($Query);
  32. foreach ($UserIDs as $UserID) {
  33. $Cache->delete_value("users_tokens_$UserID");
  34. }
  35. }
  36. } else {
  37. $TorrentID = $_REQUEST['torrentid'];
  38. $UserID = $_REQUEST['userid'];
  39. if (!is_number($TorrentID) || !is_number($UserID)) {
  40. error(403);
  41. }
  42. $DB->query("
  43. UPDATE users_freeleeches
  44. SET Expired = TRUE
  45. WHERE UserID = $UserID
  46. AND TorrentID = $TorrentID");
  47. $Cache->delete_value("users_tokens_$UserID");
  48. }
  49. break;
  50. }