1
0

webserv.html 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <div class="standardContainer">
  2. <div class="ui basic segment">
  3. <h2>Static Web Server</h2>
  4. <p>A simple static web server that serve html css and js files</p>
  5. </div>
  6. <div class="ui divider"></div>
  7. <div class="ui basic segment">
  8. <h4 class="ui header" id="webservRunningState">
  9. <i class="green circle icon"></i>
  10. <div class="content">
  11. <span class="webserv_status">Running</span>
  12. <div class="sub header">Listen port :<span class="webserv_port">8081</span></div>
  13. </div>
  14. </h4>
  15. </div>
  16. <h3>Web Server Settings</h3>
  17. <div class="ui form">
  18. <div class="inline field">
  19. <div class="ui toggle checkbox webservRootDisabled">
  20. <input id="webserv_enable" type="checkbox" class="hidden">
  21. <label>Enable Static Web Server</label>
  22. </div>
  23. </div>
  24. <div class="inline field">
  25. <div class="ui toggle checkbox">
  26. <input id="webserv_enableDirList" type="checkbox" class="hidden">
  27. <label>Enable Directory Listing</label>
  28. <small>If this folder do not contains any index files, list the directory of this folder.</small>
  29. </div>
  30. </div>
  31. <div class="field">
  32. <label>Document Root Folder</label>
  33. <input id="webserv_docRoot" type="text" readonly="true">
  34. <small>
  35. The web server root folder can only be changed via startup flags of zoraxy for security reasons.
  36. See the -webserv flag for more details.
  37. </small>
  38. </div>
  39. <div class="field webservRootDisabled">
  40. <label>Port Number</label>
  41. <input id="webserv_listenPort" type="number" step="1" min="0" max="65535" value="8081" onchange="updateWebServLinkExample(this.value);">
  42. <small>Use <code>http://127.0.0.1:<span class="webserv_port">8081</span></code> in proxy rules to access the web server</small>
  43. </div>
  44. </div>
  45. <small><i class="ui blue save icon"></i> Changes are saved automatically</small>
  46. <br>
  47. <div class="ui message">
  48. <div class="ui accordion webservhelp">
  49. <div class="title">
  50. <i class="dropdown icon"></i>
  51. How to access the static web server?
  52. </div>
  53. <div class="content">
  54. There are three ways to access the static web server. <br>
  55. <div class="ui ordered list">
  56. <div class="item">
  57. If you are using Zoraxy as your gateway reverse proxy server,
  58. you can add a new subdomain proxy rule that points to
  59. <a>http://127.0.0.1:<span class="webserv_port">8081</span></a>
  60. </div>
  61. <div class="item">
  62. If you are using Zoraxy under another reverse proxy server,
  63. add <a>http://127.0.0.1:<span class="webserv_port">8081</span></a> to the config of your upper layer reverse proxy server's config file.
  64. </div>
  65. <div class="item">
  66. Directly access the web server via <a>http://{zoraxy_host_ip}:<span class="webserv_port">8081</span></a> (Not recommended)
  67. </div>
  68. <br>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="ui divider"></div>
  74. <div class="ui basic segment">
  75. <h2>Web Directory Manager</h2>
  76. <p>Manage your files inside your web directory</p>
  77. </div>
  78. <div class="ui basic segment" style="display:none;" id="webdirManDisabledNotice">
  79. <h4 class="ui header">
  80. <i class="ui red times icon"></i>
  81. <div class="content">
  82. Web Directory Manager Disabled
  83. <div class="sub header">Web Directory Manager has been disabled by the system administrator</div>
  84. </div>
  85. </h4>
  86. </div>
  87. <iframe id="webserv_dirManager" src="tools/fs.html" style="width: 100%; height: 800px; border: 0px; overflow-y: hidden;">
  88. </iframe>
  89. <small>If you do not want to enable web access to your web directory, you can disable this feature with <code>-webfm=false</code> startup paramter</small>
  90. <script>
  91. $(".webservhelp").accordion();
  92. $(".ui.checkbox").checkbox();
  93. function setWebServerRunningState(running){
  94. if (running){
  95. $("#webserv_enable").parent().checkbox("set checked");
  96. $("#webservRunningState").find("i").attr("class", "green circle icon");
  97. $("#webservRunningState").find(".webserv_status").text("Running");
  98. }else{
  99. $("#webserv_enable").parent().checkbox("set unchecked");
  100. $("#webservRunningState").find("i").attr("class", "red circle icon");
  101. $("#webservRunningState").find(".webserv_status").text("Stopped");
  102. }
  103. }
  104. function updateWebServState(){
  105. $.get("/api/webserv/status", function(data){
  106. //Clear all event listeners
  107. $("#webserv_enableDirList").off("change");
  108. $("#webserv_enable").off("change");
  109. $("#webserv_listenPort").off("change");
  110. setWebServerRunningState(data.Running);
  111. if (data.EnableDirectoryListing){
  112. $("#webserv_enableDirList").parent().checkbox("set checked");
  113. }else{
  114. $("#webserv_enableDirList").parent().checkbox("set unchecked");
  115. }
  116. $("#webserv_docRoot").val(data.WebRoot + "/html/");
  117. if (!data.EnableWebDirManager){
  118. $("#webdirManDisabledNotice").show();
  119. $("#webserv_dirManager").remove();
  120. }
  121. $("#webserv_listenPort").val(data.ListeningPort);
  122. updateWebServLinkExample(data.ListeningPort);
  123. //Bind checkbox events
  124. $("#webserv_enable").off("change").on("change", function(){
  125. let enable = $(this)[0].checked;
  126. if (enable){
  127. $.get("/api/webserv/start", function(data){
  128. if (data.error != undefined){
  129. msgbox(data.error, false);
  130. }else{
  131. msgbox("Static web server started");
  132. setWebServerRunningState(true);
  133. }
  134. });
  135. }else{
  136. $.get("/api/webserv/stop", function(data){
  137. if (data.error != undefined){
  138. msgbox(data.error, false);
  139. }else{
  140. msgbox("Static web server stopped");
  141. setWebServerRunningState(false);
  142. }
  143. });
  144. }
  145. });
  146. $("#webserv_enableDirList").off("change").on("change", function(){
  147. let enable = $(this)[0].checked;
  148. $.ajax({
  149. url: "/api/webserv/setDirList",
  150. method: "POST",
  151. data: {"enable": enable},
  152. success: function(data){
  153. if (data.error != undefined){
  154. msgbox(data.error, false);
  155. }else{
  156. msgbox("Directory listing setting updated");
  157. }
  158. }
  159. })
  160. });
  161. $("#webserv_listenPort").off("change").on("change", function(){
  162. let newPort = $(this).val();
  163. //Check if the new value is same as listening port
  164. let rpListeningPort = $("#incomingPort").val();
  165. if (rpListeningPort == newPort){
  166. confirmBox("This setting might cause port conflict. Continue Anyway?", function(choice){
  167. if (choice == true){
  168. //Continue anyway
  169. $.ajax({
  170. url: "/api/webserv/setPort",
  171. method: "POST",
  172. data: {"port": newPort},
  173. success: function(data){
  174. if (data.error != undefined){
  175. msgbox(data.error, false);
  176. }else{
  177. msgbox("Listening port updated");
  178. }
  179. updateWebServState();
  180. }
  181. });
  182. }else{
  183. //Cancel. Restore to previous value
  184. updateWebServState();
  185. msgbox("Setting restored");
  186. }
  187. });
  188. }else{
  189. $.ajax({
  190. url: "/api/webserv/setPort",
  191. method: "POST",
  192. data: {"port": newPort},
  193. success: function(data){
  194. if (data.error != undefined){
  195. msgbox(data.error, false);
  196. }else{
  197. msgbox("Listening port updated");
  198. }
  199. }
  200. })
  201. }
  202. });
  203. })
  204. }
  205. updateWebServState();
  206. function updateWebServLinkExample(newport){
  207. $(".webserv_port").text(newport);
  208. }
  209. </script>
  210. </div>