1
0

webserv.html 10 KB

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