network.webdav.go 2.3 KB

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