package samba import ( "fmt" "os/exec" "strings" ) // convertShareConfigToString converts a ShareConfig to its string representation for smb.conf func convertShareConfigToString(share *ShareConfig) string { var builder strings.Builder builder.WriteString(fmt.Sprintf("\n[%s]\n", share.Name)) builder.WriteString(fmt.Sprintf("\tpath = %s\n", share.Path)) if len(share.ValidUsers) > 0 { builder.WriteString(fmt.Sprintf("\tvalid users = %s\n", strings.Join(share.ValidUsers, " "))) } builder.WriteString(fmt.Sprintf("\tread only = %s\n", boolToYesNo(share.ReadOnly))) builder.WriteString(fmt.Sprintf("\tbrowseable = %s\n", boolToYesNo(share.Browseable))) builder.WriteString(fmt.Sprintf("\tguest ok = %s\n", boolToYesNo(share.GuestOk))) return builder.String() } // boolToYesNo converts a boolean to "yes" or "no" func boolToYesNo(value bool) string { if value { return "yes" } return "no" } // RestartSmbd restarts the smbd service using systemctl func restartSmbd() error { cmd := exec.Command("sudo", "systemctl", "restart", "smbd") output, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("failed to restart smbd: %v - %s", err, output) } return nil }