def main(): key = "sddjou34324523432gh45t452354" server = AES_RPC_Server( SERVER_ADDR, client_keys={'127.0.0.1': key}, logger=Log("server", config=conf), ) server.add_view(View()) server.start(5) print "server started" def __run_server(): print "run server" server.loop() return th = threading.Thread(target=__run_server) th.setDaemon(1) th.start() time.sleep(1) print "starting client" client = AES_RPC_Client(key, Log("client", config=conf)) client.set_timeout(5) client.connect(SERVER_ADDR) print "connected" ret = client.call("foo", "aaa", arg2="bbb") assert ret == ("aaa", "bbb", {'dd': {'ee': 1}}) val = AttrWrapper.wrap(ret) print "ret[2]['dd']['ee']", val[2].dd.ee print "foo => ret" try: client.call("bar") except Exception, e: print "bar", e
def __init__(self, logger, client_keys): self.logger = logger self.host_id = conf.HOST_ID self._rsync_popen = None self.is_running = False self.listen_ip = "0.0.0.0" self.inf_addr = (self.listen_ip, conf.INF_PORT) self.rsync_port = conf.RSYNC_PORT self.server = AES_RPC_Server( self.inf_addr, client_keys=client_keys, logger=logger, err_logger=logger, )
class SyncServerBase(object): def __init__(self, logger, client_keys): self.logger = logger self.host_id = conf.HOST_ID self._rsync_popen = None self.is_running = False self.listen_ip = "0.0.0.0" self.inf_addr = (self.listen_ip, conf.INF_PORT) self.rsync_port = conf.RSYNC_PORT self.server = AES_RPC_Server( self.inf_addr, client_keys=client_keys, logger=logger, err_logger=logger, ) def loop(self): self.server.loop() def start(self): if self.is_running: return self.is_running = True # self.start_rsync() self.server.start(20) def stop(self): if not self.is_running: return self.is_running = False self.server.stop() self.logger.info("server stopped") self.stop_rsync() def start_rsync(self): rsync_conf = """ uid=root gid=root use chroot=yes og file=/dev/null [%s] path=%s read only=no write only=yes """ % (RSYNC_SERVER_NAME, conf.MOUNT_POINT_DIR) f = open(conf.RSYNC_CONF_PATH, "w") try: f.write(rsync_conf) finally: f.close() rsync_cmd = ["rsync", "--daemon", "--config=%s" % (conf.RSYNC_CONF_PATH), "--no-detach"] rsync_cmd.append("--address=%s" % (self.listen_ip)) rsync_cmd.append("--port=%s" % (self.rsync_port)) #self._rsync_popen = subprocess.Popen(rsync_cmd, stderr=subprocess.PIPE, close_fds=True) self._rsync_popen = Command(rsync_cmd) self._rsync_popen.start() self.logger.info("started rsync, pid=%s" % (self._rsync_popen.pid)) time.sleep(1) def stop_rsync(self): if self._rsync_popen is None: return self.logger.info("stopping rsync") try: os.kill(self._rsync_popen.pid, signal.SIGTERM) self._rsync_popen.wait() except OSError, e: if e[0] == errno.ESRCH: pass raise self.logger.info("rsync stopped")
class SyncServerBase(object): def __init__(self, logger, client_keys): self.logger = logger self.host_id = conf.HOST_ID self._rsync_popen = None self.is_running = False self.listen_ip = "0.0.0.0" self.inf_addr = (self.listen_ip, conf.INF_PORT) self.rsync_port = conf.RSYNC_PORT self.server = AES_RPC_Server( self.inf_addr, client_keys=client_keys, logger=logger, err_logger=logger, ) def loop(self): self.server.loop() def start(self): if self.is_running: return self.is_running = True # self.start_rsync() self.server.start(20) def stop(self): if not self.is_running: return self.is_running = False self.server.stop() self.logger.info("server stopped") self.stop_rsync() def start_rsync(self): rsync_conf = """ uid=root gid=root use chroot=yes og file=/dev/null [%s] path=%s read only=no write only=yes """ % (RSYNC_SERVER_NAME, conf.MOUNT_POINT_DIR) f = open(conf.RSYNC_CONF_PATH, "w") try: f.write(rsync_conf) finally: f.close() rsync_cmd = [ "rsync", "--daemon", "--config=%s" % (conf.RSYNC_CONF_PATH), "--no-detach" ] rsync_cmd.append("--address=%s" % (self.listen_ip)) rsync_cmd.append("--port=%s" % (self.rsync_port)) #self._rsync_popen = subprocess.Popen(rsync_cmd, stderr=subprocess.PIPE, close_fds=True) self._rsync_popen = Command(rsync_cmd) self._rsync_popen.start() self.logger.info("started rsync, pid=%s" % (self._rsync_popen.pid)) time.sleep(1) def stop_rsync(self): if self._rsync_popen is None: return self.logger.info("stopping rsync") try: os.kill(self._rsync_popen.pid, signal.SIGTERM) self._rsync_popen.wait() except OSError, e: if e[0] == errno.ESRCH: pass raise self.logger.info("rsync stopped")