fix: extension DELETE call

This commit is contained in:
Vlad Stan 2023-02-15 17:25:58 +02:00
parent 6540cd9d76
commit e3ac700005
2 changed files with 22 additions and 8 deletions

View file

@ -7,6 +7,7 @@ from loguru import logger
from lnbits.db import Connection from lnbits.db import Connection
from lnbits.extension_manager import Extension from lnbits.extension_manager import Extension
from lnbits.settings import settings
from . import db as core_db from . import db as core_db
from .crud import update_migration_version from .crud import update_migration_version
@ -45,10 +46,19 @@ async def run_migration(db: Connection, migrations_module: Any, current_version:
await update_migration_version(conn, db_name, version) await update_migration_version(conn, db_name, version)
async def stop_extension_work(ext_id: str, user: str): async def stop_extension_background_work(ext_id: str, user: str):
"""Stop background workk for extension (like asyncio.Tasks, WebSockets, etc)""" """
Stop background workk for extension (like asyncio.Tasks, WebSockets, etc)
It tries first to call the endpoint using `http` and if ti fails it tries using `https`
"""
async with httpx.AsyncClient() as client: async with httpx.AsyncClient() as client:
try: try:
await client.delete(url=f"/{ext_id}/api/v1?usr={user}") url = f"http://{settings.host}:{settings.port}/{ext_id}/api/v1?usr={user}"
await client.delete(url)
except Exception as ex: except Exception as ex:
logger.warning(ex) logger.warning(ex)
try:
# try https
url = f"https://{settings.host}:{settings.port}/{ext_id}/api/v1?usr={user}"
except Exception as ex:
logger.warning(ex)

View file

@ -29,7 +29,10 @@ from sse_starlette.sse import EventSourceResponse
from starlette.responses import RedirectResponse, StreamingResponse from starlette.responses import RedirectResponse, StreamingResponse
from lnbits import bolt11, lnurl from lnbits import bolt11, lnurl
from lnbits.core.helpers import migrate_extension_database, stop_extension_work from lnbits.core.helpers import (
migrate_extension_database,
stop_extension_background_work,
)
from lnbits.core.models import Payment, User, Wallet from lnbits.core.models import Payment, User, Wallet
from lnbits.decorators import ( from lnbits.decorators import (
WalletTypeInfo, WalletTypeInfo,
@ -729,7 +732,6 @@ async def websocket_update_get(item_id: str, data: str):
async def api_install_extension( async def api_install_extension(
data: CreateExtension, user: User = Depends(check_admin) data: CreateExtension, user: User = Depends(check_admin)
): ):
release = await InstallableExtension.get_extension_release( release = await InstallableExtension.get_extension_release(
data.ext_id, data.source_repo, data.archive data.ext_id, data.source_repo, data.archive
) )
@ -752,11 +754,13 @@ async def api_install_extension(
await migrate_extension_database(extension, db_version) await migrate_extension_database(extension, db_version)
await add_installed_extension(ext_info) await add_installed_extension(ext_info)
# call stop while the old routes are still active
await stop_extension_background_work(data.ext_id, user.id)
if data.ext_id not in settings.lnbits_deactivated_extensions: if data.ext_id not in settings.lnbits_deactivated_extensions:
settings.lnbits_deactivated_extensions += [data.ext_id] settings.lnbits_deactivated_extensions += [data.ext_id]
# call stop while the old routes are still active
await stop_extension_work(data.ext_id, settings.super_user)
# mount routes for the new version # mount routes for the new version
core_app_extra.register_new_ext_routes(extension) core_app_extra.register_new_ext_routes(extension)
@ -801,7 +805,7 @@ async def api_uninstall_extension(ext_id: str, user: User = Depends(check_admin)
try: try:
# call stop while the old routes are still active # call stop while the old routes are still active
await stop_extension_work(ext_id, settings.super_user) await stop_extension_background_work(ext_id, user.id)
if ext_id not in settings.lnbits_deactivated_extensions: if ext_id not in settings.lnbits_deactivated_extensions:
settings.lnbits_deactivated_extensions += [ext_id] settings.lnbits_deactivated_extensions += [ext_id]