handlers.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package samba
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "imuslab.com/arozos/mod/utils"
  6. )
  7. // List all the samba shares
  8. func (s *ShareManager) ListSambaShares(w http.ResponseWriter, r *http.Request) {
  9. shares, err := s.ReadSambaShares()
  10. if err != nil {
  11. utils.SendErrorResponse(w, err.Error())
  12. return
  13. }
  14. js, _ := json.Marshal(shares)
  15. utils.SendJSONResponse(w, string(js))
  16. }
  17. func (s *ShareManager) AddSambaShare(w http.ResponseWriter, r *http.Request) {
  18. shareName, err := utils.GetPara(r, "name")
  19. if err != nil {
  20. utils.SendErrorResponse(w, "share name not given")
  21. return
  22. }
  23. //TODO: Move hardcode to paramters
  24. shareToCreate := ShareConfig{
  25. Name: shareName,
  26. Path: "/home/aroz/test/",
  27. ValidUsers: []string{"aroz"},
  28. ReadOnly: false,
  29. Browseable: true,
  30. GuestOk: false,
  31. }
  32. //Add the new share to smb.conf
  33. err = s.CreateNewSambaShare(&shareToCreate)
  34. if err != nil {
  35. utils.SendErrorResponse(w, err.Error())
  36. return
  37. }
  38. //Restart smbd
  39. err = restartSmbd()
  40. if err != nil {
  41. utils.SendErrorResponse(w, err.Error())
  42. return
  43. }
  44. utils.SendOK(w)
  45. }
  46. func (s *ShareManager) DelSambaShare(w http.ResponseWriter, r *http.Request) {
  47. shareName, err := utils.GetPara(r, "name")
  48. if err != nil {
  49. utils.SendErrorResponse(w, "share name not given")
  50. return
  51. }
  52. //Check if share exists
  53. shareExists, err := s.ShareExists(shareName)
  54. if err != nil {
  55. utils.SendErrorResponse(w, err.Error())
  56. return
  57. }
  58. if !shareExists {
  59. utils.SendErrorResponse(w, "share to be remove not exists")
  60. return
  61. }
  62. //Remove the share from config file
  63. err = s.RemoveSambaShareConfig(shareName)
  64. if err != nil {
  65. utils.SendErrorResponse(w, err.Error())
  66. return
  67. }
  68. //Restart smbd
  69. err = restartSmbd()
  70. if err != nil {
  71. utils.SendErrorResponse(w, err.Error())
  72. return
  73. }
  74. utils.SendOK(w)
  75. }