Proyecto

General

Perfil

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"
(1-1/2)