X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;ds=inline;f=avahi-utils%2Favahi-bookmarks.in;h=df36f49a254f2464f6bdedff18526b184dd399b2;hb=9ca377e8bc8ef73714180143c24223016acbc845;hp=72f8e44981b945c0242ed4020771713721b621d0;hpb=d76069e946b4e89c828c96340677e40f583080c9;p=catta diff --git a/avahi-utils/avahi-bookmarks.in b/avahi-utils/avahi-bookmarks.in index 72f8e44..df36f49 100755 --- a/avahi-utils/avahi-bookmarks.in +++ b/avahi-utils/avahi-bookmarks.in @@ -19,7 +19,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA. -import sys +import sys, getopt try: import avahi, gobject, dbus @@ -38,9 +38,16 @@ try: from twisted.internet import reactor from twisted.web import server, resource except ImportError: - print "Sorry, to use this tool you need to install twisted." + print "Sorry, to use this tool you need to install twisted and twisted.web." sys.exit(1) +urlproto = { "_http._tcp" : "http", "_https._tcp" : "https", "_ftp._tcp" : "ftp" } + +port = 8080 +address = "127.0.0.1" +use_host_names = False +domain = "local" + class AvahiBookmarks(resource.Resource): isLeaf = True @@ -49,22 +56,35 @@ class AvahiBookmarks(resource.Resource): def __init__(self): resource.Resource.__init__(self) - self.bus = dbus.SystemBus() self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) self.version_string = self.server.GetVersionString() - self.browser = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "_http._tcp", "local")), avahi.DBUS_INTERFACE_SERVICE_BROWSER) + self.browse_service_type("_http._tcp") + + # Hurrah! if I enable one of the following lines, python segfaults. + #self.browse_service_type("_https._tcp") + #self.browse_service_type("_ftp._tcp") + + def browse_service_type(self, stype): - self.browser.connect_to_signal('ItemNew', self.new_service) - self.browser.connect_to_signal('ItemRemove', self.remove_service) + global domain + + browser = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, stype, domain, 0)), avahi.DBUS_INTERFACE_SERVICE_BROWSER) + browser.connect_to_signal('ItemNew', self.new_service) + browser.connect_to_signal('ItemRemove', self.remove_service) def find_path(self, txt): - for k in txt: + l = avahi.txt_array_to_string_array(txt) + + for k in l: if k[:5] == "path=": - return k[5:] + if k[5:].startswith("/"): + return k[5:] + else: + return "/" + k[5:] return "/" @@ -85,9 +105,7 @@ class AvahiBookmarks(resource.Resource): port = ':%i' % v[3] path = self.find_path(v[4]) - - - t += '