SsConfigController.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Http\Controllers\Admin\Config;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\SsConfig;
  5. use Exception;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Http\Request;
  8. use Log;
  9. use Response;
  10. class SsConfigController extends Controller
  11. {
  12. // 添加SS配置
  13. public function store(Request $request): JsonResponse
  14. {
  15. $name = $request->input('name');
  16. $type = $request->input('type', 1); // 类型:1-加密方式(method)、2-协议(protocol)、3-混淆(obfs)
  17. $is_default = $request->input('is_default', 0);
  18. $sort = $request->input('sort', 0);
  19. if (empty($name)) {
  20. return Response::json(['status' => 'fail', 'message' => '配置名称不能为空']);
  21. }
  22. // 校验是否已存在
  23. $config = SsConfig::type($type)->whereName($name)->first();
  24. if ($config) {
  25. return Response::json(['status' => 'fail', 'message' => '配置已经存在,请勿重复添加']);
  26. }
  27. $ssConfig = new SsConfig();
  28. $ssConfig->name = $name;
  29. $ssConfig->type = $type;
  30. $ssConfig->is_default = $is_default;
  31. $ssConfig->sort = $sort;
  32. $ssConfig->save();
  33. return Response::json(['status' => 'success', 'message' => '添加成功']);
  34. }
  35. // 设置SS默认配置
  36. public function update($id): JsonResponse
  37. {
  38. if (empty($id)) {
  39. return Response::json(['status' => 'fail', 'message' => '非法请求']);
  40. }
  41. $config = SsConfig::find($id);
  42. if (!$config) {
  43. return Response::json(['status' => 'fail', 'message' => '配置不存在']);
  44. }
  45. // 去除该配置所属类型的默认值
  46. SsConfig::default()->type($config->type)->update(['is_default' => 0]);
  47. // 将该ID对应记录值置为默认值
  48. SsConfig::whereId($id)->update(['is_default' => 1]);
  49. return Response::json(['status' => 'success', 'message' => '操作成功']);
  50. }
  51. // 删除SS配置
  52. public function destroy($id): JsonResponse
  53. {
  54. try {
  55. if (SsConfig::whereId($id)->delete()) {
  56. return Response::json(['status' => 'success', 'message' => '删除成功']);
  57. }
  58. } catch (Exception $e) {
  59. Log::error('删除SS配置时失败:'.$e->getMessage());
  60. return Response::json(['status' => 'fail', 'message' => '删除失败:'.$e->getMessage()]);
  61. }
  62. return Response::json(['status' => 'fail', 'message' => '删除失败']);
  63. }
  64. }