From cd2374c079e995b8baac680f14cc02740a770f7c Mon Sep 17 00:00:00 2001 From: kar Date: Tue, 6 Jan 2026 01:56:42 -0600 Subject: [PATCH] feat: Adding mount section --- server.go | 88 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 13 deletions(-) diff --git a/server.go b/server.go index 03a8a90..a245673 100644 --- a/server.go +++ b/server.go @@ -13,6 +13,63 @@ import ( ) func main() { + // check mount point + cmd := exec.Command("bash", "-c", `mountpoint -q /home/kar/Music/`) + log.Println("Verificando punto de montaje") + err := cmd.Run() + if err != nil { + addr := checkConn() + mountDir(addr) + openConn() + } + log.Println("Carpeta montada") + openConn() +} + + +func restartService() { + log.Println("Reiniciando servicio mpd") + cmd := exec.Command("bash", "-c", fmt.Sprintf(`systemctl --user -M kar@.host restart --user mpd`)) + err := cmd.Run() + if err != nil { + log.Println("Error al reiniciar servicio mpd", err) + os.Exit(1) + } + log.Println("Recargando base de datos de mpd") + cmd = exec.Command("bash", "-c", fmt.Sprintf(`runuser -u kar -- mpc update`)) + err = cmd.Run() + if err != nil { + log.Println("Error al actualizar base de datos de mpd") + os.Exit(1) + } +} + +func mountDir(addr string) { + cmd := exec.Command("bash", "-c", fmt.Sprintf(`mount %s:/server/music /home/kar/Music`, addr)) + log.Printf("Montando carpeta desde el host %s\n", addr) + _, err := cmd.CombinedOutput() + if err != nil { + log.Println("Error al montar carpeta") + os.Exit(1) + } + restartService() +} + +func checkConn() string { + _, err := net.Dial("tcp", "192.168.2.11:2049") + if err != nil { + log.Println("Error al conectar al host 192.168.2.11") + _, err := net.Dial("tcp", "192.168.1.64:2049") + if err != nil { + log.Println("Error al conectar al host 192.168.1.64", err) + } + return "192.168.1.64" + } + return "192.168.2.11" +} + + +func openConn() { err := godotenv.Load() if err != nil { log.Println("Error al leer .env", err) @@ -44,13 +101,13 @@ func menuController(conn net.Conn) { comandoString := strings.TrimSpace(string(comandoRaw[:n])) switch comandoString { case "play": - out = playSong(conn) + out = playSong() case "pause": - out = pauseSong(conn) + out = pauseSong() case "info": - out = infoSong(conn) + out = infoSong() case "next": - out = nextSong(conn) + out = nextSong() case "addsong": addSong(conn) } @@ -62,7 +119,7 @@ func menuController(conn net.Conn) { } } -func playSong(conn net.Conn) string { +func playSong() string { cmd := exec.Command("mpc", "play") output, err := cmd.CombinedOutput() if err != nil { @@ -71,7 +128,7 @@ func playSong(conn net.Conn) string { return string(output) } -func pauseSong(conn net.Conn) string { +func pauseSong() string { cmd := exec.Command("mpc", "pause") output, err := cmd.CombinedOutput() if err != nil { @@ -80,7 +137,7 @@ func pauseSong(conn net.Conn) string { return string(output) } -func infoSong(conn net.Conn) string { +func infoSong() string { cmd := exec.Command("mpc") output, err := cmd.CombinedOutput() if err != nil { @@ -89,7 +146,7 @@ func infoSong(conn net.Conn) string { return string(output) } -func nextSong(conn net.Conn) string { +func nextSong() string { cmd := exec.Command("mpc", "next") output, err := cmd.CombinedOutput() if err != nil { @@ -111,11 +168,16 @@ func addSong(conn net.Conn) { if err != nil { log.Println("Error al recibir cancion", err) } - fmt.Printf("%s, agregado por %s", strings.TrimSpace(string(bufSong[:n])), conn.RemoteAddr()) - cmdmpc := exec.Command("bash", "-c", fmt.Sprintf("mpc insert %q && mpc next >/dev/null && mpc play", strings.TrimSpace(string(bufSong[:n])))) - _, err = cmdmpc.CombinedOutput() - if err != nil { - log.Println("Error al reproducir cancion", err) + fmt.Printf("%s, agregado por %s\n", strings.TrimSpace(string(bufSong[:n])), conn.RemoteAddr()) + cmdmpc := exec.Command("bash", "-c", fmt.Sprintf(`runuser -u kar -- mpc insert %q && mpc next`, strings.TrimSpace(string(bufSong[:n])))) + out, err := cmdmpc.CombinedOutput() + if strings.TrimSpace(string(out)) == "MPD error: Not playing" { + log.Println("Cancion agregada") + } else { + if err != nil { + log.Println("Error al agregar cancion", err) + } } + _ = playSong() conn.Close() }