pythonscripts = \
avahi-publish-address \
avahi-publish-service \
- avahi-dump-all \
+ avahi-browse \
avahi-discover \
avahi-bookmarks \
avahi-resolve-host-name \
sed -e 's,@PYTHON\@,$(PYTHON),g' $< > $@
chmod +x $@
-avahi-dump-all: avahi-dump-all.in
+avahi-browse: avahi-browse.in
sed -e 's,@PYTHON\@,$(PYTHON),g' $< > $@
chmod +x $@
--- /dev/null
+#!@PYTHON@
+# -*-python-*-
+# $Id$
+
+# This file is part of avahi.
+#
+# avahi is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# avahi is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with avahi; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+
+import sys, getopt
+
+try:
+ import avahi, gobject, dbus
+except ImportError:
+ print "Sorry, to use this tool you need to install Avahi, pygtk and python-dbus."
+ sys.exit(1)
+
+try:
+ import dbus.glib
+except ImportError, e:
+ pass
+
+def usage(retval = 0):
+ print "%s [options] <type>\n" % sys.argv[0]
+ print " -h --help Show this help"
+ print " -d --domain The domain to browse"
+ print " -a --all Show all services, regardless of the type"
+ sys.exit(retval)
+
+try:
+ opts, args = getopt.getopt(sys.argv[1:], "hd:a", ["help", "domain=", "all"])
+except getopt.GetoptError:
+ usage(2)
+
+domain = None
+stype = None
+show_all = False
+
+for o, a in opts:
+ if o in ("-h", "--help"):
+ usage()
+
+ if o in ("-d", "--domain"):
+ domain = a
+
+ if o in ("-a", "--all"):
+ show_all = True
+
+if len(args) > 1:
+ usage(2)
+
+if len(args) >= 1:
+ stype = args[0];
+
+if stype is None and not show_all:
+ usage(2)
+
+service_type_browsers = {}
+service_browsers = {}
+
+def siocgifname(interface):
+ global server
+
+ if interface <= 0:
+ return "any"
+ else:
+ return server.GetNetworkInterfaceNameByIndex(interface)
+
+def service_resolved(interface, protocol, name, type, domain, host, aprotocol, address, port, txt):
+ print "Service data for service '%s' of type '%s' in domain '%s' on %s.%i:" % (name, type, domain, siocgifname(interface), protocol)
+ print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(txt))
+
+def print_error(err):
+ 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 %s.%i." % (name, type, domain, siocgifname(interface), protocol)
+
+ # Asynchronous resolving
+ server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_UNSPEC, reply_handler=service_resolved, error_handler=print_error)
+
+def remove_service(interface, protocol, name, type, domain):
+ print "Service '%s' of type '%s' in domain '%s' on %s.%i disappeared." % (name, type, domain, siocgifname(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)):
+ return
+
+ print "Browsing for services of type '%s' in domain '%s' on %s.%i ..." % (type, domain, siocgifname(interface), protocol)
+
+ b = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceBrowserNew(interface, protocol, type, domain)), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
+ b.connect_to_signal('ItemNew', new_service)
+ b.connect_to_signal('ItemRemove', remove_service)
+
+ service_browsers[(interface, protocol, type, domain)] = b
+
+def browse_domain(interface, protocol, domain):
+ global server, service_type_browsers, stype
+
+ # Are we already browsing this domain?
+ if service_type_browsers.has_key((interface, protocol, domain)):
+ return
+
+ if stype is None:
+ print "Browsing domain '%s' on %s.%i ..." % (domain, siocgifname(interface), protocol)
+
+ b = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceTypeBrowserNew(interface, protocol, domain)), avahi.DBUS_INTERFACE_SERVICE_TYPE_BROWSER)
+ b.connect_to_signal('ItemNew', new_service_type)
+
+ service_type_browsers[(interface, protocol, domain)] = b
+ else:
+ new_service_type(interface, protocol, stype, domain)
+
+def new_domain(interface, protocol, domain):
+
+ # We browse for .local anyway...
+ if domain != "local":
+ browse_domain(interface, protocol, domain)
+
+
+bus = dbus.SystemBus()
+server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER)
+
+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(avahi.DBUS_NAME, server.DomainBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "", avahi.DOMAIN_BROWSER_BROWSE)), avahi.DBUS_INTERFACE_DOMAIN_BROWSER)
+ 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()
+except KeyboardInterrupt, k:
+ pass
+++ /dev/null
-#!@PYTHON@
-# -*-python-*-
-# $Id$
-
-# This file is part of avahi.
-#
-# avahi is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
-#
-# avahi is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
-# License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with avahi; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA.
-
-import sys, getopt
-
-try:
- import avahi, gobject, dbus
-except ImportError:
- print "Sorry, to use this tool you need to install Avahi, pygtk and python-dbus."
- sys.exit(1)
-
-try:
- import dbus.glib
-except ImportError, e:
- pass
-
-def usage(retval = 0):
- print "%s [options] <type>\n" % sys.argv[0]
- print " -h --help Show this help"
- print " -d --domain The domain to browse"
- print " -a --all Show all services, regardless of the type"
- sys.exit(retval)
-
-try:
- opts, args = getopt.getopt(sys.argv[1:], "hd:a", ["help", "domain=", "all"])
-except getopt.GetoptError:
- usage(2)
-
-domain = None
-stype = None
-show_all = False
-
-for o, a in opts:
- if o in ("-h", "--help"):
- usage()
-
- if o in ("-d", "--domain"):
- domain = a
-
- if o in ("-a", "--all"):
- show_all = True
-
-if len(args) > 1:
- usage(2)
-
-if len(args) >= 1:
- stype = args[0];
-
-if stype is None and not show_all:
- usage(2)
-
-service_type_browsers = {}
-service_browsers = {}
-
-def siocgifname(interface):
- global server
-
- if interface <= 0:
- return "any"
- else:
- return server.GetNetworkInterfaceNameByIndex(interface)
-
-def service_resolved(interface, protocol, name, type, domain, host, aprotocol, address, port, txt):
- print "Service data for service '%s' of type '%s' in domain '%s' on %s.%i:" % (name, type, domain, siocgifname(interface), protocol)
- print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(txt))
-
-def print_error(err):
- 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 %s.%i." % (name, type, domain, siocgifname(interface), protocol)
-
- # Asynchronous resolving
- server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_UNSPEC, reply_handler=service_resolved, error_handler=print_error)
-
-def remove_service(interface, protocol, name, type, domain):
- print "Service '%s' of type '%s' in domain '%s' on %s.%i disappeared." % (name, type, domain, siocgifname(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)):
- return
-
- print "Browsing for services of type '%s' in domain '%s' on %s.%i ..." % (type, domain, siocgifname(interface), protocol)
-
- b = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceBrowserNew(interface, protocol, type, domain)), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
- b.connect_to_signal('ItemNew', new_service)
- b.connect_to_signal('ItemRemove', remove_service)
-
- service_browsers[(interface, protocol, type, domain)] = b
-
-def browse_domain(interface, protocol, domain):
- global server, service_type_browsers, stype
-
- # Are we already browsing this domain?
- if service_type_browsers.has_key((interface, protocol, domain)):
- return
-
- if stype is None:
- print "Browsing domain '%s' on %s.%i ..." % (domain, siocgifname(interface), protocol)
-
- b = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceTypeBrowserNew(interface, protocol, domain)), avahi.DBUS_INTERFACE_SERVICE_TYPE_BROWSER)
- b.connect_to_signal('ItemNew', new_service_type)
-
- service_type_browsers[(interface, protocol, domain)] = b
- else:
- new_service_type(interface, protocol, stype, domain)
-
-def new_domain(interface, protocol, domain):
-
- # We browse for .local anyway...
- if domain != "local":
- browse_domain(interface, protocol, domain)
-
-
-bus = dbus.SystemBus()
-server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER)
-
-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(avahi.DBUS_NAME, server.DomainBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "", avahi.DOMAIN_BROWSER_BROWSE)), avahi.DBUS_INTERFACE_DOMAIN_BROWSER)
- 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()
-except KeyboardInterrupt, k:
- pass