index.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647
  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_customize_appearance':
  109. switch ($method) {
  110. case 'GET':
  111. if(qualifyRequest(1)){
  112. $result['status'] = 'success';
  113. $result['statusText'] = 'success';
  114. $result['data'] = $pageSettingsCustomizeAppearance;
  115. }else{
  116. $result['status'] = 'error';
  117. $result['statusText'] = 'API/Token invalid or not set';
  118. $result['data'] = null;
  119. }
  120. break;
  121. case 'POST':
  122. if(qualifyRequest(1)){
  123. $result['status'] = 'success';
  124. $result['statusText'] = 'success';
  125. $result['data'] = editAppearance($_POST);
  126. }else{
  127. $result['status'] = 'error';
  128. $result['statusText'] = 'API/Token invalid or not set';
  129. $result['data'] = null;
  130. }
  131. break;
  132. default:
  133. $result['status'] = 'error';
  134. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  135. break;
  136. }
  137. break;
  138. case 'v1_update_config':
  139. switch ($method) {
  140. case 'POST':
  141. if(qualifyRequest(1)){
  142. $result['status'] = 'success';
  143. $result['statusText'] = 'success';
  144. $result['data'] = updateConfigItem($_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_settings_tab_editor_tabs':
  158. switch ($method) {
  159. case 'GET':
  160. if(qualifyRequest(1)){
  161. $result['status'] = 'success';
  162. $result['statusText'] = 'success';
  163. $result['data'] = $pageSettingsTabEditorTabs;
  164. }else{
  165. $result['status'] = 'error';
  166. $result['statusText'] = 'API/Token invalid or not set';
  167. $result['data'] = null;
  168. }
  169. break;
  170. case 'POST':
  171. if(qualifyRequest(1)){
  172. $result['status'] = 'success';
  173. $result['statusText'] = 'success';
  174. $result['data'] = editTabs($_POST);
  175. }else{
  176. $result['status'] = 'error';
  177. $result['statusText'] = 'API/Token invalid or not set';
  178. $result['data'] = null;
  179. }
  180. break;
  181. default:
  182. $result['status'] = 'error';
  183. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  184. break;
  185. }
  186. break;
  187. case 'v1_settings_tab_editor_categories':
  188. switch ($method) {
  189. case 'GET':
  190. if(qualifyRequest(1)){
  191. $result['status'] = 'success';
  192. $result['statusText'] = 'success';
  193. $result['data'] = $pageSettingsTabEditorCategories;
  194. }else{
  195. $result['status'] = 'error';
  196. $result['statusText'] = 'API/Token invalid or not set';
  197. $result['data'] = null;
  198. }
  199. break;
  200. case 'POST':
  201. if(qualifyRequest(1)){
  202. $result['status'] = 'success';
  203. $result['statusText'] = 'success';
  204. $result['data'] = editCategories($_POST);
  205. }else{
  206. $result['status'] = 'error';
  207. $result['statusText'] = 'API/Token invalid or not set';
  208. $result['data'] = null;
  209. }
  210. break;
  211. default:
  212. $result['status'] = 'error';
  213. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  214. break;
  215. }
  216. break;
  217. case 'v1_settings_user_manage_users':
  218. switch ($method) {
  219. case 'GET':
  220. if(qualifyRequest(1)){
  221. $result['status'] = 'success';
  222. $result['statusText'] = 'success';
  223. $result['data'] = $pageSettingsUserManageUsers;
  224. }else{
  225. $result['status'] = 'error';
  226. $result['statusText'] = 'API/Token invalid or not set';
  227. $result['data'] = null;
  228. }
  229. break;
  230. case 'POST':
  231. if(qualifyRequest(1)){
  232. $result['status'] = 'success';
  233. $result['statusText'] = 'success';
  234. $result['data'] = adminEditUser($_POST);
  235. }elseif(qualifyRequest(998)){
  236. $result['status'] = 'success';
  237. $result['statusText'] = 'success';
  238. $result['data'] = editUser($_POST);
  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_user_manage_groups':
  252. switch ($method) {
  253. case 'GET':
  254. if(qualifyRequest(1)){
  255. $result['status'] = 'success';
  256. $result['statusText'] = 'success';
  257. $result['data'] = $pageSettingsUserManageGroups;
  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'] = adminEditGroup($_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_settings_image_manager_view':
  282. switch ($method) {
  283. case 'GET':
  284. if(qualifyRequest(1)){
  285. $result['status'] = 'success';
  286. $result['statusText'] = 'success';
  287. $result['data'] = $pageSettingsImageManager;
  288. }else{
  289. $result['status'] = 'error';
  290. $result['statusText'] = 'API/Token invalid or not set';
  291. $result['data'] = null;
  292. }
  293. break;
  294. case 'POST':
  295. if(qualifyRequest(1)){
  296. $result['status'] = 'success';
  297. $result['statusText'] = 'success';
  298. $result['data'] = editImages();
  299. }else{
  300. $result['status'] = 'error';
  301. $result['statusText'] = 'API/Token invalid or not set';
  302. $result['data'] = null;
  303. }
  304. break;
  305. default:
  306. $result['status'] = 'error';
  307. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  308. break;
  309. }
  310. break;
  311. case 'v1_wizard_page':
  312. switch ($method) {
  313. case 'GET':
  314. if(!file_exists('config'.DIRECTORY_SEPARATOR.'config.php')){
  315. $result['status'] = 'success';
  316. $result['statusText'] = 'success';
  317. $result['data'] = $pageWizard;
  318. }else{
  319. $result['status'] = 'error';
  320. $result['statusText'] = 'Wizard has already been run';
  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_dependencies_page':
  331. switch ($method) {
  332. case 'GET':
  333. $result['status'] = 'success';
  334. $result['statusText'] = 'success';
  335. $result['data'] = $pageDependencies;
  336. break;
  337. default:
  338. $result['status'] = 'error';
  339. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  340. break;
  341. }
  342. break;
  343. case 'v1_wizard_config':
  344. switch ($method) {
  345. case 'POST':
  346. if(!file_exists('config'.DIRECTORY_SEPARATOR.'config.php')){
  347. $result['status'] = 'success';
  348. $result['statusText'] = 'success';
  349. $result['data'] = wizardConfig($_POST);
  350. }else{
  351. $result['status'] = 'error';
  352. $result['statusText'] = 'Wizard has already been run';
  353. $result['data'] = null;
  354. }
  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_login':
  363. switch ($method) {
  364. case 'POST':
  365. $result['status'] = 'success';
  366. $result['statusText'] = 'success';
  367. $result['data'] = login($_POST);
  368. break;
  369. default:
  370. $result['status'] = 'error';
  371. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  372. break;
  373. }
  374. break;
  375. case 'v1_register':
  376. switch ($method) {
  377. case 'POST':
  378. $result['status'] = 'success';
  379. $result['statusText'] = 'success';
  380. $result['data'] = register($_POST);
  381. break;
  382. default:
  383. $result['status'] = 'error';
  384. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  385. break;
  386. }
  387. break;
  388. case 'v1_upgrade':
  389. case 'v1_update':
  390. case 'v1_force':
  391. switch ($method) {
  392. case 'POST':
  393. if(qualifyRequest(1)){
  394. $result['status'] = 'success';
  395. $result['statusText'] = 'success';
  396. $result['data'] = upgradeInstall($_POST['data']['branch'],$_POST['data']['stage']);
  397. }else{
  398. $result['status'] = 'error';
  399. $result['statusText'] = 'API/Token invalid or not set';
  400. $result['data'] = null;
  401. }
  402. break;
  403. default:
  404. $result['status'] = 'error';
  405. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  406. break;
  407. }
  408. break;
  409. case 'v1_login_page':
  410. switch ($method) {
  411. case 'GET':
  412. $result['status'] = 'success';
  413. $result['statusText'] = 'success';
  414. $result['data'] = $pageLogin;
  415. break;
  416. default:
  417. $result['status'] = 'error';
  418. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  419. break;
  420. }
  421. break;
  422. case 'v1_lockscreen':
  423. switch ($method) {
  424. case 'GET':
  425. $result['status'] = 'success';
  426. $result['statusText'] = 'success';
  427. $result['data'] = $pageLockScreen;
  428. break;
  429. default:
  430. $result['status'] = 'error';
  431. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  432. break;
  433. }
  434. break;
  435. case 'v1_login_log':
  436. switch ($method) {
  437. case 'GET':
  438. if(qualifyRequest(1)){
  439. $result['status'] = 'success';
  440. $result['statusText'] = 'success';
  441. $result['data'] = getLog('loginLog');
  442. }else{
  443. $result['status'] = 'error';
  444. $result['statusText'] = 'API/Token invalid or not set';
  445. $result['data'] = null;
  446. }
  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_organizr_log':
  455. switch ($method) {
  456. case 'GET':
  457. if(qualifyRequest(1)){
  458. $result['status'] = 'success';
  459. $result['statusText'] = 'success';
  460. $result['data'] = getLog('org');
  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_user_list':
  474. switch ($method) {
  475. case 'GET':
  476. if(qualifyRequest(1)){
  477. $result['status'] = 'success';
  478. $result['statusText'] = 'success';
  479. $result['data'] = allUsers();
  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_tab_list':
  493. switch ($method) {
  494. case 'GET':
  495. if(qualifyRequest(1)){
  496. $result['status'] = 'success';
  497. $result['statusText'] = 'success';
  498. $result['data'] = allTabs();
  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_image_list':
  512. switch ($method) {
  513. case 'GET':
  514. if(qualifyRequest(1)){
  515. $result['status'] = 'success';
  516. $result['statusText'] = 'success';
  517. $result['data'] = getImages();
  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_customize_appearance':
  531. switch ($method) {
  532. case 'GET':
  533. if(qualifyRequest(1)){
  534. $result['status'] = 'success';
  535. $result['statusText'] = 'success';
  536. $result['data'] = getCustomizeAppearance();
  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_user_edit':
  550. switch ($method) {
  551. case 'POST':
  552. if(qualifyRequest(1)){
  553. $result['status'] = 'success';
  554. $result['statusText'] = 'success';
  555. $result['data'] = adminEditUser($_POST);
  556. }elseif(qualifyRequest(998)){
  557. $result['status'] = 'success';
  558. $result['statusText'] = 'success';
  559. $result['data'] = editUser($_POST);
  560. }else{
  561. $result['status'] = 'error';
  562. $result['statusText'] = 'API/Token invalid or not set';
  563. $result['data'] = null;
  564. }
  565. break;
  566. default:
  567. $result['status'] = 'error';
  568. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  569. break;
  570. }
  571. break;
  572. case 'v1_logout':
  573. switch ($method) {
  574. case 'GET':
  575. $result['status'] = 'success';
  576. $result['statusText'] = 'success';
  577. $result['data'] = logout();
  578. break;
  579. default:
  580. $result['status'] = 'error';
  581. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  582. break;
  583. }
  584. break;
  585. case 'v1_launch_organizr':
  586. switch ($method) {
  587. case 'GET':
  588. $status = array();
  589. $result['status'] = 'success';
  590. $result['statusText'] = 'success';
  591. $status['status'] = organizrStatus();
  592. $result['appearance'] = loadAppearance();
  593. $status['user'] = $GLOBALS['organizrUser'];
  594. $status['categories'] = loadTabs()['categories'];
  595. $status['tabs'] = loadTabs()['tabs'];
  596. $result['data'] = $status;
  597. $result['branch'] = $GLOBALS['branch'];
  598. $result['theme'] = $GLOBALS['theme'];
  599. $result['version'] = $GLOBALS['installedVersion'];
  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_auth':
  608. switch ($method) {
  609. case 'GET':
  610. auth();
  611. break;
  612. default:
  613. $result['status'] = 'error';
  614. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  615. break;
  616. }
  617. break;
  618. case 'v1_plugin':
  619. switch ($method) {
  620. case 'POST':
  621. // Include all plugin api Calls
  622. foreach (glob(__DIR__.DIRECTORY_SEPARATOR.'plugins' . DIRECTORY_SEPARATOR . 'api' . DIRECTORY_SEPARATOR . "*.php") as $filename){
  623. require_once $filename;
  624. }
  625. break;
  626. default:
  627. $result['status'] = 'error';
  628. $result['statusText'] = 'The function requested is not defined for method: '.$method;
  629. break;
  630. }
  631. break;
  632. default:
  633. //No Function Available
  634. $result['status'] = 'error';
  635. $result['statusText'] = 'function requested is not defined';
  636. break;
  637. }
  638. //Set Default Result
  639. if(!$result){
  640. $result['status'] = "error";
  641. $result['error'] = "An error has occurred";
  642. }
  643. $result['generationDate'] = $GLOBALS['currentTime'];
  644. $generationTime += microtime(true);
  645. $result['generationTime'] = (sprintf('%f', $generationTime)*1000).'ms';
  646. //return JSON array
  647. exit(json_encode($result, JSON_HEX_QUOT | JSON_HEX_TAG));