class ServerConfig(Config): enabled = key(cast=bool, required=False, default=True) host = key(cast=str, required=False, default=DEFAULT_SERVER_RPC_HOST) port = key(cast=int, required=False, default=0) external_address = key(cast=str, required=False, default="") external_port = key(cast=int, required=False, default=DEFAULT_EXTERNAL_PORT)
class WebadminConfig(Config): enabled = key(cast=bool, required=False, default=False) host = key(cast=str, required=False, default=DEFAULT_WEBADMIN_HOST) port = key(cast=int, required=False, default=DEFAULT_WEBADMIN_PORT) username = key(cast=str, required=False, default="") password = key(cast=str, required=False, default="") use_ssl = key(cast=bool, required=False, default=False) login_disabled = key(cast=bool, required=False, default=False) allow_cors = key(cast=bool, required=False, default=False)
class LightningConfig(Config): backend = key(cast=str, required=False, default=DEFAULT_LIGHTNING_BACKEND) external_host = key(cast=str, required=False, default="") external_port = key(cast=int, required=False, default=DEFAULT_LND_PORT) lnd_rpc_host = key(cast=str, required=False, default=DEFAULT_LND_RPC_HOST) lnd_rpc_port = key(cast=int, required=False, default=DEFAULT_LND_RPC_PORT) lnd_tls_cert_path = key(cast=str, required=False, default="") lnd_macaroon_path = key(cast=str, required=False, default="") clightning_rpc_file = key(cast=str, required=False, default=DEFAULT_CLIGHTNING_RPC_FILE)
class BitcoinConfig(Config): rpc_host = key(cast=str, required=False, default=DEFAULT_BITCOIN_RPC_HOST) rpc_port = key(cast=int, required=False, default=DEFAULT_BITCOIN_RPC_PORT) rpc_user = key(cast=str, required=False, default="") rpc_pass = key(cast=str, required=False, default="") rpc_use_ssl = key(cast=bool, required=False, default=False) rpc_ssl_cert = key(cast=str, required=False, default="") zeromq_hashblock_port = key(cast=int, required=False, default=DEFAULT_BITCOIN_ZEROMQ_HASHBLOCK_PORT)
class BitcoinConfig(Config): rpc_host = key(cast=str, required=False, default=DEFAULT_BITCOIN_RPC_HOST) rpc_port = key(cast=int, required=False, default=DEFAULT_BITCOIN_RPC_PORT) rpc_user = key(cast=str, required=False, default="") rpc_pass = key(cast=str, required=False, default="") rpc_use_ssl = key(cast=bool, required=False, default=False) rpc_ssl_cert = key(cast=str, required=False, default="")
class LndConfig(Config): host = key(cast=str, required=False, default=DEFAULT_LND_HOST) external_host = key(cast=str, required=False, default="") port = key(cast=int, required=False, default=DEFAULT_LND_PORT) rpc_port = key(cast=int, required=False, default=DEFAULT_LND_RPC_PORT) tls_cert_path = key(cast=str, required=False, default="") macaroon_path = key(cast=str, required=False, default="")
class MWDBConfig(Config): # PostgreSQL database URI postgres_uri = key(cast=str, required=True) # Flask secret key secret_key = key(cast=str, required=True) # Redis database URI redis_uri = key(cast=str, required=False, default=None) # Serve web application serve_web = key(cast=intbool, required=False, default=True) # Folder with web application files # (if not set: served from pre-built package bundle) web_folder = key(cast=path, required=False, default=None) # Base application URL, accessible for users base_url = key(cast=str, required=False, default="http://127.0.0.1") # Flask additional settings file (optional) flask_config_file = key(cast=path, required=False) # Which storage provider to use (options: disk or s3) storage_provider = key( cast=storage_provider_from_str, required=False, default="disk" ) # Folder for uploads uploads_folder = key(cast=path, required=False) # Should we break up the uploads into different folders for example: # uploads/9/f/8/6/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 hash_pathing = key(cast=intbool, required=False, default=True) # S3 compatible storage endpoint s3_storage_endpoint = key(cast=str, required=False) # Use TLS with S3 storage s3_storage_secure = key(cast=intbool, required=False, default=False) # S3 storage Access Key s3_storage_access_key = key(cast=str, required=False) # S3 storage Secret Key s3_storage_secret_key = key(cast=str, required=False) # S3 storage Region Name (For example, 'us-east-1') s3_storage_region_name = key(cast=str, required=False) # S3 storage Bucket Name s3_storage_bucket_name = key(cast=str, required=False) # S3 storage Authorize through IAM role (No credentials) s3_storage_iam_auth = key(cast=intbool, required=False) # Administrator account login admin_login = key(cast=str, required=False, default="admin") # Administrator account first password admin_password = key(cast=str, required=False) enable_plugins = key(cast=intbool, required=False, default=True) # List of plugin names to be loaded, separated by commas plugins = key(cast=list_of_str, required=False, default="") # Directory that will be added to sys.path for plugin imports # Allows to load local plugins without installing them in site-packages local_plugins_folder = key(cast=path, required=False, default=None) # Auto-discover plugins contained in local_plugins_folder local_plugins_autodiscover = key(cast=intbool, required=False, default=False) remotes = key(cast=list_of_str, required=False, default="") enable_rate_limit = key(cast=intbool, required=False, default=False) enable_registration = key(cast=intbool, required=False, default=False) enable_maintenance = key(cast=intbool, required=False, default=False) enable_hooks = key(cast=intbool, required=False, default=True) enable_karton = key(cast=intbool, required=False, default=False) # Feature flag: OIDC is under development enable_oidc = key(cast=intbool, required=False, default=False) mail_smtp = key(cast=str, required=False) mail_from = key(cast=str, required=False, default="noreply@mwdb") mail_templates_folder = key(cast=path, required=False, default=mail_templates_dir) mail_username = key(cast=str, required=False) mail_password = key(cast=str, required=False) mail_tls = key(cast=intbool, required=False, default=False) recaptcha_site_key = key(cast=str, required=False) recaptcha_secret = key(cast=str, required=False) enable_json_logger = key(cast=intbool, required=False, default=False)
class KartonConfig(Config): config_path = key(cast=str, required=False, default=None)
class DrakvufPluginConfig(Config): drakvuf_url = key(cast=str, required=True) timeout = key(cast=int, required=False, default=600)
class TorConfig(Config): proxy_ip = key(cast=str, required=False, default="") proxy_port = key(cast=int, required=False, default=0)
class TwitterConfig(Config): forward_tweets_retry_s = key(cast=int, required=False, default=DEFAULT_FORWARD_TWEETS_RETRY_S)
class DbConfig(Config): connection_string = key(cast=str, required=False, default="")
class NodeConfig(Config): network = key(cast=str, required=False, default=DEFAULT_NETWORK) price_msat = key(cast=int, required=False, default=DEFAULT_PRICE_MSAT) max_squeaks = key(cast=int, required=False, default=DEFAULT_MAX_SQUEAKS) max_squeaks_per_public_key_per_block = key( cast=int, required=False, default=DEFAULT_MAX_SQUEAKS_PER_PUBLIC_KEY_PER_BLOCK) sqk_dir_path = key(cast=str, required=False, default=DEFAULT_SQK_DIR_PATH) log_level = key(cast=str, required=False, default=DEFAULT_LOG_LEVEL) sent_offer_retention_s = key(cast=int, required=False, default=DEFAULT_SENT_OFFER_RETENTION_S) received_offer_retention_s = key( cast=int, required=False, default=DEFAULT_RECEIVED_OFFER_RETENTION_S) subscribe_invoices_retry_s = key( cast=int, required=False, default=DEFAULT_SUBSCRIBE_INVOICES_RETRY_S) squeak_retention_s = key(cast=int, required=False, default=DEFAULT_SQUEAK_RETENTION_S) squeak_deletion_interval_s = key( cast=int, required=False, default=DEFAULT_SQUEAK_DELETION_INTERVAL_S) offer_deletion_interval_s = key(cast=int, required=False, default=DEFAULT_OFFER_DELETION_INTERVAL_S) interest_block_interval = key(cast=int, required=False, default=DEFAULT_INTEREST_BLOCK_INTERVAL) peer_download_interval_s = key(cast=int, required=False, default=DEFAULT_PEER_DOWNLOAD_INTERVAL_S)
class RpcConfig(Config): enabled = key(cast=bool, required=False, default=False) host = key(cast=str, required=False, default=DEFAULT_ADMIN_RPC_HOST) port = key(cast=int, required=False, default=DEFAULT_ADMIN_RPC_PORT)
class NodeConfig(Config): network = key(cast=str, required=False, default=DEFAULT_NETWORK) price_msat = key(cast=int, required=False, default=DEFAULT_PRICE_MSAT) max_squeaks = key(cast=int, required=False, default=DEFAULT_MAX_SQUEAKS) max_squeaks_per_address_in_block_range = key( cast=int, required=False, default=DEFAULT_MAX_SQUEAKS_PER_ADDRESS_IN_BLOCK_RANGE) sqk_dir_path = key(cast=str, required=False, default=DEFAULT_SQK_DIR_PATH) log_level = key(cast=str, required=False, default=DEFAULT_LOG_LEVEL) sent_offer_retention_s = key(cast=int, required=False, default=DEFAULT_SENT_OFFER_RETENTION_S) received_offer_retention_s = key( cast=int, required=False, default=DEFAULT_RECEIVED_OFFER_RETENTION_S) subscribe_invoices_retry_s = key( cast=int, required=False, default=DEFAULT_SUBSCRIBE_INVOICES_RETRY_S) squeak_retention_s = key(cast=int, required=False, default=DEFAULT_SQUEAK_RETENTION_S) squeak_deletion_interval_s = key( cast=int, required=False, default=DEFAULT_SQUEAK_DELETION_INTERVAL_S) offer_deletion_interval_s = key(cast=int, required=False, default=DEFAULT_OFFER_DELETION_INTERVAL_S) interest_block_interval = key(cast=int, required=False, default=DEFAULT_INTEREST_BLOCK_INTERVAL) peer_autoconnect_interval_s = key( cast=int, required=False, default=DEFAULT_PEER_AUTOCONNECT_INTERVAL_S)