X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-utils%2Favahi-publish-service;fp=avahi-utils%2Favahi-publish-service;h=0000000000000000000000000000000000000000;hb=1a912326734243e57a461c48131c1a0402318b5a;hp=d823f141ad466d509c3e1c2782ea5e0a1fbc4624;hpb=4a26b34ce1c7c2b1f0b65028f5d096939ab9b164;p=catta diff --git a/avahi-utils/avahi-publish-service b/avahi-utils/avahi-publish-service deleted file mode 100755 index d823f14..0000000 --- a/avahi-utils/avahi-publish-service +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/python2.4 -# -*-python-*- -# $Id$ - -import avahi, dbus, gobject, sys, getopt - -try: - import dbus.glib -except ImportError, e: - pass - -def usage(retval = 0): - print "%s [options] [ ...]\n" % sys.argv[0] - print " -h --help Show this help" - print " -d --domain Domain where to register this service" - print " -H --host Host where this service resides" - sys.exit(retval) - -try: - opts, args = getopt.getopt(sys.argv[1:], "d:H:", ["help", "domain=", "host="]) -except getopt.GetoptError: - usage(2) - -domain = "" -host = "" - -for o, a in opts: - if o in ("-h", "--help"): - usage() - - if o in ("-d", "--domain"): - domain = a - - if o in ("-H", "--host"): - host = a - -if len(args) < 3: - sys.stderr.write("Invalid number of arguments\n") - sys.exit(1) - -name = args[0] -stype = args[1] -port = int(args[2]) -txt = args[3:] - -# python-dbus doesn't allow transmission of empty arrays, therefore we "fix" it with a bogus entry -if len(txt) == 0: - txt.append("python-dbus=brain-damage") - -group = None -n_rename = 0 - -def remove_service(): - global group - - if not (group is None): - group.Free() - group = None - -def add_service(): - global server, group, name, stype, domain, host, port, txt - assert group is None - - print "Adding service '%s' of type '%s' ..." % (name, stype) - group = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) - group.connect_to_signal('StateChanged', entry_group_state_changed) - group.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, name, stype, domain, host, dbus.UInt16(port), txt) - group.Commit() - -def entry_group_state_changed(state): - global name, server, n_rename - - if state == avahi.ENTRY_GROUP_ESTABLISHED: - print "Service established." - elif state == avahi.ENTRY_GROUP_COLLISION: - - n_rename = n_rename + 1 - if n_rename >= 12: - print "ERROR: No suitable service name found after %i retries, exiting." % n_rename - main_loop.quit() - else: - name = server.GetAlternativeServiceName(name) - print "WARNING: Service name collision, changing name to '%s' ..." % name - remove_service() - add_service() - -def server_state_changed(state): - if state == avahi.SERVER_COLLISION: - print "WARNING: Server name collision" - remove_service() - elif state == avahi.SERVER_RUNNING: - add_service() - -main_loop = gobject.MainLoop() - -bus = dbus.SystemBus() -server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) -server.connect_to_signal("StateChanged", server_state_changed) -server_state_changed(server.GetState()) - -try: - main_loop.run() -except KeyboardInterrupt, k: - pass - -remove_service()