From 52214407eead7eaeaebcddf39cab32d3a820e9b9 Mon Sep 17 00:00:00 2001 From: Ouziel Slama Date: Wed, 20 Mar 2024 10:43:11 +0100 Subject: [PATCH] Welcome message with more info --- counterparty-cli/counterpartycli/server.py | 44 +++++++++++++++++----- counterparty-cli/counterpartycli/setup.py | 1 + counterparty-lib/counterpartylib/server.py | 26 +++++++++++-- 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/counterparty-cli/counterpartycli/server.py b/counterparty-cli/counterpartycli/server.py index f49a0d1811..b75e60cb99 100755 --- a/counterparty-cli/counterpartycli/server.py +++ b/counterparty-cli/counterpartycli/server.py @@ -3,6 +3,7 @@ import os import argparse import logging +from urllib.parse import quote_plus as urlencode from termcolor import cprint @@ -58,19 +59,48 @@ [('--utxo-locks-max-age',), {'type': int, 'default': config.DEFAULT_UTXO_LOCKS_MAX_AGE, 'help': 'how long to keep a lock on a UTXO being tracked'}], ] +def welcome_message(action, server_configfile): + cprint(f'Running v{config.__version__} of {config.FULL_APP_NAME}.', 'magenta') + + # print some info + cprint(f"Configuration file: {server_configfile}", 'light_grey') + cprint(f"Counterparty database: {config.DATABASE}", 'light_grey') + if config.LOG: + cprint(f'Writing log to file: `{config.LOG}`', 'light_grey') + else: + cprint('Warning: log disabled', 'yellow') + if config.API_LOG: + cprint(f'Writing API accesses log to file: `{config.API_LOG}`', 'light_grey') + else: + cprint('Warning: API log disabled', 'yellow') + + if config.VERBOSE: + if config.TESTNET: + cprint('NETWORK: Testnet', 'light_grey') + elif config.REGTEST: + cprint('NETWORK: Regtest', 'light_grey') + else: + cprint('NETWORK: Mainnet', 'light_grey') + + pass_str = f":{urlencode(config.BACKEND_PASSWORD)}@" + cprint(f'BACKEND_URL: {config.BACKEND_URL.replace(pass_str, ":*****@")}', 'light_grey') + cprint(f'INDEXD_URL: {config.INDEXD_URL}', 'light_grey') + pass_str = f":{urlencode(config.RPC_PASSWORD)}@" + cprint(f'RPC: {config.RPC.replace(pass_str, ":*****@")}', 'light_grey') + + cprint(f"{'-' * 30} {action} {'-' * 30}\n", 'green') + exit() class VersionError(Exception): pass def main(): - cprint(f'Running v{config.__version__} of {config.FULL_APP_NAME}.', 'magenta') - if os.name == 'nt': from counterpartylib.lib import util_windows #patch up cmd.exe's "challenged" (i.e. broken/non-existent) UTF-8 logging util_windows.fix_win32_unicode() # Post installation tasks - generate_config_files() + server_configfile = generate_config_files() # Parse command-line arguments. parser = argparse.ArgumentParser( @@ -163,14 +193,10 @@ def main(): log_file=config.LOG, log_in_console=args.action == 'start' ) + logger.info(f'Running v{APP_VERSION} of {APP_NAME}.') - # print some info - if config.LOG: - cprint(f'Writing log to file: `{config.LOG}`', 'light_grey') - if args.action == 'start' and config.API_LOG: - cprint(f'Writing API accesses log to file: `{config.API_LOG}`', 'light_grey') - cprint(f"{'-' * 30} {args.action} {'-' * 30}\n", 'green') + welcome_message(args.action, server_configfile) # Bootstrapping if args.action == 'bootstrap': diff --git a/counterparty-cli/counterpartycli/setup.py b/counterparty-cli/counterpartycli/setup.py index 00b5a4e371..1ddcdf02ef 100644 --- a/counterparty-cli/counterpartycli/setup.py +++ b/counterparty-cli/counterpartycli/setup.py @@ -156,6 +156,7 @@ def generate_config_files(): if not os.path.exists(client_configfile): client_known_config = server_to_client_config(server_known_config) generate_config_file(client_configfile, CLIENT_CONFIG_ARGS, client_known_config) + return server_configfile def zip_folder(folder_path, zip_path): zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) diff --git a/counterparty-lib/counterpartylib/server.py b/counterparty-lib/counterpartylib/server.py index 87d5b16403..53a1ad37fc 100755 --- a/counterparty-lib/counterpartylib/server.py +++ b/counterparty-lib/counterpartylib/server.py @@ -140,10 +140,13 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, no_l if config.TESTNET: bitcoinlib.SelectParams('testnet') + logger.debug('NETWORK: testnet') elif config.REGTEST: bitcoinlib.SelectParams('regtest') + logger.debug('NETWORK: regtest') else: bitcoinlib.SelectParams('mainnet') + logger.debug('NETWORK: mainnet') network = '' if config.TESTNET: @@ -160,11 +163,20 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, no_l filename = f'{config.APP_NAME}{network}.db' config.DATABASE = os.path.join(data_dir, filename) + logger.debug('DATABASE: %s', config.DATABASE) + # Log directory log_dir = appdirs.user_log_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME) if not os.path.isdir(log_dir): os.makedirs(log_dir, mode=0o755) + # Set up logging. + config.VERBOSE = verbose + config.QUIET = quiet + + logger.debug('VERBOSE: %s', config.VERBOSE) + logger.debug('QUIET: %s', config.QUIET) + # Log if no_log_files: config.LOG = None @@ -173,10 +185,8 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, no_l config.LOG = os.path.join(log_dir, filename) else: # user-specified location config.LOG = log_file - - # Set up logging. - config.VERBOSE = verbose - config.QUIET = quiet + + logger.debug('LOG: %s', config.LOG) if no_log_files: # no file logging config.API_LOG = None @@ -186,6 +196,8 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, no_l else: # user-specified location config.API_LOG = api_log_file + logger.debug('API_LOG: %s', config.API_LOG) + config.API_LIMIT_ROWS = api_limit_rows ############## @@ -258,6 +270,8 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, no_l config.BACKEND_URL = 'https://' + config.BACKEND_URL else: config.BACKEND_URL = 'http://' + config.BACKEND_URL + + logger.debug('BACKEND_URL: %s', config.BACKEND_URL.replace(f':{config.BACKEND_PASSWORD}@', ':*****@')) # Indexd RPC host if indexd_connect: @@ -286,6 +300,8 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, no_l # Construct Indexd URL. config.INDEXD_URL = 'http://' + config.INDEXD_CONNECT + ':' + str(config.INDEXD_PORT) + logger.debug('INDEXD_URL: %s', config.INDEXD_URL) + ############## # THINGS WE SERVE @@ -572,6 +588,8 @@ def configure_rpc(rpc_password=None): else: config.RPC = 'http://' + config.RPC_HOST + ':' + str(config.RPC_PORT) + config.RPC_WEBROOT + logger.debug('RPC: %s', config.RPC.replace(f':{urlencode(config.RPC_PASSWORD)}@', ':*****@')) + def bootstrap(): data_dir = appdirs.user_data_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True)