index.php 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297
  1. <?php
  2. $generationTime = -microtime(true);
  3. //include functions
  4. require_once 'functions.php';
  5. //Set result array
  6. $result = array();
  7. //Get request method
  8. $method = $_SERVER['REQUEST_METHOD'];
  9. $pretty = isset($_GET['pretty']) ? true : false;
  10. reset($_GET);
  11. $function = (key($_GET) ? str_replace("/", "_", key($_GET)) : false);
  12. //Exit if $function is blank
  13. if ($function === false) {
  14. $result['status'] = "error";
  15. $result['statusText'] = "No API Path Supplied";
  16. exit(json_encode($result));
  17. }
  18. $result['request'] = key($_GET);
  19. $result['params'] = $_POST;
  20. switch ($function) {
  21. case 'v1_settings_page':
  22. switch ($method) {
  23. case 'GET':
  24. if (qualifyRequest(1)) {
  25. $result['status'] = 'success';
  26. $result['statusText'] = 'success';
  27. $result['data'] = $pageSettings;
  28. writeLog('success', 'Admin Function - Accessed Settings Page', $GLOBALS['organizrUser']['username']);
  29. } else {
  30. $result['status'] = 'error';
  31. $result['statusText'] = 'API/Token invalid or not set';
  32. $result['data'] = null;
  33. writeLog('error', 'Admin Function - Tried to access Settings Page', $GLOBALS['organizrUser']['username']);
  34. }
  35. break;
  36. default:
  37. $result['status'] = 'error';
  38. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  39. break;
  40. }
  41. break;
  42. case 'v1_homepage_page':
  43. switch ($method) {
  44. case 'GET':
  45. $result['status'] = 'success';
  46. $result['statusText'] = 'success';
  47. $result['data'] = $pageHomepage;
  48. break;
  49. default:
  50. $result['status'] = 'error';
  51. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  52. break;
  53. }
  54. break;
  55. case 'v1_settings_plugins':
  56. switch ($method) {
  57. case 'GET':
  58. if (qualifyRequest(1)) {
  59. $result['status'] = 'success';
  60. $result['statusText'] = 'success';
  61. $result['data'] = $pageSettingsPlugins;
  62. } else {
  63. $result['status'] = 'error';
  64. $result['statusText'] = 'API/Token invalid or not set';
  65. $result['data'] = null;
  66. }
  67. break;
  68. default:
  69. $result['status'] = 'error';
  70. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  71. break;
  72. }
  73. break;
  74. case 'v1_settings_tab_editor_homepage':
  75. switch ($method) {
  76. case 'GET':
  77. if (qualifyRequest(1)) {
  78. $result['status'] = 'success';
  79. $result['statusText'] = 'success';
  80. $result['data'] = $pageSettingsTabEditorHomepage;
  81. } else {
  82. $result['status'] = 'error';
  83. $result['statusText'] = 'API/Token invalid or not set';
  84. $result['data'] = null;
  85. }
  86. break;
  87. default:
  88. $result['status'] = 'error';
  89. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  90. break;
  91. }
  92. break;
  93. case 'v1_settings_tab_editor_homepage_order':
  94. switch ($method) {
  95. case 'GET':
  96. if (qualifyRequest(1)) {
  97. $result['status'] = 'success';
  98. $result['statusText'] = 'success';
  99. $result['data'] = $pageSettingsTabEditorHomepageOrder;
  100. } else {
  101. $result['status'] = 'error';
  102. $result['statusText'] = 'API/Token invalid or not set';
  103. $result['data'] = null;
  104. }
  105. break;
  106. default:
  107. $result['status'] = 'error';
  108. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  109. break;
  110. }
  111. break;
  112. case 'v1_settings_homepage_list':
  113. switch ($method) {
  114. case 'GET':
  115. if (qualifyRequest(1)) {
  116. $result['status'] = 'success';
  117. $result['statusText'] = 'success';
  118. $result['data'] = getHomepageList();
  119. } else {
  120. $result['status'] = 'error';
  121. $result['statusText'] = 'API/Token invalid or not set';
  122. $result['data'] = null;
  123. }
  124. break;
  125. case 'POST':
  126. if (qualifyRequest(1)) {
  127. $result['status'] = 'success';
  128. $result['statusText'] = 'success';
  129. $result['data'] = editPlugins($_POST);
  130. } else {
  131. $result['status'] = 'error';
  132. $result['statusText'] = 'API/Token invalid or not set';
  133. $result['data'] = null;
  134. }
  135. break;
  136. default:
  137. $result['status'] = 'error';
  138. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  139. break;
  140. }
  141. break;
  142. case 'v1_settings_plugins_list':
  143. switch ($method) {
  144. case 'GET':
  145. if (qualifyRequest(1)) {
  146. $result['status'] = 'success';
  147. $result['statusText'] = 'success';
  148. $result['data'] = getPlugins();
  149. } else {
  150. $result['status'] = 'error';
  151. $result['statusText'] = 'API/Token invalid or not set';
  152. $result['data'] = null;
  153. }
  154. break;
  155. case 'POST':
  156. if (qualifyRequest(1)) {
  157. $result['status'] = 'success';
  158. $result['statusText'] = 'success';
  159. $result['data'] = editPlugins($_POST);
  160. } else {
  161. $result['status'] = 'error';
  162. $result['statusText'] = 'API/Token invalid or not set';
  163. $result['data'] = null;
  164. }
  165. break;
  166. default:
  167. $result['status'] = 'error';
  168. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  169. break;
  170. }
  171. break;
  172. case 'v1_settings_settings_logs':
  173. switch ($method) {
  174. case 'GET':
  175. if (qualifyRequest(1)) {
  176. $result['status'] = 'success';
  177. $result['statusText'] = 'success';
  178. $result['data'] = $pageSettingsSettingsLogs;
  179. } else {
  180. $result['status'] = 'error';
  181. $result['statusText'] = 'API/Token invalid or not set';
  182. $result['data'] = null;
  183. }
  184. break;
  185. default:
  186. $result['status'] = 'error';
  187. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  188. break;
  189. }
  190. break;
  191. case 'v1_settings_settings_sso':
  192. switch ($method) {
  193. case 'GET':
  194. if (qualifyRequest(1)) {
  195. $result['status'] = 'success';
  196. $result['statusText'] = 'success';
  197. $result['data'] = $pageSettingsSettingsSSO;
  198. } else {
  199. $result['status'] = 'error';
  200. $result['statusText'] = 'API/Token invalid or not set';
  201. $result['data'] = null;
  202. }
  203. break;
  204. default:
  205. $result['status'] = 'error';
  206. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  207. break;
  208. }
  209. break;
  210. case 'v1_settings_settings_main':
  211. switch ($method) {
  212. case 'GET':
  213. if (qualifyRequest(1)) {
  214. $result['status'] = 'success';
  215. $result['statusText'] = 'success';
  216. $result['data'] = $pageSettingsSettingsMain;
  217. } else {
  218. $result['status'] = 'error';
  219. $result['statusText'] = 'API/Token invalid or not set';
  220. $result['data'] = null;
  221. }
  222. break;
  223. default:
  224. $result['status'] = 'error';
  225. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  226. break;
  227. }
  228. break;
  229. case 'v1_settings_customize_appearance':
  230. switch ($method) {
  231. case 'GET':
  232. if (qualifyRequest(1)) {
  233. $result['status'] = 'success';
  234. $result['statusText'] = 'success';
  235. $result['data'] = $pageSettingsCustomizeAppearance;
  236. } else {
  237. $result['status'] = 'error';
  238. $result['statusText'] = 'API/Token invalid or not set';
  239. $result['data'] = null;
  240. }
  241. break;
  242. case 'POST':
  243. if (qualifyRequest(1)) {
  244. $result['status'] = 'success';
  245. $result['statusText'] = 'success';
  246. $result['data'] = editAppearance($_POST);
  247. } else {
  248. $result['status'] = 'error';
  249. $result['statusText'] = 'API/Token invalid or not set';
  250. $result['data'] = null;
  251. }
  252. break;
  253. default:
  254. $result['status'] = 'error';
  255. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  256. break;
  257. }
  258. break;
  259. case 'v1_remove_file':
  260. switch ($method) {
  261. case 'POST':
  262. if (qualifyRequest(1)) {
  263. $result['status'] = 'success';
  264. $result['statusText'] = 'success';
  265. $result['data'] = removeFile($_POST);
  266. } else {
  267. $result['status'] = 'error';
  268. $result['statusText'] = 'API/Token invalid or not set';
  269. $result['data'] = null;
  270. }
  271. break;
  272. default:
  273. $result['status'] = 'error';
  274. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  275. break;
  276. }
  277. break;
  278. case 'v1_update_config':
  279. switch ($method) {
  280. case 'POST':
  281. if (qualifyRequest(1)) {
  282. $result['status'] = 'success';
  283. $result['statusText'] = 'success';
  284. $result['data'] = updateConfigItem($_POST);
  285. } else {
  286. $result['status'] = 'error';
  287. $result['statusText'] = 'API/Token invalid or not set';
  288. $result['data'] = null;
  289. }
  290. break;
  291. default:
  292. $result['status'] = 'error';
  293. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  294. break;
  295. }
  296. break;
  297. case 'v1_update_config_multiple':
  298. switch ($method) {
  299. case 'POST':
  300. if (qualifyRequest(1)) {
  301. $result['status'] = 'success';
  302. $result['statusText'] = 'success';
  303. $result['data'] = updateConfigMultiple($_POST);
  304. } else {
  305. $result['status'] = 'error';
  306. $result['statusText'] = 'API/Token invalid or not set';
  307. $result['data'] = null;
  308. }
  309. break;
  310. default:
  311. $result['status'] = 'error';
  312. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  313. break;
  314. }
  315. break;
  316. case 'v1_update_config_multiple_form':
  317. switch ($method) {
  318. case 'POST':
  319. if (qualifyRequest(1)) {
  320. $result['status'] = 'success';
  321. $result['statusText'] = 'success';
  322. $result['data'] = updateConfigMultipleForm($_POST);
  323. } else {
  324. $result['status'] = 'error';
  325. $result['statusText'] = 'API/Token invalid or not set';
  326. $result['data'] = null;
  327. }
  328. break;
  329. default:
  330. $result['status'] = 'error';
  331. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  332. break;
  333. }
  334. break;
  335. case 'v1_homepage_connect':
  336. switch ($method) {
  337. case 'POST':
  338. $result['status'] = 'success';
  339. $result['statusText'] = 'success';
  340. $result['data'] = homepageConnect($_POST);
  341. break;
  342. default:
  343. $result['status'] = 'error';
  344. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  345. break;
  346. }
  347. break;
  348. case 'v1_ping_list':
  349. switch ($method) {
  350. case 'POST':
  351. $result['status'] = 'success';
  352. $result['statusText'] = 'success';
  353. $result['data'] = ping($_POST['data']['pingList']);
  354. break;
  355. default:
  356. $result['status'] = 'error';
  357. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  358. break;
  359. }
  360. break;
  361. case 'v1_test_api_connection':
  362. switch ($method) {
  363. case 'POST':
  364. if (qualifyRequest(1)) {
  365. $result['status'] = 'success';
  366. $result['statusText'] = 'success';
  367. $result['data'] = testAPIConnection($_POST);
  368. } else {
  369. $result['status'] = 'error';
  370. $result['statusText'] = 'API/Token invalid or not set';
  371. $result['data'] = null;
  372. }
  373. break;
  374. default:
  375. $result['status'] = 'error';
  376. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  377. break;
  378. }
  379. break;
  380. case 'v1_settings_tab_editor_tabs':
  381. switch ($method) {
  382. case 'GET':
  383. if (qualifyRequest(1)) {
  384. $result['status'] = 'success';
  385. $result['statusText'] = 'success';
  386. $result['data'] = $pageSettingsTabEditorTabs;
  387. } else {
  388. $result['status'] = 'error';
  389. $result['statusText'] = 'API/Token invalid or not set';
  390. $result['data'] = null;
  391. }
  392. break;
  393. case 'POST':
  394. if (qualifyRequest(1)) {
  395. $result['status'] = 'success';
  396. $result['statusText'] = 'success';
  397. $result['data'] = editTabs($_POST);
  398. } else {
  399. $result['status'] = 'error';
  400. $result['statusText'] = 'API/Token invalid or not set';
  401. $result['data'] = null;
  402. }
  403. break;
  404. default:
  405. $result['status'] = 'error';
  406. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  407. break;
  408. }
  409. break;
  410. case 'v1_settings_tab_editor_categories':
  411. switch ($method) {
  412. case 'GET':
  413. if (qualifyRequest(1)) {
  414. $result['status'] = 'success';
  415. $result['statusText'] = 'success';
  416. $result['data'] = $pageSettingsTabEditorCategories;
  417. } else {
  418. $result['status'] = 'error';
  419. $result['statusText'] = 'API/Token invalid or not set';
  420. $result['data'] = null;
  421. }
  422. break;
  423. case 'POST':
  424. if (qualifyRequest(1)) {
  425. $result['status'] = 'success';
  426. $result['statusText'] = 'success';
  427. $result['data'] = editCategories($_POST);
  428. } else {
  429. $result['status'] = 'error';
  430. $result['statusText'] = 'API/Token invalid or not set';
  431. $result['data'] = null;
  432. }
  433. break;
  434. default:
  435. $result['status'] = 'error';
  436. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  437. break;
  438. }
  439. break;
  440. case 'v1_settings_user_manage_users':
  441. switch ($method) {
  442. case 'GET':
  443. if (qualifyRequest(1)) {
  444. $result['status'] = 'success';
  445. $result['statusText'] = 'success';
  446. $result['data'] = $pageSettingsUserManageUsers;
  447. } else {
  448. $result['status'] = 'error';
  449. $result['statusText'] = 'API/Token invalid or not set';
  450. $result['data'] = null;
  451. }
  452. break;
  453. case 'POST':
  454. if (qualifyRequest(1)) {
  455. $result['status'] = 'success';
  456. $result['statusText'] = 'success';
  457. $result['data'] = adminEditUser($_POST);
  458. } elseif (qualifyRequest(998)) {
  459. $result['status'] = 'success';
  460. $result['statusText'] = 'success';
  461. $result['data'] = editUser($_POST);
  462. } else {
  463. $result['status'] = 'error';
  464. $result['statusText'] = 'API/Token invalid or not set';
  465. $result['data'] = null;
  466. }
  467. break;
  468. default:
  469. $result['status'] = 'error';
  470. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  471. break;
  472. }
  473. break;
  474. case 'v1_manage_user':
  475. switch ($method) {
  476. case 'POST':
  477. if (qualifyRequest(998)) {
  478. $result['status'] = 'success';
  479. $result['statusText'] = 'success';
  480. $result['data'] = editUser($_POST);
  481. } else {
  482. $result['status'] = 'error';
  483. $result['statusText'] = 'API/Token invalid or not set';
  484. $result['data'] = null;
  485. }
  486. break;
  487. default:
  488. $result['status'] = 'error';
  489. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  490. break;
  491. }
  492. break;
  493. case 'v1_settings_user_manage_groups':
  494. switch ($method) {
  495. case 'GET':
  496. if (qualifyRequest(1)) {
  497. $result['status'] = 'success';
  498. $result['statusText'] = 'success';
  499. $result['data'] = $pageSettingsUserManageGroups;
  500. } else {
  501. $result['status'] = 'error';
  502. $result['statusText'] = 'API/Token invalid or not set';
  503. $result['data'] = null;
  504. }
  505. break;
  506. case 'POST':
  507. if (qualifyRequest(1)) {
  508. $result['status'] = 'success';
  509. $result['statusText'] = 'success';
  510. $result['data'] = adminEditGroup($_POST);
  511. } else {
  512. $result['status'] = 'error';
  513. $result['statusText'] = 'API/Token invalid or not set';
  514. $result['data'] = null;
  515. }
  516. break;
  517. default:
  518. $result['status'] = 'error';
  519. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  520. break;
  521. }
  522. break;
  523. case 'v1_settings_image_manager_view':
  524. switch ($method) {
  525. case 'GET':
  526. if (qualifyRequest(1)) {
  527. $result['status'] = 'success';
  528. $result['statusText'] = 'success';
  529. $result['data'] = $pageSettingsImageManager;
  530. } else {
  531. $result['status'] = 'error';
  532. $result['statusText'] = 'API/Token invalid or not set';
  533. $result['data'] = null;
  534. }
  535. break;
  536. case 'POST':
  537. if (qualifyRequest(1)) {
  538. $result['status'] = 'success';
  539. $result['statusText'] = 'success';
  540. $result['data'] = editImages();
  541. } else {
  542. $result['status'] = 'error';
  543. $result['statusText'] = 'API/Token invalid or not set';
  544. $result['data'] = null;
  545. }
  546. break;
  547. default:
  548. $result['status'] = 'error';
  549. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  550. break;
  551. }
  552. break;
  553. case 'v1_wizard_page':
  554. switch ($method) {
  555. case 'GET':
  556. if (!file_exists('config' . DIRECTORY_SEPARATOR . 'config.php')) {
  557. $result['status'] = 'success';
  558. $result['statusText'] = 'success';
  559. $result['data'] = $pageWizard;
  560. } else {
  561. $result['status'] = 'error';
  562. $result['statusText'] = 'Wizard has already been run';
  563. $result['data'] = null;
  564. }
  565. break;
  566. default:
  567. $result['status'] = 'error';
  568. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  569. break;
  570. }
  571. break;
  572. case 'v1_dependencies_page':
  573. switch ($method) {
  574. case 'GET':
  575. $result['status'] = 'success';
  576. $result['statusText'] = 'success';
  577. $result['data'] = $pageDependencies;
  578. break;
  579. default:
  580. $result['status'] = 'error';
  581. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  582. break;
  583. }
  584. break;
  585. case 'v1_wizard_config':
  586. switch ($method) {
  587. case 'POST':
  588. if (!file_exists('config' . DIRECTORY_SEPARATOR . 'config.php')) {
  589. $result['status'] = 'success';
  590. $result['statusText'] = 'success';
  591. $result['data'] = wizardConfig($_POST);
  592. } else {
  593. $result['status'] = 'error';
  594. $result['statusText'] = 'Wizard has already been run';
  595. $result['data'] = null;
  596. }
  597. break;
  598. default:
  599. $result['status'] = 'error';
  600. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  601. break;
  602. }
  603. break;
  604. case 'v1_wizard_path':
  605. switch ($method) {
  606. case 'POST':
  607. if (!file_exists('config' . DIRECTORY_SEPARATOR . 'config.php')) {
  608. $result['status'] = 'success';
  609. $result['statusText'] = 'success';
  610. $result['data'] = wizardPath($_POST);
  611. } else {
  612. $result['status'] = 'error';
  613. $result['statusText'] = 'Wizard has already been run';
  614. $result['data'] = null;
  615. }
  616. break;
  617. default:
  618. $result['status'] = 'error';
  619. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  620. break;
  621. }
  622. break;
  623. case 'v1_login':
  624. switch ($method) {
  625. case 'POST':
  626. $result['status'] = 'success';
  627. $result['statusText'] = 'success';
  628. $result['data'] = login($_POST);
  629. break;
  630. default:
  631. $result['status'] = 'error';
  632. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  633. break;
  634. }
  635. break;
  636. case 'v1_register':
  637. switch ($method) {
  638. case 'POST':
  639. $result['status'] = 'success';
  640. $result['statusText'] = 'success';
  641. $result['data'] = register($_POST);
  642. break;
  643. default:
  644. $result['status'] = 'error';
  645. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  646. break;
  647. }
  648. break;
  649. case 'v1_recover':
  650. switch ($method) {
  651. case 'POST':
  652. $result['status'] = 'success';
  653. $result['statusText'] = 'success';
  654. $result['data'] = recover($_POST);
  655. break;
  656. default:
  657. $result['status'] = 'error';
  658. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  659. break;
  660. }
  661. break;
  662. case 'v1_unlock':
  663. switch ($method) {
  664. case 'POST':
  665. $result['status'] = 'success';
  666. $result['statusText'] = 'success';
  667. $result['data'] = unlock($_POST);
  668. break;
  669. default:
  670. $result['status'] = 'error';
  671. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  672. break;
  673. }
  674. break;
  675. case 'v1_lock':
  676. switch ($method) {
  677. case 'POST':
  678. $result['status'] = 'success';
  679. $result['statusText'] = 'success';
  680. $result['data'] = lock();
  681. break;
  682. default:
  683. $result['status'] = 'error';
  684. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  685. break;
  686. }
  687. break;
  688. case 'v1_test_iframe':
  689. switch ($method) {
  690. case 'POST':
  691. $result['status'] = 'success';
  692. $result['statusText'] = 'success';
  693. $result['data'] = frameTest($_POST['data']['url']);
  694. break;
  695. default:
  696. $result['status'] = 'error';
  697. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  698. break;
  699. }
  700. break;
  701. case 'v1_upgrade':
  702. case 'v1_update':
  703. case 'v1_force':
  704. switch ($method) {
  705. case 'POST':
  706. if (qualifyRequest(1)) {
  707. $result['status'] = 'success';
  708. $result['statusText'] = 'success';
  709. $result['data'] = upgradeInstall($_POST['data']['branch'], $_POST['data']['stage']);
  710. } else {
  711. $result['status'] = 'error';
  712. $result['statusText'] = 'API/Token invalid or not set';
  713. $result['data'] = null;
  714. }
  715. break;
  716. default:
  717. $result['status'] = 'error';
  718. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  719. break;
  720. }
  721. break;
  722. case 'v1_login_page':
  723. switch ($method) {
  724. case 'GET':
  725. $result['status'] = 'success';
  726. $result['statusText'] = 'success';
  727. $result['data'] = $pageLogin;
  728. break;
  729. default:
  730. $result['status'] = 'error';
  731. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  732. break;
  733. }
  734. break;
  735. case 'v1_lockscreen':
  736. switch ($method) {
  737. case 'GET':
  738. $result['status'] = 'success';
  739. $result['statusText'] = 'success';
  740. $result['data'] = $pageLockScreen;
  741. break;
  742. default:
  743. $result['status'] = 'error';
  744. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  745. break;
  746. }
  747. break;
  748. case 'v1_login_log':
  749. switch ($method) {
  750. case 'GET':
  751. if (qualifyRequest(1)) {
  752. $result['status'] = 'success';
  753. $result['statusText'] = 'success';
  754. $result['data'] = getLog('loginLog');
  755. } else {
  756. $result['status'] = 'error';
  757. $result['statusText'] = 'API/Token invalid or not set';
  758. $result['data'] = null;
  759. }
  760. break;
  761. default:
  762. $result['status'] = 'error';
  763. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  764. break;
  765. }
  766. break;
  767. case 'v1_organizr_log':
  768. switch ($method) {
  769. case 'GET':
  770. if (qualifyRequest(1)) {
  771. $result['status'] = 'success';
  772. $result['statusText'] = 'success';
  773. $result['data'] = getLog('org');
  774. } else {
  775. $result['status'] = 'error';
  776. $result['statusText'] = 'API/Token invalid or not set';
  777. $result['data'] = null;
  778. }
  779. break;
  780. default:
  781. $result['status'] = 'error';
  782. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  783. break;
  784. }
  785. break;
  786. case 'v1_user_list':
  787. switch ($method) {
  788. case 'GET':
  789. if (qualifyRequest(1)) {
  790. $result['status'] = 'success';
  791. $result['statusText'] = 'success';
  792. $result['data'] = allUsers();
  793. } else {
  794. $result['status'] = 'error';
  795. $result['statusText'] = 'API/Token invalid or not set';
  796. $result['data'] = null;
  797. }
  798. break;
  799. default:
  800. $result['status'] = 'error';
  801. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  802. break;
  803. }
  804. break;
  805. case 'v1_tab_list':
  806. switch ($method) {
  807. case 'GET':
  808. if (qualifyRequest(1)) {
  809. $result['status'] = 'success';
  810. $result['statusText'] = 'success';
  811. $result['data'] = allTabs();
  812. } else {
  813. $result['status'] = 'error';
  814. $result['statusText'] = 'API/Token invalid or not set';
  815. $result['data'] = null;
  816. }
  817. break;
  818. default:
  819. $result['status'] = 'error';
  820. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  821. break;
  822. }
  823. break;
  824. case 'v1_image_list':
  825. switch ($method) {
  826. case 'GET':
  827. if (qualifyRequest(1)) {
  828. $result['status'] = 'success';
  829. $result['statusText'] = 'success';
  830. $result['data'] = getImages();
  831. } else {
  832. $result['status'] = 'error';
  833. $result['statusText'] = 'API/Token invalid or not set';
  834. $result['data'] = null;
  835. }
  836. break;
  837. default:
  838. $result['status'] = 'error';
  839. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  840. break;
  841. }
  842. break;
  843. case 'v1_customize_appearance':
  844. switch ($method) {
  845. case 'GET':
  846. if (qualifyRequest(1)) {
  847. $result['status'] = 'success';
  848. $result['statusText'] = 'success';
  849. $result['data'] = getCustomizeAppearance();
  850. } else {
  851. $result['status'] = 'error';
  852. $result['statusText'] = 'API/Token invalid or not set';
  853. $result['data'] = null;
  854. }
  855. break;
  856. default:
  857. $result['status'] = 'error';
  858. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  859. break;
  860. }
  861. break;
  862. case 'v1_sso':
  863. switch ($method) {
  864. case 'GET':
  865. if (qualifyRequest(1)) {
  866. $result['status'] = 'success';
  867. $result['statusText'] = 'success';
  868. $result['data'] = getSSO();
  869. } else {
  870. $result['status'] = 'error';
  871. $result['statusText'] = 'API/Token invalid or not set';
  872. $result['data'] = null;
  873. }
  874. break;
  875. default:
  876. $result['status'] = 'error';
  877. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  878. break;
  879. }
  880. break;
  881. case 'v1_settings_main':
  882. switch ($method) {
  883. case 'GET':
  884. if (qualifyRequest(1)) {
  885. $result['status'] = 'success';
  886. $result['statusText'] = 'success';
  887. $result['data'] = getSettingsMain();
  888. } else {
  889. $result['status'] = 'error';
  890. $result['statusText'] = 'API/Token invalid or not set';
  891. $result['data'] = null;
  892. }
  893. break;
  894. default:
  895. $result['status'] = 'error';
  896. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  897. break;
  898. }
  899. break;
  900. case 'v1_plugin_install':
  901. switch ($method) {
  902. case 'POST':
  903. if (qualifyRequest(1)) {
  904. $result['status'] = 'success';
  905. $result['statusText'] = 'success';
  906. $result['data'] = installPlugin($_POST);
  907. } else {
  908. $result['status'] = 'error';
  909. $result['statusText'] = 'API/Token invalid or not set';
  910. $result['data'] = null;
  911. }
  912. break;
  913. default:
  914. $result['status'] = 'error';
  915. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  916. break;
  917. }
  918. break;
  919. case 'v1_plugin_remove':
  920. switch ($method) {
  921. case 'POST':
  922. if (qualifyRequest(1)) {
  923. $result['status'] = 'success';
  924. $result['statusText'] = 'success';
  925. $result['data'] = removePlugin($_POST);
  926. } else {
  927. $result['status'] = 'error';
  928. $result['statusText'] = 'API/Token invalid or not set';
  929. $result['data'] = null;
  930. }
  931. break;
  932. default:
  933. $result['status'] = 'error';
  934. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  935. break;
  936. }
  937. break;
  938. case 'v1_theme_install':
  939. switch ($method) {
  940. case 'POST':
  941. if (qualifyRequest(1)) {
  942. $result['status'] = 'success';
  943. $result['statusText'] = 'success';
  944. $result['data'] = installTheme($_POST);
  945. } else {
  946. $result['status'] = 'error';
  947. $result['statusText'] = 'API/Token invalid or not set';
  948. $result['data'] = null;
  949. }
  950. break;
  951. default:
  952. $result['status'] = 'error';
  953. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  954. break;
  955. }
  956. break;
  957. case 'v1_theme_remove':
  958. switch ($method) {
  959. case 'POST':
  960. if (qualifyRequest(1)) {
  961. $result['status'] = 'success';
  962. $result['statusText'] = 'success';
  963. $result['data'] = removeTheme($_POST);
  964. } else {
  965. $result['status'] = 'error';
  966. $result['statusText'] = 'API/Token invalid or not set';
  967. $result['data'] = null;
  968. }
  969. break;
  970. default:
  971. $result['status'] = 'error';
  972. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  973. break;
  974. }
  975. break;
  976. case 'v1_user_edit':
  977. switch ($method) {
  978. case 'POST':
  979. if (qualifyRequest(1)) {
  980. $result['status'] = 'success';
  981. $result['statusText'] = 'success';
  982. $result['data'] = adminEditUser($_POST);
  983. } elseif (qualifyRequest(998)) {
  984. $result['status'] = 'success';
  985. $result['statusText'] = 'success';
  986. $result['data'] = editUser($_POST);
  987. } else {
  988. $result['status'] = 'error';
  989. $result['statusText'] = 'API/Token invalid or not set';
  990. $result['data'] = null;
  991. }
  992. break;
  993. default:
  994. $result['status'] = 'error';
  995. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  996. break;
  997. }
  998. break;
  999. case 'v1_2fa_create':
  1000. switch ($method) {
  1001. case 'POST':
  1002. if (qualifyRequest(998)) {
  1003. $result['status'] = 'success';
  1004. $result['statusText'] = 'success';
  1005. $result['data'] = create2FA($_POST['data']['type']);
  1006. } else {
  1007. $result['status'] = 'error';
  1008. $result['statusText'] = 'API/Token invalid or not set';
  1009. $result['data'] = null;
  1010. }
  1011. break;
  1012. default:
  1013. $result['status'] = 'error';
  1014. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1015. break;
  1016. }
  1017. break;
  1018. case 'v1_2fa_save':
  1019. switch ($method) {
  1020. case 'POST':
  1021. if (qualifyRequest(998)) {
  1022. $result['status'] = 'success';
  1023. $result['statusText'] = 'success';
  1024. $result['data'] = save2FA($_POST['data']['secret'], $_POST['data']['type']);
  1025. } else {
  1026. $result['status'] = 'error';
  1027. $result['statusText'] = 'API/Token invalid or not set';
  1028. $result['data'] = null;
  1029. }
  1030. break;
  1031. default:
  1032. $result['status'] = 'error';
  1033. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1034. break;
  1035. }
  1036. break;
  1037. case 'v1_2fa_verify':
  1038. switch ($method) {
  1039. case 'POST':
  1040. if (qualifyRequest(998)) {
  1041. $result['status'] = 'success';
  1042. $result['statusText'] = 'success';
  1043. $result['data'] = verify2FA($_POST['data']['secret'], $_POST['data']['code'], $_POST['data']['type']);
  1044. } else {
  1045. $result['status'] = 'error';
  1046. $result['statusText'] = 'API/Token invalid or not set';
  1047. $result['data'] = null;
  1048. }
  1049. break;
  1050. default:
  1051. $result['status'] = 'error';
  1052. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1053. break;
  1054. }
  1055. break;
  1056. case 'v1_2fa_remove':
  1057. switch ($method) {
  1058. case 'GET':
  1059. if (qualifyRequest(998)) {
  1060. $result['status'] = 'success';
  1061. $result['statusText'] = 'success';
  1062. $result['data'] = remove2FA();
  1063. } else {
  1064. $result['status'] = 'error';
  1065. $result['statusText'] = 'API/Token invalid or not set';
  1066. $result['data'] = null;
  1067. }
  1068. break;
  1069. default:
  1070. $result['status'] = 'error';
  1071. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1072. break;
  1073. }
  1074. break;
  1075. case 'v1_logout':
  1076. switch ($method) {
  1077. case 'GET':
  1078. $result['status'] = 'success';
  1079. $result['statusText'] = 'success';
  1080. $result['data'] = logout();
  1081. break;
  1082. default:
  1083. $result['status'] = 'error';
  1084. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1085. break;
  1086. }
  1087. break;
  1088. case 'v1_launch_organizr':
  1089. switch ($method) {
  1090. case 'GET':
  1091. $pluginSearch = '-enabled';
  1092. $pluginInclude = '-include';
  1093. $status = array();
  1094. $result['status'] = 'success';
  1095. $result['statusText'] = 'success';
  1096. $status['status'] = organizrStatus();
  1097. $result['appearance'] = loadAppearance();
  1098. $status['user'] = $GLOBALS['organizrUser'];
  1099. $status['categories'] = loadTabs()['categories'];
  1100. $status['tabs'] = loadTabs()['tabs'];
  1101. $status['plugins'] = array_filter($GLOBALS, function ($k) use ($pluginSearch) {
  1102. return stripos($k, $pluginSearch) !== false;
  1103. }, ARRAY_FILTER_USE_KEY);
  1104. $status['plugins']['includes'] = array_filter($GLOBALS, function ($k) use ($pluginInclude) {
  1105. return stripos($k, $pluginInclude) !== false;
  1106. }, ARRAY_FILTER_USE_KEY);
  1107. $result['data'] = $status;
  1108. $result['branch'] = $GLOBALS['branch'];
  1109. $result['theme'] = $GLOBALS['theme'];
  1110. $result['style'] = $GLOBALS['style'];
  1111. $result['version'] = $GLOBALS['installedVersion'];
  1112. $result['sso'] = array(
  1113. 'myPlexAccessToken' => isset($_COOKIE['mpt']) ? $_COOKIE['mpt'] : false,
  1114. 'id_token' => isset($_COOKIE['Auth']) ? $_COOKIE['Auth'] : false
  1115. );
  1116. $result['settings'] = organizrSpecialSettings();
  1117. break;
  1118. default:
  1119. $result['status'] = 'error';
  1120. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1121. break;
  1122. }
  1123. break;
  1124. case 'v1_auth':
  1125. switch ($method) {
  1126. case 'GET':
  1127. auth();
  1128. break;
  1129. default:
  1130. $result['status'] = 'error';
  1131. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1132. break;
  1133. }
  1134. break;
  1135. case 'v1_plugin':
  1136. switch ($method) {
  1137. case 'POST':
  1138. case 'GET':
  1139. // Include all plugin api Calls
  1140. foreach (glob(__DIR__ . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'api' . DIRECTORY_SEPARATOR . "*.php") as $filename) {
  1141. require_once $filename;
  1142. }
  1143. break;
  1144. default:
  1145. $result['status'] = 'error';
  1146. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1147. break;
  1148. }
  1149. break;
  1150. case 'v1_image':
  1151. switch ($method) {
  1152. case 'GET':
  1153. getImage();
  1154. break;
  1155. default:
  1156. $result['status'] = 'error';
  1157. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1158. break;
  1159. }
  1160. break;
  1161. case 'v1_downloader':
  1162. switch ($method) {
  1163. case 'POST':
  1164. $result['status'] = 'success';
  1165. $result['statusText'] = 'success';
  1166. $result['data'] = downloader($_POST);
  1167. break;
  1168. default:
  1169. $result['status'] = 'error';
  1170. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1171. break;
  1172. }
  1173. break;
  1174. case 'v1_import_users':
  1175. switch ($method) {
  1176. case 'POST':
  1177. if (qualifyRequest(1)) {
  1178. $result['status'] = 'success';
  1179. $result['statusText'] = 'success';
  1180. $result['data'] = importUsersType($_POST);
  1181. } else {
  1182. $result['status'] = 'error';
  1183. $result['statusText'] = 'API/Token invalid or not set';
  1184. $result['data'] = null;
  1185. }
  1186. break;
  1187. default:
  1188. $result['status'] = 'error';
  1189. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1190. break;
  1191. }
  1192. break;
  1193. case 'v1_ombi':
  1194. switch ($method) {
  1195. case 'POST':
  1196. $result['status'] = 'success';
  1197. $result['statusText'] = 'success';
  1198. $result['data'] = ombiAPI($_POST);
  1199. break;
  1200. default:
  1201. $result['status'] = 'error';
  1202. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1203. break;
  1204. }
  1205. break;
  1206. case 'v1_plex_join':
  1207. switch ($method) {
  1208. case 'POST':
  1209. $result['status'] = 'success';
  1210. $result['statusText'] = 'success';
  1211. $result['data'] = plexJoinAPI($_POST);
  1212. break;
  1213. default:
  1214. $result['status'] = 'error';
  1215. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1216. break;
  1217. }
  1218. break;
  1219. case 'v1_token_revoke':
  1220. switch ($method) {
  1221. case 'POST':
  1222. $result['status'] = 'success';
  1223. $result['statusText'] = 'success';
  1224. $result['data'] = revokeToken($_POST);
  1225. break;
  1226. default:
  1227. $result['status'] = 'error';
  1228. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1229. break;
  1230. }
  1231. break;
  1232. case 'v1_update_db_manual':
  1233. switch ($method) {
  1234. case 'GET':
  1235. if (qualifyRequest(1)) {
  1236. $result['status'] = 'success';
  1237. $result['statusText'] = 'success';
  1238. $result['data'] = updateDB($GLOBALS['installedVersion']);
  1239. } else {
  1240. $result['status'] = 'error';
  1241. $result['statusText'] = 'API/Token invalid or not set';
  1242. $result['data'] = null;
  1243. }
  1244. break;
  1245. default:
  1246. $result['status'] = 'error';
  1247. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1248. break;
  1249. }
  1250. break;
  1251. case 'v1_version':
  1252. switch ($method) {
  1253. case 'GET':
  1254. $result['status'] = 'success';
  1255. $result['statusText'] = 'success';
  1256. $result['data'] = $GLOBALS['installedVersion'];
  1257. break;
  1258. default:
  1259. $result['status'] = 'error';
  1260. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1261. break;
  1262. }
  1263. break;
  1264. case 'v1_ping':
  1265. switch ($method) {
  1266. case 'GET':
  1267. $result['status'] = 'success';
  1268. $result['statusText'] = 'success';
  1269. $result['data'] = 'pong';
  1270. break;
  1271. default:
  1272. $result['status'] = 'error';
  1273. $result['statusText'] = 'The function requested is not defined for method: ' . $method;
  1274. break;
  1275. }
  1276. break;
  1277. default:
  1278. //No Function Available
  1279. $result['status'] = 'error';
  1280. $result['statusText'] = 'function requested is not defined';
  1281. break;
  1282. }
  1283. //Set Default Result
  1284. if (!$result) {
  1285. $result['status'] = "error";
  1286. $result['error'] = "An error has occurred";
  1287. }
  1288. $result['generationDate'] = $GLOBALS['currentTime'];
  1289. $generationTime += microtime(true);
  1290. $result['generationTime'] = (sprintf('%f', $generationTime) * 1000) . 'ms';
  1291. //return JSON array
  1292. if ($pretty) {
  1293. echo '<pre>' . safe_json_encode($result, JSON_PRETTY_PRINT) . '</pre>';
  1294. } else {
  1295. exit(safe_json_encode($result, JSON_HEX_QUOT | JSON_HEX_TAG));
  1296. }