# -*-python-*-
# $Id$
-import avahi, dbus, gobject
+import avahi, dbus, gobject, sys
try:
import dbus.glib
print "Error:", str(err)
def new_service(interface, protocol, name, type, domain):
+ global server
+
print "Found service '%s' of type '%s' in domain '%s' on %i.%i." % (name, type, domain, interface, protocol)
# Asynchronous resolving
print "Service '%s' of type '%s' in domain '%s' on %i.%i disappeared." % (name, type, domain, interface, protocol)
def new_service_type(interface, protocol, type, domain):
+ global server, service_browsers
# Are we already browsing this domain for this type?
if service_browsers.has_key((interface, protocol, type, domain)):
service_browsers[(interface, protocol, type, domain)] = b
def browse_domain(interface, protocol, domain):
+ global server, service_type_browsers
# Are we already browsing this domain?
if service_type_browsers.has_key((interface, protocol, domain)):
# We browse for .local anyway...
if domain != "local":
browse_domain(interface, protocol, domain)
+
+
+domain = None
+
+if len(sys.argv) > 1:
+ domain = sys.argv[1]
bus = dbus.SystemBus()
server = dbus.Interface(bus.get_object("org.freedesktop.Avahi", '/org/freedesktop/Avahi/Server'), 'org.freedesktop.Avahi.Server')
-# Explicitly browse .local
-browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "local")
+if domain is None:
+ # Explicitly browse .local
+ browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "local")
+
+ # Browse for other browsable domains
+ db = dbus.Interface(bus.get_object("org.freedesktop.Avahi", server.DomainBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "", avahi.DOMAIN_BROWSER_BROWSE)), 'org.freedesktop.Avahi.DomainBrowser')
+ db.connect_to_signal('ItemNew', new_domain)
-# Browse for other browsable domains
-db = dbus.Interface(bus.get_object("org.freedesktop.Avahi", server.DomainBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "", avahi.DOMAIN_BROWSER_BROWSE)), 'org.freedesktop.Avahi.DomainBrowser')
-db.connect_to_signal('ItemNew', new_domain)
+else:
+ # Just browse the domain the user wants us to browse
+ browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain)
try:
gobject.MainLoop().run()