FuncController.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <?php
  2. namespace App\Controllers\Mod_Mu;
  3. use App\Models\DetectRule;
  4. use App\Models\Relay;
  5. use App\Models\BlockIp;
  6. use App\Models\UnblockIp;
  7. use App\Models\Speedtest;
  8. use App\Models\Node;
  9. use App\Models\Auto;
  10. use App\Controllers\BaseController;
  11. class FuncController extends BaseController
  12. {
  13. public function ping($request, $response, $args)
  14. {
  15. $res = [
  16. 'ret' => 1,
  17. 'data' => 'pong'
  18. ];
  19. return $this->echoJson($response, $res);
  20. }
  21. public function get_detect_logs($request, $response, $args)
  22. {
  23. $rules = DetectRule::all();
  24. $res = [
  25. 'ret' => 1,
  26. 'data' => $rules
  27. ];
  28. return $this->echoJson($response, $res);
  29. }
  30. public function get_dis_node_info($nodeid)
  31. {
  32. $node = Node::where('id', $nodeid)->first();
  33. if ($node == null) {
  34. return null;
  35. }
  36. return $node;
  37. }
  38. public function get_relay_rules($request, $response, $args)
  39. {
  40. $params = $request->getQueryParams();
  41. $node_id = $params['node_id'];
  42. if ($node_id == '0') {
  43. $node = Node::where('node_ip', $_SERVER['REMOTE_ADDR'])->first();
  44. $node_id = $node->id;
  45. } else {
  46. $node = Node::where('id', $node_id)->first();
  47. }
  48. $rules = Relay::Where('source_node_id', $node_id)->get();
  49. if (count($rules) > 0) {
  50. if ($rules[0]['dist_node_id'] == -1) {
  51. $server = null;
  52. }
  53. foreach ($rules as $rule) {
  54. $dis = $this->get_dis_node_info($rule['dist_node_id']);
  55. if ($dis != null) {
  56. $rule['source_node_sort'] = $node->sort;
  57. $rule['dist_node_sort'] = $dis->sort;
  58. $rule['dist_node_server'] = $dis->server;
  59. } else {
  60. $rule['source_node_sort'] = $node->sort;
  61. $rule['dist_node_sort'] = null;
  62. $rule['dist_node_server'] = null;
  63. }
  64. }
  65. $res = [
  66. 'ret' => 1,
  67. 'data' => $rules,
  68. ];
  69. } else {
  70. $res = [
  71. 'ret' => 1,
  72. 'data' => array(),
  73. ];
  74. }
  75. return $this->echoJson($response, $res);
  76. }
  77. public function get_blockip($request, $response, $args)
  78. {
  79. $block_ips = BlockIp::Where('datetime', '>', time() - 60)->get();
  80. $res = [
  81. 'ret' => 1,
  82. 'data' => $block_ips
  83. ];
  84. return $this->echoJson($response, $res);
  85. }
  86. public function get_unblockip($request, $response, $args)
  87. {
  88. $unblock_ips = UnblockIp::Where('datetime', '>', time() - 60)->get();
  89. $res = [
  90. 'ret' => 1,
  91. 'data' => $unblock_ips
  92. ];
  93. return $this->echoJson($response, $res);
  94. }
  95. public function addBlockIp($request, $response, $args)
  96. {
  97. $params = $request->getQueryParams();
  98. $data = $request->getParam('data');
  99. $node_id = $params['node_id'];
  100. if ($node_id == '0') {
  101. $node = Node::where('node_ip', $_SERVER['REMOTE_ADDR'])->first();
  102. $node_id = $node->id;
  103. }
  104. $node = Node::find($node_id);
  105. if ($node == null) {
  106. $res = [
  107. 'ret' => 0
  108. ];
  109. return $this->echoJson($response, $res);
  110. }
  111. if (count($data) > 0) {
  112. foreach ($data as $log) {
  113. $ip = $log['ip'];
  114. $exist_ip = BlockIp::where('ip', $ip)->first();
  115. if ($exist_ip != null) {
  116. continue;
  117. }
  118. // log
  119. $ip_block = new BlockIp();
  120. $ip_block->ip = $ip;
  121. $ip_block->nodeid = $node_id;
  122. $ip_block->datetime = time();
  123. $ip_block->save();
  124. }
  125. }
  126. $res = [
  127. 'ret' => 1,
  128. 'data' => 'ok',
  129. ];
  130. return $this->echoJson($response, $res);
  131. }
  132. public function addSpeedtest($request, $response, $args)
  133. {
  134. $params = $request->getQueryParams();
  135. $data = $request->getParam('data');
  136. $node_id = $params['node_id'];
  137. if ($node_id == '0') {
  138. $node = Node::where('node_ip', $_SERVER['REMOTE_ADDR'])->first();
  139. $node_id = $node->id;
  140. }
  141. $node = Node::find($node_id);
  142. if ($node == null) {
  143. $res = [
  144. 'ret' => 0
  145. ];
  146. return $this->echoJson($response, $res);
  147. }
  148. if (count($data) > 0) {
  149. foreach ($data as $log) {
  150. // log
  151. $speedtest_log = new Speedtest();
  152. $speedtest_log->telecomping = $log['telecomping'];
  153. $speedtest_log->telecomeupload = $log['telecomeupload'];
  154. $speedtest_log->telecomedownload = $log['telecomedownload'];
  155. $speedtest_log->unicomping = $log['unicomping'];
  156. $speedtest_log->unicomupload = $log['unicomupload'];
  157. $speedtest_log->unicomdownload = $log['unicomdownload'];
  158. $speedtest_log->cmccping = $log['cmccping'];
  159. $speedtest_log->cmccupload = $log['cmccupload'];
  160. $speedtest_log->cmccdownload = $log['cmccdownload'];
  161. $speedtest_log->nodeid = $node_id;
  162. $speedtest_log->datetime = time();
  163. $speedtest_log->save();
  164. }
  165. }
  166. $res = [
  167. 'ret' => 1,
  168. 'data' => 'ok',
  169. ];
  170. return $this->echoJson($response, $res);
  171. }
  172. public function get_autoexec($request, $response, $args)
  173. {
  174. $params = $request->getQueryParams();
  175. $node_id = $params['node_id'];
  176. if ($node_id == '0') {
  177. $node = Node::where('node_ip', $_SERVER['REMOTE_ADDR'])->first();
  178. $node_id = $node->id;
  179. }
  180. $node = Node::find($node_id);
  181. if ($node == null) {
  182. $res = [
  183. 'ret' => 0
  184. ];
  185. return $this->echoJson($response, $res);
  186. }
  187. $autos_raw = Auto::where('datetime', '>', time() - 60)->where('type', '1')->get();
  188. $autos = array();
  189. foreach ($autos_raw as $auto_raw) {
  190. $has_exec = Auto::where('sign', $node_id . '-' . $auto_raw->id)->where('type', '2')->first();
  191. if ($has_exec == null) {
  192. $autos[] = $auto_raw;
  193. }
  194. }
  195. $res = [
  196. 'ret' => 1,
  197. 'data' => $autos,
  198. ];
  199. return $this->echoJson($response, $res);
  200. }
  201. public function addAutoexec($request, $response, $args)
  202. {
  203. $params = $request->getQueryParams();
  204. $data = $request->getParam('data');
  205. $node_id = $params['node_id'];
  206. if ($node_id == '0') {
  207. $node = Node::where('node_ip', $_SERVER['REMOTE_ADDR'])->first();
  208. $node_id = $node->id;
  209. }
  210. $node = Node::find($node_id);
  211. if ($node == null) {
  212. $res = [
  213. 'ret' => 0
  214. ];
  215. return $this->echoJson($response, $res);
  216. }
  217. if (count($data) > 0) {
  218. foreach ($data as $log) {
  219. // log
  220. $auto_log = new Auto();
  221. $auto_log->value = $log['value'];
  222. $auto_log->sign = $log['sign'];
  223. $auto_log->type = $log['type'];
  224. $auto_log->datetime = time();
  225. $auto_log->save();
  226. }
  227. }
  228. $res = [
  229. 'ret' => 1,
  230. 'data' => 'ok',
  231. ];
  232. return $this->echoJson($response, $res);
  233. }
  234. }