index.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685
  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. 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. $result['request'] = key($_GET);
  18. switch ($function) {
  19. case 'v1_settings_page':
  20. switch ($method) {
  21. case 'GET':
  22. if(qualifyRequest(1)){
  23. $result['status'] = 'success';
  24. $result['statusText'] = 'success';
  25. $result['data'] = $pageSettings;
  26. writeLog('success', 'Admin Function - Accessed Settings Page', $GLOBALS['organizrUser']['username']);
  27. }else{
  28. $result['status'] = 'error';
  29. $result['statusText'] = 'API/Token invalid or not set';
  30. $result['data'] = null;
  31. writeLog('error', 'Admin Function - Tried to access Settings Page', $GLOBALS['organizrUser']['username']);
  32. }
  33. break;
  34. default:
  35. $result['status'] = 'error';
  36. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  37. break;
  38. }
  39. break;
  40. case 'v1_settings_plugins':
  41. switch ($method) {
  42. case 'GET':
  43. if(qualifyRequest(1)){
  44. $result['status'] = 'success';
  45. $result['statusText'] = 'success';
  46. $result['data'] = $pageSettingsPlugins;
  47. }else{
  48. $result['status'] = 'error';
  49. $result['statusText'] = 'API/Token invalid or not set';
  50. $result['data'] = null;
  51. }
  52. break;
  53. default:
  54. $result['status'] = 'error';
  55. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  56. break;
  57. }
  58. break;
  59. case 'v1_settings_plugins_list':
  60. switch ($method) {
  61. case 'GET':
  62. if(qualifyRequest(1)){
  63. $result['status'] = 'success';
  64. $result['statusText'] = 'success';
  65. $result['data'] = getPlugins();
  66. }else{
  67. $result['status'] = 'error';
  68. $result['statusText'] = 'API/Token invalid or not set';
  69. $result['data'] = null;
  70. }
  71. break;
  72. case 'POST':
  73. if(qualifyRequest(1)){
  74. $result['status'] = 'success';
  75. $result['statusText'] = 'success';
  76. $result['data'] = editPlugins($_POST);
  77. }else{
  78. $result['status'] = 'error';
  79. $result['statusText'] = 'API/Token invalid or not set';
  80. $result['data'] = null;
  81. }
  82. break;
  83. default:
  84. $result['status'] = 'error';
  85. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  86. break;
  87. }
  88. break;
  89. case 'v1_settings_settings_logs':
  90. switch ($method) {
  91. case 'GET':
  92. if(qualifyRequest(1)){
  93. $result['status'] = 'success';
  94. $result['statusText'] = 'success';
  95. $result['data'] = $pageSettingsSettingsLogs;
  96. }else{
  97. $result['status'] = 'error';
  98. $result['statusText'] = 'API/Token invalid or not set';
  99. $result['data'] = null;
  100. }
  101. break;
  102. default:
  103. $result['status'] = 'error';
  104. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  105. break;
  106. }
  107. break;
  108. case 'v1_settings_settings_sso':
  109. switch ($method) {
  110. case 'GET':
  111. if(qualifyRequest(1)){
  112. $result['status'] = 'success';
  113. $result['statusText'] = 'success';
  114. $result['data'] = $pageSettingsSettingsSSO;
  115. }else{
  116. $result['status'] = 'error';
  117. $result['statusText'] = 'API/Token invalid or not set';
  118. $result['data'] = null;
  119. }
  120. break;
  121. default:
  122. $result['status'] = 'error';
  123. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  124. break;
  125. }
  126. break;
  127. case 'v1_settings_customize_appearance':
  128. switch ($method) {
  129. case 'GET':
  130. if(qualifyRequest(1)){
  131. $result['status'] = 'success';
  132. $result['statusText'] = 'success';
  133. $result['data'] = $pageSettingsCustomizeAppearance;
  134. }else{
  135. $result['status'] = 'error';
  136. $result['statusText'] = 'API/Token invalid or not set';
  137. $result['data'] = null;
  138. }
  139. break;
  140. case 'POST':
  141. if(qualifyRequest(1)){
  142. $result['status'] = 'success';
  143. $result['statusText'] = 'success';
  144. $result['data'] = editAppearance($_POST);
  145. }else{
  146. $result['status'] = 'error';
  147. $result['statusText'] = 'API/Token invalid or not set';
  148. $result['data'] = null;
  149. }
  150. break;
  151. default:
  152. $result['status'] = 'error';
  153. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  154. break;
  155. }
  156. break;
  157. case 'v1_update_config':
  158. switch ($method) {
  159. case 'POST':
  160. if(qualifyRequest(1)){
  161. $result['status'] = 'success';
  162. $result['statusText'] = 'success';
  163. $result['data'] = updateConfigItem($_POST);
  164. }else{
  165. $result['status'] = 'error';
  166. $result['statusText'] = 'API/Token invalid or not set';
  167. $result['data'] = null;
  168. }
  169. break;
  170. default:
  171. $result['status'] = 'error';
  172. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  173. break;
  174. }
  175. break;
  176. case 'v1_settings_tab_editor_tabs':
  177. switch ($method) {
  178. case 'GET':
  179. if(qualifyRequest(1)){
  180. $result['status'] = 'success';
  181. $result['statusText'] = 'success';
  182. $result['data'] = $pageSettingsTabEditorTabs;
  183. }else{
  184. $result['status'] = 'error';
  185. $result['statusText'] = 'API/Token invalid or not set';
  186. $result['data'] = null;
  187. }
  188. break;
  189. case 'POST':
  190. if(qualifyRequest(1)){
  191. $result['status'] = 'success';
  192. $result['statusText'] = 'success';
  193. $result['data'] = editTabs($_POST);
  194. }else{
  195. $result['status'] = 'error';
  196. $result['statusText'] = 'API/Token invalid or not set';
  197. $result['data'] = null;
  198. }
  199. break;
  200. default:
  201. $result['status'] = 'error';
  202. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  203. break;
  204. }
  205. break;
  206. case 'v1_settings_tab_editor_categories':
  207. switch ($method) {
  208. case 'GET':
  209. if(qualifyRequest(1)){
  210. $result['status'] = 'success';
  211. $result['statusText'] = 'success';
  212. $result['data'] = $pageSettingsTabEditorCategories;
  213. }else{
  214. $result['status'] = 'error';
  215. $result['statusText'] = 'API/Token invalid or not set';
  216. $result['data'] = null;
  217. }
  218. break;
  219. case 'POST':
  220. if(qualifyRequest(1)){
  221. $result['status'] = 'success';
  222. $result['statusText'] = 'success';
  223. $result['data'] = editCategories($_POST);
  224. }else{
  225. $result['status'] = 'error';
  226. $result['statusText'] = 'API/Token invalid or not set';
  227. $result['data'] = null;
  228. }
  229. break;
  230. default:
  231. $result['status'] = 'error';
  232. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  233. break;
  234. }
  235. break;
  236. case 'v1_settings_user_manage_users':
  237. switch ($method) {
  238. case 'GET':
  239. if(qualifyRequest(1)){
  240. $result['status'] = 'success';
  241. $result['statusText'] = 'success';
  242. $result['data'] = $pageSettingsUserManageUsers;
  243. }else{
  244. $result['status'] = 'error';
  245. $result['statusText'] = 'API/Token invalid or not set';
  246. $result['data'] = null;
  247. }
  248. break;
  249. case 'POST':
  250. if(qualifyRequest(1)){
  251. $result['status'] = 'success';
  252. $result['statusText'] = 'success';
  253. $result['data'] = adminEditUser($_POST);
  254. }elseif(qualifyRequest(998)){
  255. $result['status'] = 'success';
  256. $result['statusText'] = 'success';
  257. $result['data'] = editUser($_POST);
  258. }else{
  259. $result['status'] = 'error';
  260. $result['statusText'] = 'API/Token invalid or not set';
  261. $result['data'] = null;
  262. }
  263. break;
  264. default:
  265. $result['status'] = 'error';
  266. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  267. break;
  268. }
  269. break;
  270. case 'v1_settings_user_manage_groups':
  271. switch ($method) {
  272. case 'GET':
  273. if(qualifyRequest(1)){
  274. $result['status'] = 'success';
  275. $result['statusText'] = 'success';
  276. $result['data'] = $pageSettingsUserManageGroups;
  277. }else{
  278. $result['status'] = 'error';
  279. $result['statusText'] = 'API/Token invalid or not set';
  280. $result['data'] = null;
  281. }
  282. break;
  283. case 'POST':
  284. if(qualifyRequest(1)){
  285. $result['status'] = 'success';
  286. $result['statusText'] = 'success';
  287. $result['data'] = adminEditGroup($_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_settings_image_manager_view':
  301. switch ($method) {
  302. case 'GET':
  303. if(qualifyRequest(1)){
  304. $result['status'] = 'success';
  305. $result['statusText'] = 'success';
  306. $result['data'] = $pageSettingsImageManager;
  307. }else{
  308. $result['status'] = 'error';
  309. $result['statusText'] = 'API/Token invalid or not set';
  310. $result['data'] = null;
  311. }
  312. break;
  313. case 'POST':
  314. if(qualifyRequest(1)){
  315. $result['status'] = 'success';
  316. $result['statusText'] = 'success';
  317. $result['data'] = editImages();
  318. }else{
  319. $result['status'] = 'error';
  320. $result['statusText'] = 'API/Token invalid or not set';
  321. $result['data'] = null;
  322. }
  323. break;
  324. default:
  325. $result['status'] = 'error';
  326. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  327. break;
  328. }
  329. break;
  330. case 'v1_wizard_page':
  331. switch ($method) {
  332. case 'GET':
  333. if(!file_exists('config'.DIRECTORY_SEPARATOR.'config.php')){
  334. $result['status'] = 'success';
  335. $result['statusText'] = 'success';
  336. $result['data'] = $pageWizard;
  337. }else{
  338. $result['status'] = 'error';
  339. $result['statusText'] = 'Wizard has already been run';
  340. $result['data'] = null;
  341. }
  342. break;
  343. default:
  344. $result['status'] = 'error';
  345. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  346. break;
  347. }
  348. break;
  349. case 'v1_dependencies_page':
  350. switch ($method) {
  351. case 'GET':
  352. $result['status'] = 'success';
  353. $result['statusText'] = 'success';
  354. $result['data'] = $pageDependencies;
  355. break;
  356. default:
  357. $result['status'] = 'error';
  358. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  359. break;
  360. }
  361. break;
  362. case 'v1_wizard_config':
  363. switch ($method) {
  364. case 'POST':
  365. if(!file_exists('config'.DIRECTORY_SEPARATOR.'config.php')){
  366. $result['status'] = 'success';
  367. $result['statusText'] = 'success';
  368. $result['data'] = wizardConfig($_POST);
  369. }else{
  370. $result['status'] = 'error';
  371. $result['statusText'] = 'Wizard has already been run';
  372. $result['data'] = null;
  373. }
  374. break;
  375. default:
  376. $result['status'] = 'error';
  377. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  378. break;
  379. }
  380. break;
  381. case 'v1_login':
  382. switch ($method) {
  383. case 'POST':
  384. $result['status'] = 'success';
  385. $result['statusText'] = 'success';
  386. $result['data'] = login($_POST);
  387. break;
  388. default:
  389. $result['status'] = 'error';
  390. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  391. break;
  392. }
  393. break;
  394. case 'v1_register':
  395. switch ($method) {
  396. case 'POST':
  397. $result['status'] = 'success';
  398. $result['statusText'] = 'success';
  399. $result['data'] = register($_POST);
  400. break;
  401. default:
  402. $result['status'] = 'error';
  403. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  404. break;
  405. }
  406. break;
  407. case 'v1_upgrade':
  408. case 'v1_update':
  409. case 'v1_force':
  410. switch ($method) {
  411. case 'POST':
  412. if(qualifyRequest(1)){
  413. $result['status'] = 'success';
  414. $result['statusText'] = 'success';
  415. $result['data'] = upgradeInstall($_POST['data']['branch'],$_POST['data']['stage']);
  416. }else{
  417. $result['status'] = 'error';
  418. $result['statusText'] = 'API/Token invalid or not set';
  419. $result['data'] = null;
  420. }
  421. break;
  422. default:
  423. $result['status'] = 'error';
  424. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  425. break;
  426. }
  427. break;
  428. case 'v1_login_page':
  429. switch ($method) {
  430. case 'GET':
  431. $result['status'] = 'success';
  432. $result['statusText'] = 'success';
  433. $result['data'] = $pageLogin;
  434. break;
  435. default:
  436. $result['status'] = 'error';
  437. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  438. break;
  439. }
  440. break;
  441. case 'v1_lockscreen':
  442. switch ($method) {
  443. case 'GET':
  444. $result['status'] = 'success';
  445. $result['statusText'] = 'success';
  446. $result['data'] = $pageLockScreen;
  447. break;
  448. default:
  449. $result['status'] = 'error';
  450. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  451. break;
  452. }
  453. break;
  454. case 'v1_login_log':
  455. switch ($method) {
  456. case 'GET':
  457. if(qualifyRequest(1)){
  458. $result['status'] = 'success';
  459. $result['statusText'] = 'success';
  460. $result['data'] = getLog('loginLog');
  461. }else{
  462. $result['status'] = 'error';
  463. $result['statusText'] = 'API/Token invalid or not set';
  464. $result['data'] = null;
  465. }
  466. break;
  467. default:
  468. $result['status'] = 'error';
  469. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  470. break;
  471. }
  472. break;
  473. case 'v1_organizr_log':
  474. switch ($method) {
  475. case 'GET':
  476. if(qualifyRequest(1)){
  477. $result['status'] = 'success';
  478. $result['statusText'] = 'success';
  479. $result['data'] = getLog('org');
  480. }else{
  481. $result['status'] = 'error';
  482. $result['statusText'] = 'API/Token invalid or not set';
  483. $result['data'] = null;
  484. }
  485. break;
  486. default:
  487. $result['status'] = 'error';
  488. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  489. break;
  490. }
  491. break;
  492. case 'v1_user_list':
  493. switch ($method) {
  494. case 'GET':
  495. if(qualifyRequest(1)){
  496. $result['status'] = 'success';
  497. $result['statusText'] = 'success';
  498. $result['data'] = allUsers();
  499. }else{
  500. $result['status'] = 'error';
  501. $result['statusText'] = 'API/Token invalid or not set';
  502. $result['data'] = null;
  503. }
  504. break;
  505. default:
  506. $result['status'] = 'error';
  507. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  508. break;
  509. }
  510. break;
  511. case 'v1_tab_list':
  512. switch ($method) {
  513. case 'GET':
  514. if(qualifyRequest(1)){
  515. $result['status'] = 'success';
  516. $result['statusText'] = 'success';
  517. $result['data'] = allTabs();
  518. }else{
  519. $result['status'] = 'error';
  520. $result['statusText'] = 'API/Token invalid or not set';
  521. $result['data'] = null;
  522. }
  523. break;
  524. default:
  525. $result['status'] = 'error';
  526. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  527. break;
  528. }
  529. break;
  530. case 'v1_image_list':
  531. switch ($method) {
  532. case 'GET':
  533. if(qualifyRequest(1)){
  534. $result['status'] = 'success';
  535. $result['statusText'] = 'success';
  536. $result['data'] = getImages();
  537. }else{
  538. $result['status'] = 'error';
  539. $result['statusText'] = 'API/Token invalid or not set';
  540. $result['data'] = null;
  541. }
  542. break;
  543. default:
  544. $result['status'] = 'error';
  545. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  546. break;
  547. }
  548. break;
  549. case 'v1_customize_appearance':
  550. switch ($method) {
  551. case 'GET':
  552. if(qualifyRequest(1)){
  553. $result['status'] = 'success';
  554. $result['statusText'] = 'success';
  555. $result['data'] = getCustomizeAppearance();
  556. }else{
  557. $result['status'] = 'error';
  558. $result['statusText'] = 'API/Token invalid or not set';
  559. $result['data'] = null;
  560. }
  561. break;
  562. default:
  563. $result['status'] = 'error';
  564. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  565. break;
  566. }
  567. break;
  568. case 'v1_sso':
  569. switch ($method) {
  570. case 'GET':
  571. if(qualifyRequest(1)){
  572. $result['status'] = 'success';
  573. $result['statusText'] = 'success';
  574. $result['data'] = getSSO();
  575. }else{
  576. $result['status'] = 'error';
  577. $result['statusText'] = 'API/Token invalid or not set';
  578. $result['data'] = null;
  579. }
  580. break;
  581. default:
  582. $result['status'] = 'error';
  583. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  584. break;
  585. }
  586. break;
  587. case 'v1_user_edit':
  588. switch ($method) {
  589. case 'POST':
  590. if(qualifyRequest(1)){
  591. $result['status'] = 'success';
  592. $result['statusText'] = 'success';
  593. $result['data'] = adminEditUser($_POST);
  594. }elseif(qualifyRequest(998)){
  595. $result['status'] = 'success';
  596. $result['statusText'] = 'success';
  597. $result['data'] = editUser($_POST);
  598. }else{
  599. $result['status'] = 'error';
  600. $result['statusText'] = 'API/Token invalid or not set';
  601. $result['data'] = null;
  602. }
  603. break;
  604. default:
  605. $result['status'] = 'error';
  606. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  607. break;
  608. }
  609. break;
  610. case 'v1_logout':
  611. switch ($method) {
  612. case 'GET':
  613. $result['status'] = 'success';
  614. $result['statusText'] = 'success';
  615. $result['data'] = logout();
  616. break;
  617. default:
  618. $result['status'] = 'error';
  619. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  620. break;
  621. }
  622. break;
  623. case 'v1_launch_organizr':
  624. switch ($method) {
  625. case 'GET':
  626. $status = array();
  627. $result['status'] = 'success';
  628. $result['statusText'] = 'success';
  629. $status['status'] = organizrStatus();
  630. $result['appearance'] = loadAppearance();
  631. $status['user'] = $GLOBALS['organizrUser'];
  632. $status['categories'] = loadTabs()['categories'];
  633. $status['tabs'] = loadTabs()['tabs'];
  634. $result['data'] = $status;
  635. $result['branch'] = $GLOBALS['branch'];
  636. $result['theme'] = $GLOBALS['theme'];
  637. $result['version'] = $GLOBALS['installedVersion'];
  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_auth':
  646. switch ($method) {
  647. case 'GET':
  648. auth();
  649. break;
  650. default:
  651. $result['status'] = 'error';
  652. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  653. break;
  654. }
  655. break;
  656. case 'v1_plugin':
  657. switch ($method) {
  658. case 'POST':
  659. // Include all plugin api Calls
  660. foreach (glob(__DIR__.DIRECTORY_SEPARATOR.'plugins' . DIRECTORY_SEPARATOR . 'api' . DIRECTORY_SEPARATOR . "*.php") as $filename){
  661. require_once $filename;
  662. }
  663. break;
  664. default:
  665. $result['status'] = 'error';
  666. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  667. break;
  668. }
  669. break;
  670. default:
  671. //No Function Available
  672. $result['status'] = 'error';
  673. $result['statusText'] = 'function requested is not defined';
  674. break;
  675. }
  676. //Set Default Result
  677. if(!$result){
  678. $result['status'] = "error";
  679. $result['error'] = "An error has occurred";
  680. }
  681. $result['generationDate'] = $GLOBALS['currentTime'];
  682. $generationTime += microtime(true);
  683. $result['generationTime'] = (sprintf('%f', $generationTime)*1000).'ms';
  684. //return JSON array
  685. exit(json_encode($result, JSON_HEX_QUOT | JSON_HEX_TAG));