Преглед изворни кода

auto update script executed

tobychui пре 1 година
родитељ
комит
0ae289a819
2 измењених фајлова са 47 додато и 10 уклоњено
  1. 4 0
      mod/webserv/webserv.go
  2. 43 10
      web/components/webserv.html

+ 4 - 0
mod/webserv/webserv.go

@@ -90,6 +90,10 @@ func (ws *WebServer) RestorePreviousState() {
 
 // ChangePort changes the server's port.
 func (ws *WebServer) ChangePort(port string) error {
+	if IsPortInUse(port) {
+		return errors.New("Selected port is used by another process")
+	}
+
 	if ws.isRunning {
 		if err := ws.Stop(); err != nil {
 			return err

+ 43 - 10
web/components/webserv.html

@@ -102,6 +102,11 @@
         }
         function updateWebServState(){
             $.get("/api/webserv/status", function(data){
+                //Clear all event listeners
+                $("#webserv_enableDirList").off("change");
+                $("#webserv_enable").off("change");
+                $("#webserv_listenPort").off("change");
+
                 setWebServerRunningState(data.Running);
 
                 if (data.EnableDirectoryListing){
@@ -160,18 +165,46 @@
                 });
                 $("#webserv_listenPort").off("change").on("change", function(){
                     let newPort = $(this).val();
-                    $.ajax({
-                        url: "/api/webserv/setPort",
-                        method: "POST",
-                        data: {"port": newPort},
-                        success: function(data){
-                            if (data.error != undefined){
-                                msgbox(data.error, false);
+
+                    //Check if the new value is same as listening port
+                    let rpListeningPort = $("#incomingPort").val();
+                    if (rpListeningPort == newPort){
+                        confirmBox("This setting might cause port conflict. Continue Anyway?", function(choice){
+                            if (choice == true){
+                                //Continue anyway
+                                $.ajax({
+                                    url: "/api/webserv/setPort",
+                                    method: "POST",
+                                    data: {"port": newPort},
+                                    success: function(data){
+                                        if (data.error != undefined){
+                                            msgbox(data.error, false);
+                                        }else{
+                                            msgbox("Listening port updated");
+                                        }
+                                        updateWebServState();
+                                    }
+                                });
                             }else{
-                                msgbox("Listening port updated");
+                                //Cancel. Restore to previous value
+                                updateWebServState();
+                                msgbox("Setting restored");
                             }
-                        }
-                    })
+                        });
+                    }else{
+                        $.ajax({
+                            url: "/api/webserv/setPort",
+                            method: "POST",
+                            data: {"port": newPort},
+                            success: function(data){
+                                if (data.error != undefined){
+                                    msgbox(data.error, false);
+                                }else{
+                                    msgbox("Listening port updated");
+                                }
+                            }
+                        })
+                    }
                 });
             })
         }