From 37169204d0c63cca41eacb6a6c863edcc18cfea4 Mon Sep 17 00:00:00 2001 From: Josh Davis Date: Sun, 1 Jun 2008 15:13:49 +1000 Subject: [PATCH] removed name server which made things a lot more simple --- torc/torc.py | 17 +++-------- tord/pyro.py | 95 +++++++++++++++--------------------------------------------- tord/tord.py | 19 ++++-------- 3 files changed, 34 insertions(+), 97 deletions(-) diff --git a/torc/torc.py b/torc/torc.py index c54d441..77347d8 100755 --- a/torc/torc.py +++ b/torc/torc.py @@ -397,19 +397,10 @@ class TXTor: pytx.emergency() def main(): - try: - args = uri = publish = None - ''' we are going over the internet ''' - if len(sys.argv) == 3: - if ping(sys.argv[1]): - uri, publish = sys.argv[1], sys.argv[2] - elif len(sys.argv) == 2: args = sys.argv[1] - if not uri: uri = get_daemon_uri(args) - daemon = get_daemon(False, True, publish) - ui = PyroClient(TXTor, uri) - run(ui, daemon, True) - finally: - if 'ui' in dir(): shutdown(ui, daemon) + if len(sys.argv) == 1: + print "must supply server adress" + return + PyroClient(TXTor, sys.argv[1]) if __name__ == "__main__": main() diff --git a/tord/pyro.py b/tord/pyro.py index 97ad2be..5757ac4 100644 --- a/tord/pyro.py +++ b/tord/pyro.py @@ -1,8 +1,7 @@ -import Pyro.core, Pyro.naming, logging +import Pyro.core, logging from socket import gethostname from threading import Thread -from Pyro.errors import NamingError, URIError, ProtocolError -from httplib import HTTPConnection +#from httplib import HTTPConnection #from xml.dom.ext.reader.Sax import FromXmlStream log = logging.getLogger("tord") @@ -14,67 +13,28 @@ def get_external_ip(): print d ''' -def get_daemon_uri(args = None): - locator = Pyro.naming.NameServerLocator() - ns = locator.getNS() - hostname = gethostname() - Pyro.config.PYRO_NS_DEFAULTGROUP = ":tord" - servers = map(lambda x: x[0], ns.list(":tord")) - if not servers: - print "Server not found on your network, run 'tord' on your server" - return None - elif len(servers) == 1: - server = servers[0] - elif args and args[0] in servers: - server = args[0] - else: - print "Run 'tord' followed by one of ", servers - return None - return ns.resolve(server) - def ping(uri): try: Pyro.core.getProxyForURI(uri) except: return False return True -def get_daemon(nameserver = False, client = False, publishhost = None): - if client: Pyro.core.initClient() - daemon = Pyro.core.Daemon(publishhost = publishhost) - try: - if nameserver: - hostname = gethostname() - locator = Pyro.naming.NameServerLocator() - ns = locator.getNS() - Pyro.config.PYRO_NS_DEFAULTGROUP = ":tord" - Pyro.core.initServer(ns, hostname) - - try: ns.createGroup(":tord") - except NamingError: print "naming error" - daemon.useNameServer(ns) - try: ns.unregister(hostname) - except NamingError: print "naming error" - else: - Pyro.core.initServer() - return daemon - except: - print "Error locating name server" - return None - -def run(obj, daemon, client = False): - hostname = gethostname() - daemon.connect(obj, hostname) - - obj.start() - obj.looping = True - if client: obj.register(hostname, obj.get_core()) - daemon.requestLoop(lambda: obj.looping, 1) - obj.looping = False - def shutdown(obj, daemon, client = False): + obj.looping = False obj.shutdown() - if client: obj.join() daemon.shutdown() - daemon.disconnect(obj) + +def run(obj, name, client = False): + Pyro.core.initServer() + if client: Pyro.core.initClient() + + daemon = Pyro.core.Daemon() + daemon.connect(obj, name) + try: + obj.start() + if client: obj.register(gethostname(), obj.get_core()) + daemon.requestLoop(lambda: obj.looping, 1) + except: pass + finally: shutdown(obj, daemon, client) class PyroBase(Thread, Pyro.core.ObjBase): def __init__(self): @@ -87,7 +47,7 @@ class PyroBase(Thread, Pyro.core.ObjBase): self.go() self.looping = False -def PyroClient(Client, uri): +def PyroClient(Client, server): class PyroClient(PyroBase, Client): def __init__(self, uri): PyroBase.__init__(self) @@ -99,19 +59,12 @@ def PyroClient(Client, uri): def register(self, name, core): core.join(name, self.getProxy()) + + uri = "PYROLOC://"+server+":7766/tord" + if ping(uri): + run(PyroClient(uri), "torc", True) - return PyroClient(uri) - -from time import time as clock -def time_me(f): - def wrapper(*args, **kwargs): - s = clock() - r = f(*args, **kwargs) - print "timing %s: %s" % (str(f), str(clock()-s)) - return r - return wrapper - -def PyroServer(Server): +def PyroServer(Server, name): class PyroServer(PyroBase, Server): def __init__(self): PyroBase.__init__(self) @@ -140,5 +93,5 @@ def PyroServer(Server): self.clients.remove((name, cb)) t = Thread(target=publish) t.start() - - return PyroServer() + + run(PyroServer(), "tord") diff --git a/tord/tord.py b/tord/tord.py index 8e8a12f..c643790 100644 --- a/tord/tord.py +++ b/tord/tord.py @@ -1,6 +1,6 @@ import logging, os, traceback, sys import libtorrent as lt -from pyro import PyroServer, run, shutdown, get_daemon +from pyro import PyroServer from common import * from shutil import move from time import sleep @@ -417,20 +417,13 @@ class Core(Alerts, Watched, CoreSession, CoreTorrent): if d: ret.append( (i, d) ) return ret -def main(): +def logger(): logging.basicConfig( level=logging.DEBUG, format="[%(levelname)-8s] %(name)s:%(module)s:%(lineno)d %(message)s", stream=sys.stderr ) - try: - core = PyroServer(Core) - daemon = get_daemon(True) - run(core, daemon) - except: - if core: - core.looping = False - if daemon: shutdown(core, daemon) - -if __name__ == "__main__": - main() + +def main(): + logger() + PyroServer(Core, "tord") -- 2.11.4.GIT