ShadowsocksController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Http\Controllers\Admin\Server;
  3. use App\Http\Requests\Admin\ServerShadowsocksSave;
  4. use App\Http\Requests\Admin\ServerShadowsocksSort;
  5. use App\Http\Requests\Admin\ServerShadowsocksUpdate;
  6. use App\Http\Requests\Admin\ServerV2raySave;
  7. use App\Http\Requests\Admin\ServerV2raySort;
  8. use App\Http\Requests\Admin\ServerV2rayUpdate;
  9. use App\Models\ServerShadowsocks;
  10. use App\Services\ServerService;
  11. use App\Utils\CacheKey;
  12. use Illuminate\Http\Request;
  13. use App\Http\Controllers\Controller;
  14. use App\Models\Server;
  15. use Illuminate\Support\Facades\Cache;
  16. use Illuminate\Support\Facades\DB;
  17. class ShadowsocksController extends Controller
  18. {
  19. public function fetch(Request $request)
  20. {
  21. $server = ServerShadowsocks::orderBy('sort', 'ASC')->get();
  22. for ($i = 0; $i < count($server); $i++) {
  23. if (!empty($server[$i]['tags'])) {
  24. $server[$i]['tags'] = json_decode($server[$i]['tags']);
  25. }
  26. $server[$i]['group_id'] = json_decode($server[$i]['group_id']);
  27. $server[$i]['online'] = Cache::get(CacheKey::get('SERVER_SHADOWSOCKS_ONLINE_USER', $server[$i]['parent_id'] ? $server[$i]['parent_id'] : $server[$i]['id']));
  28. if ($server[$i]['parent_id']) {
  29. $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_SHADOWSOCKS_LAST_CHECK_AT', $server[$i]['parent_id']));
  30. } else {
  31. $server[$i]['last_check_at'] = Cache::get(CacheKey::get('SERVER_SHADOWSOCKS_LAST_CHECK_AT', $server[$i]['id']));
  32. }
  33. }
  34. return response([
  35. 'data' => $server
  36. ]);
  37. }
  38. public function save(ServerShadowsocksSave $request)
  39. {
  40. $params = $request->validated();
  41. $params['group_id'] = json_encode($params['group_id']);
  42. if (isset($params['tags'])) {
  43. $params['tags'] = json_encode($params['tags']);
  44. }
  45. if ($request->input('id')) {
  46. $server = ServerShadowsocks::find($request->input('id'));
  47. if (!$server) {
  48. abort(500, '服务器不存在');
  49. }
  50. try {
  51. $server->update($params);
  52. } catch (\Exception $e) {
  53. abort(500, '保存失败');
  54. }
  55. return response([
  56. 'data' => true
  57. ]);
  58. }
  59. if (!ServerShadowsocks::create($params)) {
  60. abort(500, '创建失败');
  61. }
  62. return response([
  63. 'data' => true
  64. ]);
  65. }
  66. public function drop(Request $request)
  67. {
  68. if ($request->input('id')) {
  69. $server = ServerShadowsocks::find($request->input('id'));
  70. if (!$server) {
  71. abort(500, '节点ID不存在');
  72. }
  73. }
  74. return response([
  75. 'data' => $server->delete()
  76. ]);
  77. }
  78. public function update(ServerShadowsocksUpdate $request)
  79. {
  80. $params = $request->only([
  81. 'show',
  82. ]);
  83. $server = ServerShadowsocks::find($request->input('id'));
  84. if (!$server) {
  85. abort(500, '该服务器不存在');
  86. }
  87. try {
  88. $server->update($params);
  89. } catch (\Exception $e) {
  90. abort(500, '保存失败');
  91. }
  92. return response([
  93. 'data' => true
  94. ]);
  95. }
  96. public function copy(Request $request)
  97. {
  98. $server = ServerShadowsocks::find($request->input('id'));
  99. $server->show = 0;
  100. if (!$server) {
  101. abort(500, '服务器不存在');
  102. }
  103. if (!Server::create($server->toArray())) {
  104. abort(500, '复制失败');
  105. }
  106. return response([
  107. 'data' => true
  108. ]);
  109. }
  110. public function sort(ServerShadowsocksSort $request)
  111. {
  112. DB::beginTransaction();
  113. foreach ($request->input('server_ids') as $k => $v) {
  114. if (!ServerShadowsocks::find($v)->update(['sort' => $k + 1])) {
  115. DB::rollBack();
  116. abort(500, '保存失败');
  117. }
  118. }
  119. DB::commit();
  120. return response([
  121. 'data' => true
  122. ]);
  123. }
  124. }