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
73 lines
1.3 KiB
Go
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
|
|
}
|