Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def service_update_mock(zeroconf, service, handlers):
"""Call service update handler."""
handlers[0](
zeroconf, service, "{}.{}".format("name", service), ServiceStateChange.Added
)
def on_service_state_change(zeroconf, service_type, name, state_change):
print("Service %s of type %s state changed: %s" % (
name, service_type, state_change))
if state_change is ServiceStateChange.Added:
info = zeroconf.get_service_info(service_type, name)
if info:
print(" Address: %s:%d" % (
socket.inet_ntoa(info.address), info.port))
print(" Weight: %d, priority: %d" % (info.weight, info.priority))
print(" Server: %s" % (info.server,))
if info.properties:
print(" Properties are:")
for key, value in info.properties.items():
print(" %s: %s" % (key, value))
else:
print(" No properties")
else:
print(" No info")
print('\n')
def on_service_state_change(self,
zeroconf: Zeroconf, service_type: str, name: str, state_change: ServiceStateChange) -> None:
mdns_data = None
log = self.log
if state_change is ServiceStateChange.Added:
info = zeroconf.get_service_info(service_type, name)
if info:
if info.server.split('.')[0] != HOSTNAME:
if __name__ == '__main__':
print("Server: %s Added" % (info.server.split('.')[0],))
else:
log.info('ConsolePi: {} Discovered via mdns'.format(info.server.split('.')[0]))
if info.properties:
properties = info.properties
hostname = properties[b'hostname'].decode("utf-8")
user = properties[b'user'].decode("utf-8")
interfaces = json.loads(properties[b'interfaces'].decode("utf-8"))
adapters = json.loads(properties[b'adapters'].decode("utf-8"))
mdns_data = {hostname: {'interfaces': interfaces, 'adapters': adapters, 'user': user}}
if __name__ == '__main__':
for key, value in info.properties.items():
def service_update(zeroconf, service_type, name, state_change):
"""Service state changed."""
if state_change != ServiceStateChange.Added:
return
service_info = zeroconf.get_service_info(service_type, name)
info = info_from_service(service_info)
_LOGGER.debug("Discovered new device %s %s", name, info)
# If we can handle it as a HomeKit discovery, we do that here.
if service_type == HOMEKIT_TYPE and handle_homekit(hass, info):
return
for domain in ZEROCONF[service_type]:
hass.add_job(
hass.config_entries.flow.async_init(
domain, context={"source": DOMAIN}, data=info
)
def _onServiceChanged(self, zero_conf: Zeroconf, service_type: str, name: str, state_change: ServiceStateChange
) -> bool:
if state_change == ServiceStateChange.Added:
return self._onServiceAdded(zero_conf, service_type, name)
elif state_change == ServiceStateChange.Removed:
return self._onServiceRemoved(name)
return True
def find_service(self, zeroconf, service_type, name, state_change):
"""Check for published MQTT. If it finds port 1883 of type '_mqtt', update broker name."""
# Get the service we want (port 1883 and type '_mqtt._tcp.local.'
info = zeroconf.get_service_info(service_type, name)
if not (info.port == 1883 and service_type == "_mqtt._tcp.local."):
return
if state_change is ServiceStateChange.Added:
# If this is our service, update mqtt broker name and ip on self.comm (Communicator)
self.comm.broker_name = info.server
self.comm.broker_ip = str(socket.inet_ntoa(info.address))
elif state_change is ServiceStateChange.Removed:
# Implement way to handle removed MQTT service
# It only makes sense if leave zeroconf connection opened. It could be interesting.
pass
def _onServiceChanged(self, zero_conf, service_type, name, state_change):
if state_change == ServiceStateChange.Added:
# First try getting info from zero-conf cache
info = ServiceInfo(service_type, name, properties = {})
for record in zero_conf.cache.entries_with_name(name.lower()):
info.update_record(zero_conf, time(), record)
for record in zero_conf.cache.entries_with_name(info.server):
info.update_record(zero_conf, time(), record)
if info.address:
break
# Request more data if info is not complete
if not info.address:
info = zero_conf.get_service_info(service_type, name)
if info:
type_of_device = info.properties.get(b"type", None)
def _onServiceChanged(self, zeroconf, service_type, name, state_change):
if state_change == ServiceStateChange.Added:
Logger.log("d", "Bonjour service added: %s" % name)
# First try getting info from zeroconf cache
info = ServiceInfo(service_type, name, properties = {})
for record in zeroconf.cache.entries_with_name(name.lower()):
info.update_record(zeroconf, time.time(), record)
for record in zeroconf.cache.entries_with_name(info.server):
info.update_record(zeroconf, time.time(), record)
if info.address:
break
# Request more data if info is not complete
if not info.address:
Logger.log("d", "Trying to get address of %s", name)
info = zeroconf.get_service_info(service_type, name)
def _onServiceChanged(self, zeroconf, service_type, name, state_change):
if state_change == ServiceStateChange.Added:
Logger.log("d", "Bonjour service added: %s" % name)
# First try getting info from zeroconf cache
info = ServiceInfo(service_type, name, properties = {})
for record in zeroconf.cache.entries_with_name(name.lower()):
info.update_record(zeroconf, time.time(), record)
for record in zeroconf.cache.entries_with_name(info.server):
info.update_record(zeroconf, time.time(), record)
if info.address:
break
# Request more data if info is not complete
if not info.address:
Logger.log("d", "Trying to get address of %s", name)
info = zeroconf.get_service_info(service_type, name)
def _onServiceChanged(self, zeroconf, service_type, name, state_change):
if state_change == ServiceStateChange.Added:
key = name
result = self._name_regex.match(name)
if result:
if result.group(1) == "on ":
name = result.group(2)
else:
name = result.group(1) + result.group(2)
Logger.log("d", "Bonjour service added: %s" % name)
# First try getting info from zeroconf cache
info = ServiceInfo(service_type, key, properties = {})
for record in zeroconf.cache.entries_with_name(key.lower()):
info.update_record(zeroconf, time.time(), record)
for record in zeroconf.cache.entries_with_name(info.server):