mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-26 15:42:30 +01:00
* feat: add shortcuts for insert_query and update_query into `Database` example: await db.insert("table_name", base_model) * remove where from argument * chore: code clean-up * extension manager * lnbits-qrcode components * parse date from dict * refactor: make `settings` a fixture * chore: remove verbose key names * fix: time column * fix: cast balance to `int` * extension toggle vue3 * vue3 @input migration * fix: payment extra and payment hash * fix dynamic fields and ext db migration * remove shadow on cards in dark theme * screwed up and made more css pushes to this branch * attempt to make chip component in settings dynamic fields * dynamic chips * qrscanner * clean init admin settings * make get_user better * add dbversion model * remove update_payment_status/extra/details * traces for value and assertion errors * refactor services * add PaymentFiatAmount * return Payment on api endpoints * rename to get_user_from_account * refactor: just refactor (#2740) * rc5 * Fix db cache (#2741) * [refactor] split services.py (#2742) * refactor: spit `core.py` (#2743) * refactor: make QR more customizable * fix: print.html * fix: qrcode options * fix: white shadow on dark theme * fix: datetime wasnt parsed in dict_to_model * add timezone for conversion * only parse timestamp for sqlite, postgres does it * log internal payment success * fix: export wallet to phone QR * Adding a customisable border theme, like gradient (#2746) * fixed mobile scan btn * fix test websocket * fix get_payments tests * dict_to_model skip none values * preimage none instead of defaulting to 0000... * fixup test real invoice tests * fixed pheonixd for wss * fix nodemanager test settings * fix lnbits funding * only insert extension when they dont exist --------- Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com> Co-authored-by: Tiago Vasconcelos <talvasconcelos@gmail.com> Co-authored-by: Arc <ben@arc.wales> Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
from cryptography.hazmat.primitives import serialization
|
|
from loguru import logger
|
|
from py_vapid import Vapid
|
|
from py_vapid.utils import b64urlencode
|
|
|
|
from lnbits.settings import (
|
|
EditableSettings,
|
|
readonly_variables,
|
|
settings,
|
|
)
|
|
|
|
from ..crud import update_admin_settings
|
|
|
|
|
|
async def check_webpush_settings():
|
|
if not settings.lnbits_webpush_privkey:
|
|
vapid = Vapid()
|
|
vapid.generate_keys()
|
|
privkey = vapid.private_pem()
|
|
assert vapid.public_key, "VAPID public key does not exist"
|
|
pubkey = b64urlencode(
|
|
vapid.public_key.public_bytes(
|
|
serialization.Encoding.X962,
|
|
serialization.PublicFormat.UncompressedPoint,
|
|
)
|
|
)
|
|
push_settings = {
|
|
"lnbits_webpush_privkey": privkey.decode(),
|
|
"lnbits_webpush_pubkey": pubkey,
|
|
}
|
|
update_cached_settings(push_settings)
|
|
await update_admin_settings(EditableSettings(**push_settings))
|
|
|
|
logger.info("Initialized webpush settings with generated VAPID key pair.")
|
|
logger.info(f"Pubkey: {settings.lnbits_webpush_pubkey}")
|
|
|
|
|
|
def update_cached_settings(sets_dict: dict):
|
|
for key, value in sets_dict.items():
|
|
if key in readonly_variables:
|
|
continue
|
|
if key not in settings.dict().keys():
|
|
continue
|
|
try:
|
|
setattr(settings, key, value)
|
|
except Exception:
|
|
logger.warning(f"Failed overriding setting: {key}, value: {value}")
|
|
if "super_user" in sets_dict:
|
|
settings.super_user = sets_dict["super_user"]
|