Advertisement
Guest User

Untitled

a guest
Nov 10th, 2020
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.51 KB | None | 0 0
  1. <?php
  2. /*
  3. *
  4. * @ This file is created by http://DeZender.Net
  5. * @ deZender (PHP5 Decoder for ionCube Encoder)
  6. *
  7. * @ Version : 3.5.0.0
  8. * @ Author : DeZender
  9. * @ Release on : 22.06.2018
  10. * @ Official site : http://DeZender.Net
  11. *
  12. */
  13.  
  14. require_once '/opt/unetlab/html/includes/init.php';
  15. require_once BASE_DIR . '/html/includes/Slim/Slim.php';
  16. require_once BASE_DIR . '/html/includes/Slim-Extras/DateTimeFileWriter.php';
  17. require_once BASE_DIR . '/html/includes/api_authentication.php';
  18. require_once BASE_DIR . '/html/includes/api_configs.php';
  19. require_once BASE_DIR . '/html/includes/api_folders.php';
  20. require_once BASE_DIR . '/html/includes/api_labs.php';
  21. require_once BASE_DIR . '/html/includes/api_tasks.php';
  22. require_once BASE_DIR . '/html/includes/api_networks.php';
  23. require_once BASE_DIR . '/html/includes/api_nodes.php';
  24. require_once BASE_DIR . '/html/includes/api_pictures.php';
  25. require_once BASE_DIR . '/html/includes/api_status.php';
  26. require_once BASE_DIR . '/html/includes/api_textobjects.php';
  27. require_once BASE_DIR . '/html/includes/api_lineobjects.php';
  28. require_once BASE_DIR . '/html/includes/api_topology.php';
  29. require_once BASE_DIR . '/html/includes/api_uusers.php';
  30. require_once BASE_DIR . '/html/includes/api_capture.php';
  31. require_once BASE_DIR . '/html/includes/api_html5Desktop.php';
  32. Slim\Slim::registerAutoloader();
  33. $licprops = new_ioncube_license_properties();
  34. $app = new Slim\Slim(array('mode' => 'production', 'debug' => true, 'log.level' => Slim\Log::WARN, 'log.enabled' => true, 'log.writer' => new Slim\LogWriter(fopen('/opt/unetlab/data/Logs/api.txt', 'a'))));
  35. $app->hook(
  36. 'slim.after.router',
  37. function() use ($app) {
  38. $request = $app->request;
  39. $response = $app->response;
  40. $app->log->debug('Request path: ' . $request->getPathInfo());
  41. $app->log->debug('Response status: ' . $response->getStatus());
  42. }
  43. );
  44. $app->response->headers->set('Content-Type', 'application/json');
  45. $app->response->headers->set('X-Powered-By', 'Unified Networking Lab API');
  46. $app->response->headers->set('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0');
  47. $app->response->headers->set('Cache-Control', 'post-check=0, pre-check=0');
  48. $app->response->headers->set('Pragma', 'no-cache');
  49. $app->notFound(
  50. function() use ($app) {
  51. $output['code'] = 404;
  52. $output['status'] = 'fail';
  53. $output['message'] = $GLOBALS['messages'][60038];
  54. $app->halt($output['code'], json_encode($output));
  55. }
  56. );
  57. $db = checkDatabase();
  58.  
  59. if ($db === false) {
  60. $app->map(
  61. '/api/(:path+)',
  62. function() use ($app) {
  63. $output['code'] = 500;
  64. $output['status'] = 'fail';
  65. $output['message'] = $GLOBALS['messages'][90003];
  66. $app->response->setStatus($output['code']);
  67. $app->response->setBody(json_encode($output));
  68. }
  69. )->via('DELETE', 'GET', 'POST');
  70. $app->run();
  71. }
  72.  
  73. $html5_db = html5_checkDatabase();
  74.  
  75. if ($html5_db === false) {
  76. $app->map(
  77. '/api/(:path+)',
  78. function() use ($app) {
  79. $output['code'] = 500;
  80. $output['status'] = 'fail';
  81. $output['message'] = $GLOBALS['messages'][90003];
  82. $app->response->setStatus($output['code']);
  83. $app->response->setBody(json_encode($output));
  84. }
  85. )->via('DELETE', 'GET', 'POST');
  86. $app->run();
  87. }
  88.  
  89. if (updateDatabase($db) == false) {
  90. $app->map(
  91. '/api/(:path+)',
  92. function() use ($app) {
  93. $output['code'] = 500;
  94. $output['status'] = 'fail';
  95. $output['message'] = $GLOBALS['messages'][90006];
  96. $app->response->setStatus($output['code']);
  97. $app->response->setBody(json_encode($output));
  98. }
  99. )->via('DELETE', 'GET', 'POST');
  100. $app->run();
  101. }
  102.  
  103. $forbidden = array('code' => 401, 'status' => 'forbidden', 'message' => $GLOBALS['messages'][90032]);
  104. $app->post(
  105. '/api/auth/login',
  106. function() use ($app, $db, $html5_db, $licprops) {
  107. $event = json_decode($app->request()->getBody());
  108. $p = json_decode(json_encode($event), true);
  109.  
  110. if (($licprops['expire']['value'] < intval(date('Ymd')) || $licprops['expire']['value'] == 'unlicensed') && isset($p['html5']) && $p['html5'] == 2) {
  111. $output['code'] = 401;
  112. $output['data']['reason'] = 'License expired ( ' . $licprops['expire']['value'] . ' )';
  113. $app->response->setStatus($output['code']);
  114. $app->response->setBody(json_encode($output));
  115. } else {
  116. $cookie = genUuid();
  117. $output = apiLogin($db, $html5_db, $p, $cookie);
  118. $mycookie = $cookie;
  119.  
  120. if ($output['code'] == 200) {
  121. if (CHECK == 'strict') {
  122. $user = getUserByCookie($db, $cookie);
  123. $max = $licprops[$user['role'] . 's']['value'];
  124. $now = strtotime('now') + date('Z');
  125. $role = $user['role'];
  126. $query = "select count(session) as nb from users where role='" . $role . "' and session > " . $now . ' ;';
  127. $statement = $db->prepare($query);
  128. $statement->execute();
  129. $result = $statement->fetch();
  130. $cur = $result['nb'];
  131.  
  132. if ($max < $cur) {
  133. $query = " update users set session = NULL where username = '" . $user['username'] . "'";
  134. $statement = $db->prepare($query);
  135. $statement->execute();
  136. $output = array();
  137. $output['code'] = 402;
  138. $output['data']['reason'] = 'Insufficient Licenses';
  139. $app->response->setStatus($output['code']);
  140. $app->response->setBody(json_encode($output));
  141.  
  142. return null;
  143. }
  144. }
  145.  
  146. $output = apiLogin($db, $html5_db, $p, $cookie);
  147. $mycookie = $cookie;
  148. $app->setCookie('unetlab_session', $cookie, 0, '/api/', $_SERVER['SERVER_NAME'], false, false);
  149. }
  150.  
  151. $app->response->setStatus($output['code']);
  152. $app->response->setBody(json_encode($output));
  153.  
  154. if ($output['code'] == 200) {
  155. list($user, $tenant, $noneed) = apiAuthorization($db, $mycookie);
  156.  
  157. if ($user == false) {
  158. $output['code'] = 400;
  159. $output['data']['reason'] = 'Unauthorized';
  160. $app->response->setStatus($output['code']);
  161. $app->response->setBody(json_encode($output));
  162.  
  163. return null;
  164. }
  165.  
  166. $role = $user['role'];
  167. $key = $role . 's';
  168. $max = $licprops[$key]['value'];
  169. $query = "select session from users where role='" . $role . "' order by session desc limit 1 offset " . $max . ' ;';
  170. $statement = $db->prepare($query);
  171. $statement->execute();
  172. $result = $statement->fetch();
  173. $maxval = $result['session'];
  174.  
  175. if (0 < intval($maxval)) {
  176. $query = "update users set session = NULL where role = '" . $role . "' and session <= " . $maxval . ';';
  177. $statement = $db->prepare($query);
  178. $statement->execute();
  179. }
  180. }
  181.  
  182. $db = null;
  183. $html5_db = null;
  184. }
  185. }
  186. );
  187. $app->get(
  188. '/api/auth/logout',
  189. function() use ($app, $db) {
  190. $cookie = $app->getCookie('unetlab_session');
  191. $app->deleteCookie('unetlab_session');
  192. $output = apiLogout($db, $cookie);
  193. $app->response->setStatus($output['code']);
  194. $app->response->setBody(json_encode($output));
  195. $db = null;
  196. $html5_db = null;
  197. }
  198. );
  199. $app->get(
  200. '/api/auth',
  201. function() use ($app, $db, $licprops) {
  202. list($user, $tenant, $output) = apiAuthorization($db, $app->getCookie('unetlab_session'));
  203.  
  204. if ($user === false) {
  205. $output['code'] = 401;
  206.  
  207. if ($licprops['expire']['value'] < intval(date('Ymd'))) {
  208. $output['data']['reason'] = 'License expired ( ' . $licprops['expire']['value'] . ' )';
  209. }
  210.  
  211. $app->response->setStatus($output['code']);
  212. $app->response->setBody(json_encode($output));
  213. } else {
  214. if (checkFolder(BASE_LAB . $user['folder']) !== 0) {
  215. $user['folder'] = '/';
  216. }
  217.  
  218. $output['code'] = 200;
  219. $output['status'] = 'success';
  220. $output['message'] = $GLOBALS['messages'][90002];
  221. ...........................................................................
  222. ................................................
  223. ............................
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement