import base64 import json import os.path import secrets from flask import Flask from flask_pure import Pure from flask_qrcode import QRcode config_file = os.path.abspath("/etc/membership.json") pure = Pure() qrcode = QRcode() def create_app(): app = Flask(__name__) try: app.config.from_file(config_file, load=json.load) except FileNotFoundError: pass app.config["PURECSS_RESPONSIVE_GRIDS"] = True app.config["PURECSS_USE_CDN"] = False app.config["PURECSS_USE_MINIFIED"] = True pure.init_app(app) qrcode.init_app(app) _default_secret_key = base64.b64encode(secrets.token_bytes()).decode("utf-8") app.config["SECRET_KEY"] = os.environ.get("SECRET_KEY", _default_secret_key) app.config.setdefault("SUPPORTING_FEE", 40) app.config.setdefault("REGULAR_FEE", 120) app.config.setdefault("DIGICASH_ENABLED", True) app.config.setdefault("BITCOIN_ENABLED", True) app.config.setdefault("ETHEREUM_ENABLED", True) app.config.setdefault("MONERO_ENABLED", True) app.config.setdefault("ZCASH_ENABLED", True) app.config.setdefault( "BITCOIN_CONVERSION_SCRIPT", "/usr/local/share/btc/BTC_Membership.pl" ) app.config.setdefault( "ETHERUM_CONVERSION_SCRIPT", "/usr/local/share/eth/ETH_Membership.pl" ) app.config.setdefault( "MONERO_CONVERSION_SCRIPT", "/usr/local/share/xmr/XMR_Membership.pl" ) app.config.setdefault( "ZCASH_CONVERSION_SCRIPT", "/usr/local/share/zcash/ZCASH_Membership.pl" ) from .views import root_page app.register_blueprint(root_page) return app app = create_app()