httprp.html 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <div class="standardContainer">
  2. <div class="ui basic segment">
  3. <h2>HTTP Proxy</h2>
  4. <p>Proxy HTTP server with HTTP or HTTPS for multiple hosts. If you are only proxying for one host / domain, use Default Site instead.</p>
  5. </div>
  6. <div style="width: 100%; overflow-x: auto; margin-bottom: 1em; min-width: 400px;">
  7. <table class="ui celled sortable unstackable basic compact table">
  8. <thead>
  9. <tr>
  10. <th>Host</th>
  11. <th>Destination</th>
  12. <th>Virtual Directory</th>
  13. <th>Basic Auth</th>
  14. <th class="no-sort" style="min-width: 7.2em;">Actions</th>
  15. </tr>
  16. </thead>
  17. <tbody id="httpProxyList">
  18. </tbody>
  19. </table>
  20. </div>
  21. <button class="ui icon right floated basic button" onclick="listProxyEndpoints();"><i class="green refresh icon"></i> Refresh</button>
  22. <br><br>
  23. </div>
  24. <script>
  25. function listProxyEndpoints(){
  26. $.get("/api/proxy/list?type=host", function(data){
  27. $("#httpProxyList").html(``);
  28. if (data.error !== undefined){
  29. $("#httpProxyList").append(`<tr>
  30. <td data-label="" colspan="3"><i class="remove icon"></i> ${data.error}</td>
  31. </tr>`);
  32. }else if (data.length == 0){
  33. $("#httpProxyList").append(`<tr>
  34. <td data-label="" colspan="3"><i class="green check circle icon"></i> No HTTP Proxy Record</td>
  35. </tr>`);
  36. }else{
  37. data.forEach(subd => {
  38. let tlsIcon = "";
  39. let subdData = encodeURIComponent(JSON.stringify(subd));
  40. if (subd.RequireTLS){
  41. tlsIcon = `<i class="green lock icon" title="TLS Mode"></i>`;
  42. if (subd.SkipCertValidations){
  43. tlsIcon = `<i class="yellow lock icon" title="TLS/SSL mode without verification"></i>`
  44. }
  45. }
  46. let inboundTlsIcon = "";
  47. if ($("#tls").checkbox("is checked")){
  48. inboundTlsIcon = `<i class="green lock icon" title="TLS Mode"></i>`;
  49. if (subd.BypassGlobalTLS){
  50. inboundTlsIcon = `<i class="grey lock icon" title="TLS Bypass Enabled"></i>`;
  51. }
  52. }else{
  53. inboundTlsIcon = `<i class="yellow lock open icon" title="Plain Text Mode"></i>`;
  54. }
  55. $("#httpProxyList").append(`<tr eptuuid="${subd.RootOrMatchingDomain}" payload="${subdData}" class="subdEntry">
  56. <td data-label="" editable="true" datatype="inbound"><a href="//${subd.RootOrMatchingDomain}" target="_blank">${subd.RootOrMatchingDomain}</a> ${inboundTlsIcon}</td>
  57. <td data-label="" editable="true" datatype="domain">${subd.Domain} ${tlsIcon}</td>
  58. <td data-label="" editable="true" datatype="vdir">WIP</td>
  59. <td data-label="" editable="true" datatype="basicauth">${subd.RequireBasicAuth?`<i class="ui green check icon"></i>`:`<i class="ui grey remove icon"></i>`}</td>
  60. <td class="center aligned" editable="true" datatype="action" data-label="">
  61. <button class="ui circular mini basic icon button editBtn inlineEditActionBtn" onclick='editEndpoint("subd","${subd.RootOrMatchingDomain}")'><i class="edit icon"></i></button>
  62. <button class="ui circular mini red basic icon button inlineEditActionBtn" onclick='deleteEndpoint("subd","${subd.RootOrMatchingDomain}")'><i class="trash icon"></i></button>
  63. </td>
  64. </tr>`);
  65. });
  66. }
  67. });
  68. }
  69. //Bind on tab switch events
  70. tabSwitchEventBind["httprp"] = function(){
  71. listProxyEndpoints();
  72. }
  73. </script>