Пример #1
0
def start(arguments):
    defaults = OpenBazaarContext.get_defaults()
    network_util.set_stun_servers()

    # Turn off checks that don't make sense in development mode
    if arguments.dev_mode:
        print "DEVELOPMENT MODE! (Disable STUN check and UPnP mappings)"
        arguments.disable_stun_check = True
        arguments.disable_upnp = True

    # Try to get NAT escape UDP port
    nat_status = None
    if not arguments.disable_stun_check:
        print "Checking NAT Status..."
        nat_status = network_util.get_NAT_status()
    elif not arguments.dev_mode and network_util.is_private_ip_address(arguments.server_ip):
        print "openbazaar: Could not start. The given/default server IP address",
        print arguments.server_ip, "is not a public ip address."
        print "(Try './openbazaar help' and read about the '--server-ip', '-i' options)"
        sys.exit(1)

    ob_ctxs = create_openbazaar_contexts(arguments, nat_status)

    for ob_ctx in ob_ctxs:
        ensure_database_setup(ob_ctx, defaults)

    if hasattr(sys, "frozen"):
        start_node(ob_ctxs[0])
    else:
        p = multiprocessing.Process(target=node_starter, args=(ob_ctxs,))
        p.start()
Пример #2
0
def start(arguments):
    defaults = OpenBazaarContext.get_defaults()
    network_util.set_stun_servers()

    # Turn off checks that don't make sense in development mode
    if arguments.dev_mode:
        print "DEVELOPMENT MODE! (Disable STUN check and UPnP mappings)"
        arguments.disable_stun_check = True
        arguments.disable_upnp = True

    # Try to get NAT escape UDP port
    nat_status = None
    if not arguments.disable_stun_check:
        print "Checking NAT Status..."
        nat_status = network_util.get_NAT_status()
    elif not arguments.dev_mode and network_util.is_private_ip_address(arguments.server_ip):
        print "openbazaar: Could not start. The given/default server IP address",
        print arguments.server_ip, "is not a public ip address."
        print "(Try './openbazaar help' and read about the '--server-ip', '-i' options)"
        sys.exit(1)

    ob_ctxs = create_openbazaar_contexts(arguments, nat_status)

    for ob_ctx in ob_ctxs:
        ensure_database_setup(ob_ctx, defaults)

    if hasattr(sys, 'frozen'):
        start_node(ob_ctxs[0])
    else:
        p = multiprocessing.Process(target=node_starter,
                                    args=(ob_ctxs,))
        p.start()
Пример #3
0
def create_argument_parser():
    defaults = OpenBazaarContext.get_defaults()
    default_db_path = os.path.join(defaults['db_dir'], defaults['db_file'])
    default_log_path = os.path.join(defaults['log_dir'], defaults['log_file'])

    parser = argparse.ArgumentParser(
        description='OpenBazaar launcher script',
        usage=usage(),
        add_help=False
    )

    # Argument entries should have the mandatory long form first.
    plain_args = (
        ('--bm-pass',),
        ('--bm-user',),
        ('--config-file',),
        ('--http-ip', '-k'),
        ('--log-level',),
        ('--market-id', '-u'),
        ('--server-ip', '-i')
    )
    for switches in plain_args:
        key = arg_to_key(switches[0])
        parser.add_argument(*switches, default=defaults[key])

    int_args = (
        ('--bm-port',),
        ('--dev-nodes', '-n'),
        ('--http-port', '-q'),
        ('--server-port', '-p')
    )
    for switches in int_args:
        key = arg_to_key(switches[0])
        parser.add_argument(*switches, type=int, default=defaults[key])

    flags = (
        ('--dev-mode', '-d'),
        ('--disable-open-browser',),
        ('--disable-sqlite-crypt',),
        ('--disable-stun-check',),
        ('--disable-upnp', '-j'),
        ('--enable-ip-checker',),
        ('--seed-mode', '-S')
    )
    for switches in flags:
        key = arg_to_key(switches[0])
        parser.add_argument(
            *switches, action='store_true', default=defaults[key]
        )

    # Add miscellaneous flags.
    parser.add_argument('-s', '--seeds', nargs='*', default=defaults['seeds'])
    parser.add_argument('--db-path', default=default_db_path)
    parser.add_argument('-l', '--log', default=default_log_path)

    # Add valid commands.
    parser.add_argument('command', choices=('start', 'stop', 'help'))

    return parser
Пример #4
0
def create_argument_parser():
    defaults = OpenBazaarContext.get_defaults()
    default_db_path = os.path.join(defaults["db_dir"], defaults["db_file"])
    default_log_path = os.path.join(defaults["log_dir"], defaults["log_file"])

    parser = argparse.ArgumentParser(description="OpenBazaar launcher script", usage=usage(), add_help=False)

    # Argument entries should have the mandatory long form first.
    plain_args = (
        ("--bm-pass",),
        ("--bm-user",),
        ("--config-file",),
        ("--http-ip", "-k"),
        ("--log-level",),
        ("--market-id", "-u"),
        ("--server-ip", "-i"),
    )
    for switches in plain_args:
        key = arg_to_key(switches[0])
        parser.add_argument(*switches, default=defaults[key])

    int_args = (("--bm-port",), ("--dev-nodes", "-n"), ("--http-port", "-q"), ("--server-port", "-p"))
    for switches in int_args:
        key = arg_to_key(switches[0])
        parser.add_argument(*switches, type=int, default=defaults[key])

    flags = (
        ("--dev-mode", "-d"),
        ("--disable-open-browser",),
        ("--disable-sqlite-crypt",),
        ("--disable-stun-check",),
        ("--disable-upnp", "-j"),
        ("--enable-ip-checker",),
        ("--seed-mode", "-S"),
    )
    for switches in flags:
        key = arg_to_key(switches[0])
        parser.add_argument(*switches, action="store_true", default=defaults[key])

    # Add miscellaneous flags.
    parser.add_argument("-s", "--seeds", nargs="*", default=defaults["seeds"])
    parser.add_argument("--db-path", default=default_db_path)
    parser.add_argument("-l", "--log", default=default_log_path)

    # Add valid commands.
    parser.add_argument("command", choices=("start", "stop", "help"))

    return parser
Пример #5
0
def create_openbazaar_contexts(arguments, nat_status):
    """
    Returns List<OpenBazaarContext>.

    If we are on production mode, the list will contain a
    single OpenBazaarContext object based on the arguments passed.

    If a configuration file is passed, settings from the configuration
    file will be read first, and whatever other parameters have been
    passed via the command line will override the settings on the
    configuration file.
    :rtype : list of [OpenBazaarContext]
    """
    defaults = OpenBazaarContext.get_defaults()

    server_ip = arguments.server_ip

    # "I'll purposefully leave these seemingly useless Schlemiel-styled
    # comments as visual separators to denote the beginning and end of
    # these ifs statements. They're actually nice to have when maintaining
    # so many ifs blocks. Feel free to remove post merge if they truly
    # annoy you." -Gubatron :)

    # market port
    server_port = arguments.server_port

    if nat_status is not None:
        # unless --disable-stun-check has been passed
        # override the server ip and port for p2p communications with the ones
        # obtained from the STUN server.
        print nat_status
        server_ip = nat_status["external_ip"]
        server_port = nat_status["external_port"]

    # log path (requires log_dir to exist)
    if not os.path.exists(defaults["log_dir"]):
        os.makedirs(defaults["log_dir"], 0755)

    # log path (requires LOG_DIR to exist)
    if not os.path.exists(defaults["log_dir"]):
        os.makedirs(defaults["log_dir"], 0755)

    # db path
    if not os.path.exists(defaults["db_dir"]):
        os.makedirs(defaults["db_dir"], 0755)

    db_path = os.path.join(defaults["db_dir"], defaults["db_file"])
    if arguments.db_path != db_path:
        db_path = arguments.db_path

    ob_ctxs = []

    if not arguments.dev_mode:

        log_file = defaults["log_file"]

        log_path = os.path.join(defaults["log_dir"], log_file)
        if arguments.log != log_path:
            log_path = arguments.log

        # we return a list of a single element, a production node.
        ob_ctxs.append(
            OpenBazaarContext(
                nat_status,
                server_ip,
                server_port,
                arguments.http_ip,
                arguments.http_port,
                db_path,
                log_path,
                arguments.log_level,
                arguments.market_id,
                arguments.bm_user,
                arguments.bm_pass,
                arguments.bm_port,
                arguments.seeds,
                arguments.seed_mode,
                arguments.dev_mode,
                arguments.dev_nodes,
                arguments.disable_upnp,
                arguments.disable_stun_check,
                arguments.disable_open_browser,
                arguments.disable_sqlite_crypt,
                arguments.enable_ip_checker,
            )
        )
    else:
        # Create an OpenBazaarContext object for each development node.
        db_path = os.path.join(defaults["db_dir"], "this_will_be_ignored")
        db_dirname = os.path.dirname(db_path)

        for i in range(arguments.dev_nodes):
            db_dev_filename = defaults["dev_db_file"].format(i)
            db_path = os.path.join(db_dirname, db_dev_filename)

            log_file = defaults["dev_log_file"]
            dev_log_file = log_file.format(i)
            log_path = os.path.join(defaults["log_dir"], dev_log_file)

            if i:
                seed_mode = False
                seeds = ["localhost"]
            else:
                seed_mode = True
                seeds = []

            ob_ctxs.append(
                OpenBazaarContext(
                    nat_status,
                    server_ip,
                    server_port + i,
                    arguments.http_ip,
                    arguments.http_port,
                    db_path,
                    log_path,
                    arguments.log_level,
                    arguments.market_id,
                    arguments.bm_user,
                    arguments.bm_pass,
                    arguments.bm_port,
                    seeds,
                    seed_mode,
                    arguments.dev_mode,
                    arguments.dev_nodes,
                    arguments.disable_upnp,
                    arguments.disable_stun_check,
                    arguments.disable_open_browser,
                    arguments.disable_sqlite_crypt,
                    arguments.enable_ip_checker,
                )
            )
    return ob_ctxs
Пример #6
0
def create_openbazaar_contexts(arguments, nat_status):
    """
    Returns List<OpenBazaarContext>.

    If we are on production mode, the list will contain a
    single OpenBazaarContext object based on the arguments passed.

    If a configuration file is passed, settings from the configuration
    file will be read first, and whatever other parameters have been
    passed via the command line will override the settings on the
    configuration file.
    :rtype : list of [OpenBazaarContext]
    """
    defaults = OpenBazaarContext.get_defaults()

    server_ip = arguments.server_ip

    # "I'll purposefully leave these seemingly useless Schlemiel-styled
    # comments as visual separators to denote the beginning and end of
    # these ifs statements. They're actually nice to have when maintaining
    # so many ifs blocks. Feel free to remove post merge if they truly
    # annoy you." -Gubatron :)

    # market port
    server_port = arguments.server_port

    if nat_status is not None:
        # unless --disable-stun-check has been passed
        # override the server ip and port for p2p communications with the ones
        # obtained from the STUN server.
        print nat_status
        server_ip = nat_status['external_ip']
        server_port = nat_status['external_port']

    # log path (requires log_dir to exist)
    if not os.path.exists(defaults['log_dir']):
        os.makedirs(defaults['log_dir'], 0755)

    # log path (requires LOG_DIR to exist)
    if not os.path.exists(defaults['log_dir']):
        os.makedirs(defaults['log_dir'], 0755)

    # db path
    if not os.path.exists(defaults['db_dir']):
        os.makedirs(defaults['db_dir'], 0755)

    db_path = os.path.join(defaults['db_dir'], defaults['db_file'])
    if arguments.db_path != db_path:
        db_path = arguments.db_path

    ob_ctxs = []

    if not arguments.dev_mode:

        log_file = defaults['log_file']

        log_path = os.path.join(defaults['log_dir'], log_file)
        if arguments.log != log_path:
            log_path = arguments.log

        # we return a list of a single element, a production node.
        ob_ctxs.append(OpenBazaarContext(nat_status,
                                         server_ip,
                                         server_port,
                                         arguments.http_ip,
                                         arguments.http_port,
                                         db_path,
                                         log_path,
                                         arguments.log_level,
                                         arguments.market_id,
                                         arguments.bm_user,
                                         arguments.bm_pass,
                                         arguments.bm_port,
                                         arguments.seeds,
                                         arguments.seed_mode,
                                         arguments.dev_mode,
                                         arguments.dev_nodes,
                                         arguments.disable_upnp,
                                         arguments.disable_stun_check,
                                         arguments.disable_open_browser,
                                         arguments.disable_sqlite_crypt,
                                         arguments.enable_ip_checker))
    else:
        # Create an OpenBazaarContext object for each development node.
        db_path = os.path.join(defaults['db_dir'], 'this_will_be_ignored')
        db_dirname = os.path.dirname(db_path)

        for i in range(arguments.dev_nodes):
            db_dev_filename = defaults['dev_db_file'].format(i)
            db_path = os.path.join(db_dirname, db_dev_filename)

            log_file = defaults['dev_log_file']
            dev_log_file = log_file.format(i)
            log_path = os.path.join(defaults['log_dir'], dev_log_file)

            if i:
                seed_mode = False
                seeds = ['localhost']
            else:
                seed_mode = True
                seeds = []

            ob_ctxs.append(OpenBazaarContext(nat_status,
                                             server_ip,
                                             server_port + i,
                                             arguments.http_ip,
                                             arguments.http_port,
                                             db_path,
                                             log_path,
                                             arguments.log_level,
                                             arguments.market_id,
                                             arguments.bm_user,
                                             arguments.bm_pass,
                                             arguments.bm_port,
                                             seeds,
                                             seed_mode,
                                             arguments.dev_mode,
                                             arguments.dev_nodes,
                                             arguments.disable_upnp,
                                             arguments.disable_stun_check,
                                             arguments.disable_open_browser,
                                             arguments.disable_sqlite_crypt,
                                             arguments.enable_ip_checker))
    return ob_ctxs