* chore: adhere to ruff's "N" rules
WARN: reinstall failing extensions!
bunch of more consistent variable naming. inspired by this issue.
https://github.com/lnbits/lnbits/issues/2308
* fixup! chore: adhere to ruff's "N" rules
* rename to funding_source
* skip jmeter
---------
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
this logically groups api endpoints and gioves them specific openapi tags. which makes them nice on the `/docs` endpoint and makes the `api.py` more approachable
* add wallets list endpoint
* remove trailing slashes from endpoints
* fixup topup url
* fix trailing slash on auth
* backwards compatibility
* add service fee to specific wallet
* add to .env.example
* Added service fee wallet to manage server
* cleaned
* prettier
* Added badge for service fee
* Added tooltip
* Added service fee max
* allow ignoring service fee for internal transactions
* add fee_reserve_total helper funciton that includes service_fee
* html for admin ui
* typo
* Update .env.example
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* fix .env.template comment
* bundle
* WIP: expose fee reserve endpoint
---------
Co-authored-by: Arc <ben@arc.wales>
Co-authored-by: dni ⚡ <office@dnilabs.com>
Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
* [FEAT] cleanup GET /wallet endpoint, add wallet api route
this removes the functionalitiy to create accounts and wallets via
the GET /wallet endpoint in generic.py
it add endpoints inside the api.py for it and the frontend is modified to use the api endpoints
this also simplifies for the `feat/login` for the route.
* remove stale generic tests and add api tests
* bug wrong endpoint create account
* vlad nitpick
* added checkif deleted is 404
* reload after renaming wallet
* another iteration with vlad
* create new wallet if it none exist
* fix delete refresh
* formatting
* [BUG] self payments for fakewallet
make it possible to pay to yourself on fakewallet
f
* bugfix selfpayments for fakewallet
* delete by wallet and fix previous_payment check (#1919)
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
* [FIX] workflows
testing why workflwos unstable instable
* debug run_command
* add timeout to process run
* log lncli output
* try catch json exception in clnrest
* settle does not return a json
* add 10 minutes timeout to regtests if they ever get stuck
* better subprocess handling
* fix race condition
* test 3
* remove
* run nr 4
* increase waits for race conditions
* revert clnrest
* better fiat amount test
* save fiat_amounts on payment creation
* show fiat amount in frontend
* add lnbits_default_accounting_currency
* extract fiat calculation logic into service
* move all currency conversions to calc_fiat_amounts
move all conversion logic into create_invoice so extensions can benefit aswell
* show user-defined and wallet-defined currency in frontend
* remove sat from fiat units
* make bundle
* improve tests
* debug log
* replace async_wrap with run_sync
formatting
remove unused fn
properly raise exception, not for timeout though
* [TEST] proper startup and shutdown (#1860)
* add proper startup / shutdown in tests
* fix event loop issues
because uvloop was installed in server.py which is not the main entry point when tests are ran.
this caused the loops referenced by the locks and queues to be a different one than the one used to run the tests
(only an issue in python 3.9)
* give openapi more time, does not matter anyway, regtest takes way longer
---------
Co-authored-by: jacksn <jkranawetter05@gmail.com>
remove uvloop
* fix test
* dont touch pyproject
* fix: install uvloop in conftest
not using uvloop at all causes tests to take way longer
---------
Co-authored-by: jacksn <jkranawetter05@gmail.com>
* simplify and cache exchange rate
note that exir was removed as a provider
* add binance as provider
* log exception
* add test
* add blockchain.com provider
* F821: undefine name
disabled and logged webhook_listener for opennode and lnpay because they are obviously not working
* E402: module level import not at top of file
* E721 fixes, only popped up for python3.9 not 3.10
* tests: hold invoice tests pending during payment
* sigh...
* ok
* hash preimage
* preimage_hash == payment_hash
* should error
* check that payment is gone
* cancel task while in-flight
* lnbits endpoing return error
* return error
* add both options
* fix list
* respond to error
* return false if payment status errors
* outgoing invoice should be deleted after one status check
* test api_payments_create error
* add hold invoices and basic test
* run request in parallel
* create_task
* dont cancel it
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
* add send_payment_notification service
payment notifications are sent from multiple places with inconsistent and incomplete data
* adopt new send_payment_notification service
* add tests
* better checking
* flake8 fix
* make format
* invoices scope are function for tests
* invoice back to sessionbut keep real_invoice for now
* make format
* comment
* get payment by checking id and test
* added ratelimiter
* Adds server logs to admin ui
* Added IP allow/ban list
* fixed remove ips
* Split rate limit number and unit
* security tab and background tasks for killswitch
* fix test for auditor api
---------
Co-authored-by: dni ⚡ <office@dnilabs.com>
* initial backend support
* implement payments pagination on frontend
* implement search for payments api
* fix pyright issues
* sqlite support for searching
* backwards compatability
* formatting, small fixes
* small optimization
* fix sorting issue, add error handling
* GET payments test
* filter by dates, use List instead of list
* fix sqlite
* update bundle
* test old payments endpoint aswell
* refactor for easier review
* optimise test
* revert unnecessary change
---------
Co-authored-by: dni ⚡ <office@dnilabs.com>
* BUG: proper exception for paid interal invoices
* test should now fail, because we pay invoice twice, and should also work in regtest
* sorting
* unpack check_internal
* introduce another crud fn for checking internal paid payment
* rename
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
* expiry for fakewallet
* expiry for lnd
* lnbits backend
* fix: eclair descriptionHash fixed and expiry added
* cln and sparko
* test expiry
* Eclair from AdminUI and bugfix for nonexistent payments
* add to settings and .env and remove lntxbot
* remove duplicate and format
* add invoice expiry
* add min max and step
* UI works now
* test should fail, sanity check, will revert
* revert, ready for merge
Co-authored-by: Tiago Vasconcelos <talvasconcelos@gmail.com>
* initial commit and still draft, ready for review
* forgot to uncomment this line
* fee estimation and blockheight
* resolve conversation with michael, to use mempool websockets instead of boltz status event
* Update lnbits/extensions/boltz/boltz.py
Co-authored-by: michael1011 <me@michael1011.at>
* add status to swaps, add sorting and data into listing
* add swap status checks, change urls to docker test setup, dynamic minimum and maximum limits
* fix docker hosts for development
* add api endpoints to _api_docs
* add wallet name and id, to list and status information
* fix status_update for reverse_swaps
* chore: format with black
* more blackformatting and refactoring create_swap()
* fix variable bug
* check if swap is already refunded
* use create_task instead of ensure_future
* add mempool and boltz urls depending on DEBUG .env
* raise exception in mempool fails
* fix onchain txs, sending funds to wrong address and add a refund address for normal swaps beforehand
* add status to swaps, add sorting and data into listing
* add swap status checks, change urls to docker test setup, dynamic minimum and maximum limits
* add wallet name and id, to list and status information
* fix status_update for reverse_swaps
* chore: format with black
* use create_task instead of ensure_future
* add mempool and boltz urls depending on DEBUG .env
* fix onchain txs, sending funds to wrong address and add a refund address for normal swaps beforehand
* black formatting
* add some logging with loguru, and remove function duplication
* cleanup readme
* updates/suggestions from calle
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* remove unused comments
* Update API Endpoints
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* un-factor get_boltz_pairs
* added a explaination for the onchain tx
* remove unused template file
* rename api endpoints
* fix isort and prettier
* more verbose logging!!
* add boltz to mock_data.zip
* new mockdata
* remove comment
* better readme
* fix mempool urls
* change /refund /check /status to post requests
* first step in tests2
* add first tests
* change refund,check,status to post requests
* next try on tests
* overall code improvements
* just testing tests
* throw http exceptions in views_api
* require admincheck for refund,check,status and added fastapi documentation for those
* added more tests
* black
* many code improvements
* adding tests
* temp fix test
* fix race condition when pay_invoice fails
* test are working
* add boltz env variables
* add startup check, bugfixes, improvements
* improve on status checking
* remove check_invoice_status
* more fixes and tests
* testing testing testing
* make tests run again inside regtest
* fix bad error :O
* fix postgres boolean bug and add swap test
* Update README.md
Update README.md
Update README.md
Update README.md
* some mypy
* blacked
* the missing commit?
* fix api_docs readme link
* better refunding error catching
fix
* check swaps now also shows pending reverse swap, ui improvements, tooltips
* add backend check for boltz limits
fixup
* many improvements, startup check for swaps working, reverse needs more testing
* little last fixes
* remove unused logic
* fastapi documentation
fixup
* formatting and remove unused tests
* fix test
* fix swapstatus model
* Update lnbits/extensions/boltz/tasks.py
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* Update lnbits/extensions/boltz/views_api.py
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* balance check msg, format
* fix mypy data override
* fix swapstatus, remove can refund column
* Update lnbits/extensions/boltz/README.md
Co-authored-by: michael1011 <me@michael1011.at>
* empty lines
* fix error message when swap is not found
* remove preimage_hash from database
* fix api_docs html
fix api_docs html
* catch boltz network exceptions better
* formatting
* check for timeout on swap at get request
Co-authored-by: michael1011 <me@michael1011.at>
Co-authored-by: fusion44 <some.fusion@gmail.com>
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* another testcase the fails similar to #847
* proper fix
* revert to statuscode 401 and code improvements @calle
Co-authored-by: dni <dni.khr@gmail.com>
* added test for empty post data, for issue #847
* black
* fixed the failing testcase
* Update lnbits/decorators.py
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
Co-authored-by: dni <dni.khr@gmail.com>
Co-authored-by: calle <93376500+callebtc@users.noreply.github.com>
* new argument: unhashed_description
* accept in api
* set unhashed_description for memo case
* bolt11.py: dont be like CLN, accept the hash
* send hash to lnd in b64
* fix cln
* skip descr_hash for cln
* skip
* format
* black and isort for tests
* black and isort for build
* use poetry in Makefile, update pyproject.toml dependencies and add configs for black, pytest, mypy, isort there
* switching github workflow to poetry
* set mininum version to python 3.7
* fix tests
* add types-protobuf to dev packages
* fix cln regtest
* update docs
* try fix 1
* mypy fix2
* fix isort formatting workflow
* add prettier to dev docs
* multiple valid python version for pyproject
* update poetry.lock
* remove development installation, not needed anymore
* fix migration workflows
* format into one test
* fix yaml
* fix pipeline
* fix pipeline
* fix again
* fix
* rename checks
* remove venv tests
* venv test once
Co-authored-by: dni <dni.khr@gmail.com>
* check for description hash
* remove unnecessary asserts for clarity
* assume that description_hash is a hash already
* no lock
* restore bolt11.py
* /api/v1/payments with hex of description
* comment
* Adds tests for GET /wallet
* Update `httpx` to `0.23.0` and `http-core` to `0.15.0` in `venv` installation path
* Fix `secp256k1 = "==0.14.0"` and `cffi = "==1.15.0"`
* return error for wrong key
* payment check use key dependency
* more expressive error
* re-add optional key
* more tests
* more
* more granular
* more testing
* custom event_loop
* tests work
* fix lots of mypy errors
* test_public_api
* both files
* remove unused import
* tests
* tests working
* rm empty file
* minimal test
* set FAKE_WALLET_SECRET="ToTheMoon1"
* set FAKE_WALLET_SECRET="ToTheMoon1"
* trial and error
* trial and error
* test postgres
* test postgres
* test postgres
* test postgres
* test postgres
* test postgres
* test build
* skip mypy