problems with pyzeroconf and linux

Simo Hosio zion at ee.oulu.fi
Mon Jan 29 03:12:55 CET 2007


On Sat, 27 Jan 2007, Damjan wrote:

>
>> I am trying to get pyzeroconf (http://sourceforge.net/projects/pyzeroconf)
>> running on my machine but having trouble... Running the Zeroconf.py file
>> seems to register the service, but is unable to find it.
>
> You should be running avahi.. it also comes python support.
>
> Here's an example that registers a CNAME that points to your hostname (that
> avahi itself publishes)
>
> #! /usr/bin/env python
> import avahi, dbus
> from encodings.idna import ToASCII
>
> # Got these from /usr/include/avahi-common/defs.h
> CLASS_IN = 0x01
> TYPE_CNAME = 0x05
>
> TTL = 60
>
> def publish_cname(cname):
>    bus = dbus.SystemBus()
>    server = dbus.Interface(bus.get_object(avahi.DBUS_NAME,
> avahi.DBUS_PATH_SERVER),
>            avahi.DBUS_INTERFACE_SERVER)
>    group = dbus.Interface(bus.get_object(avahi.DBUS_NAME,
> server.EntryGroupNew()),
>            avahi.DBUS_INTERFACE_ENTRY_GROUP)
>
>    rdata = createRR(server.GetHostNameFqdn())
>    cname = encode_dns(cname)
>
>    group.AddRecord(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0),
>        cname, CLASS_IN, TYPE_CNAME, TTL, rdata)
>    group.Commit()
>
>
> def encode_dns(name):
>    out = []
>    for part in name.split('.'):
>        if len(part) == 0: continue
>        out.append(ToASCII(part))
>    return '.'.join(out)
>
> def createRR(name):
>    out = []
>    for part in name.split('.'):
>        if len(part) == 0: continue
>        out.append(chr(len(part)))
>        out.append(ToASCII(part))
>    out.append('\0')
>    return ''.join(out)
>
> if __name__ == '__main__':
>    import time, sys, locale
>    for each in sys.argv[1:]:
>        name = unicode(each, locale.getpreferredencoding())
>        publish_cname(name)
>    try:
>        while 1: time.sleep(60)
>    except KeyboardInterrupt:
>        print "Exiting"
>
>
> -- 
> damjan

Hi,
I actually tried Avahi also at first, but was having a lot of difficulties 
setting it up to my actual target environment (Maemo platform, based on 
Debian, and used on Nokia 770&N800 devices...).

Probably this is anyhow an issue of Debian network configuration, so maybe 
I'll ask the lists there also.

I will later utilize Avahi, if possible, so thanks for the code snippet. :) 
And if anyone knows what might be the propblem with Pyzeroconf and my dear 
Ubuntu, please tell me.

Br,
Simo



More information about the Python-list mailing list