Zer-0-ne

Avahi publish python

Mar 20th, 2018
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. import avahi
  2. import dbus
  3. from time import sleep
  4.  
  5.  
  6. class ServiceAnnouncer:
  7. def __init__(self, name, service, port, txt):
  8. bus = dbus.SystemBus()
  9. server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER)
  10. group = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.EntryGroupNew()),
  11. avahi.DBUS_INTERFACE_ENTRY_GROUP)
  12.  
  13. self._service_name = name
  14. index = 1
  15. while True:
  16. try:
  17. group.AddService(avahi.IF_UNSPEC, avahi.PROTO_INET, 0, self._service_name, service, '', '', port, avahi.string_array_to_txt_array(txt))
  18. except dbus.DBusException: # name collision -> rename
  19. index += 1
  20. self._service_name = '%s #%s' % (name, str(index))
  21. else:
  22. break
  23.  
  24. group.Commit()
  25.  
  26. def get_service_name(self):
  27. return self._service_name
  28.  
  29.  
  30. if __name__ == '__main__':
  31. announcer = ServiceAnnouncer('HTTP Keyserver 610CB25237B370E9EB2108E89CEE1B6B059B598E', '_gnome-keysign._tcp', 9001, ['fingerprint: 610C B252 37B3 70E9 EB21 08E8 9CEE 1B6B 059B 598E' , 'version: 0.9.6'])
  32. print (announcer.get_service_name())
  33.  
  34. sleep(420)
Add Comment
Please, Sign In to add comment