def main(ip=None): print "Multicast DNS Service Discovery for Python, version", __version__ # It MUST be 0.0.0.0. NOT the local IP address or 127.0.0.1. # Otherwise, at least in GNU/Linux, it doesn't get the service # info of services registered in other processes (e.g. "coolserver") r = Zeroconf("0.0.0.0") host_ip = socket.gethostbyname(socket.gethostname()) try: print "1. Testing registration of a service..." desc = {'version': '0.10', 'a': 'test value', 'b': 'another value'} info = ServiceInfo("_http._tcp.local.", "My Service Name._http._tcp.local.", socket.inet_aton(host_ip), 1234, 0, 0, desc) print " Registering service..." r.registerService(info) print " Registration done." print "2. Testing query of service information..." service_info = r.getServiceInfo("_http._tcp.local.", "coolserver._http._tcp.local.") print " Getting 'coolserver' service: %r" % service_info if service_info is None: print " (Did you expect to see here the details of the 'coolserver' service? Try running 'nameprobe.py' before!)" print " Query done." print "3. Testing query of own service..." my_service = r.getServiceInfo("_http._tcp.local.", "My Service Name._http._tcp.local.") print " Getting self:", str(my_service) print " Query done." raw_input('Press <enter> to release name > ') print "4. Testing unregister of service information..." r.unregisterService(info) print " Unregister done." finally: r.close()
def main(ip=None): print "Multicast DNS Service Discovery for Python, version", __version__ # It MUST be 0.0.0.0. NOT the local IP address or 127.0.0.1. # Otherwise, at least in GNU/Linux, it doesn't get the service # info of services registered in other processes (e.g. "coolserver") r = Zeroconf( "0.0.0.0" ) host_ip = socket.gethostbyname( socket.gethostname()) try: print "1. Testing registration of a service..." desc = {'version':'0.10','a':'test value', 'b':'another value'} info = ServiceInfo( "_http._tcp.local.", "My Service Name._http._tcp.local.", socket.inet_aton(host_ip), 1234, 0, 0, desc ) print " Registering service..." r.registerService(info) print " Registration done." print "2. Testing query of service information..." service_info = r.getServiceInfo("_http._tcp.local.", "coolserver._http._tcp.local.") print " Getting 'coolserver' service: %r" % service_info if service_info is None: print " (Did you expect to see here the details of the 'coolserver' service? Try running 'nameprobe.py' before!)" print " Query done." print "3. Testing query of own service..." my_service = r.getServiceInfo("_http._tcp.local.", "My Service Name._http._tcp.local.") print " Getting self:", str(my_service) print " Query done." raw_input( 'Press <enter> to release name > ' ) print "4. Testing unregister of service information..." r.unregisterService(info) print " Unregister done." finally: r.close()
def main( base_name='coolserver.local.', stype="_http._tcp.local."): # http://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1 z = Zeroconf( "0.0.0.0" ) # 0.0.0.0 represents all IP addresses on the local machine try: name = '%s.%s'%( base_name.split('.')[0], stype ) s = ServiceInfo( stype, name, server = base_name, address = socket.inet_aton('127.0.0.1'), port = 8080, properties = {"hello":"world", "dept":"deustotech"}, # Setting DNS TXT records... ) z.registerService( s ) name = z.probeName( base_name ) z.unregisterService( s ) print 'Negotiated name:', name s.server = name z.checkService( s ) z.registerService( s ) raw_input( 'Press <enter> to release name > ' ) finally: z.close()
stype = '_dns._udp.local.' login = '******' password = '******' # registering DNS service and nameprobe on mDNS group try: full_name = '%s.%s'%( base_name.split('.')[0], stype ) s = ServiceInfo( stype, full_name, # FQDN mDNS name of server server = base_name, # simplified servername (xx1.local.) address = socket.inet_aton(my_ip), port = 53, properties = {"hello":"world", "dept":"ricm"}, # Setting DNS TXT records... ) z.registerService( s ) serv_name = z.probeName( base_name ) z.unregisterService( s ) print 'Negotiated name:', serv_name s.server = serv_name z.checkService( s ) z.registerService( s ) except: print("Error in name registration") #update DNS via REST url = 'https://'+login+':'+password+'@'+'127.0.0.1'+':5000/hosts' try: print('REST update.. ') post_name = serv_name.split('.')[0] putdata = {'ip': my_ip , 'hostname' : post_name , 'rectype' :'A'}
# register client service and nameprobe on mDNS try: zc = Zeroconf("0.0.0.0") full_name = "%s.%s" % (base_name.split(".")[0], client_type) print (full_name) s = ServiceInfo( client_type, full_name, # FQDN mDNS name of server server=base_name, address=socket.inet_aton(client_ip), port=client_port, properties={"hello": "world", "dept": "ricm"}, # Setting DNS TXT records... ) # we register/unregister twice to prevent name conflits by numbering client_name zc.registerService(s) client_name = zc.probeName(base_name) print (client_name) zc.unregisterService(s) print "Negotiated name:", client_name s.server = client_name zc.checkService(s) zc.registerService(s) except: print ("Error in name registration") zc.close() sys.exit(0) finally: raw_input("Press <enter> to update DNS server via RESTs")