network.webdav.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package main
  2. /*
  3. WebDAV Entry point
  4. author: tobychui
  5. */
  6. import (
  7. "encoding/json"
  8. "net/http"
  9. "imuslab.com/arozos/mod/common"
  10. prout "imuslab.com/arozos/mod/prouter"
  11. awebdav "imuslab.com/arozos/mod/storage/webdav"
  12. )
  13. var (
  14. WebDavHandler *awebdav.Server
  15. )
  16. func WebDAVInit() {
  17. //Create a database table for webdav service
  18. sysdb.NewTable("webdav")
  19. //Create a new webdav server
  20. newserver := awebdav.NewServer(*host_name, "/webdav", *tmp_directory, *use_tls, userHandler)
  21. WebDavHandler = newserver
  22. //Check the webdav default state
  23. enabled := false
  24. if sysdb.KeyExists("webdav", "enabled") {
  25. sysdb.Read("webdav", "enabled", &enabled)
  26. }
  27. WebDavHandler.Enabled = enabled
  28. /*
  29. http.HandleFunc("/webdav", func(w http.ResponseWriter, r *http.Request) {
  30. WebDavHandler.HandleRequest(w, r)
  31. })
  32. */
  33. http.HandleFunc("/system/network/webdav/list", WebDavHandler.HandleConnectionList)
  34. //Handle setting related functions
  35. router := prout.NewModuleRouter(prout.RouterOption{
  36. ModuleName: "File Manager",
  37. AdminOnly: false,
  38. UserHandler: userHandler,
  39. DeniedHandler: func(w http.ResponseWriter, r *http.Request) {
  40. common.SendErrorResponse(w, "Permission Denied")
  41. },
  42. })
  43. router.HandleFunc("/system/network/webdav/edit", WebDavHandler.HandlePermissionEdit)
  44. router.HandleFunc("/system/network/webdav/clear", WebDavHandler.HandleClearAllPending)
  45. router.HandleFunc("/system/network/webdav/status", func(w http.ResponseWriter, r *http.Request) {
  46. //Show status for every user, only allow change if admin
  47. userinfo, _ := userHandler.GetUserInfoFromRequest(w, r)
  48. isAdmin := userinfo.IsAdmin()
  49. set, _ := common.Mv(r, "set", false)
  50. if set == "" {
  51. //Return the current status
  52. results := []bool{WebDavHandler.Enabled, isAdmin}
  53. js, _ := json.Marshal(results)
  54. common.SendJSONResponse(w, string(js))
  55. } else if isAdmin && set == "disable" {
  56. WebDavHandler.Enabled = false
  57. sysdb.Write("webdav", "enabled", false)
  58. common.SendOK(w)
  59. } else if isAdmin && set == "enable" {
  60. WebDavHandler.Enabled = true
  61. sysdb.Write("webdav", "enabled", true)
  62. common.SendOK(w)
  63. } else {
  64. common.SendErrorResponse(w, "Permission Denied")
  65. }
  66. })
  67. //Register settings
  68. registerSetting(settingModule{
  69. Name: "WebDAV Server",
  70. Desc: "WebDAV Server",
  71. IconPath: "SystemAO/info/img/small_icon.png",
  72. Group: "Network",
  73. StartDir: "SystemAO/disk/webdav.html",
  74. })
  75. }