def setup_peer(self): self.peers_file = os.path.realpath(os.path.expanduser(self.peers_file)) self._log("config file: %s" % (self.peers_file)) if os.path.exists(self.peers_file): candidates = OPFSUtil.read_peers_file(self.peers_file) self.peers = [] for peer in candidates: if self._get_opfs_client(peer).is_alive(): self.peers.append(peer) if len(self.peers) == 0: print "please setup %s" % (self.peers_file) sys.exit(-1) else: OPFSUtil.create_peers_file(self.peers_file) print "please setup %s" % (self.peers_file) sys.exit(-1)
def run(handler_class=OPFSDHandler): global config parser = OptionParser() parser.add_option("-p", "--port", dest="port", help="listen port", default="5656") parser.add_option("-d", "--debug", dest="debug", action="store_true", help="debug") parser.add_option("-c", "--conf", dest="conf_file", help="config file for peers", default="~/.opfs_peers") (options, args) = parser.parse_args() global debug debug = options.debug if len(args) != 1: print "usage: python opfsd.py <publish path>" sys.exit(-1) conf_file = os.path.realpath(os.path.expanduser(options.conf_file)) basedir = args.pop() #server_address = ('', int(options.port)) debug_print("listen port: %s" % (options.port)) application = tornado.web.Application([ (r".*", handler_class), ]) config = { 'basedir': basedir, 'allow': None, 'conf_file': conf_file } update_allow_addrs() if config['allow'] == None: OPFSUtil.create_peers_file(path) print "please setup %s" % (path) sys.exit(-1) http_server = tornado.httpserver.HTTPServer(application) http_server.listen(int(options.port)) tornado.ioloop.IOLoop.instance().start()
def stat_response(self, path): # provide stat(2) self.set_status(200) self.set_header('Content-type', 'text/plain') realpath = self.get_realpath(path) try: st = os.stat(realpath) self.write(OPFSUtil.stat2str(st)) debug_print(st) return except Exception, info: debug_print(info) return
def update_allow_addrs(): config['allow'] = \ OPFSUtil.get_peer_addrs(config['conf_file'])