Files
xTeVe/src/ssdp.go
marmei 3730d1187d v2.0.0.0007-beta
Add CLI: info
Add CLI: restore
Improves UPnP support for Plex
CSS: Add min-width for Ch.No.
Fixed missing images on cache for localhost
2019-08-07 12:35:56 +02:00

73 lines
1.3 KiB
Go

package src
import (
"fmt"
"log"
"os"
"os/signal"
"time"
"github.com/koron/go-ssdp"
)
// SSDP : SSPD / DLNA Server
func SSDP() (err error) {
if Settings.SSDP == false || System.Flag.Info == true {
return
}
showInfo(fmt.Sprintf("SSDP / DLNA:%t", Settings.SSDP))
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt)
ad, err := ssdp.Advertise(
fmt.Sprintf("upnp:rootdevice"), // send as "ST"
fmt.Sprintf("uuid:%s::upnp:rootdevice", System.DeviceID), // send as "USN"
fmt.Sprintf("%s/device.xml", System.URLBase), // send as "LOCATION"
System.AppName, // send as "SERVER"
1800) // send as "maxAge" in "CACHE-CONTROL"
if err != nil {
return
}
// Debug SSDP
if System.Flag.Debug == 3 {
ssdp.Logger = log.New(os.Stderr, "[SSDP] ", log.LstdFlags)
}
go func(adv *ssdp.Advertiser) {
aliveTick := time.Tick(300 * time.Second)
loop:
for {
select {
case <-aliveTick:
err = adv.Alive()
if err != nil {
ShowError(err, 0)
adv.Bye()
adv.Close()
break loop
}
case <-quit:
adv.Bye()
adv.Close()
os.Exit(0)
break loop
}
}
}(ad)
return
}