acme.html 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <!-- Notes: This should be open in its original path-->
  5. <link rel="stylesheet" href="../script/semantic/semantic.min.css">
  6. <script src="../script/jquery-3.6.0.min.js"></script>
  7. <script src="../script/semantic/semantic.min.js"></script>
  8. </head>
  9. <body>
  10. <br>
  11. <div class="ui container">
  12. <div class="ui header">
  13. <div class="content">
  14. Certificates Auto Renew Settings
  15. <div class="sub header">Fetch and renew your certificates with ACME</div>
  16. </div>
  17. </div>
  18. <div class="ui message">
  19. </div>
  20. <div class="ui basic segment">
  21. <div class="ui toggle checkbox">
  22. <input type="checkbox" name="public">
  23. <label>Enable Domain Auto Renew</label>
  24. </div>
  25. </div>
  26. <div class="ui segment">
  27. <p>This is an example of using ACME.</p>
  28. <button id="fetchButton" class="ui primary button">Fetch Expired Domains</button>
  29. </div>
  30. <div id="domainTable" class="ui segment hidden">
  31. <h2 class="ui header">Expired Domains</h2>
  32. <table id="domainList" class="ui celled table">
  33. <thead>
  34. <tr>
  35. <th>Domain</th>
  36. </tr>
  37. </thead>
  38. <tbody></tbody>
  39. </table>
  40. <div class="ui segment">
  41. <h2 class="ui header">Obtain Certificate</h2>
  42. <div class="ui form">
  43. <div class="field">
  44. <label>Domains</label>
  45. <input id="domainsInput" type="text" placeholder="Enter domains separated by commas (e.g. r5desktop.alanyeung.co,alanyeung.co)">
  46. </div>
  47. <div class="field">
  48. <label>Filename</label>
  49. <input id="filenameInput" type="text" placeholder="Enter filename">
  50. </div>
  51. <button id="obtainButton" class="ui button" type="submit">Obtain Certificate</button>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  57. <script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.js"></script>
  58. <script>
  59. $(document).ready(function() {
  60. // Button click event handler
  61. $("#fetchButton").click(function() {
  62. fetchExpiredDomains();
  63. });
  64. // Fetch expired domains from API
  65. function fetchExpiredDomains() {
  66. $.ajax({
  67. url: "/api/acme/listExpiredDomains",
  68. method: "GET",
  69. success: function(response) {
  70. // Render domain table
  71. renderDomainTable(response.domain);
  72. },
  73. error: function(error) {
  74. console.log("Failed to fetch expired domains:", error);
  75. }
  76. });
  77. }
  78. // Render domain table with data
  79. function renderDomainTable(domains) {
  80. var tableBody = $("#domainList tbody");
  81. tableBody.empty();
  82. $.each(domains, function(index, domain) {
  83. var row = $("<tr>").appendTo(tableBody);
  84. $("<td>").text(domain).appendTo(row);
  85. });
  86. // Show the domain table
  87. $("#domainTable").removeClass("hidden");
  88. }
  89. // Button click event handler for obtaining certificate
  90. $("#obtainButton").click(function() {
  91. obtainCertificate();
  92. });
  93. // Obtain certificate from API
  94. function obtainCertificate() {
  95. var domains = $("#domainsInput").val();
  96. var filename = $("#filenameInput").val();
  97. $.ajax({
  98. url: "/api/acme/obtainCert",
  99. method: "GET",
  100. data: {
  101. domains: domains,
  102. filename: filename
  103. },
  104. success: function(response) {
  105. if (response.error) {
  106. console.log("Error:", response.error);
  107. // Show error message
  108. showMessage(response.error);
  109. } else {
  110. console.log("Certificate obtained successfully");
  111. // Show success message
  112. showMessage("Certificate obtained successfully");
  113. }
  114. },
  115. error: function(error) {
  116. console.log("Failed to obtain certificate:", error);
  117. }
  118. });
  119. }
  120. // Show message in a popup
  121. function showMessage(message) {
  122. $("<div>").addClass("ui message").text(message).appendTo("body").modal({
  123. onHide: function() {
  124. $(this).remove();
  125. }
  126. }).modal("show");
  127. }
  128. });
  129. </script>
  130. </body>
  131. </html>