Example #1
0
    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)
Example #2
0
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()
Example #3
0
    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
Example #4
0
def update_allow_addrs():
    config['allow'] = \
        OPFSUtil.get_peer_addrs(config['conf_file'])