package samba import ( "encoding/json" "net/http" "imuslab.com/arozos/mod/utils" ) // List all the samba shares func (s *ShareManager) ListSambaShares(w http.ResponseWriter, r *http.Request) { shares, err := s.ReadSambaShares() if err != nil { utils.SendErrorResponse(w, err.Error()) return } js, _ := json.Marshal(shares) utils.SendJSONResponse(w, string(js)) } func (s *ShareManager) AddSambaShare(w http.ResponseWriter, r *http.Request) { shareName, err := utils.GetPara(r, "name") if err != nil { utils.SendErrorResponse(w, "share name not given") return } //TODO: Move hardcode to paramters shareToCreate := ShareConfig{ Name: shareName, Path: "/home/aroz/test/", ValidUsers: []string{"aroz"}, ReadOnly: false, Browseable: true, GuestOk: false, } //Add the new share to smb.conf err = s.CreateNewSambaShare(&shareToCreate) if err != nil { utils.SendErrorResponse(w, err.Error()) return } //Restart smbd err = restartSmbd() if err != nil { utils.SendErrorResponse(w, err.Error()) return } utils.SendOK(w) } func (s *ShareManager) DelSambaShare(w http.ResponseWriter, r *http.Request) { shareName, err := utils.GetPara(r, "name") if err != nil { utils.SendErrorResponse(w, "share name not given") return } //Check if share exists shareExists, err := s.ShareExists(shareName) if err != nil { utils.SendErrorResponse(w, err.Error()) return } if !shareExists { utils.SendErrorResponse(w, "share to be remove not exists") return } //Remove the share from config file err = s.RemoveSambaShareConfig(shareName) if err != nil { utils.SendErrorResponse(w, err.Error()) return } //Restart smbd err = restartSmbd() if err != nil { utils.SendErrorResponse(w, err.Error()) return } utils.SendOK(w) }