diff --git a/discovery.py b/discovery.py
deleted file mode 100644
index 1e53732..0000000
--- a/discovery.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import sys
-import signal
-import threading
-import gobject
-import dbus
-from dbus.mainloop.glib import DBusGMainLoop
-import avahi
-
-from centrixd import data
-import machines
-
-hosts = []
-services = {}
-
-def err(str):
- print "Error:", str
-
-# Shorter names of services
-servicenames = {'_ssh._tcp': 'ssh',
- '_http._tcp': 'web',
- '_ftp._tcp': 'ftp',
- '_workstation._tcp': 'machine',
- '_pulse-server._tcp': 'pulseaudio',
- '_nameserver._udp': 'dns'}
-
-class Browser(threading.Thread):
- "Browse network for services, using zeroconf/avahi"
-
- def __init__(self,group=None,target=None,name=None,args=(), kwargs=None,verbose=None):
- threading.Thread.__init__(self)
- self.types = args
- self.done = {}
- for type in args:
- self.done[type] = False
-
- def _all_done(self):
- for v in self.done.values():
- if not v:
- return False
- return True
-
- def _interface_for_type(self,type):
- return dbus.Interface(self.bus.get_object(avahi.DBUS_NAME,
- self.server.ServiceBrowserNew(avahi.IF_UNSPEC,
- avahi.PROTO_UNSPEC,
- type, 'local', dbus.UInt32(0))),
- avahi.DBUS_INTERFACE_SERVICE_BROWSER)
-
- def browse(self,types):
- print "Browsing for:", types
- self.bus = dbus.SystemBus()
- self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER),avahi.DBUS_INTERFACE_SERVER)
- for type in types:
- b = self._interface_for_type(type)
- b.connect_to_signal('ItemNew', self.add_service)
- b.connect_to_signal('ItemRemove', self.remove_service)
-
- def add_service(self, interface,proto,name,stype,domain,flags):
- print "Found service:", name
- self.server.ResolveService(int(interface), int(proto),
- name,stype,domain, avahi.PROTO_UNSPEC, dbus.UInt32(0),
- reply_handler = self.listener.new_service,
- error_handler = err)
- self.done[stype] = True
- if self._all_done():
- self.lock.release()
-
- def set_listener(self, ob):
- self.listener = ob
-
- def remove_service(self,iface,proto,name,stype,domain,flags):
- print "Removing service", name
-
- def quit(self):
- print "Stop discovery."
- self.ml.quit()
- try:
- self.lock.release()
- except:
- pass
- return False
-
- def run(self):
- DBusGMainLoop(set_as_default=True)
- if self.timeout:
- gobject.timeout_add(self.timeout,self.quit)
- self.browse(self.types)
- self.ml = gobject.MainLoop()
- gobject.threads_init()
- self.ml.run()
-
-class ZeroconfListener(object):
- def new_service(self, iface,proto,name,stype,domain, host, aproto,addr, port, txt,flags):
- global services
- global hosts
-
- if stype == '_workstation._tcp':
- host = machines.Host()
- host.hostname = name.split()[0]
- host.ip = addr
- hosts.append(host)
- return
-
- sname = servicenames[stype]
- svc = data.Service()
- svc.name = name
- svc.ip = addr
- svc.port = port
- services[sname] = svc
-# print "services[%s] = %s" % (sname, svc)
-
-def discover(services=('_ssh._tcp','_workstation._tcp','_nameserver._udp'),timeout=None):
- """Discover services of given types via zeroconf.
- Returns (blocked) lock, which is released when all services are discovered."""
- global browser
- lock = threading.Lock()
- lock.acquire()
- listener = ZeroconfListener()
- browser = Browser(args=services)
- browser.timeout = timeout
- browser.lock = lock
- browser.set_listener(listener)
- browser.start()
- return lock
-
-def stop():
- "Cancel discovery"
- global browser
- browser.quit()
diff --git a/test.py b/test.py
index a93ed78..fd20e47 100755
--- a/test.py
+++ b/test.py
@@ -9,7 +9,7 @@ from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
-import discovery
+import zeroconf
import templates
import configs
import configsets
@@ -23,7 +23,7 @@ import machines
def on_sigint(signum, frame):
global reactor
print "Got SIGINT"
- discovery.stop()
+ zeroconf.stop()
reactor.stop()
# sys.exit()
@@ -43,19 +43,19 @@ class Centrixd(LineReceiver):
#####################################
# Setup
-lock = discovery.discover()
+lock = zeroconf.discover()
-discovery.services['proxy'] = data.Service()
-discovery.services['proxy'].ip = '192.168.32.3'
-discovery.services['proxy'].port = 3128
-discovery.services['gateway'] = data.Service()
-discovery.services['gateway'].ip = '192.168.32.1'
+zeroconf.services['proxy'] = data.Service()
+zeroconf.services['proxy'].ip = '192.168.32.3'
+zeroconf.services['proxy'].port = 3128
+zeroconf.services['gateway'] = data.Service()
+zeroconf.services['gateway'].ip = '192.168.32.1'
machine = machines.Host()
machine.ip = '192.168.1.2'
machine.hostname = 'portnov'
-templates.services = discovery.services
+templates.services = zeroconf.services
templates.machine = machine
print "Waiting for discovery..."
@@ -63,7 +63,7 @@ lock.acquire()
# print services
print "Found hosts:"
-for host in discovery.hosts:
+for host in zeroconf.hosts:
print host
# Read template