index.php 37 KB

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