chore: temp commit (does not work); don't want to lose changes
This commit is contained in:
parent
d15782521d
commit
0d4954c01a
4 changed files with 59 additions and 138 deletions
|
|
@ -8,18 +8,16 @@ from loguru import logger
|
||||||
|
|
||||||
from lnbits import bolt11
|
from lnbits import bolt11
|
||||||
from lnbits.db import COCKROACH, POSTGRES, Connection
|
from lnbits.db import COCKROACH, POSTGRES, Connection
|
||||||
from lnbits.settings import readonly_variables, settings
|
from lnbits.settings import (
|
||||||
|
AdminSettings,
|
||||||
|
EditableSetings,
|
||||||
|
SuperSettings,
|
||||||
|
readonly_variables,
|
||||||
|
settings,
|
||||||
|
)
|
||||||
|
|
||||||
from . import db
|
from . import db
|
||||||
from .models import (
|
from .models import BalanceCheck, Payment, User, Wallet
|
||||||
AdminSettings,
|
|
||||||
BalanceCheck,
|
|
||||||
Payment,
|
|
||||||
SuperSettings,
|
|
||||||
UpdateSettings,
|
|
||||||
User,
|
|
||||||
Wallet,
|
|
||||||
)
|
|
||||||
|
|
||||||
# accounts
|
# accounts
|
||||||
# --------
|
# --------
|
||||||
|
|
@ -603,7 +601,7 @@ async def delete_admin_settings():
|
||||||
await db.execute("DELETE FROM settings")
|
await db.execute("DELETE FROM settings")
|
||||||
|
|
||||||
|
|
||||||
async def update_admin_settings(data: UpdateSettings):
|
async def update_admin_settings(data: EditableSetings):
|
||||||
q, values = get_q_and_values(data)
|
q, values = get_q_and_values(data)
|
||||||
await db.execute(f"UPDATE settings SET {q}", (values,)) # type: ignore
|
await db.execute(f"UPDATE settings SET {q}", (values,)) # type: ignore
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,91 +199,3 @@ class BalanceCheck(BaseModel):
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_row(cls, row: Row):
|
def from_row(cls, row: Row):
|
||||||
return cls(wallet=row["wallet"], service=row["service"], url=row["url"])
|
return cls(wallet=row["wallet"], service=row["service"], url=row["url"])
|
||||||
|
|
||||||
|
|
||||||
# admin
|
|
||||||
# --------
|
|
||||||
class UpdateSettings(BaseModel, extra=Extra.forbid):
|
|
||||||
@validator(
|
|
||||||
"lnbits_admin_users",
|
|
||||||
"lnbits_allowed_users",
|
|
||||||
"lnbits_theme_options",
|
|
||||||
"lnbits_disabled_extensions",
|
|
||||||
"lnbits_admin_extensions",
|
|
||||||
pre=True,
|
|
||||||
)
|
|
||||||
def validate(cls, val):
|
|
||||||
if type(val) == str:
|
|
||||||
val = val.split(",") if val else []
|
|
||||||
return val
|
|
||||||
|
|
||||||
lnbits_backend_wallet_class: str = Query(None)
|
|
||||||
lnbits_admin_users: List[str] = Query(None)
|
|
||||||
lnbits_allowed_users: List[str] = Query(None)
|
|
||||||
lnbits_admin_extensions: List[str] = Query(None)
|
|
||||||
lnbits_disabled_extensions: List[str] = Query(None)
|
|
||||||
lnbits_theme_options: List[str] = Query(None)
|
|
||||||
lnbits_force_https: bool = Query(None)
|
|
||||||
lnbits_reserve_fee_min: int = Query(None, ge=0)
|
|
||||||
lnbits_reserve_fee_percent: float = Query(None, ge=0)
|
|
||||||
lnbits_service_fee: float = Query(None, ge=0)
|
|
||||||
lnbits_hide_api: bool = Query(None)
|
|
||||||
lnbits_site_title: str = Query(None)
|
|
||||||
lnbits_site_tagline: str = Query(None)
|
|
||||||
lnbits_site_description: str = Query(None)
|
|
||||||
lnbits_default_wallet_name: str = Query(None)
|
|
||||||
lnbits_denomination: str = Query(None)
|
|
||||||
lnbits_custom_logo: str = Query(None)
|
|
||||||
lnbits_ad_space: str = Query(None)
|
|
||||||
lnbits_ad_space_title: str = Query(None)
|
|
||||||
lnbits_ad_space_enabled: bool = Query(None)
|
|
||||||
|
|
||||||
# funding sources
|
|
||||||
fake_wallet_secret: str = Query(None)
|
|
||||||
lnbits_endpoint: str = Query(None)
|
|
||||||
lnbits_key: str = Query(None)
|
|
||||||
cliche_endpoint: str = Query(None)
|
|
||||||
corelightning_rpc: str = Query(None)
|
|
||||||
eclair_url: str = Query(None)
|
|
||||||
eclair_pass: str = Query(None)
|
|
||||||
lnd_rest_endpoint: str = Query(None)
|
|
||||||
lnd_rest_cert: str = Query(None)
|
|
||||||
lnd_rest_macaroon: str = Query(None)
|
|
||||||
lnd_rest_macaroon_encrypted: str = Query(None)
|
|
||||||
lnd_cert: str = Query(None)
|
|
||||||
lnd_admin_macaroon: str = Query(None)
|
|
||||||
lnd_invoice_macaroon: str = Query(None)
|
|
||||||
lnd_grpc_endpoint: str = Query(None)
|
|
||||||
lnd_grpc_cert: str = Query(None)
|
|
||||||
lnd_grpc_port: int = Query(None, ge=0)
|
|
||||||
lnd_grpc_admin_macaroon: str = Query(None)
|
|
||||||
lnd_grpc_invoice_macaroon: str = Query(None)
|
|
||||||
lnd_grpc_macaroon: str = Query(None)
|
|
||||||
lnd_grpc_macaroon_encrypted: str = Query(None)
|
|
||||||
lnpay_api_endpoint: str = Query(None)
|
|
||||||
lnpay_api_key: str = Query(None)
|
|
||||||
lnpay_wallet_key: str = Query(None)
|
|
||||||
lntxbot_api_endpoint: str = Query(None)
|
|
||||||
lntxbot_key: str = Query(None)
|
|
||||||
opennode_api_endpoint: str = Query(None)
|
|
||||||
opennode_key: str = Query(None)
|
|
||||||
spark_url: str = Query(None)
|
|
||||||
spark_token: str = Query(None)
|
|
||||||
lntips_api_endpoint: str = Query(None)
|
|
||||||
lntips_api_key: str = Query(None)
|
|
||||||
lntips_admin_key: str = Query(None)
|
|
||||||
lntips_invoice_key: str = Query(None)
|
|
||||||
|
|
||||||
boltz_mempool_space_url: str = Query(None)
|
|
||||||
boltz_mempool_space_url_ws: str = Query(None)
|
|
||||||
boltz_network: str = Query(None)
|
|
||||||
boltz_url: str = Query(None)
|
|
||||||
|
|
||||||
|
|
||||||
class SuperSettings(UpdateSettings):
|
|
||||||
super_user: str
|
|
||||||
|
|
||||||
|
|
||||||
class AdminSettings(UpdateSettings):
|
|
||||||
super_user: bool
|
|
||||||
lnbits_allowed_funding_sources: Optional[List[str]]
|
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,11 @@ from fastapi.params import Depends
|
||||||
from starlette.exceptions import HTTPException
|
from starlette.exceptions import HTTPException
|
||||||
|
|
||||||
from lnbits.core.crud import get_wallet
|
from lnbits.core.crud import get_wallet
|
||||||
from lnbits.core.models import AdminSettings, UpdateSettings, User
|
from lnbits.core.models import User
|
||||||
from lnbits.core.services import update_wallet_balance
|
from lnbits.core.services import update_wallet_balance
|
||||||
from lnbits.decorators import check_admin
|
from lnbits.decorators import check_admin
|
||||||
from lnbits.server import server_restart
|
from lnbits.server import server_restart
|
||||||
|
from lnbits.settings import AdminSettings, EditableSetings
|
||||||
|
|
||||||
from .. import core_app
|
from .. import core_app
|
||||||
from ..crud import delete_admin_settings, get_admin_settings, update_admin_settings
|
from ..crud import delete_admin_settings, get_admin_settings, update_admin_settings
|
||||||
|
|
@ -58,7 +59,7 @@ async def api_topup_balance(
|
||||||
status_code=HTTPStatus.OK,
|
status_code=HTTPStatus.OK,
|
||||||
dependencies=[Depends(check_admin)],
|
dependencies=[Depends(check_admin)],
|
||||||
)
|
)
|
||||||
async def api_update_settings(data: UpdateSettings):
|
async def api_update_settings(data: EditableSetings):
|
||||||
await update_admin_settings(data)
|
await update_admin_settings(data)
|
||||||
return {"status": "Success"}
|
return {"status": "Success"}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,6 @@ import httpx
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from pydantic import BaseSettings, Field, validator
|
from pydantic import BaseSettings, Field, validator
|
||||||
|
|
||||||
# from .core.crud import create_admin_settings, get_super_settings
|
|
||||||
|
|
||||||
|
|
||||||
def list_parse_fallback(v):
|
def list_parse_fallback(v):
|
||||||
try:
|
try:
|
||||||
|
|
@ -40,24 +38,7 @@ readonly_variables = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
class EditableSetings(BaseSettings):
|
||||||
|
|
||||||
lnbits_admin_ui: bool = Field(default=False)
|
|
||||||
|
|
||||||
# .env
|
|
||||||
debug: bool = Field(default=False)
|
|
||||||
host: str = Field(default="127.0.0.1")
|
|
||||||
port: int = Field(default=5000)
|
|
||||||
forwarded_allow_ips: str = Field(default="*")
|
|
||||||
lnbits_path: str = Field(default=".")
|
|
||||||
lnbits_commit: str = Field(default="unknown")
|
|
||||||
super_user: str = Field(default="")
|
|
||||||
|
|
||||||
# saas
|
|
||||||
lnbits_saas_callback: Optional[str] = Field(default=None)
|
|
||||||
lnbits_saas_secret: Optional[str] = Field(default=None)
|
|
||||||
lnbits_saas_instance_id: Optional[str] = Field(default=None)
|
|
||||||
|
|
||||||
# users
|
# users
|
||||||
lnbits_admin_users: List[str] = Field(default=[])
|
lnbits_admin_users: List[str] = Field(default=[])
|
||||||
lnbits_allowed_users: List[str] = Field(default=[])
|
lnbits_allowed_users: List[str] = Field(default=[])
|
||||||
|
|
@ -80,8 +61,6 @@ class Settings(BaseSettings):
|
||||||
lnbits_ad_space_enabled: bool = Field(default=False)
|
lnbits_ad_space_enabled: bool = Field(default=False)
|
||||||
|
|
||||||
# ops
|
# ops
|
||||||
lnbits_data_folder: str = Field(default="./data")
|
|
||||||
lnbits_database_url: str = Field(default=None)
|
|
||||||
lnbits_force_https: bool = Field(default=False)
|
lnbits_force_https: bool = Field(default=False)
|
||||||
lnbits_reserve_fee_min: int = Field(default=2000)
|
lnbits_reserve_fee_min: int = Field(default=2000)
|
||||||
lnbits_reserve_fee_percent: float = Field(default=1.0)
|
lnbits_reserve_fee_percent: float = Field(default=1.0)
|
||||||
|
|
@ -91,20 +70,6 @@ class Settings(BaseSettings):
|
||||||
|
|
||||||
# funding sources
|
# funding sources
|
||||||
lnbits_backend_wallet_class: str = Field(default="VoidWallet")
|
lnbits_backend_wallet_class: str = Field(default="VoidWallet")
|
||||||
lnbits_allowed_funding_sources: List[str] = Field(
|
|
||||||
default=[
|
|
||||||
"VoidWallet",
|
|
||||||
"FakeWallet",
|
|
||||||
"CLightningWallet",
|
|
||||||
"LndRestWallet",
|
|
||||||
"LndWallet",
|
|
||||||
"LntxbotWallet",
|
|
||||||
"LNPayWallet",
|
|
||||||
"LNbitsWallet",
|
|
||||||
"OpenNodeWallet",
|
|
||||||
"LnTipsWallet",
|
|
||||||
]
|
|
||||||
)
|
|
||||||
fake_wallet_secret: str = Field(default="ToTheMoon1")
|
fake_wallet_secret: str = Field(default="ToTheMoon1")
|
||||||
lnbits_endpoint: str = Field(default="https://legend.lnbits.com")
|
lnbits_endpoint: str = Field(default="https://legend.lnbits.com")
|
||||||
lnbits_key: Optional[str] = Field(default=None)
|
lnbits_key: Optional[str] = Field(default=None)
|
||||||
|
|
@ -146,13 +111,36 @@ class Settings(BaseSettings):
|
||||||
boltz_mempool_space_url: str = Field(default="https://mempool.space")
|
boltz_mempool_space_url: str = Field(default="https://mempool.space")
|
||||||
boltz_mempool_space_url_ws: str = Field(default="wss://mempool.space")
|
boltz_mempool_space_url_ws: str = Field(default="wss://mempool.space")
|
||||||
|
|
||||||
|
|
||||||
|
class ReadOnlySettings(BaseSettings):
|
||||||
|
lnbits_admin_ui: bool = Field(default=False)
|
||||||
|
|
||||||
|
# .env
|
||||||
|
debug: bool = Field(default=False)
|
||||||
|
host: str = Field(default="127.0.0.1")
|
||||||
|
port: int = Field(default=5000)
|
||||||
|
forwarded_allow_ips: str = Field(default="*")
|
||||||
|
lnbits_path: str = Field(default=".")
|
||||||
|
lnbits_commit: str = Field(default="unknown")
|
||||||
|
|
||||||
|
# saas
|
||||||
|
lnbits_saas_callback: Optional[str] = Field(default=None)
|
||||||
|
lnbits_saas_secret: Optional[str] = Field(default=None)
|
||||||
|
lnbits_saas_instance_id: Optional[str] = Field(default=None)
|
||||||
|
|
||||||
|
# ops
|
||||||
|
lnbits_data_folder: str = Field(default="./data")
|
||||||
|
lnbits_database_url: str = Field(default=None)
|
||||||
|
|
||||||
|
|
||||||
|
class Settings(EditableSetings, ReadOnlySettings):
|
||||||
@validator(
|
@validator(
|
||||||
"lnbits_admin_users",
|
"lnbits_admin_users",
|
||||||
"lnbits_allowed_users",
|
"lnbits_allowed_users",
|
||||||
"lnbits_theme_options",
|
"lnbits_theme_options",
|
||||||
"lnbits_admin_extensions",
|
"lnbits_admin_extensions",
|
||||||
"lnbits_disabled_extensions",
|
"lnbits_disabled_extensions",
|
||||||
"lnbits_allowed_funding_sources",
|
"lnbits_allowed_funding_sources", # ????
|
||||||
pre=True,
|
pre=True,
|
||||||
)
|
)
|
||||||
def validate(cls, val):
|
def validate(cls, val):
|
||||||
|
|
@ -172,6 +160,28 @@ class Settings(BaseSettings):
|
||||||
json_loads = list_parse_fallback
|
json_loads = list_parse_fallback
|
||||||
|
|
||||||
|
|
||||||
|
class SuperSettings(EditableSetings):
|
||||||
|
super_user: str
|
||||||
|
|
||||||
|
|
||||||
|
class AdminSettings(EditableSetings):
|
||||||
|
super_user: bool
|
||||||
|
lnbits_allowed_funding_sources: List[str] = Field(
|
||||||
|
default=[
|
||||||
|
"VoidWallet",
|
||||||
|
"FakeWallet",
|
||||||
|
"CLightningWallet",
|
||||||
|
"LndRestWallet",
|
||||||
|
"LndWallet",
|
||||||
|
"LntxbotWallet",
|
||||||
|
"LNPayWallet",
|
||||||
|
"LNbitsWallet",
|
||||||
|
"OpenNodeWallet",
|
||||||
|
"LnTipsWallet",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
|
|
||||||
settings.lnbits_path = str(path.dirname(path.realpath(__file__)))
|
settings.lnbits_path = str(path.dirname(path.realpath(__file__)))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue