from zeroconf import ServiceInfo, Zeroconf import socket import logging _zeroconf_instance = None _service_info = None def register_mdns_service(port: int): global _zeroconf_instance, _service_info try: _zeroconf_instance = Zeroconf() hostname = socket.gethostname() local_ip = socket.gethostbyname(hostname) _service_info = ServiceInfo( "_jarvis._tcp.local.", f"JARVIS OS on {hostname}._jarvis._tcp.local.", addresses=[socket.inet_aton(local_ip)], port=port, properties={"version": "1.0", "agent": "jarvis", "ttl_seconds": "120"} ) _zeroconf_instance.register_service(_service_info) logging.info(f"mDNS Registered: JARVIS OS at {local_ip}:{port}") return _zeroconf_instance, _service_info except Exception as e: logging.error(f"Failed to register mDNS: {e}") return None, None def unregister_mdns_service(): if _zeroconf_instance and _service_info: try: _zeroconf_instance.unregister_service(_service_info) _zeroconf_instance.close() logging.info("mDNS service unregistered cleanly.") except Exception as e: logging.error(f"Failed to unregister mDNS: {e}")