handler.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package webserv
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "strconv"
  6. "imuslab.com/zoraxy/mod/utils"
  7. )
  8. /*
  9. Handler.go
  10. Handler for web server options change
  11. web server is directly listening to the TCP port
  12. handlers in this script are for setting change only
  13. */
  14. type StaticWebServerStatus struct {
  15. ListeningPort int
  16. EnableDirectoryListing bool
  17. WebRoot string
  18. Running bool
  19. EnableWebDirManager bool
  20. }
  21. // Handle getting current static web server status
  22. func (ws *WebServer) HandleGetStatus(w http.ResponseWriter, r *http.Request) {
  23. listeningPortInt, _ := strconv.Atoi(ws.option.Port)
  24. currentStatus := StaticWebServerStatus{
  25. ListeningPort: listeningPortInt,
  26. EnableDirectoryListing: ws.option.EnableDirectoryListing,
  27. WebRoot: ws.option.WebRoot,
  28. Running: ws.isRunning,
  29. EnableWebDirManager: ws.option.EnableWebDirManager,
  30. }
  31. js, _ := json.Marshal(currentStatus)
  32. utils.SendJSONResponse(w, string(js))
  33. }
  34. // Handle request for starting the static web server
  35. func (ws *WebServer) HandleStartServer(w http.ResponseWriter, r *http.Request) {
  36. err := ws.Start()
  37. if err != nil {
  38. utils.SendErrorResponse(w, err.Error())
  39. return
  40. }
  41. utils.SendOK(w)
  42. }
  43. // Handle request for stopping the static web server
  44. func (ws *WebServer) HandleStopServer(w http.ResponseWriter, r *http.Request) {
  45. err := ws.Stop()
  46. if err != nil {
  47. utils.SendErrorResponse(w, err.Error())
  48. return
  49. }
  50. utils.SendOK(w)
  51. }
  52. // Handle change server listening port request
  53. func (ws *WebServer) HandlePortChange(w http.ResponseWriter, r *http.Request) {
  54. newPort, err := utils.PostInt(r, "port")
  55. if err != nil {
  56. utils.SendErrorResponse(w, "invalid port number given")
  57. return
  58. }
  59. err = ws.ChangePort(strconv.Itoa(newPort))
  60. if err != nil {
  61. utils.SendErrorResponse(w, err.Error())
  62. return
  63. }
  64. utils.SendOK(w)
  65. }
  66. // Change enable directory listing settings
  67. func (ws *WebServer) SetEnableDirectoryListing(w http.ResponseWriter, r *http.Request) {
  68. enableList, err := utils.PostBool(r, "enable")
  69. if err != nil {
  70. utils.SendErrorResponse(w, "invalid setting given")
  71. return
  72. }
  73. err = ws.option.Sysdb.Write("webserv", "dirlist", enableList)
  74. if err != nil {
  75. utils.SendErrorResponse(w, "unable to save setting")
  76. return
  77. }
  78. ws.option.EnableDirectoryListing = enableList
  79. utils.SendOK(w)
  80. }