index.php 39 KB

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