CertController.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\NodeCertificate;
  5. use Exception;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Http\Request;
  8. use Log;
  9. use Response;
  10. class CertController extends Controller
  11. {
  12. // 域名证书列表
  13. public function index(Request $request)
  14. {
  15. $DvList = NodeCertificate::orderBy('id')->paginate(15)->appends($request->except('page'));
  16. foreach ($DvList as $Dv) {
  17. if ($Dv->pem) {
  18. $DvInfo = openssl_x509_parse($Dv->pem);
  19. if ($DvInfo) {
  20. $Dv->issuer = $DvInfo['issuer']['O'] ?? null;
  21. $Dv->from = date('Y-m-d', $DvInfo['validFrom_time_t']) ?: null;
  22. $Dv->to = date('Y-m-d', $DvInfo['validTo_time_t']) ?: null;
  23. }
  24. }
  25. }
  26. $view['list'] = $DvList;
  27. return view('admin.node.cert.index', $view);
  28. }
  29. public function create()
  30. {
  31. return view('admin.node.cert.info');
  32. }
  33. // 添加域名证书
  34. public function store(Request $request): JsonResponse
  35. {
  36. $cert = new NodeCertificate();
  37. $cert->domain = $request->input('domain');
  38. $cert->key = str_replace(["\r", "\n"], '', $request->input('key'));
  39. $cert->pem = str_replace(["\r", "\n"], '', $request->input('pem'));
  40. $cert->save();
  41. if ($cert->id) {
  42. return Response::json(['status' => 'success', 'message' => '生成成功']);
  43. }
  44. return Response::json(['status' => 'fail', 'message' => '生成失败']);
  45. }
  46. // 编辑域名证书
  47. public function edit($id)
  48. {
  49. $view['Dv'] = NodeCertificate::find($id);
  50. return view('admin.node.cert.info', $view);
  51. }
  52. public function update(Request $request, $id): JsonResponse
  53. {
  54. $Dv = NodeCertificate::findOrFail($id);
  55. if ($Dv->update(['domain' => $request->input('domain'), 'key' => $request->input('key'), 'pem' => $request->input('pem')])) {
  56. return Response::json(['status' => 'success', 'message' => '修改成功']);
  57. }
  58. return Response::json(['status' => 'fail', 'message' => '修改失败']);
  59. }
  60. // 删除域名证书
  61. public function destroy($id): JsonResponse
  62. {
  63. try {
  64. if (NodeCertificate::whereId($id)->delete()) {
  65. return Response::json(['status' => 'success', 'message' => '操作成功']);
  66. }
  67. } catch (Exception $e) {
  68. Log::error('删除域名证书失败:'.$e->getMessage());
  69. return Response::json(['status' => 'fail', 'message' => '删除域名证书失败:'.$e->getMessage()]);
  70. }
  71. return Response::json(['status' => 'fail', 'message' => '删除域名证书失败']);
  72. }
  73. }