* FIDO2/WebAuthN Support
This adds initial support for WebAuthN/FIDO2 as another MFA mode. U2F is still intact and runs alongside it for now. Once this is merged, I will start work on migrating U2F support to happen over the FIDO2 protocol instead.
* Refactor and future proof system (prep work of seamless u2f migration)
* attempt js fix for mobile devices
* Apply suggestions from code review
Co-authored-by: d11n <mail@dennisreimann.de>
* fix fido name saving
* do not spam logs and hide loader when failed
* PR Changes
* Apply suggestions from code review
Co-authored-by: d11n <mail@dennisreimann.de>
* attempt fido2 bump
* add name if not named for credentials
Co-authored-by: d11n <mail@dennisreimann.de>
* TorServices Refactor to make value passing easier
* Allow specifying Tor services through config
Format:
BTCPAY_TORSERVICES: "BTCPAYSERVER:URL.ONION:VIRTUALPORT;BTC-P2P:URL.ONION:VIRTUALPORT;BTC-RPC:URL.ONION:VIRTUALPORT;SOMEOTHERONIONSERVICE:URL.ONION:VIRTUALPORT"
* add tests
* Optimize Tor Services loader and ensure it is loaded as a hosted service
* Remove Task from Tor service loader
* Use options to parse Tor services
* Fix booboo
* Fix test after fixing booboo
* Adding timeout on long running CanEnumeratetorServices test
(cherry picked from commit 274b77e3175960158b803410037e2c7ff31984be)
* Renaming timeout variable to better name
* Only allow one of torrcfile or torservices
Co-authored-by: Kukks <evilkukka@gmail.com>
Co-authored-by: rockstardev <rockstardev@users.noreply.github.com>
* Refactor and decouple Payout logic
So that we can support lightning and more complex flows like allowing external payments to payouts.
* fix dropdown align
* switch to simpler buttons
* rebase fixes
add some comments
* rebase fixes
add some comments
* simplify enum caveman logic
* reduce code duplication and db round trips
* Fix pull payment date format
* fix issue with payouts to send page not working correctly
* try fix some style issue
* fix bip21parse
* Decouple Shopify from Store
* Decouple shopify from store blob
* Update BTCPayServer.Tests.csproj
* Make sure shopify obj is set
* make shopify a system plugin
* GreenField: Wallet API
* more work
* wip
* rough fiunish of transaction sending api
* Allow to create tx without broadcasting and small fixes
* Refactor Wallet Receive feature ad add greenfield api for address reserve for wallet
* add wallet api client
* add docs
* fix json converter tags
* fixes and add wallet tests
* fix tests
* fix rebase
* fixes
* just pass the tests already
* ugggh
* small cleanup
* revert int support in numeric string converter and make block id as native number in json
* fix LN endpoint
* try fix flaky test
* Revert "try fix flaky test"
This reverts commit 2e0d256325.
* try fix other flaky test
* return proepr error if fee rate could not be fetched
* try fix test again
* reduce fee related logic for wallet api
* try reduce code changes for pr scope
* change auth logic for initial release of wallet api
* Refactor how we handle and validate LN ConnectionStrings
* Migrate existing connection string to Internal Node if they are the same. Cleanup some obsolete fields
* Fix typos, remove duplicated method
* Add a InternalNodeRef to LightningSupportedPaymentMethod
* Plugins flexibility PR
* Makes the BTCPayServerOptions.LoadArgs async to support Plugin hooks and actions
* relax the private set modifiers in the BTCPayNetwork
* Separate IPluginHookService from PluginService to reduce dependencies on DI
* fix some small bugs around image path
* Fix bug with new dbreeze migration where data dir was incorrect
* Update BTCPayServer/Plugins/PluginHookService.cs
Co-authored-by: rockstardev <5191402+rockstardev@users.noreply.github.com>
* Update BTCPayServer/Plugins/PluginHookService.cs
Co-authored-by: rockstardev <5191402+rockstardev@users.noreply.github.com>
Co-authored-by: rockstardev <5191402+rockstardev@users.noreply.github.com>
* More Options refactoring
Continues refactoring config classes to use the propert Options pattern where possible.
DataDirectories and DatabaseOptions are now configured the Options pattern and the BTCPayOptions is now moved alongside the other config setup
* Move COnfigure logic for Options to the Startup
* Introduce Additional Data to Store Blob and move obsolete props to migration
* Fixes and tests
* Small adjustements to prevent tracking too many objects
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Remove only dependency on Dbriize (TextSearch in new invoice column)
* Switch to table for invoice text search
* Adding missing using after rebase
* Removing database migration in preparation for refresh
* Database Migration: Adding InvoiceSearchData
* Refactoring InvoicesRepository to make AddToTextSearch static and non-async
Operation as async is too expensive for simple filtering and AddRange
* Renaming InvoiceQuery property to Take
More inline with what property does by convention, Take is used in conjuction with Skip
* Refactoring SettingsRepository so update of settings can happen in another context
* Adding DbMigrationsHostedService that performs long running data migrations
* Commenting special placing of MigrationStartupTask
* Simplifying code and leaving comment on expected flow
* Resolving problems after merge
* Database Migration: Refreshing database migration, ensuring no unintended changes on ModelSnapshot
Co-authored-by: rockstardev <rockstardev@users.noreply.github.com>
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
This allows plugins to create custom dbcontexts, which would be namespaced in the scheme with a prefix. Migrations are supported too and the table would be prefixed too
Almost an exact replica of https://developer.wordpress.org/plugins/hooks/
This will allow plugins to extend specific points in business logic, such as validation, invoice payload changes, etc
* BTCPay Extensions Part 2
This PR cleans up the extension system a bit in that:
* It renames the test extension to a more uniform name
* Allows yo uto have system extensions, which are extensions but bundled by default with the release (and cannot be removed)
* Adds a tool to help you generate an extension package from a csproj
* Refactors the UI extension points to a view component
* Moves some more interfaces to the Abstractions csproj
* Rename to plugins
* Remove SQLite as default option
IF MERGED, STORES WITH NO DB CONFIG WILL NOT START UNTIL CONFIG IS UPDATED WITH `sqlitefile=sqlite.db`
* remove sqlite conn string option
* toggle between abs path or relative for sqlite db
* Update DefaultConfiguration.cs
Added dedicated endpoint that generates an invoice or returns an existing one as needed for a shopify order
Added rate limiter to shopify endpoint to prevent abuse
Reduce shopify js to a small file
Use events from btcpay modal to reduce constant pinging to btcpay server
Register invoice payment failures on the shopify backend.
replaces #1591 and #1592 , closes#1571 Replaces the Currencies.txt to a json format which includes the networks too ( there is also a test to check now) Also makes CurrencyPair not depend on network and instead use CurrencyNameTable
* GreenField: Payment Requests CRUD
* fixes
* fix swagger
* fix swag
* rebase fixes
* Add new permissions for payment requests
* Adapt PR to archive
* fix tst
* add to contains policxy
* make decimals returned as string due to avoid shitty language parsing issues
* do not register decimal json converter as global
* fix cultureinfo for json covnerter
* pr changes
* add json convertet test
* fix json test
* fix rebase
* Auto label utxos based on invoice and payjoin
This PR introduces automatic labelling to transactions.
* If it is an incoming tx to an invoice, it will tag it as such.
* If it was a payjoin tx , it will tag it as such.
* If a transaction's inputs were exposed to a payjoin sender, we tag it as such.
* wip
* wip
* support in coinselection
* remove ugly hack
* support wallet transactions page
* remove messy loop
* better label template helpers
* add tests and susbcribe to event
* simplify data
* fix test
* fix label + color
* fix remove label
* renove useless call
* add toString
* fix potential crash by txid
* trim json keyword in manual label
* format file
* WIP: Add Tor Http Client Factory
This PR adds a Tor Http Client Factory so that we can do HTTP requests over socks5( which we usually use tor's socks5).
Using it for payjoin when possible.
Currently have an issue where a 503 is always returned. Must be something wrong with my tor config or the socks proxy lib Im using
* fix
* remove external dependency
* make payjoin client use tor client if available
* fix docker test
* use tor client only if available and necessary
* remove bip 79 mention
* BPU Prep Work Part2
* Adjust tests to use the hot wallet when registering deriv scheme
* Add amount to payment data view for onchain payments
* Make zone limits higher when in dev mode (for tests in next PR)
* Make IPaymentMethodDetails serialize/deserialize through payment type using the network
* Allow named settings through settings repo
* Refactor some extensions for next PR
* pr changes
* use json convert for now
* new feature: Wallet Receive Page
closes#965
* Conserve addresses by waiting till address is spent before generating each run
* fix tests
* Filter by cryptocode before matching outpoint
* fix build
* fix edge case issue
* use address in keypathinfo directly
* rebase fixes
* rebase fixes
* remove duplicate code
* fix messy condition
* fixes
* fix e2e
* fix
* Part 1 & Part 2 squashed commits
pr changes
pr fixes
remove config for openid -- no need for it for now
Part 1: OpenIddict - Minor Changes & Config prep
Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies
pr changes
fix merge
fix compile
fix compile #2
Part 1: OpenIddict - Minor Changes & Config prep
add missing nuget
Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies
* Part3: OpenIddict: Add Flows Event Handlers
* pr changes
* fix merge
* fix rebase
* fix imports
* cleanup
* do not allow u2f enabled accounts to log in
* start better tests for flows
* add tests
* fixes
* reintroduce dynamic policy as policies on jwt do not work without it
* reduce logs
* fix incorrect endpoint definitions
* Add implicit flow e2e test
* add code flow and refresh flow
* do not allow jwt bearer auth for all requests( only those under /api)
* remove commentedt code
* make sure authorize attr is marked with scheme
* remove dynamic policy and set claims in jwt handler
* cleanup
* change serversettings policy to not need a claim
* Add test to checkadmin verification
* revert server setting claim removal
* fix test
* switch back to claim
* unit test fixes
* try fix build with weird references to csprojes
* start fixing rebase
* remove https requirement to handle tor
* reformat tests correctly
* fix csproj
* fix ut formatting
* PR Changes
* do not show selenium browser
* mark items to abstract
wip
wip
wip
wip
wip
wip
wip
cleanup
parse other types
compile and fix tests
fix bug
fix warnings
fix rebase error
reduce payment method handler passings
more cleanup
switch tests to Fast mode
fix obsolete warning
remove argument requirement
rebase fixes
remove overcomplicated code
better parsing
remove dependency on environement
remove async
* fixes and simplification
* simplify
* clean up even more
* replace nuglify dependency
* remove extra space
* Fix tests
* fix booboo
* missing setter
* change url resolver
* reduce payment method handlers
* wrap payment method handlers in a custom type
* fix tests
* make invoice controller UI selectlist population cleaner
* make store controller use payment handler dictionary
* fix ln flag
* fix store controller test
* remove null checks on payment handlers
* remove unused imports
* BitcoinSpecificBtcPayNetwork - abstract BTCPayNetwork
* some type fixes
* fix tests
* simplify fetching handler in invoice controller
* rename network base and bitcoin classes
* abstract serializer to network level
* fix serializer when network not provided
* fix serializer when network not provided
* fix serializer when network not provided
* Abstract more payment type specific logic to handlers
* fix merge issue
* small fixes
* make use of repository instead of direct context usage
* reduce redundant code
* sanity check
* test fixes
* Part 1: OpenIddict - Minor Changes & Config prep
* add missing nuget
* pr changes
* pr fixes
* remove config for openid -- no need for it for now
* remove unused extension
* Add tests
* use pay tester http client
* check redirecturl in tests
* init u2f
* ux fixes
* Cleanup Manage Controller
* final changes
* remove logs
* remove console log
* fix text for u2f
* Use Is Secure instead of IsHttps
* add some basic u2f tests
* move loaders to before title
* missing commit
* refactor after nicolas wtf moment
* wip
* add in storage system
* ui fixes
* fix settings ui
* Add Files Crud UI
* add titles
* link files to users
* add migration
* set blob to public
* remove base 64 read code
* fix file query model init
* move view model to own file
* fix local root path
* use datadir for local storage
* move to services
* add direct file url
* try fix tests
* remove magic string
* remove other magic strings
* show error message on unsupported provider
* fix asp net version
* redirect to storage settings if provider is not supported
* start writing tests
* fix tests
* fix test again
* add some more to the tests
* more tests
* try making local provider work on tests
* fix formfile
* fix small issue with returning deleted file
* check if returned data is null for deleted file
* validate azure Container name
* more state fixes
* change azure test trait
* add tmp file url generator
* fix tests
* small clean
* disable amazon and google
comment out unused code for now
comment out google/amazon
* Adjusted mechanism for setting https binding configuration option.
* Modified the https binding logic to use default bind and port options.
* Removed dedicated https certification config properties and instead used direct access via setting name.
* Disable shapeshift and use changelly
* UI to manage changelly payment method
* wip on changelly api
* Add in Vue component for changelly and remove target currency from payment method
* add changelly merhcant id
* Small fixes to get Conversion to load
* wip fixing the component
* fix merge conflict
* fixes to UI
* remove debug, fix fee calc and move changelly to own partials
* Update ChangellyController.cs
* move original vue setup back to checkout
* Update core.js
* Extracting Changelly component to js file
* Proposal for loading spinner
* remove zone
* imrpove changelly ui
* add in changelly config checks
* try new method to calculate amount + remove to currency from list
* abstract changelly lofgic to provider and reduce dependency on js component
* Add UTs for Changelly
* refactor changelly backend
* fix failing UT
* add shitcoin tax
* pr changes
* pr changes