FuncController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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. use App\Utils\Tools;
  12. class FuncController extends BaseController
  13. {
  14. public function ping($request, $response, $args)
  15. {
  16. $res = [
  17. "ret" => 1,
  18. "data" => 'pong'
  19. ];
  20. return $this->echoJson($response, $res);
  21. }
  22. public function get_detect_logs($request, $response, $args)
  23. {
  24. $rules = DetectRule::all();
  25. $res = [
  26. "ret" => 1,
  27. "data" => $rules
  28. ];
  29. return $this->echoJson($response, $res);
  30. }
  31. public function get_relay_rules($request, $response, $args)
  32. {
  33. $params = $request->getQueryParams();
  34. $node_id = $params['node_id'];
  35. $rules = Relay::Where('source_node_id', $node_id)->get();
  36. $res = [
  37. "ret" => 1,
  38. "data" => $rules
  39. ];
  40. return $this->echoJson($response, $res);
  41. }
  42. public function get_blockip($request, $response, $args)
  43. {
  44. $block_ips = BlockIp::Where('datetime', '>', time() - 60)->get();
  45. $res = [
  46. "ret" => 1,
  47. "data" => $block_ips
  48. ];
  49. return $this->echoJson($response, $res);
  50. }
  51. public function get_unblockip($request, $response, $args)
  52. {
  53. $unblock_ips = UnblockIp::Where('datetime', '>', time() - 60)->get();
  54. $res = [
  55. "ret" => 1,
  56. "data" => $unblock_ips
  57. ];
  58. return $this->echoJson($response, $res);
  59. }
  60. public function addBlockIp($request, $response, $args)
  61. {
  62. $params = $request->getQueryParams();
  63. $data = $request->getParam('data');
  64. $node_id = $params['node_id'];
  65. $node = Node::find($node_id);
  66. if ($node == null) {
  67. $res = [
  68. "ret" => 0
  69. ];
  70. return $this->echoJson($response, $res);
  71. }
  72. if (count($data) > 0) {
  73. foreach ($data as $log) {
  74. $ip = $log['ip'];
  75. $exist_ip = BlockIp::where('ip', $ip)->first();
  76. if ($exist_ip != null) {
  77. continue;
  78. }
  79. // log
  80. $ip_block = new BlockIp();
  81. $ip_block->ip = $ip;
  82. $ip_block->nodeid = $node_id;
  83. $ip_block->datetime = time();
  84. $ip_block->save();
  85. }
  86. }
  87. $res = [
  88. "ret" => 1,
  89. "data" => "ok",
  90. ];
  91. return $this->echoJson($response, $res);
  92. }
  93. public function addSpeedtest($request, $response, $args)
  94. {
  95. $params = $request->getQueryParams();
  96. $data = $request->getParam('data');
  97. $node_id = $params['node_id'];
  98. $node = Node::find($node_id);
  99. if ($node == null) {
  100. $res = [
  101. "ret" => 0
  102. ];
  103. return $this->echoJson($response, $res);
  104. }
  105. if (count($data) > 0) {
  106. foreach ($data as $log) {
  107. // log
  108. $speedtest_log = new Speedtest();
  109. $speedtest_log->telecomping = $log['telecomping'];
  110. $speedtest_log->telecomeupload = $log['telecomeupload'];
  111. $speedtest_log->telecomedownload = $log['telecomedownload'];
  112. $speedtest_log->unicomping = $log['unicomping'];
  113. $speedtest_log->unicomupload = $log['unicomupload'];
  114. $speedtest_log->unicomdownload = $log['unicomdownload'];
  115. $speedtest_log->cmccping = $log['cmccping'];
  116. $speedtest_log->cmccupload = $log['cmccupload'];
  117. $speedtest_log->cmccdownload = $log['cmccdownload'];
  118. $speedtest_log->nodeid = $node_id;
  119. $speedtest_log->datetime = time();
  120. $speedtest_log->save();
  121. }
  122. }
  123. $res = [
  124. "ret" => 1,
  125. "data" => "ok",
  126. ];
  127. return $this->echoJson($response, $res);
  128. }
  129. public function get_autoexec($request, $response, $args)
  130. {
  131. $params = $request->getQueryParams();
  132. $node_id = $params['node_id'];
  133. $node = Node::find($node_id);
  134. if ($node == null) {
  135. $res = [
  136. "ret" => 0
  137. ];
  138. return $this->echoJson($response, $res);
  139. }
  140. $autos_raw = Auto::where('datetime', '>', time() - 60)->where('type', '1')->get();
  141. $autos = array();
  142. foreach ($autos_raw as $auto_raw) {
  143. $has_exec = Auto::where('sign', $node_id.'-'.$auto_raw->id)->where('type', '2')->first();
  144. if ($has_exec == null) {
  145. array_push($autos, $auto_raw);
  146. }
  147. }
  148. $res = [
  149. "ret" => 1,
  150. "data" => $autos,
  151. ];
  152. return $this->echoJson($response, $res);
  153. }
  154. public function addAutoexec($request, $response, $args)
  155. {
  156. $params = $request->getQueryParams();
  157. $data = $request->getParam('data');
  158. $node_id = $params['node_id'];
  159. $node = Node::find($node_id);
  160. if ($node == null) {
  161. $res = [
  162. "ret" => 0
  163. ];
  164. return $this->echoJson($response, $res);
  165. }
  166. if (count($data) > 0) {
  167. foreach ($data as $log) {
  168. // log
  169. $auto_log = new Auto();
  170. $auto_log->value = $log['value'];
  171. $auto_log->sign = $log['sign'];
  172. $auto_log->type = $log['type'];
  173. $auto_log->datetime = time();
  174. $auto_log->save();
  175. }
  176. }
  177. $res = [
  178. "ret" => 1,
  179. "data" => "ok",
  180. ];
  181. return $this->echoJson($response, $res);
  182. }
  183. }