helpers.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package samba
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "strings"
  6. )
  7. // convertShareConfigToString converts a ShareConfig to its string representation for smb.conf
  8. func convertShareConfigToString(share *ShareConfig) string {
  9. var builder strings.Builder
  10. builder.WriteString(fmt.Sprintf("\n[%s]\n", share.Name))
  11. builder.WriteString(fmt.Sprintf("\tpath = %s\n", share.Path))
  12. if len(share.ValidUsers) > 0 {
  13. builder.WriteString(fmt.Sprintf("\tvalid users = %s\n", strings.Join(share.ValidUsers, " ")))
  14. }
  15. builder.WriteString(fmt.Sprintf("\tread only = %s\n", boolToYesNo(share.ReadOnly)))
  16. builder.WriteString(fmt.Sprintf("\tbrowseable = %s\n", boolToYesNo(share.Browseable)))
  17. builder.WriteString(fmt.Sprintf("\tguest ok = %s\n", boolToYesNo(share.GuestOk)))
  18. return builder.String()
  19. }
  20. // boolToYesNo converts a boolean to "yes" or "no"
  21. func boolToYesNo(value bool) string {
  22. if value {
  23. return "yes"
  24. }
  25. return "no"
  26. }
  27. // RestartSmbd restarts the smbd service using systemctl
  28. func restartSmbd() error {
  29. cmd := exec.Command("sudo", "systemctl", "restart", "smbd")
  30. output, err := cmd.CombinedOutput()
  31. if err != nil {
  32. return fmt.Errorf("failed to restart smbd: %v - %s", err, output)
  33. }
  34. return nil
  35. }