Skip to content

Commit 038855a

Browse files
committed
Added basic Mozilla _webthing service to mDNS
1 parent d08d42b commit 038855a

File tree

1 file changed

+37
-17
lines changed

1 file changed

+37
-17
lines changed

src/labthings/server/wsgi/gevent.py

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,35 +37,55 @@ def __init__(
3737
self.wsgi_server = None
3838
self.zeroconf_server = None
3939
self.service_info = None
40+
self.service_infos = set()
4041

4142
# Events
4243
self.started_event = gevent.event.Event()
4344

4445
def register_zeroconf(self):
4546
if self.labthing:
46-
self.service_info = ServiceInfo(
47-
"_labthings._tcp.local.",
48-
f"{self.labthing.safe_title}._labthings._tcp.local.",
49-
port=self.port,
50-
properties={
51-
"path": self.labthing.url_prefix,
52-
"title": self.labthing.title,
53-
"description": self.labthing.description,
54-
"types": ";".join(self.labthing.types),
55-
},
56-
addresses={
57-
socket.inet_aton(i)
58-
for i in get_all_addresses()
59-
if i not in ("127.0.0.1", "0.0.0.0")
60-
},
47+
# LabThing service
48+
self.service_infos.add(
49+
ServiceInfo(
50+
"_labthing._tcp.local.",
51+
f"{self.labthing.safe_title}._labthing._tcp.local.",
52+
port=self.port,
53+
properties={
54+
"path": self.labthing.url_prefix,
55+
"title": self.labthing.title,
56+
"description": self.labthing.description,
57+
"types": ";".join(self.labthing.types),
58+
},
59+
addresses={
60+
socket.inet_aton(i)
61+
for i in get_all_addresses()
62+
if i not in ("127.0.0.1", "0.0.0.0")
63+
},
64+
)
65+
)
66+
# Mozilla WebThing service
67+
self.service_infos.add(
68+
ServiceInfo(
69+
"_webthing._tcp.local.",
70+
f"{self.labthing.safe_title}._webthing._tcp.local.",
71+
port=self.port,
72+
properties={"path": self.labthing.url_prefix},
73+
addresses={
74+
socket.inet_aton(i)
75+
for i in get_all_addresses()
76+
if i not in ("127.0.0.1", "0.0.0.0")
77+
},
78+
)
6179
)
6280
self.zeroconf_server = Zeroconf(ip_version=IPVersion.V4Only)
63-
self.zeroconf_server.register_service(self.service_info)
81+
for service in self.service_infos:
82+
self.zeroconf_server.register_service(service)
6483

6584
def stop(self, timeout=1):
6685
# Unregister zeroconf service
6786
if self.zeroconf_server:
68-
self.zeroconf_server.unregister_service(self.service_info)
87+
for service in self.service_infos:
88+
self.zeroconf_server.unregister_service(service)
6989
self.zeroconf_server.close()
7090
self.zeroconf_server = None
7191
# Stop WSGI server with timeout

0 commit comments

Comments
 (0)