From 93ac6c737b2566e76162ad70c35c0167de82c76b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Nov 2005 22:34:12 +0000 Subject: Implement avahi-publish{-address, service} in C git-svn-id: file:///home/lennart/svn/public/avahi/trunk@988 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-python/Makefile.am | 12 --- avahi-python/avahi-publish-address.in | 96 ------------------------ avahi-python/avahi-publish-service.in | 134 ---------------------------------- 3 files changed, 242 deletions(-) delete mode 100755 avahi-python/avahi-publish-address.in delete mode 100755 avahi-python/avahi-publish-service.in (limited to 'avahi-python') diff --git a/avahi-python/Makefile.am b/avahi-python/Makefile.am index efb529e..7f4980a 100644 --- a/avahi-python/Makefile.am +++ b/avahi-python/Makefile.am @@ -23,8 +23,6 @@ AM_CFLAGS=-I$(top_srcdir) AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")' EXTRA_DIST = \ - avahi-publish-address.in \ - avahi-publish-service.in \ avahi-bookmarks.in \ avahi-discover.in \ avahi-discover.desktop.in @@ -36,8 +34,6 @@ if HAVE_PYTHON_DBUS if HAVE_PYGTK pythonscripts = \ - avahi-publish-address \ - avahi-publish-service \ avahi-bookmarks \ avahi-discover @@ -53,14 +49,6 @@ avahi-discover: avahi-discover.in -e 's,@interfacesdir\@,$(interfacesdir),g' $< > $@ chmod +x $@ -avahi-publish-address: avahi-publish-address.in - sed -e 's,@PYTHON\@,$(PYTHON),g' $< > $@ - chmod +x $@ - -avahi-publish-service: avahi-publish-service.in - sed -e 's,@PYTHON\@,$(PYTHON),g' $< > $@ - chmod +x $@ - avahi-bookmarks: avahi-bookmarks.in sed -e 's,@PYTHON\@,$(PYTHON),g' $< > $@ chmod +x $@ diff --git a/avahi-python/avahi-publish-address.in b/avahi-python/avahi-publish-address.in deleted file mode 100755 index 4ffebd7..0000000 --- a/avahi-python/avahi-publish-address.in +++ /dev/null @@ -1,96 +0,0 @@ -#!@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, string - -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
" % sys.argv[0] - sys.exit(retval) - -if len(sys.argv) != 3: - usage(2) - -name = sys.argv[1] -address = sys.argv[2] - -group = None -n_rename = 0 - -def remove_address(): - global group - - if not (group is None): - group.Free() - group = None - -def add_address(): - global server, group, name, address - assert group is None - - print "Adding address '%s' for '%s' ..." % (name, address) - 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.AddAddress(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), name, address) - group.Commit() - -def entry_group_state_changed(state): - global name, server, n_rename, main_loop - - if state == avahi.ENTRY_GROUP_ESTABLISHED: - print "Address established." - elif state == avahi.ENTRY_GROUP_COLLISION: - - n_rename = n_rename + 1 - if n_rename >= 12: - print "ERROR: No suitable name found after %i retries, exiting." % n_rename - main_loop.quit() - else: - hn = name.split('.') - hn[0] = server.GetAlternativeHostName(hn[0]) - name = string.join(hn, '.') - print "WARNING: Address/host name collision, changing name to '%s' ..." % name - remove_address() - add_address() - -main_loop = gobject.MainLoop() - -bus = dbus.SystemBus() -server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) - -add_address() - -try: - main_loop.run() -except KeyboardInterrupt, k: - pass - -remove_address() diff --git a/avahi-python/avahi-publish-service.in b/avahi-python/avahi-publish-service.in deleted file mode 100755 index 3f40fd0..0000000 --- a/avahi-python/avahi-publish-service.in +++ /dev/null @@ -1,134 +0,0 @@ -#!@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] [ ...]\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:], "hd: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: - usage(2) - -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.Reset() - -def add_service(): - global server, group, name, stype, domain, host, port, txt - - if group is None: - 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) - - assert group.IsEmpty() - - print "Adding service '%s' of type '%s' ..." % (name, stype) - - group.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), name, stype, domain, host, dbus.UInt16(port), avahi.string_array_to_txt_array(txt)) - group.Commit() - -def entry_group_state_changed(state): - global name, server, n_rename - -# print "state change: %i" % state - - 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 - -if not group is None: - group.Free() -- cgit