Proyecto

General

Perfil

32 manumora
import dbus, gobject, avahi
from dbus import DBusException
from dbus.mainloop.glib import DBusGMainLoop
from string import split
import logging
37 manumora
import os
import urlgrabber
32 manumora
36 manumora
LOG_FILENAME = '/var/log/autoclone.log'
TYPE = "_autoclone25._tcp"
32 manumora
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:
37 manumora
downloadFile(i, files[i]['address'], files[i]['port'])
32 manumora

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)


37 manumora
if __name__ == '__main__':
32 manumora
37 manumora
loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=loop)
32 manumora
37 manumora
server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, '/'), 'org.freedesktop.Avahi.Server')
32 manumora
37 manumora
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)
32 manumora
37 manumora
gobject.MainLoop().run()
32 manumora
print "hola"