dirserv.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package dirserv
  2. import (
  3. "net/http"
  4. "imuslab.com/arozos/mod/database"
  5. "imuslab.com/arozos/mod/fileservers"
  6. "imuslab.com/arozos/mod/user"
  7. )
  8. /*
  9. dirserv.go
  10. This module help serve the virtual file system in apache like directory listing interface
  11. Suitable for legacy web browser
  12. */
  13. type Option struct {
  14. Sysdb *database.Database
  15. }
  16. type Manager struct {
  17. enabled bool
  18. option *Option
  19. }
  20. //Create a new web directory server
  21. func NewDirectoryServer(option *Option) *Manager {
  22. //Create a table to store which user enabled dirlisting on their own root
  23. option.Sysdb.NewTable("dirserv")
  24. defaultEnable := false
  25. if option.Sysdb.KeyExists("dirserv", "enabled") {
  26. option.Sysdb.Read("dirserv", "enabled", &defaultEnable)
  27. }
  28. return &Manager{
  29. enabled: defaultEnable,
  30. option: option,
  31. }
  32. }
  33. func (m *Manager) DirServerEnabled() bool {
  34. return m.enabled
  35. }
  36. func (m *Manager) Toggle(enabled bool) error {
  37. m.enabled = !m.enabled
  38. return nil
  39. }
  40. func (m *Manager) ListEndpoints(userinfo *user.User) []*fileservers.Endpoint {
  41. results := []*fileservers.Endpoint{}
  42. return results
  43. }
  44. /*
  45. Router request handler
  46. */
  47. func (m *Manager) ServerWebFileRequest(w http.ResponseWriter, r *http.Request) {
  48. }