diff --git a/.github/workflows/regtest.yml b/.github/workflows/regtest.yml index f26e6c386..fb114ff8d 100644 --- a/.github/workflows/regtest.yml +++ b/.github/workflows/regtest.yml @@ -16,9 +16,9 @@ jobs: python-version: ${{ matrix.python-version }} - name: Setup Regtest run: | - docker build -t lnbits-legend . git clone https://github.com/lnbits/legend-regtest-enviroment.git docker cd docker + git checkout removelnbits chmod +x ./tests ./tests sudo chmod -R a+rwx . @@ -39,8 +39,8 @@ jobs: LNBITS_DATA_FOLDER: ./data LNBITS_BACKEND_WALLET_CLASS: LndRestWallet LND_REST_ENDPOINT: https://localhost:8081/ - LND_REST_CERT: docker/data/lnd-1/tls.cert - LND_REST_MACAROON: docker/data/lnd-1/data/chain/bitcoin/regtest/admin.macaroon + LND_REST_CERT: ./docker/data/lnd-1/tls.cert + LND_REST_MACAROON: ./docker/data/lnd-1/data/chain/bitcoin/regtest/admin.macaroon run: | sudo chmod -R a+rwx . && rm -rf ./data && mkdir -p ./data make test-real-wallet @@ -57,9 +57,9 @@ jobs: python-version: ${{ matrix.python-version }} - name: Setup Regtest run: | - docker build -t lnbits-legend . git clone https://github.com/lnbits/legend-regtest-enviroment.git docker cd docker + git checkout removelnbits chmod +x ./tests ./tests sudo chmod -R a+rwx . @@ -79,7 +79,7 @@ jobs: PORT: 5123 LNBITS_DATA_FOLDER: ./data LNBITS_BACKEND_WALLET_CLASS: CLightningWallet - CLIGHTNING_RPC: docker/data/clightning-1/regtest/lightning-rpc + CLIGHTNING_RPC: ./docker/data/clightning-1/regtest/lightning-rpc run: | sudo chmod -R a+rwx . && rm -rf ./data && mkdir -p ./data make test-real-wallet diff --git a/README.md b/README.md index f0f9df627..5c6b702a9 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ LNbits ![Lightning network wallet](https://i.imgur.com/EHvK6Lq.png) -# LNbits v0.3 BETA, free and open-source lightning-network wallet/accounts system +# LNbits v0.9 BETA, free and open-source lightning-network wallet/accounts system (Join us on [https://t.me/lnbits](https://t.me/lnbits)) diff --git a/docs/guide/wallets.md b/docs/guide/wallets.md index 7a3b6a273..dfea66aa2 100644 --- a/docs/guide/wallets.md +++ b/docs/guide/wallets.md @@ -17,7 +17,6 @@ A backend wallet can be configured using the following LNbits environment variab ### CLightning Using this wallet requires the installation of the `pylightning` Python package. -If you want to use LNURLp you should use SparkWallet because of an issue with description_hash and CLightning. - `LNBITS_BACKEND_WALLET_CLASS`: **CLightningWallet** - `CLIGHTNING_RPC`: /file/path/lightning-rpc diff --git a/lnbits/app.py b/lnbits/app.py index 8e32e38bc..19482b067 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -45,7 +45,14 @@ def create_app(config_object="lnbits.settings") -> FastAPI: """ configure_logger() - app = FastAPI() + app = FastAPI( + title="LNbits API", + description="API for LNbits, the free and open source bitcoin wallet and accounts system with plugins.", + license_info={ + "name": "MIT License", + "url": "https://raw.githubusercontent.com/lnbits/lnbits-legend/main/LICENSE", + }, + ) app.mount("/static", StaticFiles(packages=[("lnbits", "static")]), name="static") app.mount( "/core/static", diff --git a/lnbits/extensions/bleskomat/templates/bleskomat/_api_docs.html b/lnbits/extensions/bleskomat/templates/bleskomat/_api_docs.html index 210d534c2..2a7160bd8 100644 --- a/lnbits/extensions/bleskomat/templates/bleskomat/_api_docs.html +++ b/lnbits/extensions/bleskomat/templates/bleskomat/_api_docs.html @@ -62,4 +62,5 @@

+ diff --git a/lnbits/extensions/copilot/templates/copilot/_api_docs.html b/lnbits/extensions/copilot/templates/copilot/_api_docs.html index eed25169b..6105d1691 100644 --- a/lnbits/extensions/copilot/templates/copilot/_api_docs.html +++ b/lnbits/extensions/copilot/templates/copilot/_api_docs.html @@ -14,6 +14,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/discordbot/templates/discordbot/_api_docs.html b/lnbits/extensions/discordbot/templates/discordbot/_api_docs.html index fcda086a3..b57e4ab1f 100644 --- a/lnbits/extensions/discordbot/templates/discordbot/_api_docs.html +++ b/lnbits/extensions/discordbot/templates/discordbot/_api_docs.html @@ -34,6 +34,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/events/crud.py b/lnbits/extensions/events/crud.py index 9e04476d3..4cc86ac4d 100644 --- a/lnbits/extensions/events/crud.py +++ b/lnbits/extensions/events/crud.py @@ -16,7 +16,7 @@ async def create_ticket( INSERT INTO events.ticket (id, wallet, event, name, email, registered, paid) VALUES (?, ?, ?, ?, ?, ?, ?) """, - (payment_hash, wallet, event, name, email, False, False), + (payment_hash, wallet, event, name, email, False, True), ) ticket = await get_ticket(payment_hash) diff --git a/lnbits/extensions/events/templates/events/_api_docs.html b/lnbits/extensions/events/templates/events/_api_docs.html index a5c821747..d2fa890e5 100644 --- a/lnbits/extensions/events/templates/events/_api_docs.html +++ b/lnbits/extensions/events/templates/events/_api_docs.html @@ -20,4 +20,5 @@

+
diff --git a/lnbits/extensions/events/templates/events/display.html b/lnbits/extensions/events/templates/events/display.html index 4c1f557f1..4589c5785 100644 --- a/lnbits/extensions/events/templates/events/display.html +++ b/lnbits/extensions/events/templates/events/display.html @@ -135,15 +135,7 @@ var self = this axios - .post( - '/events/api/v1/tickets/' + '{{ event_id }}/{{ event_price }}', - { - event: '{{ event_id }}', - event_name: '{{ event_name }}', - name: self.formDialog.data.name, - email: self.formDialog.data.email - } - ) + .get('/events/api/v1/tickets/' + '{{ event_id }}') .then(function (response) { self.paymentReq = response.data.payment_request self.paymentCheck = response.data.payment_hash @@ -161,7 +153,17 @@ paymentChecker = setInterval(function () { axios - .get('/events/api/v1/tickets/' + self.paymentCheck) + .post( + '/events/api/v1/tickets/' + + '{{ event_id }}/' + + self.paymentCheck, + { + event: '{{ event_id }}', + event_name: '{{ event_name }}', + name: self.formDialog.data.name, + email: self.formDialog.data.email + } + ) .then(function (res) { if (res.data.paid) { clearInterval(paymentChecker) diff --git a/lnbits/extensions/events/templates/events/register.html b/lnbits/extensions/events/templates/events/register.html index 4dff9afbb..43d43070b 100644 --- a/lnbits/extensions/events/templates/events/register.html +++ b/lnbits/extensions/events/templates/events/register.html @@ -133,7 +133,10 @@ var self = this LNbits.api - .request('GET', '/events/api/v1/register/ticket/' + res) + .request( + 'GET', + '/events/api/v1/register/ticket/' + res.split('//')[1] + ) .then(function (response) { self.$q.notify({ type: 'positive', diff --git a/lnbits/extensions/events/templates/events/ticket.html b/lnbits/extensions/events/templates/events/ticket.html index a53f834f9..21b7cfa82 100644 --- a/lnbits/extensions/events/templates/events/ticket.html +++ b/lnbits/extensions/events/templates/events/ticket.html @@ -13,9 +13,8 @@

diff --git a/lnbits/extensions/events/views_api.py b/lnbits/extensions/events/views_api.py index 87edb07da..45ee4de05 100644 --- a/lnbits/extensions/events/views_api.py +++ b/lnbits/extensions/events/views_api.py @@ -97,8 +97,8 @@ async def api_tickets( return [ticket.dict() for ticket in await get_tickets(wallet_ids)] -@events_ext.post("/api/v1/tickets/{event_id}/{sats}") -async def api_ticket_make_ticket(event_id, sats, data: CreateTicket): +@events_ext.get("/api/v1/tickets/{event_id}") +async def api_ticket_make_ticket(event_id): event = await get_event(event_id) if not event: raise HTTPException( @@ -107,37 +107,35 @@ async def api_ticket_make_ticket(event_id, sats, data: CreateTicket): try: payment_hash, payment_request = await create_invoice( wallet_id=event.wallet, - amount=int(sats), + amount=event.price_per_ticket, memo=f"{event_id}", extra={"tag": "events"}, ) except Exception as e: raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) - ticket = await create_ticket( - payment_hash=payment_hash, - wallet=event.wallet, - event=event_id, - name=data.name, - email=data.email, - ) - - if not ticket: - raise HTTPException( - status_code=HTTPStatus.NOT_FOUND, detail=f"Event could not be fetched." - ) - return {"payment_hash": payment_hash, "payment_request": payment_request} -@events_ext.get("/api/v1/tickets/{payment_hash}") -async def api_ticket_send_ticket(payment_hash): - ticket = await get_ticket(payment_hash) - +@events_ext.post("/api/v1/tickets/{event_id}/{payment_hash}") +async def api_ticket_send_ticket(event_id, payment_hash, data: CreateTicket): + event = await get_event(event_id) try: status = await api_payment(payment_hash) if status["paid"]: - await set_ticket_paid(payment_hash=payment_hash) + ticket = await create_ticket( + payment_hash=payment_hash, + wallet=event.wallet, + event=event_id, + name=data.name, + email=data.email, + ) + + if not ticket: + raise HTTPException( + status_code=HTTPStatus.NOT_FOUND, detail=f"Event could not be fetched." + ) + return {"paid": True, "ticket_id": ticket.id} except Exception: raise HTTPException(status_code=HTTPStatus.NOT_FOUND, detail="Not paid") diff --git a/lnbits/extensions/jukebox/templates/jukebox/_api_docs.html b/lnbits/extensions/jukebox/templates/jukebox/_api_docs.html index f4daaf39e..4bae49651 100644 --- a/lnbits/extensions/jukebox/templates/jukebox/_api_docs.html +++ b/lnbits/extensions/jukebox/templates/jukebox/_api_docs.html @@ -24,6 +24,8 @@ label="API info" :content-inset-level="0.5" > + + diff --git a/lnbits/extensions/livestream/templates/livestream/_api_docs.html b/lnbits/extensions/livestream/templates/livestream/_api_docs.html index fb4853ced..34b6518dc 100644 --- a/lnbits/extensions/livestream/templates/livestream/_api_docs.html +++ b/lnbits/extensions/livestream/templates/livestream/_api_docs.html @@ -17,6 +17,8 @@ label="API info" :content-inset-level="0.5" > + + + diff --git a/lnbits/extensions/lndhub/templates/lndhub/_instructions.html b/lnbits/extensions/lndhub/templates/lndhub/_instructions.html index 4db79aba8..005bced5e 100644 --- a/lnbits/extensions/lndhub/templates/lndhub/_instructions.html +++ b/lnbits/extensions/lndhub/templates/lndhub/_instructions.html @@ -31,5 +31,6 @@ + diff --git a/lnbits/extensions/lnticket/templates/lnticket/_api_docs.html b/lnbits/extensions/lnticket/templates/lnticket/_api_docs.html index 69328f384..e93409244 100644 --- a/lnbits/extensions/lnticket/templates/lnticket/_api_docs.html +++ b/lnbits/extensions/lnticket/templates/lnticket/_api_docs.html @@ -19,4 +19,5 @@

+
diff --git a/lnbits/extensions/lnurldevice/templates/lnurldevice/_api_docs.html b/lnbits/extensions/lnurldevice/templates/lnurldevice/_api_docs.html index 940d4691e..7f9afa27b 100644 --- a/lnbits/extensions/lnurldevice/templates/lnurldevice/_api_docs.html +++ b/lnbits/extensions/lnurldevice/templates/lnurldevice/_api_docs.html @@ -17,6 +17,12 @@ label="API info" :content-inset-level="0.5" > + + @@ -51,6 +52,7 @@ expand-separator label="Create a pay link" > + POST /lnurlp/api/v1/links diff --git a/lnbits/extensions/lnurlpayout/config.json.example b/lnbits/extensions/lnurlpayout/config.json.example index 1e72c0c1e..b4160d7bd 100644 --- a/lnbits/extensions/lnurlpayout/config.json.example +++ b/lnbits/extensions/lnurlpayout/config.json.example @@ -2,5 +2,5 @@ "name": "LNURLPayout", "short_description": "Autodump wallet funds to LNURLpay", "icon": "exit_to_app", - "contributors": ["arcbtc"] + "contributors": ["arcbtc","talvasconcelos"] } diff --git a/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html b/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html index 7febea44c..4f921bb57 100644 --- a/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html +++ b/lnbits/extensions/lnurlpayout/templates/lnurlpayout/_api_docs.html @@ -4,6 +4,12 @@ label="API info" :content-inset-level="0.5" > + @@ -32,6 +38,7 @@ expand-separator label="Create a lnurlpayout" > + + + diff --git a/lnbits/extensions/satsdice/templates/satsdice/_api_docs.html b/lnbits/extensions/satsdice/templates/satsdice/_api_docs.html index a80fd37ad..e85e9586c 100644 --- a/lnbits/extensions/satsdice/templates/satsdice/_api_docs.html +++ b/lnbits/extensions/satsdice/templates/satsdice/_api_docs.html @@ -4,6 +4,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/satspay/templates/satspay/_api_docs.html b/lnbits/extensions/satspay/templates/satspay/_api_docs.html index 77451ae59..336ab8997 100644 --- a/lnbits/extensions/satspay/templates/satspay/_api_docs.html +++ b/lnbits/extensions/satspay/templates/satspay/_api_docs.html @@ -15,6 +15,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/splitpayments/templates/splitpayments/_api_docs.html b/lnbits/extensions/splitpayments/templates/splitpayments/_api_docs.html index 4cf7190c3..4b5ed979c 100644 --- a/lnbits/extensions/splitpayments/templates/splitpayments/_api_docs.html +++ b/lnbits/extensions/splitpayments/templates/splitpayments/_api_docs.html @@ -28,6 +28,12 @@ label="API info" :content-inset-level="0.5" > +

+
diff --git a/lnbits/extensions/subdomains/templates/subdomains/_api_docs.html b/lnbits/extensions/subdomains/templates/subdomains/_api_docs.html index b839c641d..db3b24771 100644 --- a/lnbits/extensions/subdomains/templates/subdomains/_api_docs.html +++ b/lnbits/extensions/subdomains/templates/subdomains/_api_docs.html @@ -22,5 +22,6 @@ >

+
diff --git a/lnbits/extensions/tipjar/templates/tipjar/_api_docs.html b/lnbits/extensions/tipjar/templates/tipjar/_api_docs.html index 95ba6e064..cfb8136b4 100644 --- a/lnbits/extensions/tipjar/templates/tipjar/_api_docs.html +++ b/lnbits/extensions/tipjar/templates/tipjar/_api_docs.html @@ -12,4 +12,5 @@ >

+
diff --git a/lnbits/extensions/tpos/templates/tpos/_api_docs.html b/lnbits/extensions/tpos/templates/tpos/_api_docs.html index 8930d9903..cbb21be13 100644 --- a/lnbits/extensions/tpos/templates/tpos/_api_docs.html +++ b/lnbits/extensions/tpos/templates/tpos/_api_docs.html @@ -4,6 +4,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html b/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html index 34b3c39b0..886589e66 100644 --- a/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html +++ b/lnbits/extensions/usermanager/templates/usermanager/_api_docs.html @@ -28,6 +28,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/watchonly/templates/watchonly/_api_docs.html b/lnbits/extensions/watchonly/templates/watchonly/_api_docs.html index b421186ad..94b44a443 100644 --- a/lnbits/extensions/watchonly/templates/watchonly/_api_docs.html +++ b/lnbits/extensions/watchonly/templates/watchonly/_api_docs.html @@ -20,6 +20,7 @@ label="API info" :content-inset-level="0.5" > + diff --git a/lnbits/extensions/withdraw/templates/withdraw/_api_docs.html b/lnbits/extensions/withdraw/templates/withdraw/_api_docs.html index 095aad3ad..ff88189d5 100644 --- a/lnbits/extensions/withdraw/templates/withdraw/_api_docs.html +++ b/lnbits/extensions/withdraw/templates/withdraw/_api_docs.html @@ -4,6 +4,7 @@ label="API info" :content-inset-level="0.5" > +