mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-06 16:57:29 +08:00
Update HomeKit pairing status
This commit is contained in:
@@ -95,7 +95,7 @@ func Init() {
|
|||||||
srv.hap.Handler = homekit.ServerHandler(srv)
|
srv.hap.Handler = homekit.ServerHandler(srv)
|
||||||
}
|
}
|
||||||
|
|
||||||
entry := &mdns.ServiceEntry{
|
srv.mdns = &mdns.ServiceEntry{
|
||||||
Name: name,
|
Name: name,
|
||||||
Port: uint16(api.Port()),
|
Port: uint16(api.Port()),
|
||||||
Info: map[string]string{
|
Info: map[string]string{
|
||||||
@@ -110,9 +110,11 @@ func Init() {
|
|||||||
hap.TXTSetupHash: srv.hap.SetupHash(),
|
hap.TXTSetupHash: srv.hap.SetupHash(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
entries = append(entries, entry)
|
entries = append(entries, srv.mdns)
|
||||||
|
|
||||||
host := entry.Host(mdns.ServiceHAP)
|
srv.UpdateStatus()
|
||||||
|
|
||||||
|
host := srv.mdns.Host(mdns.ServiceHAP)
|
||||||
servers[host] = srv
|
servers[host] = srv
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,12 +19,14 @@ import (
|
|||||||
"github.com/AlexxIT/go2rtc/pkg/hap/tlv8"
|
"github.com/AlexxIT/go2rtc/pkg/hap/tlv8"
|
||||||
"github.com/AlexxIT/go2rtc/pkg/homekit"
|
"github.com/AlexxIT/go2rtc/pkg/homekit"
|
||||||
"github.com/AlexxIT/go2rtc/pkg/magic"
|
"github.com/AlexxIT/go2rtc/pkg/magic"
|
||||||
|
"github.com/AlexxIT/go2rtc/pkg/mdns"
|
||||||
"github.com/AlexxIT/go2rtc/pkg/srtp"
|
"github.com/AlexxIT/go2rtc/pkg/srtp"
|
||||||
)
|
)
|
||||||
|
|
||||||
type server struct {
|
type server struct {
|
||||||
stream string // stream name from YAML
|
stream string // stream name from YAML
|
||||||
hap *hap.Server // server for HAP connection and encryption
|
hap *hap.Server // server for HAP connection and encryption
|
||||||
|
mdns *mdns.ServiceEntry
|
||||||
srtp *srtp.Server
|
srtp *srtp.Server
|
||||||
accessory *hap.Accessory // HAP accessory
|
accessory *hap.Accessory // HAP accessory
|
||||||
pairings []string // pairings list
|
pairings []string // pairings list
|
||||||
@@ -33,6 +35,15 @@ type server struct {
|
|||||||
consumer *homekit.Consumer
|
consumer *homekit.Consumer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *server) UpdateStatus() {
|
||||||
|
// true status is important, or device may be offline in Apple Home
|
||||||
|
if len(s.pairings) == 0 {
|
||||||
|
s.mdns.Info[hap.TXTStatusFlags] = hap.StatusNotPaired
|
||||||
|
} else {
|
||||||
|
s.mdns.Info[hap.TXTStatusFlags] = hap.StatusPaired
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *server) GetAccessories(_ net.Conn) []*hap.Accessory {
|
func (s *server) GetAccessories(_ net.Conn) []*hap.Accessory {
|
||||||
return []*hap.Accessory{s.accessory}
|
return []*hap.Accessory{s.accessory}
|
||||||
}
|
}
|
||||||
@@ -188,6 +199,7 @@ func (s *server) AddPair(conn net.Conn, id string, public []byte, permissions by
|
|||||||
"permissions": []string{string('0' + permissions)},
|
"permissions": []string{string('0' + permissions)},
|
||||||
}
|
}
|
||||||
s.pairings = append(s.pairings, query.Encode())
|
s.pairings = append(s.pairings, query.Encode())
|
||||||
|
s.UpdateStatus()
|
||||||
s.PatchConfig()
|
s.PatchConfig()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,6 +213,7 @@ func (s *server) DelPair(conn net.Conn, id string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s.pairings = append(s.pairings[:i], s.pairings[i+1:]...)
|
s.pairings = append(s.pairings[:i], s.pairings[i+1:]...)
|
||||||
|
s.UpdateStatus()
|
||||||
s.PatchConfig()
|
s.PatchConfig()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user