123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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)
- }
|