Пример #1
0
    def __init__(self, ob_ctx):
        self.shutdown_mutex = Lock()
        self.ob_ctx = ob_ctx
        db = Obdb(ob_ctx.db_path, ob_ctx.disable_sqlite_crypt)
        self.transport = CryptoTransportLayer(ob_ctx, db)
        self.market = Market(self.transport, db)
        self.upnp_mapper = None

        Thread(target=reactor.run, args=(False, )).start()

        peers = ob_ctx.seeds if not ob_ctx.seed_mode else []
        self.transport.join_network(peers)

        handlers = [(r"/", MainHandler), (r"/main", MainHandler),
                    (r"/html/(.*)", OpenBazaarStaticHandler, {
                        'path': './html'
                    }),
                    (r"/ws", WebSocketHandler,
                     dict(transport=self.transport,
                          market_application=self,
                          db=db))]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        super(MarketApplication, self).__init__(handlers, **settings)
Пример #2
0
    def __init__(self, ob_ctx):
        self.shutdown_mutex = Lock()
        self.ob_ctx = ob_ctx
        db = Obdb(ob_ctx.db_path, ob_ctx.disable_sqlite_crypt)
        self.transport = CryptoTransportLayer(ob_ctx, db)
        self.market = Market(self.transport, db)
        self.upnp_mapper = None
        
        print" alvaro init"

        Thread(target=reactor.run, args=(False,)).start()

        peers = ob_ctx.seeds if not ob_ctx.seed_mode else []
        self.transport.join_network(peers)

        handlers = [
            (r"/", MainHandler),
            (r"/main", MainHandler),
            (r"/html/(.*)", OpenBazaarStaticHandler, {'path': './html'}),
            (r"/ws", WebSocketHandler,
             dict(transport=self.transport, market_application=self, db=db))
        ]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        super(MarketApplication, self).__init__(handlers, **settings)
Пример #3
0
    def __init__(self,
                 market_ip,
                 market_port,
                 market_id=1,
                 bm_user=None,
                 bm_pass=None,
                 bm_port=None,
                 seed_peers=None,
                 seed_mode=0,
                 dev_mode=False,
                 db_path='db/ob.db',
                 disable_sqlite_crypt=False):
        if seed_peers is None:
            seed_peers = []

        db = Obdb(db_path, disable_sqlite_crypt)

        self.transport = CryptoTransportLayer(market_ip, market_port,
                                              market_id, db, bm_user, bm_pass,
                                              bm_port, seed_mode, dev_mode)

        self.market = Market(self.transport, db)

        # UNUSED
        # def post_joined():
        #     self.transport.dht._refreshNode()
        #     self.market.republish_contracts()

        peers = seed_peers if seed_mode == 0 else []
        self.transport.join_network(peers)

        Thread(target=reactor.run, args=(False, )).start()

        handlers = [(r"/", MainHandler), (r"/main", MainHandler),
                    (r"/html/(.*)", OpenBazaarStaticHandler, {
                        'path': './html'
                    }),
                    (r"/ws", WebSocketHandler,
                     dict(transport=self.transport,
                          market_application=self,
                          db=db))]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        tornado.web.Application.__init__(self, handlers, **settings)
Пример #4
0
    def __init__(self, market_ip, market_port, market_id=1,
                 bm_user=None, bm_pass=None, bm_port=None, seed_peers=None,
                 seed_mode=0, dev_mode=False, db_path='db/ob.db', disable_sqlite_crypt=False, disable_ip_update=False):
        if seed_peers is None:
            seed_peers = []

        db = Obdb(db_path, disable_sqlite_crypt)

        self.transport = CryptoTransportLayer(market_ip,
                                              market_port,
                                              market_id,
                                              db,
                                              bm_user,
                                              bm_pass,
                                              bm_port,
                                              seed_mode,
                                              dev_mode,
                                              disable_ip_update)

        self.market = Market(self.transport, db)

        # UNUSED
        # def post_joined():
        #     self.transport.dht._refreshNode()
        #     self.market.republish_contracts()

        peers = seed_peers if seed_mode == 0 else []
        self.transport.join_network(peers)

        Thread(target=reactor.run, args=(False,)).start()

        handlers = [
            (r"/", MainHandler),
            (r"/main", MainHandler),
            (r"/html/(.*)", OpenBazaarStaticHandler, {'path': './html'}),
            (r"/ws", WebSocketHandler,
                dict(transport=self.transport, market_application=self, db=db))
        ]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        tornado.web.Application.__init__(self, handlers, **settings)
Пример #5
0
class MarketApplication(tornado.web.Application):
    def __init__(self, market_ip, market_port, market_id=1,
                 bm_user=None, bm_pass=None, bm_port=None, seed_peers=[],
                 seed_mode=0, dev_mode=False, db_path='db/ob.db'):

        db = Obdb(db_path)

        self.transport = CryptoTransportLayer(market_ip,
                                              market_port,
                                              market_id,
                                              db,
                                              bm_user,
                                              bm_pass,
                                              bm_port,
                                              seed_mode,
                                              dev_mode)

        self.market = Market(self.transport, db)

        def post_joined():
            self.transport.dht._refreshNode()
            self.market.republish_contracts()

        peers = seed_peers if seed_mode == 0 else []
        self.transport.join_network(peers)

        Thread(target=reactor.run, args=(False,)).start()

        handlers = [
            (r"/", MainHandler),
            (r"/main", MainHandler),
            (r"/html/(.*)", OpenBazaarStaticHandler, {'path': './html'}),
            (r"/ws", WebSocketHandler,
                dict(transport=self.transport, market_application=self, db=db))
        ]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        tornado.web.Application.__init__(self, handlers, **settings)

    def get_transport(self):
        return self.transport

    def setup_upnp_port_mappings(self, http_port, p2p_port):
        upnp.PortMapper.DEBUG = False
        print "Setting up UPnP Port Map Entry..."
        # TODO: Add some setting whether or not to use UPnP
        # if Settings.get(Settings.USE_UPNP_PORT_MAPPINGS):
        self.upnp_mapper = upnp.PortMapper()
        # TODO: Add some setting whether or not to clean all previous port
        # mappings left behind by us
        # if Settings.get(Settings.CLEAN_UPNP_PORT_MAPPINGS_ON_START):
        #    upnp_mapper.cleanMyMappings()

        # for now let's always clean mappings every time.
        self.upnp_mapper.clean_my_mappings()
        # result_http_port_mapping = self.upnp_mapper.add_port_mapping(http_port,
        #                                                             http_port)
        # print ("UPnP HTTP Port Map configuration done (%s -> %s) => %s" %
        #        (str(http_port), str(http_port), str(result_http_port_mapping)))

        result_tcp_p2p_mapping = self.upnp_mapper.add_port_mapping(p2p_port,
                                                                   p2p_port)
        print ("UPnP TCP P2P Port Map configuration done (%s -> %s) => %s" %
               (str(p2p_port), str(p2p_port), str(result_tcp_p2p_mapping)))

        result_udp_p2p_mapping = self.upnp_mapper.add_port_mapping(p2p_port,
                                                                   p2p_port,
                                                                   'UDP')
        print ("UPnP UDP P2P Port Map configuration done (%s -> %s) => %s" %
               (str(p2p_port), str(p2p_port), str(result_udp_p2p_mapping)))

        result = result_tcp_p2p_mapping and result_udp_p2p_mapping
        if not result:
            print("Warning: UPnP was not setup correctly. Try doing a port forward on %s and start the node again with -j" % p2p_port)

        return result

    def cleanup_upnp_port_mapping(self):
        try:
            if self.upnp_mapper is not None:
                print "Cleaning UPnP Port Mapping -> ", \
                    self.upnp_mapper.clean_my_mappings()
        except AttributeError:
            print "[openbazaar] MarketApplication.clean_upnp_port_mapping() failed!"
            pass

    def shutdown(self, x=None, y=None):
        print "MarketApplication.shutdown!"
        locallogger = logging.getLogger('[%s] %s' % (self.market.market_id, 'root'))
        locallogger.info("Received TERMINATE, exiting...")

        # application.get_transport().broadcast_goodbye()
        self.cleanup_upnp_port_mapping()
        tornado.ioloop.IOLoop.instance().stop()

        self.transport.shutdown()
        os._exit(0)
Пример #6
0
class MarketApplication(tornado.web.Application):
    def __init__(self, ob_ctx):
        self.shutdown_mutex = Lock()
        self.ob_ctx = ob_ctx
        db = Obdb(ob_ctx.db_path, ob_ctx.disable_sqlite_crypt)
        self.transport = CryptoTransportLayer(ob_ctx, db)
        self.market = Market(self.transport, db)
        self.upnp_mapper = None
        
        print" alvaro init"

        Thread(target=reactor.run, args=(False,)).start()

        peers = ob_ctx.seeds if not ob_ctx.seed_mode else []
        self.transport.join_network(peers)

        handlers = [
            (r"/", MainHandler),
            (r"/main", MainHandler),
            (r"/html/(.*)", OpenBazaarStaticHandler, {'path': './html'}),
            (r"/ws", WebSocketHandler,
             dict(transport=self.transport, market_application=self, db=db))
        ]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        super(MarketApplication, self).__init__(handlers, **settings)

    def start_app(self):
        # If self.ob_ctx.http_port is 0, the kernel is queried for a port.
        sockets = tornado.netutil.bind_sockets(
            self.ob_ctx.http_port,
            address=self.ob_ctx.http_ip
        )
        server = tornado.httpserver.HTTPServer(self)
        server.add_sockets(sockets)

        self.ob_ctx.http_port = sockets[0].getsockname()[1]

        if not self.ob_ctx.disable_upnp:
            self.setup_upnp_port_mappings(self.ob_ctx.server_port)
        else:
            print "MarketApplication.start_app(): Disabling upnp setup"
            print "alvaro"

    def get_transport(self):
        return self.transport

    def setup_upnp_port_mappings(self, p2p_port):
        result = False

        if not self.ob_ctx.disable_upnp:
            upnp.PortMapper.DEBUG = False
            print "Setting up UPnP Port Map Entry..."
            self.upnp_mapper = upnp.PortMapper()
            self.upnp_mapper.clean_my_mappings(p2p_port)

            result_tcp_p2p_mapping = self.upnp_mapper.add_port_mapping(
                p2p_port, p2p_port
            )
            print "UPnP TCP P2P Port Map configuration done ",
            print "(%s -> %s) => %s" % (
                p2p_port, p2p_port, result_tcp_p2p_mapping
            )

            result_udp_p2p_mapping = self.upnp_mapper.add_port_mapping(
                p2p_port, p2p_port, 'UDP'
            )
            print "UPnP UDP P2P Port Map configuration done ",
            print "(%s -> %s) => %s" % (
                p2p_port, p2p_port, result_udp_p2p_mapping
            )

            result = result_tcp_p2p_mapping and result_udp_p2p_mapping
            if not result:
                print "Warning: UPnP was not setup correctly. ",
                print "Ports could not be automatically mapped."

        return result

    def cleanup_upnp_port_mapping(self):
        if not self.ob_ctx.disable_upnp:
            try:
                if self.upnp_mapper is not None:
                    print "Cleaning UPnP Port Mapping -> ", \
                        self.upnp_mapper.clean_my_mappings(self.transport.port)
            except AttributeError:
                print (
                    "[openbazaar] "
                    "MarketApplication.clean_upnp_port_mapping() failed!"
                )

    def shutdown(self, x=None, y=None):
        self.shutdown_mutex.acquire()
        print "MarketApplication.shutdown!"
        log = logging.getLogger(
            '[%s] %s' % (self.market.market_id, 'root')
        )
        log.info("Received TERMINATE, exiting...")

        self.cleanup_upnp_port_mapping()
        tornado.ioloop.IOLoop.instance().stop()

        self.transport.shutdown()
        self.shutdown_mutex.release()
        os._exit(0)
Пример #7
0
class MarketApplication(tornado.web.Application):
    def __init__(self, ob_ctx):
        self.shutdown_mutex = Lock()
        self.ob_ctx = ob_ctx
        db = Obdb(ob_ctx.db_path, ob_ctx.disable_sqlite_crypt)
        self.transport = CryptoTransportLayer(ob_ctx, db)
        self.market = Market(self.transport, db)
        self.upnp_mapper = None

        Thread(target=reactor.run, args=(False, )).start()

        peers = ob_ctx.seeds if not ob_ctx.seed_mode else []
        self.transport.join_network(peers)

        handlers = [(r"/", MainHandler), (r"/main", MainHandler),
                    (r"/html/(.*)", OpenBazaarStaticHandler, {
                        'path': './html'
                    }),
                    (r"/ws", WebSocketHandler,
                     dict(transport=self.transport,
                          market_application=self,
                          db=db))]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        super(MarketApplication, self).__init__(handlers, **settings)

    def start_app(self):
        # If self.ob_ctx.http_port is 0, the kernel is queried for a port.
        sockets = tornado.netutil.bind_sockets(self.ob_ctx.http_port,
                                               address=self.ob_ctx.http_ip)
        server = tornado.httpserver.HTTPServer(self)
        server.add_sockets(sockets)

        self.ob_ctx.http_port = sockets[0].getsockname()[1]

        if not self.ob_ctx.disable_upnp:
            self.setup_upnp_port_mappings(self.ob_ctx.server_port)
        else:
            print "MarketApplication.start_app(): Disabling upnp setup"

    def get_transport(self):
        return self.transport

    def setup_upnp_port_mappings(self, p2p_port):
        result = False

        if not self.ob_ctx.disable_upnp:
            upnp.PortMapper.DEBUG = False
            print "Setting up UPnP Port Map Entry..."
            self.upnp_mapper = upnp.PortMapper()
            self.upnp_mapper.clean_my_mappings(p2p_port)

            result_tcp_p2p_mapping = self.upnp_mapper.add_port_mapping(
                p2p_port, p2p_port)
            print "UPnP TCP P2P Port Map configuration done ",
            print "(%s -> %s) => %s" % (p2p_port, p2p_port,
                                        result_tcp_p2p_mapping)

            result_udp_p2p_mapping = self.upnp_mapper.add_port_mapping(
                p2p_port, p2p_port, 'UDP')
            print "UPnP UDP P2P Port Map configuration done ",
            print "(%s -> %s) => %s" % (p2p_port, p2p_port,
                                        result_udp_p2p_mapping)

            result = result_tcp_p2p_mapping and result_udp_p2p_mapping
            if not result:
                print "Warning: UPnP was not setup correctly. ",
                print "Ports could not be automatically mapped."

        return result

    def cleanup_upnp_port_mapping(self):
        if not self.ob_ctx.disable_upnp:
            try:
                if self.upnp_mapper is not None:
                    print "Cleaning UPnP Port Mapping -> ", \
                        self.upnp_mapper.clean_my_mappings(self.transport.port)
            except AttributeError:
                print(
                    "[openbazaar] "
                    "MarketApplication.clean_upnp_port_mapping() failed!")

    def shutdown(self, x=None, y=None):
        self.shutdown_mutex.acquire()
        print "MarketApplication.shutdown!"
        log = logging.getLogger('[%s] %s' % (self.market.market_id, 'root'))
        log.info("Received TERMINATE, exiting...")

        self.cleanup_upnp_port_mapping()
        tornado.ioloop.IOLoop.instance().stop()

        self.transport.shutdown()
        self.shutdown_mutex.release()
        os._exit(0)
Пример #8
0
class MarketApplication(tornado.web.Application):
    def __init__(self, market_ip, market_port, market_id=1,
                 bm_user=None, bm_pass=None, bm_port=None, seed_peers=None,
                 seed_mode=0, dev_mode=False, db_path='db/ob.db', disable_sqlite_crypt=False, disable_ip_update=False):
        if seed_peers is None:
            seed_peers = []

        db = Obdb(db_path, disable_sqlite_crypt)

        self.transport = CryptoTransportLayer(market_ip,
                                              market_port,
                                              market_id,
                                              db,
                                              bm_user,
                                              bm_pass,
                                              bm_port,
                                              seed_mode,
                                              dev_mode,
                                              disable_ip_update)

        self.market = Market(self.transport, db)

        # UNUSED
        # def post_joined():
        #     self.transport.dht._refreshNode()
        #     self.market.republish_contracts()

        peers = seed_peers if seed_mode == 0 else []
        self.transport.join_network(peers)

        Thread(target=reactor.run, args=(False,)).start()

        handlers = [
            (r"/", MainHandler),
            (r"/main", MainHandler),
            (r"/html/(.*)", OpenBazaarStaticHandler, {'path': './html'}),
            (r"/ws", WebSocketHandler,
                dict(transport=self.transport, market_application=self, db=db))
        ]

        # TODO: Move debug settings to configuration location
        settings = dict(debug=True)
        tornado.web.Application.__init__(self, handlers, **settings)

    def get_transport(self):
        return self.transport

    def setup_upnp_port_mappings(self, http_port, p2p_port):
        upnp.PortMapper.DEBUG = False
        print "Setting up UPnP Port Map Entry..."
        # TODO: Add some setting whether or not to use UPnP
        # if Settings.get(Settings.USE_UPNP_PORT_MAPPINGS):
        self.upnp_mapper = upnp.PortMapper()
        # TODO: Add some setting whether or not to clean all previous port
        # mappings left behind by us
        # if Settings.get(Settings.CLEAN_UPNP_PORT_MAPPINGS_ON_START):
        #    upnp_mapper.cleanMyMappings()

        # for now let's always clean mappings every time.
        self.upnp_mapper.clean_my_mappings(p2p_port)
        # result_http_port_mapping = self.upnp_mapper.add_port_mapping(http_port,
        #                                                             http_port)
        # print ("UPnP HTTP Port Map configuration done (%s -> %s) => %s" %
        #        (str(http_port), str(http_port), str(result_http_port_mapping)))

        result_tcp_p2p_mapping = self.upnp_mapper.add_port_mapping(p2p_port,
                                                                   p2p_port)
        print ("UPnP TCP P2P Port Map configuration done (%s -> %s) => %s" %
               (str(p2p_port), str(p2p_port), str(result_tcp_p2p_mapping)))

        result_udp_p2p_mapping = self.upnp_mapper.add_port_mapping(p2p_port,
                                                                   p2p_port,
                                                                   'UDP')
        print ("UPnP UDP P2P Port Map configuration done (%s -> %s) => %s" %
               (str(p2p_port), str(p2p_port), str(result_udp_p2p_mapping)))

        result = result_tcp_p2p_mapping and result_udp_p2p_mapping
        if not result:
            print "Warning: UPnP was not setup correctly. Try doing a port forward on %s and start the node again with -j" % p2p_port

        return result

    def cleanup_upnp_port_mapping(self):
        try:
            if self.upnp_mapper is not None:
                print "Cleaning UPnP Port Mapping -> ", \
                    self.upnp_mapper.clean_my_mappings(self.transport.port)
        except AttributeError:
            print "[openbazaar] MarketApplication.clean_upnp_port_mapping() failed!"

    def shutdown(self, x=None, y=None):
        print "MarketApplication.shutdown!"
        locallogger = logging.getLogger(
            '[%s] %s' % (self.market.market_id, 'root')
        )
        locallogger.info("Received TERMINATE, exiting...")

        # application.get_transport().broadcast_goodbye()
        self.cleanup_upnp_port_mapping()
        tornado.ioloop.IOLoop.instance().stop()

        self.transport.shutdown()
        os._exit(0)