root/autoclone/trunk/Client/avahiClient.py @ 32
32 | manumora | import dbus, gobject, avahi
|
|
from dbus import DBusException
|
|||
from dbus.mainloop.glib import DBusGMainLoop
|
|||
from string import split
|
|||
import logging
|
|||
LOG_FILENAME = 'replicant.log'
|
|||
TYPE = "_replicant25._tcp"
|
|||
files = {}
|
|||
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
|
|||
def downloadFile(fileToDownload, source, port):
|
|||
if not os.path.exists(fileToDownload):
|
|||
g = URLGrabber()
|
|||
else:
|
|||
g = URLGrabber(reget="simple")
|
|||
try:
|
|||
local_filename = g.urlgrab("http://"+source+":"+port+"/"+fileToDownload)
|
|||
except:
|
|||
logging.debug("No se puede realizar la descarga de "+fileToDownload+" desde "+source+":"+port)
|
|||
time.sleep(600)
|
|||
def service_resolved(*args):
|
|||
val = str(args[2]).split("@")
|
|||
files[val[1]] = {'address' : str(args[7]), 'port': str(val[0])}
|
|||
if len(files)>0:
|
|||
for i in files:
|
|||
print i['address']
|
|||
#downloadFile(i.keys(), i['address'], i['port'])
|
|||
#print 'name:', args[2]
|
|||
#print 'address:', args[7]
|
|||
#print 'port:', args[8]
|
|||
def print_error(*args):
|
|||
print 'error_handler'
|
|||
print args[0]
|
|||
def myhandler(interface, protocol, name, stype, domain, flags):
|
|||
#print "Found service '%s' type '%s' domain '%s' " % (name, stype, domain)
|
|||
if flags & avahi.LOOKUP_RESULT_LOCAL:
|
|||
# local service, skip
|
|||
pass
|
|||
server.ResolveService(interface, protocol, name, stype,
|
|||
domain, avahi.PROTO_UNSPEC, dbus.UInt32(0),
|
|||
reply_handler=service_resolved, error_handler=print_error)
|
|||
loop = DBusGMainLoop()
|
|||
bus = dbus.SystemBus(mainloop=loop)
|
|||
server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, '/'), 'org.freedesktop.Avahi.Server')
|
|||
sbrowser = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, TYPE, 'local', dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
|
|||
sbrowser.connect_to_signal("ItemNew", myhandler)
|
|||
gobject.MainLoop().run()
|
|||
print "hola"
|