mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-08-05 20:58:28 +02:00
Fixed #688
- Added auto restart after config change in static web server
This commit is contained in:
@@ -69,6 +69,12 @@ func (ws *WebServer) HandlePortChange(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if newPort is a valid TCP port number (1-65535)
|
||||||
|
if newPort < 1 || newPort > 65535 {
|
||||||
|
utils.SendErrorResponse(w, "invalid port number given")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
err = ws.ChangePort(strconv.Itoa(newPort))
|
err = ws.ChangePort(strconv.Itoa(newPort))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.SendErrorResponse(w, err.Error())
|
utils.SendErrorResponse(w, err.Error())
|
||||||
@@ -106,6 +112,17 @@ func (ws *WebServer) SetDisableListenToAllInterface(w http.ResponseWriter, r *ht
|
|||||||
utils.SendErrorResponse(w, "unable to save setting")
|
utils.SendErrorResponse(w, "unable to save setting")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update the option in the web server instance
|
||||||
ws.option.DisableListenToAllInterface = disableListen
|
ws.option.DisableListenToAllInterface = disableListen
|
||||||
|
|
||||||
|
// If the server is running and the setting is changed, we need to restart the server
|
||||||
|
if ws.IsRunning() {
|
||||||
|
err = ws.Restart()
|
||||||
|
if err != nil {
|
||||||
|
utils.SendErrorResponse(w, "unable to restart web server: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
utils.SendOK(w)
|
utils.SendOK(w)
|
||||||
}
|
}
|
||||||
|
@@ -210,6 +210,27 @@ func (ws *WebServer) Stop() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ws *WebServer) Restart() error {
|
||||||
|
if ws.isRunning {
|
||||||
|
if err := ws.Stop(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := ws.Start(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ws.option.Logger.PrintAndLog("static-webserv", "Static Web Server restarted. Listening on :"+ws.option.Port, nil)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ws *WebServer) IsRunning() bool {
|
||||||
|
ws.mu.Lock()
|
||||||
|
defer ws.mu.Unlock()
|
||||||
|
return ws.isRunning
|
||||||
|
}
|
||||||
|
|
||||||
// UpdateDirectoryListing enables or disables directory listing.
|
// UpdateDirectoryListing enables or disables directory listing.
|
||||||
func (ws *WebServer) UpdateDirectoryListing(enable bool) {
|
func (ws *WebServer) UpdateDirectoryListing(enable bool) {
|
||||||
ws.option.EnableDirectoryListing = enable
|
ws.option.EnableDirectoryListing = enable
|
||||||
|
Reference in New Issue
Block a user