Changes to be committed:
modified: cmd/pmomusic/main.go new file: internal/netutils/ip_detect.go new file: internal/netutils/list_all_ip.go modified: internal/soap/soap.go modified: internal/ssdp/responder.go modified: internal/ssdp/ssdp.go modified: internal/upnp/http.go new file: internal/upnp/server.go new file: internal/upnp/xml/AVTransport.xml new file: internal/upnp/xml/ConnectionManager.xml new file: internal/upnp/xml/RenderingControl.xml
This commit is contained in:
@@ -43,14 +43,19 @@ func StartSSDPResponder(usn, location string) {
|
||||
st := extractHeader(data, "ST")
|
||||
log.Printf("🔎 M-SEARCH from %s, ST=%s\n", src.String(), st)
|
||||
|
||||
if st == "ssdp:all" || st == serviceType {
|
||||
go sendSSDPResponse(src, usn, location)
|
||||
if st == "ssdp:all" ||
|
||||
st == serviceType ||
|
||||
strings.HasPrefix(st, "urn:schemas-upnp-org:service:") ||
|
||||
strings.HasPrefix(st, "urn:av-openhome-org:service:") ||
|
||||
strings.HasPrefix(st, "urn:bubblesoftapps-com:service:") {
|
||||
|
||||
go sendSSDPResponse(src, usn, location, st)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func sendSSDPResponse(dst *net.UDPAddr, usn, location string) {
|
||||
func sendSSDPResponse(dst *net.UDPAddr, usn, location, st string) {
|
||||
resp := fmt.Sprintf(
|
||||
"HTTP/1.1 200 OK\r\n"+
|
||||
"CACHE-CONTROL: max-age=1800\r\n"+
|
||||
@@ -63,11 +68,12 @@ func sendSSDPResponse(dst *net.UDPAddr, usn, location string) {
|
||||
"\r\n",
|
||||
time.Now().Format(time.RFC1123),
|
||||
location,
|
||||
serviceType,
|
||||
st,
|
||||
usn,
|
||||
serviceType,
|
||||
st,
|
||||
)
|
||||
|
||||
// envoie UDP
|
||||
conn, err := net.DialUDP("udp4", nil, dst)
|
||||
if err != nil {
|
||||
log.Println("Failed to dial UDP to respond:", err)
|
||||
|
||||
@@ -2,7 +2,6 @@ package ssdp
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/koron/go-ssdp"
|
||||
@@ -32,12 +31,3 @@ func AnnounceRenderer(usn, location string) {
|
||||
// Un jour on voudra faire ça à l'arrêt :
|
||||
// adv.Close() // envoie le ssdp:byebye
|
||||
}
|
||||
func GetLocalIP() string {
|
||||
conn, err := net.Dial("udp", "239.255.255.250:1900")
|
||||
if err != nil {
|
||||
return "127.0.0.1"
|
||||
}
|
||||
defer conn.Close()
|
||||
localAddr := conn.LocalAddr().(*net.UDPAddr)
|
||||
return localAddr.IP.String()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user