Oppaitime'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.

index.php 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?
  2. /*
  3. AJAX Switch Center
  4. This page acts as an AJAX "switch" - it's called by scripts, and it includes the required pages.
  5. The required page is determined by $_GET['action'].
  6. */
  7. enforce_login();
  8. /* AJAX_LIMIT = array(x,y) = 'x' requests every 'y' seconds.
  9. e.g. array(5,10) = 5 requests every 10 seconds */
  10. $AJAX_LIMIT = array(5,10);
  11. $LimitedPages = array('tcomments','user','forum','top10','browse','usersearch','requests','artist','inbox','subscriptions','bookmarks','announcements','notifications','request','better','similar_artists','userhistory','votefavorite','wiki','torrentgroup','news_ajax','user_recents', 'collage', 'raw_bbcode');
  12. // These users aren't rate limited.
  13. // This array should contain user IDs.
  14. $UserExceptions = array(
  15. );
  16. $UserID = $LoggedUser['ID'];
  17. header('Content-Type: application/json; charset=utf-8');
  18. // Enforce rate limiting everywhere except info.php
  19. if (!in_array($UserID, $UserExceptions) && isset($_GET['action']) && in_array($_GET['action'], $LimitedPages)) {
  20. if (!$UserRequests = $Cache->get_value('ajax_requests_'.$UserID)) {
  21. $UserRequests = 0;
  22. $Cache->cache_value('ajax_requests_'.$UserID, '0', $AJAX_LIMIT[1]);
  23. }
  24. if ($UserRequests > $AJAX_LIMIT[0]) {
  25. json_die("failure", "rate limit exceeded");
  26. } else {
  27. $Cache->increment_value('ajax_requests_'.$UserID);
  28. }
  29. }
  30. switch ($_GET['action']) {
  31. // things that (may be) used on the site
  32. case 'preview':
  33. require('preview.php');
  34. break;
  35. case 'torrent_info':
  36. require('torrent_info.php');
  37. break;
  38. case 'stats':
  39. require(SERVER_ROOT . '/sections/ajax/stats.php');
  40. break;
  41. case 'checkprivate':
  42. include('checkprivate.php');
  43. break;
  44. // things not yet used on the site
  45. case 'torrent':
  46. require('torrent.php');
  47. break;
  48. case 'torrentgroup':
  49. require('torrentgroup.php');
  50. break;
  51. case 'torrentgroupalbumart': // so the album art script can function without breaking the ratelimit
  52. require(SERVER_ROOT . '/sections/ajax/torrentgroupalbumart.php');
  53. break;
  54. case 'tcomments':
  55. require(SERVER_ROOT . '/sections/ajax/tcomments.php');
  56. break;
  57. case 'user':
  58. require(SERVER_ROOT . '/sections/ajax/user.php');
  59. break;
  60. case 'forum':
  61. require(SERVER_ROOT . '/sections/ajax/forum/index.php');
  62. break;
  63. case 'top10':
  64. require(SERVER_ROOT . '/sections/ajax/top10/index.php');
  65. break;
  66. case 'browse':
  67. require(SERVER_ROOT . '/sections/ajax/browse.php');
  68. break;
  69. case 'usersearch':
  70. require(SERVER_ROOT . '/sections/ajax/usersearch.php');
  71. break;
  72. case 'requests':
  73. require(SERVER_ROOT . '/sections/ajax/requests.php');
  74. break;
  75. case 'artist':
  76. require(SERVER_ROOT . '/sections/ajax/artist.php');
  77. break;
  78. case 'inbox':
  79. require(SERVER_ROOT . '/sections/ajax/inbox/index.php');
  80. break;
  81. case 'subscriptions':
  82. require(SERVER_ROOT . '/sections/ajax/subscriptions.php');
  83. break;
  84. case 'index':
  85. require(SERVER_ROOT . '/sections/ajax/info.php');
  86. break;
  87. case 'bookmarks':
  88. require(SERVER_ROOT . '/sections/ajax/bookmarks/index.php');
  89. break;
  90. case 'announcements':
  91. require(SERVER_ROOT . '/sections/ajax/announcements.php');
  92. break;
  93. case 'notifications':
  94. require(SERVER_ROOT . '/sections/ajax/notifications.php');
  95. break;
  96. case 'request':
  97. require(SERVER_ROOT . '/sections/ajax/request.php');
  98. break;
  99. case 'loadavg':
  100. require(SERVER_ROOT . '/sections/ajax/loadavg.php');
  101. break;
  102. case 'better':
  103. require(SERVER_ROOT . '/sections/ajax/better/index.php');
  104. break;
  105. case 'password_validate':
  106. require(SERVER_ROOT . '/sections/ajax/password_validate.php');
  107. break;
  108. case 'similar_artists':
  109. require(SERVER_ROOT . '/sections/ajax/similar_artists.php');
  110. break;
  111. case 'userhistory':
  112. require(SERVER_ROOT . '/sections/ajax/userhistory/index.php');
  113. break;
  114. case 'votefavorite':
  115. require(SERVER_ROOT . '/sections/ajax/takevote.php');
  116. break;
  117. case 'wiki':
  118. require(SERVER_ROOT . '/sections/ajax/wiki.php');
  119. break;
  120. case 'send_recommendation':
  121. require(SERVER_ROOT . '/sections/ajax/send_recommendation.php');
  122. break;
  123. case 'get_friends':
  124. require(SERVER_ROOT . '/sections/ajax/get_friends.php');
  125. break;
  126. case 'news_ajax':
  127. require(SERVER_ROOT . '/sections/ajax/news_ajax.php');
  128. break;
  129. case 'community_stats':
  130. require(SERVER_ROOT . '/sections/ajax/community_stats.php');
  131. break;
  132. case 'user_recents':
  133. require(SERVER_ROOT . '/sections/ajax/user_recents.php');
  134. break;
  135. case 'collage':
  136. require(SERVER_ROOT . '/sections/ajax/collage.php');
  137. break;
  138. case 'raw_bbcode':
  139. require(SERVER_ROOT . '/sections/ajax/raw_bbcode.php');
  140. break;
  141. case 'get_user_notifications':
  142. require(SERVER_ROOT . '/sections/ajax/get_user_notifications.php');
  143. break;
  144. case 'clear_user_notification':
  145. require(SERVER_ROOT . '/sections/ajax/clear_user_notification.php');
  146. break;
  147. case 'autofill':
  148. if ($_GET['cat'] == 'anime') require(SERVER_ROOT . '/sections/ajax/autofill/anime.php');
  149. if ($_GET['cat'] == 'jav') require(SERVER_ROOT . '/sections/ajax/autofill/jav.php');
  150. if ($_GET['cat'] == 'manga') require(SERVER_ROOT . '/sections/ajax/autofill/manga.php');
  151. break;
  152. default:
  153. // If they're screwing around with the query string
  154. json_die("failure");
  155. }
  156. function pullmediainfo($Array) {
  157. $NewArray = [];
  158. foreach ($Array as $Item) {
  159. $NewArray[] = array(
  160. 'id' => (int)$Item['id'],
  161. 'name' => $Item['name']
  162. );
  163. }
  164. return $NewArray;
  165. }
  166. ?>