status.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <div class="ui stackable four column grid">
  2. <div class="column">
  3. <div id="serverstatus" class="ui green inverted segment">
  4. <h4 class="ui header">
  5. <i class="exchange icon"></i>
  6. <div class="content">
  7. <span id="statusTitle">Offline</span>
  8. <div style="color: white;" class="sub header" id="statusText">Reverse proxy server is offline</div>
  9. </div>
  10. </h4>
  11. </div>
  12. </div>
  13. <div class="column">
  14. <div id="connections" class="ui blue inverted segment">
  15. <h4 class="ui header">
  16. <i class="exchange icon"></i>
  17. <div class="content">
  18. <span></span>
  19. <div class="sub header"></div>
  20. </div>
  21. </h4>
  22. </div>
  23. </div>
  24. <div class="column">
  25. <div id="connections" class="ui yellow inverted segment">
  26. <h4 class="ui header">
  27. <i class="exchange icon"></i>
  28. <div class="content">
  29. <span></span>
  30. <div class="sub header"></div>
  31. </div>
  32. </h4>
  33. </div>
  34. </div>
  35. <div class="column">
  36. <div id="connections" class="ui pink inverted segment">
  37. <h4 class="ui header">
  38. <i class="exchange icon"></i>
  39. <div class="content">
  40. <span></span>
  41. <div class="sub header"></div>
  42. </div>
  43. </h4>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="ui divider"></div>
  48. <p>Inbound Port (Port to be proxied)</p>
  49. <div class="ui action fluid input">
  50. <input type="text" id="incomingPort" placeholder="Incoming Port" value="80">
  51. <button class="ui button" onclick="handlePortChange();">Apply</button>
  52. </div>
  53. <br>
  54. <div id="tls" class="ui toggle checkbox">
  55. <input type="checkbox">
  56. <label>Use TLS to serve proxy request</label>
  57. </div>
  58. <br>
  59. <div id="redirect" class="ui toggle checkbox" style="margin-top: 0.6em;">
  60. <input type="checkbox">
  61. <label>Force redirect HTTP request to HTTPS<br>
  62. <small>(Only apply when listening port is 443)</small></label>
  63. </div>
  64. <br>
  65. <div id="portUpdateSucc" class="ui green message" style="display:none;">
  66. <i class="ui green checkmark icon"></i> Setting Updated
  67. </div>
  68. <Br>
  69. <button id="startbtn" class="ui teal button" onclick="startService();">Start Service</button>
  70. <button id="stopbtn" class="ui red disabled button" onclick="stopService();">Stop Service</button>
  71. <div id="statusErrmsg" class="ui red message" style="display: none;"></div>
  72. <script>
  73. //Get the latest server status from proxy server
  74. function initRPStaste(){
  75. $.get("/api/proxy/status", function(data){
  76. if (data.Running == true){
  77. $("#startbtn").addClass("disabled");
  78. $("#stopbtn").removeClass("disabled");
  79. $("#serverstatus").addClass("green");
  80. $("#statusTitle").text("Online");
  81. $("#statusText").text("Reverse proxying request on port: " + data.Option.Port);
  82. }else{
  83. $("#startbtn").removeClass("disabled");
  84. $("#stopbtn").addClass("disabled");
  85. $("#statusTitle").text("Offline");
  86. $("#statusText").text("Reverse proxy server is offline");
  87. $("#serverstatus").removeClass("green");
  88. }
  89. $("#incomingPort").val(data.Option.Port);
  90. });
  91. }
  92. //Start and stop service button
  93. function startService(){
  94. $.post("/api/proxy/enable", {enable: true}, function(data){
  95. if (data.error != undefined){
  96. statusErrmsg(data.error);
  97. }
  98. initRPStaste();
  99. });
  100. }
  101. function stopService(){
  102. $.post("/api/proxy/enable", {enable: false}, function(data){
  103. if (data.error != undefined){
  104. statusErrmsg(data.error);
  105. }
  106. initRPStaste();
  107. });
  108. }
  109. //Show error message
  110. function statusErrmsg(message){
  111. $("#statusErrmsg").html(`<i class="red remove icon"></i> ${message}`);
  112. $("#statusErrmsg").slideDown('fast').delay(5000).slideUp('fast');
  113. }
  114. function handlePortChange(){
  115. var newPortValue = $("#incomingPort").val();
  116. if (isNaN(newPortValue - 1)){
  117. alert("Invalid incoming port value");
  118. return;
  119. }
  120. $.post("/api/proxy/setIncoming", {incoming: newPortValue}, function(data){
  121. if (data.error != undefined){
  122. statusErrmsg(data.error);
  123. }
  124. $("#portUpdateSucc").stop().finish().slideDown("fast").delay(3000).slideUp("fast");
  125. initRPStaste();
  126. });
  127. }
  128. function initHTTPtoHTTPSRedirectSetting(){
  129. $.get("/api/proxy/useHttpsRedirect", function(data){
  130. if (data == true){
  131. $("#redirect").checkbox("set checked");
  132. }
  133. //Initiate the input listener on the checkbox
  134. $("#redirect").find("input").on("change", function(){
  135. let thisValue = $("#redirect").checkbox("is checked");
  136. $.ajax({
  137. url: "/api/proxy/useHttpsRedirect",
  138. data: {set: thisValue},
  139. success: function(data){
  140. if (data.error != undefined){
  141. alert(data.error);
  142. }else{
  143. //Updated
  144. $("#portUpdateSucc").stop().finish().slideDown("fast").delay(3000).slideUp("fast");
  145. initRPStaste();
  146. }
  147. }
  148. })
  149. });
  150. });
  151. }
  152. initHTTPtoHTTPSRedirectSetting();
  153. function initTlsSetting(){
  154. $.get("/api/cert/tls", function(data){
  155. if (data == true){
  156. $("#tls").checkbox("set checked");
  157. }
  158. //Initiate the input listener on the checkbox
  159. $("#tls").find("input").on("change", function(){
  160. let thisValue = $("#tls").checkbox("is checked");
  161. $.ajax({
  162. url: "/api/cert/tls",
  163. data: {set: thisValue},
  164. success: function(data){
  165. if (data.error != undefined){
  166. alert(data.error);
  167. }else{
  168. //Updated
  169. $("#portUpdateSucc").stop().finish().slideDown("fast").delay(3000).slideUp("fast");
  170. initRPStaste();
  171. }
  172. }
  173. })
  174. });
  175. })
  176. }
  177. initTlsSetting();
  178. </script>