Compare commits

...

2031 Commits

Author SHA1 Message Date
4ca83de131 changelog (#1669)
* changelog

* Update Changelog.md

Co-authored-by: Dennis Reimann <mail@dennisreimann.de>

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Update Changelog.md

* Apply suggestions from code review

Co-authored-by: Pavlenex <pavlenex@btcpayserver.org>

Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: Pavlenex <pavlenex@btcpayserver.org>
2020-06-26 23:07:35 +09:00
f2b986a357 Remove warnings 2020-06-26 20:52:59 +09:00
a0065bc2ba catch cancled task exception in notif 2020-06-26 11:54:18 +02:00
dc43b54892 bump version 2020-06-26 17:09:00 +09:00
603a3dd273 bump NBitcoin 2020-06-26 16:29:40 +09:00
16b5f70e4b Fix permission on store's lightning server 2020-06-26 16:20:34 +09:00
9a989b46cc add supporter 2020-06-26 07:12:22 +02:00
6c64e7c220 Update fi-FI language 2020-06-25 18:03:33 +09:00
d66325a241 fix coin parser for weird networks 2020-06-25 10:51:27 +02:00
bf8190d122 bump nbx docker 2020-06-25 10:33:05 +02:00
23aec25686 Merge pull request #1685 from dennisreimann/broken-links
Check and fix broken anchor links.
2020-06-25 17:25:43 +09:00
405c0c609f Merge pull request #1691 from Eskyee/patch-9
remove unnecessary whitespace
2020-06-25 17:22:15 +09:00
95e0f3378d Merge pull request #1690 from btcpayserver/consolidatetables
Consolidate tables before release
2020-06-25 17:17:57 +09:00
c9850a5e24 remove unnecessary whitespace
cleaning up the unnecessary white space.
2020-06-25 08:33:34 +01:00
3cf7d01f37 Merge pull request #1688 from Kukks/fix-coin-parser
fix ypub/zpub parsing for all alts
2020-06-25 15:45:02 +09:00
ae9fae1f7d Consolidate tables before release 2020-06-25 15:43:45 +09:00
69b423edc8 Merge pull request #1689 from btcpayserver/invoicerefund
Implement invoice refund
2020-06-25 15:32:17 +09:00
5e8b379c50 Add invoice refund 2020-06-25 15:31:46 +09:00
d03124dfba Add an approval state to pull payments 2020-06-25 13:35:10 +09:00
fdc11bba8d Remove old unused refund table 2020-06-25 13:34:25 +09:00
dc5d8a6cb7 Refresh UI notifications automatically on update (#1680)
* Refresh UI notifications automatically on update

* make notif timeago live

* pass cancellation token

* Update InvoiceEventData.cs
2020-06-24 10:23:16 +02:00
2042f59283 fix ypub/zpub parsing for all alts
@gruve-p reported that ypub import was not working and then found this. no ypub/zpub import for any alts worked before lol
2020-06-24 10:18:45 +02:00
8230a408ac Add pull payment feature (#1639) 2020-06-24 10:34:09 +09:00
7805e5cea4 Fix version byte for zpub (#1686) 2020-06-24 10:19:50 +09:00
36868644dc Check and fix broken anchor links.
In addition to #1682.
2020-06-23 17:51:25 +02:00
321b67efd4 remove password type input on passphrase 2020-06-23 16:41:04 +02:00
9ea42dd981 Checkout CSS improvements (#1684)
* Checkout: Hide hidden items

As [reported on Mattermost](https://chat.btcpayserver.org/btcpayserver/pl/4mxado5a3ifnzxyhrszusz4q8e) the old way of hiding does not work well with widescreen displays.

* Checkout: Minor theme improvements
2020-06-23 16:25:43 +02:00
631d97c6b3 Fix 404 link (#1682) 2020-06-23 22:52:19 +09:00
13569fe4a2 Improve notifications UI (#1678)
* Add No JS support for notification seen toggle

* Invalidate cache when user toggles seen/massaction

* mark notif as seen after click

* add additional mass actions

* fix formatting

* add pav changes

* invalidate cache on new notifs
2020-06-23 10:06:02 +09:00
12e2b93ac9 Add invoice notifications (#1674)
* Add invoice notifications

* fixeth le order

* comment-to-code auto commit

* reduce notifications
2020-06-22 16:32:51 +09:00
0dd1b668cd Support wasabi file format input (#1671)
* Support wasabi file format input

This adds support to importing the wasabi file format which seems to be used more for imports by Wasabi,ColdCard,BlueWallet & Cobo Vault (and way better than electrum anyway)

* fixes

* add test
2020-06-22 15:39:29 +09:00
e751be21ea Altcoin - Add Chaincoin (#1636)
* Altcoin - Add Chaincoin

* Image

* Altcoin - Rating CHC

* Altcoin - Chaincoin insertion

* Revert

* Fix large diff

* Unit Test revert
2020-06-22 14:41:20 +09:00
15b8a159f5 Merge pull request #1672 from NicolasDorier/refactor/bip78
Adapt payjoin for BIP78
2020-06-22 13:58:14 +09:00
24a88fcfb5 Adapt payjoin for BIP78 2020-06-22 13:57:42 +09:00
9f842be53a fixed broken URL links (#1677) 2020-06-20 17:08:50 +02:00
c6632fe083 Change generate wallet passphrase to text input to fix autocomplete (#1676) 2020-06-20 16:02:36 +02:00
0b720768b8 Asyncify NotificationManager 2020-06-17 11:26:21 +09:00
9f12fe7e0a Merge pull request #1670 from btcpayserver/refactor/notifications2
Introduce INotificationHandler
2020-06-17 10:12:16 +09:00
cff5b82b06 Introduce INotificationHandler 2020-06-16 23:29:25 +09:00
677cc3bee9 Merge pull request #1666 from NicolasDorier/refactor/notificatoin
Small refactoring of Notifications
2020-06-16 15:46:27 +09:00
aef5cc50d5 Add the StoreScope 2020-06-15 20:52:53 +09:00
d7eeadac41 Do not allow generation of dummy even if regtest 2020-06-15 17:19:03 +09:00
7cdfa7d4c5 Use attribute to map notifcations to their string 2020-06-15 17:19:03 +09:00
9070b475ea Make the NotificationSender more generic 2020-06-15 17:19:02 +09:00
43a99bfef2 fix supporters 2020-06-15 10:08:38 +02:00
18ffd678b7 Bugfixing context factory reference 2020-06-15 01:25:55 -05:00
7566d3dac8 Tweaking date display in notifications 2020-06-15 01:23:55 -05:00
741b93dc04 Removing obsolete NotificationDbSaver hosted service 2020-06-15 01:22:09 -05:00
b19298f633 Merge pull request #1651 from btcpayserver/feat/notifications
Notification system
2020-06-15 00:59:51 -05:00
1954dfd4d7 Removing Generate Test Notification button 2020-06-15 00:58:23 -05:00
31cc966b38 Bugfixing setting of Created, expanding test 2020-06-15 00:57:20 -05:00
261931c8ef Adding list notification test 2020-06-15 00:53:12 -05:00
2c44c25b25 Signaling reference pass, bugfixing reference to deserialized blob 2020-06-15 00:36:50 -05:00
f072ec3a8c Adding paging to notifications grid 2020-06-15 00:00:56 -05:00
113869bd08 Renaming to BaseNotification 2020-06-14 23:49:08 -05:00
0dab96f0a6 Moving Notification to dedicated Service namespace 2020-06-14 23:49:08 -05:00
342f63a625 Directly casting to NotificationEvent, evading null case 2020-06-14 23:49:08 -05:00
f52c6b65ce Switching to using registered IMemoryCache 2020-06-14 23:49:08 -05:00
07efa87fe5 Refactoring conversion of data to view model, switching to FillViewModel 2020-06-14 23:49:08 -05:00
ffa04b625a Changing case for private methods 2020-06-14 23:49:08 -05:00
b9807aac56 Add Notification entity to database in one migration 2020-06-14 23:49:08 -05:00
b973c0ab82 Removing database migrations in preparation for squashing them into one 2020-06-14 23:49:08 -05:00
0d876b9322 Removing csv jquery voodoo and using checkbox viewmodel mapping 2020-06-14 23:49:08 -05:00
09a72f2cfb Cascade delete notifications for user 2020-06-14 23:49:08 -05:00
455ac8786a Explicitly define NotificationType for NewVersionNotification 2020-06-14 23:49:08 -05:00
213e68859e Renaming class file 2020-06-14 23:49:08 -05:00
2f4967a23a Limiting Notification string fields 2020-06-14 23:49:08 -05:00
0c170fc399 Caching of notifications, refactoring NotificationManager into singleton 2020-06-14 23:49:08 -05:00
d1383d78c5 Disconnecting NotificationBase from Event, introducing NotificationSender 2020-06-14 23:49:08 -05:00
8876f1f992 Making NotificationEventBase classes internal to reduce leak 2020-06-14 23:49:08 -05:00
b53cb50a91 Pkzipping Notification blobs to keep with convention 2020-06-14 23:49:08 -05:00
1f35534dfb Providing overridable NotificationType property, direct mapping 2020-06-14 23:49:08 -05:00
294dad01c3 Switching to UserManager for fetching user id 2020-06-14 23:49:08 -05:00
0ec566e6df Removing modal reference that's not needed 2020-06-14 23:49:08 -05:00
536a85eadc Moving Notifications nav item to separate partial 2020-06-14 23:49:08 -05:00
8cdc73c31f Moving layout partial to separate folder 2020-06-14 23:49:08 -05:00
afaabd06d9 Abstracting conversion to ViewModel, requiring implementation on class 2020-06-14 23:49:08 -05:00
bb6f6e7d27 Adding icon to Action link 2020-06-14 23:49:08 -05:00
73588ea22b Generalizing saving to database and registration of NotificationEventBase classes 2020-06-14 23:49:08 -05:00
b6e3ad9325 Refactoring code to extract claim parsing 2020-06-14 23:49:08 -05:00
7e9bf9598d Providing support for mass actions on notifications, delete first 2020-06-14 23:49:08 -05:00
3680e03cdb Moving to structure where click on td is counted as seen 2020-06-14 23:49:08 -05:00
0b89598f39 Marking notification read through js magic 2020-06-14 23:49:08 -05:00
bad4c9dc60 Confirming deleting of notification 2020-06-14 23:49:08 -05:00
95a751c505 Displaying last 5 notifications in Layout 2020-06-14 23:49:08 -05:00
359e761922 Mark read and unread 2020-06-14 23:49:08 -05:00
654bb0c8ca Displaying number of unread messages in _Layout.cshtml 2020-06-14 23:49:08 -05:00
3eb503b13b Tweaking notification display and allowing deletion 2020-06-14 23:49:08 -05:00
31e0bb43e8 Updating migration with our ef core voodoo magic
We're deleting partial designer classes and moving attributes to main class
2020-06-14 23:49:08 -05:00
4bc0fd98ca Saving notifications to database and loading them from there 2020-06-14 23:49:08 -05:00
9206f0cd2e Handling notifications event and rendering them through controller 2020-06-14 23:49:08 -05:00
e834cd7595 Add Notification Entity migration 2020-06-14 23:49:08 -05:00
50e1e2d982 Standardizing DbSet properties, reducing whitespace 2020-06-14 23:49:08 -05:00
6ddb20d022 Foundation for events to propagate notifications 2020-06-14 23:49:08 -05:00
0cacfa140b Renaming Notice to Notification
Longer, but what can we do...
2020-06-14 23:49:08 -05:00
1ab016d21e Foundation for notices grid 2020-06-14 23:49:08 -05:00
6ad7d18c42 Escaping at character in link 2020-06-14 23:31:54 -05:00
a46774c2ee Merge pull request #1663 from Kukks/supporters
Handle Supporters display
2020-06-15 09:15:56 +09:00
58f9b9b0c1 Handle Supporters display
closes #1624
2020-06-14 16:09:36 +02:00
0000257dcc Merge pull request #1659 from Kukks/psbt-fullprev
Add AlwaysIncludeNonWitnessUTXO to Wallet Send
2020-06-14 22:47:57 +09:00
8c3907df82 add info 2020-06-14 15:45:58 +02:00
f7c1dff576 Merge pull request #1660 from woutersamaey/icon-colors-bootstrap-friendly
Colored "check" and "times" icons green or red the bootstrap way
2020-06-14 22:12:20 +09:00
16982dc76a Merge pull request #1662 from bolatovumar/fix-1661
Update "Back to the app list" links to not open in new tab by default
2020-06-14 22:11:57 +09:00
9532db7bae Update "Back to the app list" links to not open in new tab by default
fix #1661
2020-06-13 19:18:38 -07:00
a93062e0f0 Colored "check" and "times" icons green or red the bootstrap way 2020-06-12 15:22:39 +02:00
b7c65b2ba6 Add AlwaysIncludeNonWitnessUTXO to Wallet Send 2020-06-12 13:58:55 +02:00
f40a8853f6 Require Owner role to the store for modifying store via Greenfield 2020-06-12 18:26:20 +09:00
1889c33d80 Merge pull request #1656 from dennisreimann/docs-links
Update and fix documentation links
2020-06-12 14:51:12 +09:00
308ca479df Merge pull request #1655 from pavlenex/utxo-change
Rename "Make sure no UTXO change is created" to "Don't create UTXO change"
2020-06-12 14:50:38 +09:00
0b7d5c839a Merge pull request #1630 from Kukks/public-endpoint-json
Pay endpoint: if JsonResponse is true, send error in json too
2020-06-12 14:50:17 +09:00
9e0d6618b1 Merge pull request #1629 from Kukks/ipnorder
Add order id to IPN
2020-06-12 14:49:51 +09:00
02a2bd92af Merge pull request #1658 from NicolasDorier/thub
Add thunderhub integration
2020-06-12 14:29:11 +09:00
03d90f79ea Add thunderhub integration 2020-06-12 14:28:28 +09:00
b066cfd904 Update and fix documentation links 2020-06-11 16:09:33 +02:00
475d7f01b7 fix broken link 2020-06-11 12:22:33 +02:00
b30597b8f1 Change the seed saved in NBXplorer to hot wallet (#1652)
* Change the seed saved in NBXplorer name

* the hot wallet
2020-06-11 12:19:40 +02:00
1824f03d35 Rename UTXO change 2020-06-11 12:10:51 +02:00
4cd3d167b1 Autofocus 2FA-code input on page load (#1650)
UX improvement that allows you to directly paste the 2FA-code. Useful when you are using e.g. the 1Password browser extension.
2020-06-10 19:40:06 +02:00
4640c63094 Merge pull request #1637 from jad0c/patch-1
fix broken FAQ link in readme
2020-06-10 16:49:59 +09:00
2460012caa Merge pull request #1646 from Kukks/fix/pos-format
Fix possible view exception in pos app
2020-06-10 10:27:37 +09:00
db7768ef57 Fix possible view exception in pos app
Replaced string.format with a simpler replace and also allow `{Price}` instead of `{0}` as it's obscure to non c# devs
2020-06-09 19:56:44 +02:00
74b6aa7353 Merge pull request #1623 from Kukks/telemetry
Opt out from telemetry data in docker
2020-06-09 22:07:51 +09:00
0e0297d650 Merge pull request #1643 from NicolasDorier/fix/ln
Fix lightning implementation, docs and tests
2020-06-09 21:52:45 +09:00
8dd6ecc0b8 Fix lightning implementation, docs and tests 2020-06-09 17:24:34 +09:00
e84d4d3cb5 Merge pull request #1644 from btcpayserver/feat/lnd-0.10.1-beta
Bump LND version to 0.10.1-beta
2020-06-09 16:06:37 +09:00
da54154ae7 Bump LND version 2020-06-08 23:28:45 -05:00
a9dbbe1955 Merge pull request #1640 from btcpayserver/renametoscope
Rename Permission.StoreId to Permission.Scope
2020-06-07 23:27:11 +09:00
3fbe86c286 Rename Permission.StoreId to Permission.Scope 2020-06-07 23:17:48 +09:00
0022e71dd4 Merge pull request #1628 from Kukks/greenfield/consistentreturn
GreenField: Handle status codes, error models consistently
2020-06-07 18:59:22 +09:00
c74121fefc Opt out from telemetry data in docker
https://www.michaelcrump.net/part12-aspnetcore/
https://docs.microsoft.com/en-us/dotnet/core/tools/telemetry
2020-06-07 08:32:00 +02:00
67c3581989 Add order id to IPN
fixes #1598
2020-06-07 08:31:42 +02:00
1d1c1141a3 Pay endpoint: if JsonResponse is true, send error in json too
fixes #1532
2020-06-07 08:30:54 +02:00
cf00784096 fix swagger 2020-06-07 08:30:04 +02:00
db209af787 Updating ports for merchant lnd
I saw several instances where btcpayservertests_merchant_lnd_1 failed to start in circleci
2020-06-07 01:24:47 -05:00
30bd94ee43 fix tests 2020-06-07 08:21:45 +02:00
f313a5f221 GreenField: Handle status codes, error models consistently 2020-06-07 08:21:45 +02:00
b9ef5af5d7 Fixing variable reference
Who'll save Emperor if not me
2020-06-06 23:52:21 -05:00
59677b6521 fix broken FAQ link in readme 2020-06-06 21:44:13 -04:00
56283df05a Can only sign with NBX if imported with NBX 2020-06-07 09:38:29 +09:00
ef271a088a Merge pull request #1634 from dennisreimann/minor-fixups
Minor fix ups
2020-06-06 09:48:28 +09:00
6043b7c75d Minor fix ups
Resolves https://github.com/btcpayserver/btcpayserver/pull/1633#discussion_r435655010
2020-06-05 11:38:55 +02:00
c338779f0e Merge pull request #1633 from dennisreimann/onion-location
Add Onion-Location HTTP header
2020-06-05 11:09:55 +09:00
67758609a7 Add Onion-Location HTTP header
Closes #1626.
2020-06-04 08:53:55 +02:00
f2bb24f6ab Fix build error #1588 2020-06-03 15:49:27 +09:00
44ee7c66ce Merge pull request #1620 from NicolasDorier/additionaldata
[GreenField] Add additional data to allow roundtrip of upper version fields
2020-06-01 19:23:35 +09:00
117622200b Merge pull request #1622 from Kukks/network-rates-decouple
Remove dependency on Common from Rating
2020-06-01 15:25:19 +09:00
340ba5c714 fix symbol 2020-06-01 08:13:39 +02:00
9e16b506e5 Small esthetic refacotring 2020-06-01 13:10:21 +09:00
e865d85c2c Merge pull request #1619 from NicolasDorier/adddoc
[Greenfield] Document store API
2020-06-01 11:47:16 +09:00
284e66c730 fix test 2020-05-31 20:54:50 +02:00
587f244f1d Remove dependency on Common from Rating
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
2020-05-31 20:54:50 +02:00
379e5741e7 fix broken bootstrap theme generator link 2020-05-31 20:54:24 +02:00
ec4c346e0a [Greenfield] Document store API 2020-05-31 12:04:23 +09:00
5099f98d2a [GreenField] Add additional data to allow roundtrip of upper version fields 2020-05-31 11:51:36 +09:00
ebc99adc58 Merge pull request #1615 from NicolasDorier/refactor/timespan
Always use second based TimeSpan in Greenfield
2020-05-31 10:55:40 +09:00
048dff7e9e Always use second based TimeSpan in Greenfield 2020-05-31 08:52:32 +09:00
a70934938a Merge pull request #1605 from dennisreimann/pos-refactoring
Point of Sale Refactoring
2020-05-30 13:14:50 +09:00
d9a93f996f Merge branch 'master' of https://github.com/btcpayserver/btcpayserver 2020-05-29 18:47:40 +09:00
3456d87bb5 Merge pull request #1612 from Kukks/api/swaggerln
Api/swaggerln
2020-05-29 18:47:25 +09:00
4947fa4d45 Add also money json converter 2020-05-29 10:15:01 +02:00
37f4b34b5e Add Lightmoney json converter + do swagger defs for ln api 2020-05-29 10:04:28 +02:00
66206399e1 Rename LightningPrivateRouteHint =>privateRouteHints 2020-05-29 09:03:07 +09:00
1e3f62718d GreenField: Cross-implemenation Lightning Node API (#1566)
* GreenField: Cross-implemenation Lightning Node API

* switch to hard unrsstricted check

* fix

* set LightningPrivateRouteHints in swagger + stores api

* add priv route hint

* rename models and add swagger defs to models
2020-05-29 09:00:13 +09:00
114ab98059 Merge pull request #1611 from Kukks/fix/pr-expiry-big
Fix: Paid payment requests are not marked as completed if there is an expiry date set
2020-05-29 08:58:58 +09:00
47baa219fd Merge pull request #1609 from NicolasDorier/pj3
Adapt PJ implementation to latest BIP
2020-05-29 08:58:38 +09:00
96509717cb Fix: Paid payment requests are not marked as completed if there is an expiry date set 2020-05-28 17:45:06 +02:00
89bbcb6092 Merge pull request #1610 from pavlenex/supporter-new
Add new supporter to readme
2020-05-29 00:05:21 +09:00
95dbb65612 GreenField: Payment Request property missing jsonconverter 2020-05-28 16:57:03 +02:00
7db8d52624 add missing title in swagger payment request def 2020-05-28 16:53:50 +02:00
77073fa78c fix swagger schema 2020-05-28 16:42:47 +02:00
9e315f99d0 POS: Updates from code review 2020-05-28 12:50:08 +02:00
16ad3ee7fe Add test for payment request payment status update in greenfield 2020-05-28 09:48:47 +02:00
559015c70d POS: Test fixes 2020-05-28 09:40:34 +02:00
15d02dab4f Add new supporter to readme 2020-05-28 09:28:42 +02:00
332a1da167 POS: Updates from code review 2020-05-28 08:59:48 +02:00
e12aa9e657 POS: Use views instead of partials 2020-05-28 08:50:04 +02:00
9503e07dc8 Adapt PJ implementation to latest BIP 2020-05-28 13:35:48 +09:00
9b44370832 support version revision tags 2020-05-27 16:56:39 +02:00
568015c58f add new supporter 2020-05-27 16:41:50 +02:00
58f56eac90 POS: Updates from code review
Thanks @kukks
2020-05-27 14:20:21 +02:00
03532e4063 Merge pull request #1604 from janoside/master
Clarify/clean up warning shown when adding a lightning node
2020-05-27 12:34:36 +09:00
de6081c2dc Merge pull request #1602 from Kukks/electrum-file
Rename Coldcard to Electrum/Airgapped hardware wallets
2020-05-27 12:33:43 +09:00
197b46880c POS: Separate static and cart views 2020-05-26 21:53:23 +02:00
b7ec22ee89 POS: Set ViewType via optional URL parameter
Falls back to the DefaultView defined in the POS settings.

POS: Fix POST-Route
2020-05-26 21:53:22 +02:00
fad53a9fa2 POS: Replace EnableShoppingCart with DefaultView 2020-05-26 16:48:47 +02:00
5b4fec11ed Merge pull request #1596 from NicolasDorier/random-rbf
Randomize RBF if the user does not care
2020-05-26 03:23:33 +09:00
0ef4602a65 Clarify/clean up warning shown when adding a lightning node 2020-05-25 13:42:58 -04:00
c8f182f13f Rename Coldcard to Electrum/Airgapped hardware wallets
Also adds support to read the xpub from the file directly ( Cobo Vault support)
2020-05-25 15:49:44 +02:00
36630d9586 Randomize RBF if the user does not care 2020-05-25 19:46:42 +09:00
32f2acee53 Removed unexisting file in csproj 2020-05-25 16:08:16 +09:00
3be2ef5c91 Merge pull request #1599 from NicolasDorier/removeledger
Remove LedgerWallet direct integration
2020-05-25 07:50:33 +09:00
7e5d269c39 Remove LedgerWallet direct integration 2020-05-25 07:41:30 +09:00
6e0c090622 Merge pull request #1597 from NicolasDorier/refactor/wallet-param
Refactor parameter passing in wallet functions
2020-05-25 07:15:52 +09:00
cccf3ca617 The signing context should not be passed to PSBT screen 2020-05-25 07:05:01 +09:00
9e9b5945fe Ensure the payjoin can generate a high R signature if the payer is sending it 2020-05-25 06:47:43 +09:00
77f6019d82 Use EnforceLowR suggestion of NBXplorer for signing 2020-05-25 06:34:49 +09:00
35432d919c Refactor common data structure for wallet into SigningContext 2020-05-25 06:29:06 +09:00
25e6f82aa3 Refactor parameter passing in wallet functions 2020-05-25 04:55:28 +09:00
d22993871f Bump NBXplorer 2020-05-24 20:19:06 +09:00
80563de587 Add support for Bitpay invoice create property "paymentCurrencies" (#1589) 2020-05-24 19:11:26 +09:00
b5102c4269 Bump NBX (#1595) 2020-05-24 17:59:43 +09:00
9d215ea27d Reuse same html and handling of commands for PSBT signing/ Wallet Send (#1587)
* Reuse same html and handling of commands for PSBT signing/ Wallet Send

* fix ledger
2020-05-24 04:31:21 +09:00
cdf6886c39 Require loggedin user for docs? (#1567)
* Require loggedin user for docs?

We had talked before that docs should be for authorized users only. We had it in when we had Nswag but must have lost it after we switch to manual swagger files

* fix
2020-05-24 04:18:51 +09:00
79b034b505 GreenField: Add properties to Store API (#1573)
* GreenField: Add properties to Store API

* Update StoreBaseData.cs

* fix api

* fix swagger
2020-05-24 04:13:18 +09:00
bfba105aec Update packages (may fix #1590) 2020-05-22 19:23:37 +09:00
1bbdaa1251 Make sure replaced transactions have linethrough in the invoice list 2020-05-21 01:50:39 +09:00
ca462bec84 Merge pull request #1585 from btcpayserver/feat/private-route-hints
Adding private route hints based on store settings
2020-05-20 08:10:08 +09:00
eb5dcab32d Upgrading to BTCPayServer.Lightning to 1.1.15 2020-05-19 18:00:35 -05:00
ca3acdacdc Setting PriveRoute hints when creating lightning invoices 2020-05-19 16:47:26 -05:00
33f63508e8 Adding setting in checkout experience for inclusion of private route hints 2020-05-19 16:27:06 -05:00
5033cb3186 Support specifying payment method through apps (#1539)
* Support specifying payment method through apps

closes #1525
This is great if you want to offer items with an incentive to use a specific payment method without messing with the rates.
For example, you can have `Item A` which costs 25$ and your store is configured for USDT and BTC. You can create two items, with different prices, where Item A costs 20$ if you pay with bitcoin or 25$ if you paid in dirty fiat pegs

* make code cleaner

* Add Test

* fix test

* fix test
2020-05-20 03:54:24 +09:00
3d1122be7c Merge pull request #1583 from NicolasDorier/refactor/serverinfo
Refactor server info data structure
2020-05-20 03:43:39 +09:00
1d092a15fb Refactor server info data structure 2020-05-20 03:27:06 +09:00
501a21b89e bump .net core on dockerfile 2020-05-20 03:10:30 +09:00
b9006e4417 fix rebase
# Conflicts:
#	BTCPayServer.Tests/GreenfieldAPITests.cs
2020-05-19 20:09:19 +02:00
5b3b96b372 GreenField: Payment Requests CRUD (#1430)
* 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
2020-05-20 02:59:23 +09:00
338a0f9251 Merge pull request #1576 from dennisreimann/api-server-info
GreenField: Add Server Info API basics
2020-05-20 02:31:16 +09:00
29ba761d7c Merge pull request #1581 from NicolasDorier/syncpj
Sync payjoin receiver implementation to the bip
2020-05-19 21:10:35 +09:00
b96e668dfd Sync payjoin receiver implementation to the bip 2020-05-19 20:57:04 +09:00
de3753d04e Rename payjoin optional parameters, implement sender minFeeRate 2020-05-19 20:57:03 +09:00
2a030fe7fb Use different close button color variable (#1580)
fix #1579
2020-05-18 21:52:26 +02:00
f595d823b6 Decode item description on POS app page (#1578)
fix #938
2020-05-18 21:51:58 +02:00
78d191f7d8 Incorporate code review feedback 2020-05-18 16:51:21 +02:00
3b6dbe76c5 Add sync state 2020-05-18 16:02:15 +02:00
e3b348b55c GreenField: Add Server Info API basics 2020-05-18 15:29:04 +02:00
cf012a7946 fix dead link (#1575) 2020-05-18 08:44:12 +02:00
8d1ff01ee8 Adapt payjoin implementation to the BIP (#1569) 2020-05-17 05:07:24 +09:00
e9bda50054 Bumping LND to v0.9.2-beta in dev 2020-05-13 18:06:14 -05:00
8ca2824b00 Open wallet with BIP21 links (#1565)
* Open wallet with BIP21 links

https://i.imgur.com/IWefMKB.gifv

* remove debugger;

* Move to settings
2020-05-12 22:32:33 +09:00
f7d70daff3 Add invalid-transaction as wellknown error 2020-05-12 21:42:51 +09:00
42d27d69dc Merge db migrations 2020-05-10 00:53:21 +09:00
5a9d1e3257 Merge pull request #1560 from Kukks/archive-pr
Archive Payment reqeusts
2020-05-10 00:51:59 +09:00
9cc9a16bb9 Merge pull request #1556 from Kukks/invoice-archive
Archive Invoice
2020-05-10 00:51:11 +09:00
a3efe9a9dc Merge pull request #1561 from NicolasDorier/bp/new
Refactoring of payjoin to support new spec
2020-05-10 00:50:40 +09:00
94b0b9498d adapt tests 2020-05-09 15:17:59 +02:00
bb322d6bf3 add e2e test 2020-05-09 15:05:52 +02:00
b0f820e95a Implement noadjustfee, feebumpindex and v parameters for payjoin 2020-05-09 21:22:00 +09:00
da588380ed Remove httpCode from error message 2020-05-09 19:33:48 +09:00
8fa65408ed Archive Payment reqeusts
closes #1588
2020-05-08 12:33:47 +02:00
2d68d0da63 Redo App template editor with Vue based app (#1544)
* Redo App template editor with Vue based app

* fix styles better

* remove debug

* support methods

* make price required

* fix styling for validation errors

* show create or edit in title based on context

* add border bottom when image present

* escape/unescape

* more validation fixes

* fix responsive style

* Toggle template field

* add errors to the app

* enhance validation
2020-05-08 05:37:59 +09:00
2bc7fa0316 Show warning when enabling Payjoin but supported payment methods are not using a hot wallet (#1545)
* Show warning when enabling Payjoin but supported payment methods are not using a hot wallet

https://i.imgur.com/RXBhr0n.png fixes #1474

* expose p2p port
2020-05-08 05:37:10 +09:00
55f416c48c apply window scroll offset to copied notification offset (#1550)
resolves #1549
2020-05-08 05:35:25 +09:00
aff91f49ef Make fee rate options pretty (#1554) 2020-05-08 05:34:39 +09:00
ba02372d13 Try to tell browser that autocomplete is not welcome in generate wallet (#1555)
fixes #1553
2020-05-07 21:41:37 +09:00
e5a3ef3e22 Archive Invoice 2020-05-07 12:50:07 +02:00
137c3ef2ce Add changelog 2020-05-05 19:19:27 +09:00
87352f0b62 Make sure wallet support decimal fee, and allow user to select different fee rate based on expected confirmation time 2020-05-05 19:10:53 +09:00
2226884946 add qrcode margins (#1547)
addresses #1537 by adding a margin to the qrcodes in ShowLightningNodeInfo and WalletReceive (use same settings as Checkout)
2020-05-05 10:26:57 +02:00
9d2cd46464 fix tests and bump 2020-05-05 07:23:00 +09:00
f3b2b350ce Fix build 2020-05-05 07:06:32 +09:00
96c04481da bump NBXplorer 2020-05-05 06:55:19 +09:00
dad2642fa7 Make sure we match the user's sequence 2020-05-05 04:45:10 +09:00
59bdb943dd Reverting invoice row display so AM/PM is not cut off 2020-05-04 01:42:02 -05:00
67da6ee379 Decimal precision and filter valid transaction (#1538)
The liquid transactions list was showing all transactions to the wallet, even when it had nothing to do with the specific crypto code (e.g sending LBTC txs in USDT, LCAD in USDT, etc). This PR fixes that.

It also uses the previously introduced checkout decimal precision fix to the Wallets screen, specifically the balance amount on wallet llist and balance change on transaction list.
2020-05-04 01:04:34 +09:00
9c9c102e74 fix PadRight formatter 2020-05-03 09:32:10 +02:00
26241be6fa Ensure dropdown option doesn't overflow container (#1533)
fix #1526
2020-05-03 01:39:39 +09:00
2bb4dd5d01 Fix decimal points shown in Checkout UI based on currency ( always showed btc decimal precision before) (#1529)
* Fix decimal points shown in Checkout UI based on currency ( always showed btc decimal precision before)

* cleanup ShowMoney
2020-05-03 01:28:35 +09:00
5312bb1dee Merge pull request #1535 from Kukks/elementsbump
Bump elements and fix test
2020-05-02 20:47:22 +09:00
bf6f5aa335 Bump c-lightning 2020-05-02 20:33:55 +09:00
4a58763f98 Bump elements and fix test 2020-05-02 13:26:55 +02:00
b8202da7aa Fix tests 2020-05-02 00:59:36 +09:00
edfc82ac75 Merge pull request #1522 from Kukks/view-seed
Add View seed to wallet settings
2020-05-01 21:36:27 +09:00
b28fc85974 Fix: Do not returns HTML content if authentication to API fails 2020-05-01 21:33:42 +09:00
ab1b36bcdc add test for view seed 2020-05-01 13:34:11 +02:00
5443ac4688 Merge pull request #1531 from Kukks/api/store/prep
GreenField: Prep store for more data
2020-05-01 18:49:29 +09:00
d92d8ba0e4 Merge pull request #1524 from Kukks/txlist-labelfix
Add top Label filter + fix label link inconsistency
2020-05-01 18:47:48 +09:00
0f19d303eb Merge pull request #1527 from Kukks/app-inv-clean
Make App Inventory Updater run updates in order
2020-05-01 18:46:08 +09:00
1332f597e5 Merge pull request #1528 from Kukks/payjoin/ui-linkfix
Payjoin: Fix payjoin detection in checkout UI
2020-05-01 18:44:50 +09:00
de004074b7 Fix typo 2020-05-01 18:43:40 +09:00
29741f39ac Merge pull request #1523 from Kukks/sender-payjoin-label
Tag payjoin for sender too
2020-05-01 05:27:33 +09:00
33ea8984fc format 2020-04-30 16:44:27 +02:00
85517b0344 GreenField: Prep store for more data
refactored things around a bit to make it cleaner for when we add more properties to the store model
2020-04-30 16:43:16 +02:00
74c574255e Payjoin: Fix payjoin detection in checkout UI
sometimes, it would think there is a payjoin enabled invoice when really, it was just the address or asset id that has `pj` in it
2020-04-30 09:05:17 +02:00
70d4e98dff Make App Inventory Updater run updates in order
followed the same logic we used in the new auto labelling
2020-04-29 14:51:37 +02:00
f1900d30f2 clean format 2020-04-29 11:21:47 +02:00
463567cb07 Add top Label filter + fix label link inconsistency 2020-04-29 10:11:23 +02:00
53b0e675c3 Tag payjoin for sender too 2020-04-29 09:09:16 +02:00
d323bb35cc Add View seed to wallet settings 2020-04-29 08:28:13 +02:00
3e13e478ad Fix click on label 2020-04-29 01:43:41 +09:00
5f421b0679 Changlog 1.0.4.2 (#1513) 2020-04-29 01:23:02 +09:00
c99fe54db1 bump 2020-04-29 01:21:58 +09:00
05a2985c5b Changlog 1.0.4.2 2020-04-29 01:07:20 +09:00
47408498b9 Revert "View seed option if available (#1518)" (#1521)
This reverts commit e75b4ec6bfb41dfca018315350e7305f95cc39f0.
2020-04-29 00:57:41 +09:00
e75b4ec6bf View seed option if available (#1518) 2020-04-29 00:55:53 +09:00
ff99ab1239 Improve pay button with custom text (#1520)
Fixes #1517.
2020-04-29 00:52:48 +09:00
2841cd8498 Updates from design system (#1519)
* Use variable names as defined in the design system

* Use bootstrao version from design system
2020-04-29 00:48:55 +09:00
519f4af867 Bump pj original tx broadcast timeout 2020-04-29 00:23:51 +09:00
68cc3aba21 update translations 2020-04-29 00:22:48 +09:00
3a2970a495 Label Factory (#1516)
* Label Factory

* fix typo and format
2020-04-28 16:53:34 +09:00
b31fb1a269 Auto label utxos based on invoice and payjoin (#1499)
* 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
2020-04-28 15:06:28 +09:00
3801eeec43 Payjoin: Better UIH1 & UIH2 based selection (#1473)
* Try to make SelectUTXO care about all inputs and outputs

* wip

* wip

* Add test and fix seelctor

* remove space

* review changes

* revert back to index check
2020-04-28 01:28:21 +09:00
94cdd399d5 Finetune colors (#1514)
* Better harmonic neutral color progression

fix

* Invert light/dark colors for dark theme

fix

* Lighten form control borders a bit

* Use correct text color variables
2020-04-27 23:57:18 +09:00
c784144a07 Greenfield: Add update store API (#1495)
* Greenfield: Add update store API

* update update store model

* change greenfield controller name to stop conflict
2020-04-27 20:13:20 +09:00
b600e5777e Add tooltip for store deriv + show "Not set" + "show end piece of string" (#1507)
* Add tooltip for store deriv + show "Not set" + "show end piece of string"

fixes #1506

* use regex witchraft

* adjust with regex
2020-04-27 19:55:46 +09:00
e49074d797 fix bip21 + coinselection combo bug in wallet send 2020-04-27 12:12:01 +02:00
02d26467f9 remove fake bundle 2020-04-27 12:04:18 +02:00
e68b45c76a Update lightning-charge to v0.4.19 (#1511)
Changes the default units from mBTC to sats
2020-04-27 18:44:12 +09:00
f410f7d4d1 Hide LN option for liquid Assets (#1512)
Was getting a bit crowded for stuff that isn't supported yet.
2020-04-27 18:15:38 +09:00
d4dbe6fe17 Typo fix (#1503) 2020-04-27 05:18:36 +09:00
c7305ba5e1 Bump lightning 2020-04-27 04:39:17 +09:00
e11963aca0 Checkout dark theme improvements (#1510)
Increase the contrast for some elements. Closes #1508.
2020-04-27 04:23:03 +09:00
2d77426e04 Bump lightning 2020-04-27 04:10:31 +09:00
7e0f9e1d28 Fix docker-customer-lightning-cli.ps1 pay doesn't work (Fix #1509) 2020-04-27 03:59:16 +09:00
18e181bb9f Bump lightning library, logs channel setup 2020-04-27 03:53:45 +09:00
c3c9585a95 Bump BTCPayServer.Lightning 2020-04-27 02:29:34 +09:00
4b5b941761 Update translations 2020-04-26 15:34:30 +09:00
79c70b31a3 Fix tests 2020-04-26 01:47:47 +09:00
072139f707 bump Nbitcoin 2020-04-26 01:11:50 +09:00
9d80db98c5 bump NBitcoin 2020-04-26 01:01:09 +09:00
a5df029d43 update test to loop through all formats for payjoin 2020-04-25 17:38:04 +02:00
47f16aadd5 Rely on NBitcoin to get the expected hash 2020-04-26 00:26:02 +09:00
f8b2b18c6e Fix PJ (#1502)
* Fix P2SH-P2WPKH case for Payjoin (Fix #1500)

* fix p2sh issue

Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
2020-04-26 00:19:24 +09:00
4be6c06af5 add payjoin e2e test for all compatible formats 2020-04-25 16:12:16 +02:00
92c58eea7f Fix: Sign with NBX option not present after decoding PSBT (#1497) 2020-04-23 22:02:26 +09:00
5e6049bf3f Payjoin fix: return psbt in same format it was received (#1496)
* Payjoin fix: return psbt in same format it was received

* fix formatting
2020-04-23 22:02:00 +09:00
7adaa146dc Merge pull request #1471 from dennisreimann/api-health-endpoint
GreenField: Add health check endpoint
2020-04-23 02:44:11 +09:00
e3b51f593e Merge pull request #1411 from Kukks/api/stores/get
GreenField: Create/Get/Delete Stores
2020-04-23 02:42:29 +09:00
e64094dfcc fix permissions for client api tester 2020-04-22 15:12:38 +02:00
cb6fcadb86 add scope test 2020-04-22 15:05:13 +02:00
297b84a18b add request name validation 2020-04-22 15:05:13 +02:00
b7c0e049b5 fix bug in permission store selector 2020-04-22 15:05:13 +02:00
aeef160d0b separate store swagger 2020-04-22 15:05:13 +02:00
34c1a304a9 Add Create Store 2020-04-22 15:05:13 +02:00
4f1ae4733c remove store api 2020-04-22 15:05:13 +02:00
e009c1a25a Fixing CheckNoDeadLink test now that btse blocks our call from circleci 2020-04-22 15:05:13 +02:00
79f12a7058 fix client 2020-04-22 15:05:13 +02:00
deb197cfa5 GreenField: Get Stores 2020-04-22 15:05:13 +02:00
2710130667 add error message instead of 500 status
fixes #1494
2020-04-22 14:18:36 +02:00
48163961ed Rename LCAD image (#1493)
Fixes #1491.
2020-04-22 08:47:44 +02:00
8658cb5f29 Re-add versioning for btcpay.js (#1489) 2020-04-22 08:24:29 +02:00
a6a56e4791 fix controller 2020-04-21 17:09:17 +02:00
22e39998e2 Updates from code review
Thanks @kukks!
2020-04-21 16:43:14 +02:00
70d1056d48 API: Health endpoint returns synchronized state 2020-04-21 16:29:54 +02:00
3bd5c3e1b5 API: Add health check endpoint 2020-04-21 14:59:33 +02:00
0a1a4fd3b5 Merge pull request #1490 from bolatovumar/fix-1488
Make both sides of payment request table look same
2020-04-21 20:15:33 +09:00
e508b22d34 Make both sides of payment request table look same
fix #1488
2020-04-20 20:45:59 -07:00
a7815f107e Merge pull request #1485 from Kukks/fix/pay-request-url
Fix: Payment request redirects to non-existing (404) URL after paymen…
2020-04-20 18:39:59 +09:00
ded5670108 Merge pull request #1486 from Kukks/hotwalletwarning
Show warning when using hot wallet on non admin
2020-04-20 01:56:18 +09:00
c1ffeb331b Fix typo 2020-04-20 01:47:27 +09:00
ad1148d3e2 Merge pull request #1487 from ketominer/master
Fix MySQL support (fixed width columns instead of blobs) replaces #1484
2020-04-19 21:26:36 +09:00
a7b926d907 fixed Address field size (back) 2020-04-19 13:48:05 +02:00
1f7a821c09 Show warning when using hot wallet on non admin
closes #1475
2020-04-19 13:45:51 +02:00
bf45edb5d8 Fix: Payment request redirects to non-existing (404) URL after payment completed
fixes #1479
2020-04-19 13:12:07 +02:00
686f5bf151 Fix MySQL support (fixed width columns instead of blobs) 2020-04-19 11:15:06 +02:00
426fe793e6 remove versioning for btcpay.js
fixes #1483
2020-04-19 09:29:20 +02:00
aee55103a3 Merge pull request #1477 from dennisreimann/asset-cache-busting
Improve static asset caching
2020-04-19 05:32:20 +09:00
778bf97079 Merge pull request #1478 from dennisreimann/assert-link-not-dead
Improve AssertLinkNotDead test output in case of exception
2020-04-19 03:10:45 +09:00
2dcb3111f8 Add changelog 2020-04-19 03:05:23 +09:00
03d1f98402 Improve AssertLinkNotDead test output in case of exception
If the test fails with an exception other than the `EqualException` the failed URL isn't logged. This general exception handler takes care of e.g. `HttpRequestException` and reports the URL that failed to be checked.

Stumbled upon this while checking why [this test run](https://app.circleci.com/pipelines/github/btcpayserver/btcpayserver/2934/workflows/0525d9fd-e4de-49dc-957b-d98b16a9abd4/jobs/7199/parallel-runs/0/steps/0-102) fails.
2020-04-18 19:33:53 +02:00
34755b32dc bump 2020-04-19 02:09:12 +09:00
6679ee1ca2 Merge pull request #1472 from Kukks/payjoin/p2shfixes
Fix Payjoin p2sh
2020-04-19 02:01:10 +09:00
8420c74b31 Improve static asset caching
Cache static assets for one year and set the correct cache control header. Adds the cache busting version based on file content to asset references to invalidate the cache on change. ([further details on the approach](https://andrewlock.net/adding-cache-control-headers-to-static-files-in-asp-net-core/) and [why one year](https://ashton.codes/set-cache-control-max-age-1-year/))

Most of the changes are the additions of the `asp-append-version="true"` attribute, the main configuration change is in `Startup.cs`.
2020-04-18 17:56:05 +02:00
0077105a2d remove hacks 2020-04-18 08:29:07 +02:00
51db617584 fixes 2020-04-18 08:09:49 +02:00
514b695907 fix coin addition for p2sh 2020-04-18 08:09:49 +02:00
b470ce2dad fix p2sh test error codes 2020-04-18 08:09:49 +02:00
161850150a fix p2sh detection input 2020-04-18 08:09:49 +02:00
b02cfa9d41 fix subtract fees auto tick when clicking on balance 2020-04-17 15:24:27 +02:00
dfe655393d Fix enable payjoin when p2sh 2020-04-16 17:23:29 +02:00
8c81dae167 bump 2020-04-16 22:44:53 +09:00
de75d30f06 bump 2020-04-16 22:41:36 +09:00
8ba99d4e7c Merge pull request #1469 from NicolasDorier/changelog
Add changelog 1.0.4.0
2020-04-16 22:40:04 +09:00
c3bc25a7d4 Add changelog 2020-04-16 22:38:38 +09:00
42be03b560 bump nbx and nbitcoin 2020-04-16 19:37:10 +09:00
e73aece9c3 Merge pull request #1467 from dennisreimann/404-center-supporters
Center supporter logos on 404 page
2020-04-16 14:47:35 +09:00
69c57867b3 Merge pull request #1468 from NicolasDorier/persisit/offchaintx
Persist offchain transactions
2020-04-16 14:46:48 +09:00
7434163848 Persist offchain transactions 2020-04-16 14:36:50 +09:00
00d1c4ebcc Navbar fixes (#1466)
* Fix onion position in mobile navbar

* Show nav hover highlight only on desktop

* Fix navbar icon color
2020-04-15 17:13:58 +02:00
26067fbfe2 Center supporter logos on 404 page 2020-04-15 16:49:13 +02:00
03458efea4 Change payjoin endpoint key to pj 2020-04-13 11:52:22 +02:00
bd21bf9c0f add payjoin tooltip 2020-04-13 11:51:25 +02:00
5b7a20c33e Merge pull request #1464 from NicolasDorier/payjoin/persistance
Persist planned transactions and locks for payjoin
2020-04-13 16:57:13 +09:00
c73c34dfaa Persisting locked input and outpoints 2020-04-13 16:06:07 +09:00
a3a9361ba5 Persist the Delayed Broadcaster 2020-04-13 16:00:33 +09:00
2f0e9569a1 Fix build error 2020-04-13 15:57:57 +09:00
511a0efa89 Merge pull request #1465 from Kukks/hot-wallet-policy
add additional server policy for hot wallet RPC import
2020-04-13 15:51:01 +09:00
4ae91ba307 Merge pull request #1461 from bolatovumar/fix-1459
Make sure sponsor logos show up nicely on all screen sizes
2020-04-13 15:49:23 +09:00
3a70f467eb Merge pull request #1457 from bolatovumar/fix-1456
Add mnemonic phrase color CSS variable
2020-04-13 15:48:55 +09:00
4e09bb0b01 add additional server policy for hot wallet
So that if you enable hot wallets for all, you can still not allow them to import to your RPC
2020-04-13 08:48:35 +02:00
5ae18cf21f Make sure mnemonic phrase doesn't blend into background 2020-04-13 08:05:44 +02:00
6bfb6a795e Merge pull request #1462 from NicolasDorier/improve-ux-hotwallet
Do not ask for address confirmation if a new wallet is generated
2020-04-13 13:55:34 +09:00
1d2540543b Payjoin: Randomly round the payment output if it is one input tx 2020-04-13 13:34:23 +09:00
9efe6267d3 Do not ask for address confirmation if a new wallet is generated 2020-04-13 13:03:55 +09:00
cb10551d2c Make sure sponsor logos show up nicely on all screen sizes
fix #1459
2020-04-12 15:08:28 -07:00
b0073af5aa Merge pull request #1408 from Kukks/api/api-key-uu-refactor
Refactor UI for Add APIKey/Authorize
2020-04-10 22:00:32 +09:00
7ca7f53446 Merge pull request #1447 from dennisreimann/modern-theme
New default theme
2020-04-10 16:55:55 +09:00
ad284a4b61 Refactor UI for Add APIKey/Authorize 2020-04-10 09:49:01 +02:00
95e7d5ded9 fix tests 2020-04-10 09:18:08 +02:00
55722b3191 Improve border color themeing 2020-04-10 09:18:08 +02:00
5e34efc9f4 Improve invoice table details display 2020-04-10 09:18:08 +02:00
6f85ffd9df Update footer color 2020-04-10 09:18:08 +02:00
9783a76c38 Fix generated API key color 2020-04-10 09:18:08 +02:00
05952f95f1 Split light and dark theme
To make them explicitely selectable.
2020-04-10 09:18:08 +02:00
b9c97cc5d7 Homepage updates 2020-04-10 09:18:08 +02:00
d5b088b924 Improve color handling 2020-04-10 09:18:08 +02:00
fbd5673cfd POS logo coloring fix 2020-04-10 09:18:08 +02:00
dbb7ad083a Add alert-link classes where necessary 2020-04-10 09:18:08 +02:00
ce7e4234cc Decrease font-size to match classic theme 2020-04-10 09:18:07 +02:00
d2b38fdfce Set default theme for kitchensink 2020-04-10 09:18:07 +02:00
fcdcc5e69b Update main nav hover
fix
2020-04-10 09:18:07 +02:00
8d73606809 Footer updates 2020-04-10 09:18:07 +02:00
15a7c4d092 Use consistent variable names 2020-04-10 09:18:07 +02:00
c205e41072 Rename modern to default theme 2020-04-10 09:18:07 +02:00
48c220b751 Header updates for light/dark theme
fix
2020-04-10 09:18:07 +02:00
06ff268644 Update bootstrap and kitchensink
Discourage use of explicit light/dark classes, because they interfere with the approach of having parallel light/dark themes.
2020-04-10 09:18:07 +02:00
9ee920a816 Draft modern theme
Based on the design input from Figma, see https://www.figma.com/file/C7Xyq0FlxgFW8vaBr8ht1z/BTCPAY?node-id=17%3A126

Color updates
2020-04-10 09:18:07 +02:00
a403363015 Move font-size setting to site.css 2020-04-10 09:18:07 +02:00
6274958409 Trust the payment method details for the payjoin enabled and make invoice logs consistent (#1450) 2020-04-10 16:00:41 +09:00
d47e225dce Fix email sending on registration crash (#1454) 2020-04-10 15:59:39 +09:00
841cf61c92 Add L-CAD support (new Liquid Asset) (#1448)
* Add Liquid CAD support

Adds the Liquid CAD asset ID from Bull Bitcoin

* Add the Liquid CAD logo

* Fix image asset

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
2020-04-10 15:59:02 +09:00
2d2c5b46af Support RBF and PayJoin for GRS (#1455) 2020-04-10 15:38:00 +09:00
cc80e4636f Remove runtime compile on tests (#1453) 2020-04-09 23:19:45 +09:00
bb24c95e71 delete files on user delete (#1452)
fixes #1451
(I did not do a cascade delete for 2 reasons: Sqlite does not support the migration easily to alter a foreign key AND files would be orphaned in the storage with no record in the db)
2020-04-09 22:17:06 +09:00
c7a4158a39 use payjoin key from constants 2020-04-09 14:07:26 +02:00
ed0e423aa7 Add payment link in checkout with payjoin indicator (#1449)
* Add payment link in checkout with payjoin indicator

* move to bottom
2020-04-09 20:44:08 +09:00
1c0d713b00 Catch all error thrown by EndAccept 2020-04-09 20:36:19 +09:00
70c80f4d44 Remove useless line 2020-04-09 20:27:24 +09:00
e3f6de8472 Remove warnings, replace BIP79 by Payjoin, Fix strange error in Accept loop 2020-04-09 20:25:17 +09:00
95644f8884 Fix tests 2020-04-09 19:44:16 +09:00
f57db12c09 Document downside of socks proxy 2020-04-09 18:56:30 +09:00
0d821ff4db Connection: close when using the internal proxy, fix gateway errors with connections in limbo 2020-04-09 18:49:30 +09:00
6927d81175 Implement Http Tor proxy as a internal http proxy 2020-04-09 17:38:55 +09:00
e183714475 Add Tor Http Client Factory (#1445)
* 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
2020-04-08 22:40:41 +09:00
6602823067 Refactor the input type detection 2020-04-08 22:14:16 +09:00
111feeb673 Merge pull request #1441 from Kukks/payjoin/p2sh
Payjoin: P2SH support
2020-04-08 22:00:07 +09:00
3bf1b78b33 fix 2020-04-08 14:32:29 +02:00
751ccc333f make test less slimfy 2020-04-08 14:32:29 +02:00
624e6e4744 adapt 2020-04-08 14:32:29 +02:00
73b13c750d add P2sh support 2020-04-08 14:32:29 +02:00
148b04e9ba allow changing the payjoin key easily later 2020-04-08 14:32:29 +02:00
32938479ac WIP: Payjoin: P2SH support 2020-04-08 14:32:29 +02:00
aae0086e68 Merge pull request #1443 from dennisreimann/wallet-view-improvements
Wallet view improvements
2020-04-08 21:25:31 +09:00
1f4556bd9d Merge pull request #1440 from dennisreimann/transactions-dropdowns
Fix transaction dropdowns
2020-04-08 21:24:23 +09:00
d7bb15cac3 Merge pull request #1442 from dennisreimann/docker-bitcoin-generate-shell-script
Add bitcoin generate shell script
2020-04-08 21:22:47 +09:00
9a54445785 Merge pull request #1439 from Kukks/monero-fix
monero fixes
2020-04-08 21:11:27 +09:00
523edfef58 Fix wording for no vault connection 2020-04-08 13:29:54 +02:00
5a841216b8 Add checkbox coin selection (js version) 2020-04-08 13:29:16 +02:00
d6d58a98db Improve non-js coin selection 2020-04-08 13:15:03 +02:00
6a0cda69c9 Wallet view improvements
As brought up by @kukks with [this comment](https://github.com/btcpayserver/btcpayserver/pull/1434#issuecomment-609724703). These improvements can be applied across themes, so these fixes are separated from the originating PR.
Pure visual finetunings for the Coin Selection form and amount/fee rate links.
2020-04-08 12:38:26 +02:00
24691e5290 Bump NBitcoin and NBX 2020-04-08 19:34:12 +09:00
b203d369fb Fix payjoin tests 2020-04-08 18:24:04 +09:00
b1cc30d25d Fix sequence check on client 2020-04-08 17:51:22 +09:00
72e64885be Fix sequence check on client 2020-04-08 17:42:50 +09:00
f4a47f5197 Deterministically sort the UTXOs to select 2020-04-08 13:46:11 +09:00
fe45152529 Add bitcoin generate shell script
The shell equivalent to the existing powershell script.
2020-04-07 18:13:47 +02:00
9a9773853e Fix bug in payjoin receiver where too much fee could be substracted from receiver 2020-04-07 20:04:08 +09:00
9d2ab8b154 The payjoin receiver can inject a fake change 2020-04-07 18:14:31 +09:00
ba2184e21a Do not remove outputs in payjoin tx 2020-04-07 15:10:19 +09:00
829b0dd5e2 Fix transaction dropdowns
As brought up by @kukks with [this comment](https://github.com/btcpayserver/btcpayserver/pull/1434#issuecomment-609720019). The problem exists across themes, so the fix is separated from the originating PR.
2020-04-06 18:16:41 +02:00
9fc451c9ca Make stronger check on fee, let the merchant make bigger transaction if he pays the fee 2020-04-06 23:24:51 +09:00
452568e740 monero fixes 2020-04-06 16:12:48 +02:00
5503132ffc Fix vue-i18n var substitution error in checkout
fixes #1438
2020-04-06 13:38:58 +02:00
17a6b7d34f Rename an error of pj to unsupported-input 2020-04-06 20:27:48 +09:00
69ad9edc9a Check pj with 1 sat/b 2020-04-06 20:26:50 +09:00
80bb959ac3 Merge pull request #1415 from Kukks/wallet/camera
Scan address/bip21 with camera
2020-04-06 20:07:32 +09:00
1e0587af26 Make sure tests use fixed fees 2020-04-06 19:18:49 +09:00
16e35e8b55 update html styles 2020-04-06 11:51:01 +02:00
8278926e42 change wallet send buttons 2020-04-06 11:51:01 +02:00
1debbc3cdb Change error messages 2020-04-06 11:51:01 +02:00
65c99ead1d cleanup 2020-04-06 11:51:00 +02:00
2693dacae6 Scan address/bip21 with camera 2020-04-06 11:51:00 +02:00
7ce614f1c4 Merge pull request #1435 from btcpayserver/pr/dark-checkout
Dark checkout theme
2020-04-06 17:46:17 +09:00
79a0f97abb Merge pull request #1432 from Kukks/api/permission-blob
GreenField: Switch to Blob for API Keys
2020-04-06 17:42:32 +09:00
670e0ee7df Merge pull request #1436 from NicolasDorier/remove-rider-errors
Remove bugs reported by Rider
2020-04-06 17:36:07 +09:00
3f231a8894 Merge pull request #1437 from dennisreimann/manage-store-spacings
Improve section spacings on manage store page
2020-04-06 17:35:05 +09:00
f5dfee7642 Improve section spacings on manage store page 2020-04-06 10:12:05 +02:00
ab120c5dcb Fix tests 2020-04-06 17:05:03 +09:00
f085a5618b Defaulting Powered by BtcPayServer link to green in light and dark theme 2020-04-05 23:21:14 -05:00
d939baac84 Give more information to the user if payjoin fails 2020-04-06 13:19:51 +09:00
41d70e8462 Tweaking black background on Pay with and Totals line, colors for dropdowns 2020-04-05 23:09:31 -05:00
9af7edf8b8 Add comments to explain the Payment's ReceivedTime 2020-04-06 12:23:56 +09:00
01a8c20ee8 Use better time precision for time in PaymentEntity 2020-04-05 23:57:43 +09:00
4c966e2a09 Refactor the detection of the payjoin payment 2020-04-05 22:44:34 +09:00
42aead3c89 A replacement payment should have the same fee as the replaced one 2020-04-05 20:48:00 +09:00
a348960041 Make CanChangeNetworkFeeMode more resilient 2020-04-05 20:00:28 +09:00
c737a25234 Add logs to test CanChangeNetworkFeeMode 2020-04-05 18:54:12 +09:00
a01b2e4a83 Small optimization for faster AddDerivationScheme 2020-04-05 18:35:29 +09:00
5f838db281 Merge pull request #1431 from Kukks/api/merge-multiple-swagger
Swagger Generator: Merge multiple documents
2020-04-05 17:36:04 +09:00
08beffb005 Make sure FindPaymentViaPolling does not requests over and over the same coins 2020-04-05 16:50:19 +09:00
76b919d887 make swagger test use live endpoint 2020-04-05 09:43:49 +02:00
c106ac2c42 Adding margin around QR code 2020-04-04 23:44:47 -05:00
4a1fb71e09 Do not print dangerous info in the logs 2020-04-05 12:33:10 +09:00
98e2baae19 Remove bugs reported by Rider 2020-04-05 12:30:23 +09:00
963c69a0e0 Merge pull request #1321 from Kukks/bpu
BIP79
2020-04-05 12:10:55 +09:00
fd026a9733 Refactor server-side 2020-04-05 12:02:36 +09:00
e76785a64e Removing background gradient
It's not smooth on most displays
2020-04-04 18:03:37 -05:00
1a8f222e46 Migrating fixes on default theme back to legacy style 2020-04-04 17:54:13 -05:00
24d26d7a44 Streamlining btnGroupLnd styling 2020-04-04 17:49:43 -05:00
c86370c25a Extracting css class for Powered by BtcPayServer 2020-04-04 17:28:00 -05:00
20cba1d3a1 Tweaking colors on language dropdown hover 2020-04-04 17:16:09 -05:00
3e2efc7f27 Adding first iteration of dark design 2020-04-04 16:47:37 -05:00
d2c29aaec6 Tweaking text opacity, recommended fee line consistency 2020-04-04 16:47:26 -05:00
bb1c5dead5 Moving selection slider to bottom to comply with new design 2020-04-04 16:32:44 -05:00
41cc79600a Swagger Generator: Merge multiple documents
It's becoming very hard to edit the swagger file as it grows (especially with multiple PRs altering it). This PR allows the swagger file to be generated from multiple jsons instead which are merged in the controller.
2020-04-04 14:22:07 +02:00
238d4fceea Merge pull request #1426 from Kukks/fix-dead-link-tester
Fix dead link tester
2020-04-04 14:21:22 +02:00
c6d75de3d7 GreenField: Switch to Blob for API Keys 2020-04-02 09:32:22 +02:00
9e1ae29600 change broadcast button style 2020-03-31 14:57:24 +02:00
d60b00e8cd Merge pull request #1425 from Kukks/coin-selection-fix
Fix coin selection filter bug
2020-03-31 18:43:41 +09:00
49786f4195 add bitpay to blacklist 2020-03-31 11:13:22 +02:00
7b6eae6053 Fixing CheckNoDeadLink test now that btse blocks our call from circleci 2020-03-31 11:12:01 +02:00
a408541eb3 Fix coin selection filter bug 2020-03-31 11:07:57 +02:00
1ba25448cc Merge pull request #1423 from btcpayserver/feat/new-invoice
New invoice design
2020-03-31 17:33:10 +09:00
4d2e59e1a1 Change flow of payjoin in wallet + fix tests 2020-03-30 13:27:04 +02:00
7b4f686add Moving default theme back to root now that we don't have separate setting 2020-03-30 01:38:45 -05:00
ee0ef2881a Removing extra setting, depending on Custom CSS for bundled themes 2020-03-28 14:10:18 -06:00
22f79e9fe4 Merge pull request #1401 from Kukks/wallet-receive-improve
Allow wallet receive to generate new addresses
2020-03-29 00:38:32 +09:00
fdad5a47d5 Reformating file according to project standards 2020-03-27 18:04:30 -05:00
e32f3cbf80 Preserving legacy margin for previous CustomLogoLinks 2020-03-27 18:04:05 -05:00
b56d026fdb small changes 2020-03-27 14:59:00 +01:00
64717328f6 check output sum of proposed payjoin 2020-03-27 10:45:13 +01:00
065be9be64 Revert back to original transaction if payjoined tx does not work 2020-03-27 10:45:13 +01:00
10fcfab233 remove bpu TempData 2020-03-27 10:45:13 +01:00
ff9865c516 fix tor docker 2020-03-27 10:45:13 +01:00
59bae2c337 ToHashSet 2020-03-27 10:45:13 +01:00
89d9793692 remove support from old ledger websocket 2020-03-27 10:45:13 +01:00
23b2f55b47 use nameof 2020-03-27 10:45:13 +01:00
886510c2e1 remove tor for now 2020-03-27 10:45:13 +01:00
2b11b43d6d NRE fix 2020-03-27 10:45:13 +01:00
d90ffb2254 move payjoin settings to store settings from checkout experience 2020-03-27 10:45:13 +01:00
fc88a867fa try fix test 2020-03-27 10:45:13 +01:00
e4cb1a875b Remove tor client factory 2020-03-27 10:45:13 +01:00
1a62ee9260 try fix tor socks5 connection 2020-03-27 10:45:12 +01:00
56d5e6f99f fixes 2020-03-27 10:45:12 +01:00
f1821636db fix tor client creator 2020-03-27 10:45:12 +01:00
2e3a0706ee RBF Protection & Handling 2020-03-27 10:45:12 +01:00
89da4184ff BIP79 Support 2020-03-27 10:45:12 +01:00
1895e154d9 Add missing file 2020-03-27 18:42:59 +09:00
6d7b57ea3b A api key can always revoke itself, add a route to delete any api key 2020-03-27 14:46:51 +09:00
39a8c3fe47 GreenField: Create API Key 2020-03-27 14:17:31 +09:00
927c09ff7b Merge pull request #1418 from NicolasDorier/refactor/greenfield-classes
Rename classes in Greenfield Authentication, use different AuthenticationScheme for Basic versus APIKey
2020-03-27 13:41:32 +09:00
08abda1522 Restrict authentication to the APIController to GreenFieldAPIKeys 2020-03-27 13:34:03 +09:00
d219ba5d32 Split the greenfield authhandler in two classes 2020-03-27 13:06:41 +09:00
afdee9d8a2 Move directories, rename controllers 2020-03-27 12:58:45 +09:00
ac14f199e4 Renaming GreenField classes 2020-03-27 12:55:21 +09:00
76818fa385 Rename API Keys folder to GreenField 2020-03-27 12:44:21 +09:00
49be370e51 Rename GreenField auth to APIKey auth in swagger doc 2020-03-27 12:43:06 +09:00
fbe89f1784 Merge pull request #1416 from pavlenex/invoice-summary
Rename Paid summary to Invoice Summary
2020-03-27 12:32:15 +09:00
b7afcb90a2 Tweaking checkout logo to be set from css 2020-03-26 19:49:04 -05:00
a6ac67963e Adding setting to CheckoutExperience to pick checkout theme 2020-03-26 19:49:00 -05:00
bde8ed7aa2 Extracting checkout theme css as separate link 2020-03-26 19:48:54 -05:00
ca234838a3 Tweaks for close button, recommended fee 2020-03-26 19:48:48 -05:00
d54d340bef Adjusting new color scheme on invoice 2020-03-26 19:48:42 -05:00
a926a5eedf Fix warning 2020-03-26 22:56:30 +09:00
0df5e7d7a3 Fix clone button in edit payment request (Fix #1414) 2020-03-26 22:54:47 +09:00
034fb4ec80 Rename Paid summary to Invoice Summary 2020-03-26 12:50:08 +01:00
69482eb4fb Allow wallet receive to generate new addresses 2020-03-25 17:24:41 +01:00
10e52f08be Prevent NRE exception 2020-03-26 01:21:47 +09:00
5565d8dae5 Catch error with bitflyer 2020-03-26 01:21:46 +09:00
c633402fe2 Merge pull request #1410 from Kukks/coin-selection-fix
fix coin selection
2020-03-26 01:08:53 +09:00
0688feea3c Fix docker files 2020-03-26 00:57:54 +09:00
c906fd42df Add bitflyer direct integration 2020-03-26 00:48:01 +09:00
6468b39121 try fix test again 2020-03-25 14:11:38 +01:00
d0a95f5a69 fix coin selection 2020-03-25 14:11:38 +01:00
e36338d903 Merge pull request #1403 from Kukks/basic-auth
Greenfield API: Basic Auth
2020-03-25 21:00:14 +09:00
e596513fc1 Merge pull request #1409 from Kukks/fix-link-test
Fix Link checker test
2020-03-25 19:33:50 +09:00
77588182b9 Make validation uniform 2020-03-24 23:44:26 -05:00
ca00caa4a4 Do not allow 0 amount invocies for crowdfund and payment requests 2020-03-24 23:43:56 -05:00
36bd76248b Allow Pay Button to work on Apps
This PR allows you to use the pay button generator to create buttons that target apps. This means that you can generate an invoice that is linked to an item on the POS/Crowdfund (targeting the item is optional). The POS/Crowdfund item amount -> invoice creation amount validation works too so that the user cannot modify the amount of a perk using just html ( fixes #1392 )
2020-03-24 23:43:47 -05:00
f0f05acdfd Let 0 amount invoices pass through and allow email to be set when required but paid
@ketominer @Askuwheteau @IAskuwheteau
2020-03-24 23:43:19 -05:00
6df7ffd7e2 lol windows phone 2020-03-24 08:55:47 +01:00
91924512e6 Fix Link checker test 2020-03-24 08:00:47 +01:00
7899c2d5c5 fix test 2020-03-23 21:18:40 +01:00
56ba834ca2 Consolidate auth into one 2020-03-23 16:46:49 +01:00
d57fdd4785 Remove useless delay in tests 2020-03-23 17:19:19 +09:00
805e1f53b3 Test Wallet Receive, Send with NBX, Coin selection 2020-03-23 15:46:54 +09:00
40953ef2c6 Merge pull request #1399 from Kukks/coin-selection
New feature: Coin Selection
2020-03-23 14:05:11 +09:00
ff055c08fb Merge pull request #1404 from btcpayserver/pr/can-manage-wallet
Additional logging and tweaking for CanManageWallet test
2020-03-22 13:53:29 +09:00
f3d5cf3622 Additional logging and tweaking for CanManageWallet test 2020-03-21 12:23:02 -05:00
e48e8c34d9 fix tst 2020-03-20 17:59:14 +01:00
98a48cd0a5 fix swagger validation test 2020-03-20 17:37:39 +01:00
f8f358ebdb add to client, fix tests and doc 2020-03-20 17:14:47 +01:00
9d99c32305 add basic auth for greenfield 2020-03-20 14:07:31 +01:00
478b1463ff Improve documentation 2020-03-20 20:26:36 +09:00
7e7f0053e2 Improve documentation 2020-03-20 20:25:10 +09:00
9a940a044e Fix tests 2020-03-20 20:00:30 +09:00
d2864ccd7c Make sure ApiKeyData set all the fields, remove UserId 2020-03-20 20:00:05 +09:00
ad4dbdad6d Fix the PermissionJsonConverter 2020-03-20 19:57:00 +09:00
094307d688 Remove warning and improve UI of permission selection 2020-03-20 19:39:02 +09:00
53e7c84e73 Fix tests 2020-03-20 18:56:30 +09:00
2a865284da Merge pull request #1402 from Kukks/liquid-assets-divisibility
Fix liquid asset BIP21 decimal precision
2020-03-20 18:39:05 +09:00
4666238e38 Fix build 2020-03-20 18:38:21 +09:00
b54a7b80e3 add tests and fix 2020-03-20 09:31:22 +01:00
432d6bb261 Update documentation 2020-03-20 14:33:11 +09:00
fb36ed2cae Fix tests 2020-03-20 14:07:42 +09:00
55516a3253 Remove excessive folders 2020-03-20 14:03:28 +09:00
a0e638d500 Switch from System.Text.Json to Newtonsoft, typify the BTCPayServer.Client 2020-03-20 14:01:51 +09:00
2def9e7bd3 fix build 2020-03-20 13:58:07 +09:00
0bfc12ae3d Fix build 2020-03-20 13:44:02 +09:00
318d826694 Rename Permissions.Can.. to Policies.Can.. 2020-03-20 13:41:47 +09:00
44b3bb34a4 Merge pull request #1400 from NicolasDorier/refactor/permissions
Refactor permissions of GreenField
2020-03-20 13:30:58 +09:00
46edc281b6 Fix tests 2020-03-20 13:22:10 +09:00
d72139c2c1 Fix liquid asset BIP21 decimal precision
The way liquid assets decimal precision works is just an ui layer. Each unit of an asset is actually 1sat.
Fixes https://github.com/Blockstream/green_android/issues/86
2020-03-19 16:00:33 +01:00
29a807696b Refactor permissions of GreenField 2020-03-19 23:43:51 +09:00
517c65f1fc make no js version a littler better 2020-03-19 10:08:33 +01:00
8f18be727b add clear option 2020-03-19 10:02:31 +01:00
d6c66d0c03 New feature: Coin Selection
This opt-in feature allows you to select which utxos you want to use for a specific transaction.
2020-03-19 09:44:47 +01:00
eac33d494a Add logs 2020-03-19 13:34:11 +09:00
2105b44610 Make sure the create user is respecting the disable-registration settings 2020-03-19 13:30:53 +09:00
ab74013a05 Merge pull request #1398 from btcpayserver/pr/fix-tests
Adding loggin in CanManageWallet test, fixing UserControllerTests
2020-03-19 13:15:17 +09:00
967b02e373 Commenting out conflicting check 2020-03-18 19:17:15 -05:00
8432cd5477 Adding new check for expected behavior in UsersControllerTests 2020-03-18 19:01:27 -05:00
ccfca65c41 Reverting changes to UsersController because of CanCreateUsersViaAPI test 2020-03-18 18:55:45 -05:00
0a8abaf7d5 Refactoring if condition to ensure CanCreateUser permission
Fixing UsersControllerTests
2020-03-18 18:40:21 -05:00
47c1164003 Adding logging to detect failure of CanManageWallet test
If all logs are present it's possibly issue with TempData
2020-03-18 18:17:21 -05:00
65d26ad8a1 improve redoc documentation 2020-03-18 23:35:17 +09:00
0a0d8d53a4 Improve redoc 2020-03-18 23:30:27 +09:00
e50e3f662d Can create user without authentication if there is no admin 2020-03-18 23:10:15 +09:00
540a31207e Properly validate create user input 2020-03-18 20:51:50 +09:00
132c36df7b Remove useless routes and info in swagger 2020-03-18 20:25:54 +09:00
e351e0c9ea Remove dependency on NSwag 2020-03-18 20:08:09 +09:00
8d7b9fcef2 Merge pull request #1390 from Kukks/api/user-create
Greenfield API: Create User
2020-03-18 16:26:10 +09:00
6e1f3989e8 remove special case 2020-03-18 08:10:35 +01:00
e99767c7e2 Greenfield API: Create User
Slightly big PR because I started refactoring to reduce code duplication between the UI based business logic and the api one.
2020-03-17 08:21:27 +01:00
c85fb3e89f Remove ndax from test suite (crashing exchange) 2020-03-17 13:19:55 +09:00
348934488d Refactor tests for greenfield 2020-03-16 16:36:55 +09:00
6c8918a308 Merge pull request #1389 from Kukks/api/god-mode
Greenfield API: God Mode
2020-03-16 16:29:19 +09:00
ff2ea5815c add else tests 2020-03-16 08:13:44 +01:00
cc0202ecb3 fix test 2020-03-13 08:00:04 +01:00
0c065df4bd Greenfield API: God Mode
When the `ServerManagement` permission is granted, you should be able to do everything in the system.
Maybe I should rename it to GodMode as a permission to not have any confusion with managing server settings (currently `ServerManagement`)?
2020-03-12 18:43:57 +01:00
b5664dac81 Merge pull request #1387 from Kukks/api/users-get-current
Greenfield API: Get current User
2020-03-12 23:20:18 +09:00
8173296c96 Greenfield API: Get current User
Builds on #1368
This PR adds a new endpoint: Get current user.. It only returns the current user's id and email for now( let's extend later)
It also adds a new permission: `ProfileManagement` which is needed for this endpoint (and for update endpoints later)
2020-03-12 14:59:24 +01:00
71a00c0e67 Merge pull request #1384 from Kukks/api/authorize-ui
Make api docs only available after login
2020-03-12 12:00:00 +09:00
70b172addc Make api docs only available after login 2020-03-11 18:05:40 +01:00
2002c6750b target netstandard2.1 for Client 2020-03-11 16:54:53 +01:00
786be9d1f5 fix tests 2020-03-11 16:54:53 +01:00
233fa8a4a1 BTCPayServer.Client library + Revoke API Key 2020-03-11 16:54:53 +01:00
c74f52a61c Merge pull request #1383 from Kukks/fix-tests
fix e2e tests
2020-03-12 00:53:44 +09:00
245507f821 fix e2e tests 2020-03-11 16:52:29 +01:00
5495c4b5d3 Merge pull request #1382 from NicolasDorier/betterrbf
Simplify RBF handling, and handle case of double spend happening outs…
2020-03-11 22:41:46 +09:00
afd2c8e3d7 Bump nbx 2020-03-11 22:32:53 +09:00
c8e1db2102 Better event messages 2020-03-11 21:11:07 +09:00
95f859b6db Simplify RBF handling, and handle case of double spend happening outside of wallet (Fix #1375) 2020-03-11 21:05:12 +09:00
6bf7ef0798 Revert "Simplify RBF handling, and handle case of double spend happening outside of wallet (Fix #1375)"
This reverts commit 42152050a3786bd3db103220e1a45b60c9fcddaf.
2020-03-11 20:57:19 +09:00
42152050a3 Simplify RBF handling, and handle case of double spend happening outside of wallet (Fix #1375) 2020-03-11 20:46:37 +09:00
67befcc629 bump 2020-03-10 22:48:17 +09:00
3cdf881438 bump lightning libraries 2020-03-10 22:31:05 +09:00
153992a458 Use good rng for generating API keys 2020-03-10 21:30:46 +09:00
691a8d6fd8 Fix warnings 2020-03-10 21:28:00 +09:00
a9bf843be0 Bump various libraries 2020-03-10 21:24:22 +09:00
60e5afe690 Merge pull request #1379 from Kukks/fix-cf
fix duplicate key error in crowdfunding
2020-03-10 20:58:09 +09:00
980bedf301 Merge pull request #1378 from pavlenex/supporter-btse
Add new supporter to readme and front page
2020-03-10 20:18:40 +09:00
6f6e8ba1a1 fix duplicate key error in crowdfunding 2020-03-10 11:20:05 +01:00
d3af82e38b Add btse to readme and front page 2020-03-10 10:28:15 +01:00
65afc9f7b2 Make sure dashboard is initialized from the beginning 2020-03-10 17:42:53 +09:00
2e630ac5d8 WaitSiteIsOperational should only wait full sync 2020-03-10 17:24:38 +09:00
e6acc19bcc Add a test catching expirationTime bug (#1336) 2020-03-10 17:11:15 +09:00
c598a1827f Remove misleading error message (Fix #1377) 2020-03-10 16:33:50 +09:00
1edd19f403 bump 2020-03-10 15:54:02 +09:00
1052e9a035 Merge pull request #1376 from Kukks/fix-sqllite-again
fix sqlite again
2020-03-10 15:52:38 +09:00
5e15dd97b3 fix sqlite again
closes #1287
Seems like a merge conflict removed the fix for sqlite datetimeoffsets
2020-03-09 09:44:44 +01:00
7763ad5b2c Merge pull request #1372 from btcpayserver/pr/flaky-tests
Fixing ocassional CanManageWallet Selenium test fails
2020-03-06 19:22:43 +09:00
4e826553f8 Fixing ocassional CanManageWallet Selenium test fails
Looking through logs it seems like Generate button is never clicked, which can happen if modal is not displayed
https://circleci.com/gh/btcpayserver/btcpayserver/6167
2020-03-06 02:06:32 -06:00
21c7bcca5a bump 2020-03-06 15:16:53 +09:00
1df0fe9deb Merge pull request #1369 from pavlenex/readme-macos-dev-video
Readme Update .Net Core to 3.1, Add MacOS video
2020-03-04 16:46:07 +09:00
7038c28429 Merge pull request #1370 from bolatovumar/prettify-receive-tab
Prettify wallet receive tab screen
2020-03-04 16:45:34 +09:00
d9bdb46033 Prettify wallet receive tab screen 2020-03-03 21:15:27 -08:00
e0aad34105 Update .Net Core to 3.1, Add MacOS video 2020-03-03 22:44:58 +01:00
a88f46e1ab Merge pull request #1365 from bolatovumar/fix-1332
Specify QR code error correction level explicitly
2020-03-03 18:03:40 +09:00
ba480e40e6 Merge pull request #1362 from pavlenex/readme-deployment
add enviroment configuration to issue template
2020-03-02 18:17:36 +09:00
ef52d6b4c7 Merge pull request #1352 from Kukks/changelly-fiat
remove changelly fiat option
2020-03-02 18:10:50 +09:00
99f47e2848 Merge pull request #1360 from Kukks/pay-button-modal
Modal option for Pay Button
2020-03-02 18:10:14 +09:00
8046872315 Add private info note, change command 2020-03-02 10:07:50 +01:00
b282a70534 Merge pull request #1351 from Kukks/api/api-keys-get
GreenField API #1: Get current API Key info
2020-03-02 18:06:34 +09:00
991daefd85 Merge pull request #1359 from Kukks/cf-fixes
Use proper divisibility for payments in crowdfund and do not show too…
2020-03-02 18:04:14 +09:00
2a0353b6ff Merge pull request #1367 from btcpayserver/fix/flaky-tests
Fixing Selenium tests failing because of dynamic hidden elements
2020-03-02 17:58:06 +09:00
304caaaf1d Fixing Selenium tests failing because of dynamic hidden elements 2020-03-01 22:38:40 -06:00
4f5f52b937 Merge pull request #1366 from btcpayserver/pr/fix-931
Fixing modal Open Wallet click on iOS Safari by targeting iframe parent
2020-03-01 22:05:20 -06:00
0b4760bc29 Merge pull request #1361 from btcpayserver/pr/fix-1316
Showing the next available address in the invoices list
2020-03-01 21:49:14 -06:00
7f6d27cc5b Fixing modal Open Wallet click on iOS Safari by targeting iframe parent 2020-03-01 20:51:34 -06:00
f8520201ce Using tuple for payments partial model 2020-03-01 19:46:05 -06:00
efda8ff5bd Specify QR code error correction level explicitly
fix #1332
2020-03-01 14:16:24 -08:00
27f964e2a1 add enviroment configuration 2020-02-29 10:46:07 +01:00
56380a5fb3 Formatting code 2020-02-28 23:15:14 -06:00
a303e793b4 Fixing CanCreateApiKeys test admin user check 2020-02-28 23:15:06 -06:00
2934c27ee5 Commenting decision to leave partial 2020-02-28 17:04:56 -06:00
44d4673981 Removing reference to InvoicePaymentsPartial.cshtml from Invoice.cshtml 2020-02-28 16:58:09 -06:00
fca6b39681 Revert "Remove the next address to pay to from Invoice details page (Fix #1056) (#1283)"
This reverts commit 6848482999910d4480773a24c6bab407e0565023.
2020-02-28 16:30:57 -06:00
c3bfce7656 Modal option for Pay Button
closes #796
2020-02-28 16:01:44 +01:00
c607696230 Use proper divisibility for payments in crowdfund and do not show tooltip if identical data
fixes #1037 and fixes #1003
2020-02-28 12:51:15 +01:00
9eac33793a GreenField API #1: Get current API Key info 2020-02-26 16:20:32 +01:00
18aaa1a0c4 Merge pull request #1341 from btcpayserver/swagger
Add Swagger and Redoc
2020-02-26 19:02:35 +09:00
e7eea1036b make api key delete use confirm page 2020-02-26 10:26:38 +01:00
48c21baee5 add migration attributes and remove designer 2020-02-26 09:53:58 +01:00
95b9884af7 Revert "consolidate migrations"
This reverts commit 501c3241b543c5941ec9e5d7ecc14cf1edf9661f.
2020-02-26 09:41:32 +01:00
d9ea9fbffd Fix colspan 2020-02-26 17:34:32 +09:00
0c7f35b000 fix swagger gen 2020-02-26 09:17:50 +01:00
78f73132ed Delete docs folder (#1354) 2020-02-26 14:00:46 +09:00
5a93857b4a Simplifying delegate invoke
Ref: 0074790684 (r37477529)
2020-02-25 16:08:57 -06:00
b71fd1653e remove changelly fiat option
closes #728
2020-02-25 16:44:19 +01:00
ec80787120 fix 2020-02-25 15:33:04 +01:00
501c3241b5 consolidate migrations 2020-02-25 15:00:47 +01:00
0a8b303c11 add label for api keys, make api keys without -, fix null exception on authorize 2020-02-25 14:43:53 +01:00
fec5637040 Replace Datetime.UTCNow by entity.InvoiceTime 2020-02-25 17:22:39 +09:00
5cbe61e2e0 Allow user to set the expirationTime of invoice via the API (Fix #1336) 2020-02-25 17:21:08 +09:00
023e64704d Add Swagger and Redoc
Blocked by #1262
2020-02-24 19:04:04 +01:00
276a9a95f9 Remove OpenIddict (#1244) 2020-02-25 00:40:04 +09:00
d16a4334cb Fix error 500 on services page 2020-02-25 00:10:07 +09:00
fa51180dfa Api keys with openiddict (#1262)
* Remove OpenIddict

* Add API Key system

* Revert removing OpenIddict

* fix rebase

* fix tests

* pr changes

* fix tests

* fix apikey test

* pr change

* fix db

* add migration attrs

* fix migration error

* PR Changes

* Fix sqlite migration

* change api key to use Authorization Header

* add supportAddForeignKey

* use tempdata status message

* fix add api key css

* remove redirect url + app identifier feature :(
2020-02-24 22:36:15 +09:00
a3e7729c52 Remove warnings 2020-02-24 22:12:50 +09:00
2a7f6e4aa3 bump 2020-02-24 21:32:54 +09:00
1d61db4758 Add text customization for pay button (#1346)
* Add text customization for pay button

https://i.imgur.com/nFxscOZ.gifv

* pr changes
2020-02-24 21:29:29 +09:00
ee524e36c5 bump 2020-02-24 21:25:52 +09:00
f097ecdc80 fix: remove ipn via email #1241 (#1337)
* fix: remove ipn via email #1241

* fix: remove ipn via email #1241
2020-02-24 21:21:03 +09:00
a354f7d9dd add GET endpoint for pay button (#1349)
closes #889
2020-02-24 21:18:04 +09:00
29d51ad2a2 Adding 1 second leeway for expiration 2020-02-21 17:09:03 -06:00
1be6408246 Adding logging to try and catch situations where invoice is not expired 2020-02-21 17:09:03 -06:00
34702d2633 Revoke Legacy Api Keys (#1344)
closes #1333
2020-02-21 13:40:00 +09:00
b79b310bd5 Revert "Sort invoice list (Fix #1329)"
This reverts commit dc4f8a1fbe841c0824d545582cc46ae533e955c4.
2020-02-21 11:29:09 +09:00
dc4f8a1fbe Sort invoice list (Fix #1329) 2020-02-19 22:04:46 +09:00
6d0896084f Add JS Modal test (#1342) 2020-02-19 17:39:14 +09:00
d31bff7070 BPU Prep Work Part2 (#1340)
* 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
2020-02-19 17:35:23 +09:00
f2aab4cf03 Add warning if fail to load rates from cache 2020-02-16 23:04:48 +09:00
c03dc48fe9 Do not crash if can't load rate cache 2020-02-16 22:07:56 +09:00
143c909812 bump 2020-02-16 19:58:53 +09:00
821b904163 Added SendGrid, Mailgun to Quick-fill email settings (#1335) 2020-02-15 14:37:29 +09:00
6015eb337a Fix broken link 2020-02-15 14:36:36 +09:00
5d817a0483 Revert fix mysql 2020-02-14 00:23:00 +09:00
ee9905e85a Fix mysql 2020-02-14 00:07:19 +09:00
ff4c7c364e Fix mysql 2020-02-14 00:02:47 +09:00
a2d657f5cb Fix mysql migration 2020-02-13 23:58:48 +09:00
db6a4687d2 Wallet prep work for BPU (#1331)
* Wallet prep work for BPU

This PR prepares the wallet for #1321. It makes transfers from the vault and ledger to go to their own post actions for processing (not particularly useful in this PR but is needed in BPU to propose a new tx)  It also makes the Sign with seed consistent with redirect to /psbt/ready after signing which it did not do (it stayed on the seed route)

* fix test

* add assert
2020-02-13 22:06:00 +09:00
07f0d95f56 BIP21 Support for Wallet spending (#1322)
* BIP21 Support for Wallet spending

* extract bip21 loading to method

* add bip21 parsing test
2020-02-13 17:18:43 +09:00
1a409a441d Update POLIS related entries (#1313)
* Update Polis related info and services

* Fix Polis Rate Fetcher

* Fix Polis ratefetcher - Cryptopia is obsolete

* POLIS rate provider changes to comply with internal testing

* URL / pair alignment

* Add small doc to re-trigger testing
2020-02-13 14:44:31 +09:00
445e184154 Merge pull request #1328 from pavlenex/readme
Minor readme cleanup + license clarification
2020-02-13 14:42:18 +09:00
9a10f55a85 Merge remote-tracking branch 'upstream/master' into readme 2020-02-12 19:11:53 +01:00
ae33b1d0a8 Fix PSBT Redirect No-access issues 2020-02-12 16:35:24 +09:00
4ed2db83a5 fix a broken link 2020-02-09 19:01:52 +01:00
500aa85142 Fix broken links 2020-02-09 17:35:00 +01:00
3b6cc84a93 Minor readme cleanup + license clarification 2020-02-09 17:33:44 +01:00
5ce29d2bb8 Merge pull request #1325 from Kukks/fix-revoke-access
Fixes #1324 store token revoke redirect error
2020-02-08 21:54:43 +00:00
3184d2b2df Merge pull request #1327 from Kukks/coldcard-fix
Fix #1326 Coldcard import dialog
2020-02-08 21:54:19 +00:00
f5e65ec2a6 Fix #1326 Coldcard import dialog 2020-02-08 10:54:34 +01:00
66488d813b Fixes #1324 store token revoke redirect error 2020-02-07 08:23:00 +01:00
4853cfe41a bump 2020-02-03 19:13:51 +09:00
dc7733abcd Merge pull request #1041 from Kukks/satscurrency
Add sats as a native currency
2020-02-03 08:42:35 +00:00
771c8e2758 Merge pull request #1314 from btcpayserver/feature/errorpages
Adding error pages to handle HTTP errors
2020-02-03 08:39:58 +00:00
24664b60af Adding test ensuring that api errors are properly returned 2020-02-03 02:21:03 -06:00
82393eb8bb Fixing api exception handling in the pipeline 2020-02-03 02:18:36 -06:00
b432d8903f Grammar fix by Kukks 2020-02-01 11:16:40 -06:00
ea9169f607 Updating 404 page not found assert 2020-02-01 02:29:08 -06:00
496a6f0f55 Special page to handle 429 errors 2020-02-01 01:59:56 -06:00
fb2a0fb7fb Special page to handle 500 errors 2020-02-01 01:58:17 -06:00
ef503fa907 Special page to handle 404 errors 2020-02-01 01:41:27 -06:00
fe2eca4fda Adding prettier error handling page in the pipeline 2020-02-01 01:40:50 -06:00
88835b5b55 Moving _LayoutWelcome to shared folder 2020-02-01 00:32:31 -06:00
876c940032 Reverting delegate reference to previous state until Nicolas confirms change 2020-02-01 00:26:01 -06:00
a08d5be35c Expanding tests to check implicit conversion of Sats to BTC 2020-01-29 22:31:43 -06:00
0074790684 Remove "#nullable enable" directive and unnecessary operators 2020-01-29 01:53:47 -06:00
23aaf794ef Add nullable enable directive to HttpClientRequestMaker.MakeRequestAsync 2020-01-29 01:53:47 -06:00
bb12d37416 Displaying sats in a more user-friendly way (space as group separator) (#1306)
Fix: #1146
2020-01-27 19:57:46 +09:00
e058903450 Do not show assets in sync modal (#1309) 2020-01-26 19:45:52 +09:00
06f1c17a5f Make unused assets in store settings collapsed (#1310) 2020-01-26 19:45:24 +09:00
e00136de93 Fix spurious DefaultAntiforgery errors 2020-01-26 15:02:40 +09:00
56d8c033d7 Update display text on the view model. 2020-01-24 15:45:35 -06:00
666682677c Merge pull request #1303 from btcpayserver/feat/viewnewwindow
Providing open in new window split buttons
2020-01-24 15:34:25 -06:00
652b958d4f Removing viewapp command now that we directly redirect in cshtml 2020-01-24 15:11:34 -06:00
c7c0db612a Restoring IDs Selenium depends on for tests 2020-01-23 20:40:20 -06:00
a83edce4dc Updating idents, code formatting 2020-01-23 20:19:24 -06:00
f99058a9fa Adding code comment for review 2020-01-23 20:18:33 -06:00
a907143d81 Providing open in new window split button when updating crowdfund
Unifying styles on POS and Crowdfund settings

co-authored-by: radWorx <dramirez@soulrivers.com>
2020-01-23 20:17:29 -06:00
4ae173bb69 Providing open in new window split button when updating POS app
co-authored-by: radWorx <dramirez@soulrivers.com>
2020-01-23 20:04:34 -06:00
1436420a93 Providing link to view app in new window
co-authored-by: radWorx <dramirez@soulrivers.com>
2020-01-23 19:51:57 -06:00
086cbaa231 Add clightning rest services page (#1297)
* Add clightning rest services page

* fix rebase
2020-01-23 22:20:37 +09:00
5dd3112e0d Ensure "import from....a new/existing seed" modal text is readable in Casa theme (#1300)
fix #1299
2020-01-23 22:20:00 +09:00
b42e4f240a Fix (#1301)
* Fix seed signing validation

* fix ident
2020-01-23 22:02:37 +09:00
7076692069 fix configurator password loader (#1298) 2020-01-22 15:16:32 +09:00
dcb3601791 Fix ETB asset id 2020-01-21 18:22:42 +01:00
54c7c0d696 Add currency precision based on network (#1294) 2020-01-21 22:28:13 +09:00
f324185d82 bump nbx 2020-01-21 21:47:51 +09:00
a63502873c Add implicit hidden rate rule for sats in parser 2020-01-21 13:34:00 +01:00
f5cbf6672a remove default rate rule for sats 2020-01-21 13:34:00 +01:00
a78dff5931 remove padding 2020-01-21 13:34:00 +01:00
f8139a9156 cleanup (remove sats rate provider and just use rate scripting) 2020-01-21 13:34:00 +01:00
27a61b7afd fix test 2020-01-21 13:34:00 +01:00
71671b9e16 Add sats as a native currency
This will allow you to create an invoice where its primary currency is denominated in sats
2020-01-21 13:33:59 +01:00
c68bf5220e bump 2020-01-21 21:09:49 +09:00
80ee03d897 Remove dead link 2020-01-21 21:06:35 +09:00
d0bfa67495 Fix build 2020-01-21 21:04:35 +09:00
bdb2edba12 Fix U2F signing 2020-01-21 21:00:34 +09:00
78d8f4e011 Fix rescan wallet link 2020-01-21 20:54:45 +09:00
1bfe9dda97 Integrate Configurator External Service (#1190) 2020-01-21 18:27:10 +09:00
8e6f43cd3a Sign with NBX Seed (#1218) 2020-01-21 17:33:12 +09:00
6848482999 Remove the next address to pay to from Invoice details page (Fix #1056) (#1283) 2020-01-21 16:53:24 +09:00
43967ee86e bump 2020-01-21 13:20:52 +09:00
61b99f6630 Add support for ETB liquid asset (#1295) 2020-01-21 13:19:55 +09:00
7e073fb7e1 Add test CanCreateSqlitedb 2020-01-19 22:10:05 +09:00
1ceb5cb576 Fix sqlite madness (#1293)
* Need to reference Microsoft.EntityFrameworkCore.Design else you can't generate migrations
* fix design time migrations issues
* update snapshot
```
Your startup project 'BTCPayServer.Data' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is c
orrect, install the package, and try again.
```
*
2020-01-19 21:57:50 +09:00
53a60d1660 Add Direct Provider with bitfinex, okex and coinbasepro 2020-01-18 21:48:04 +09:00
25b733ca7f Remove knowledge of ExchangeName from BackgroundRateFetcher 2020-01-18 19:42:46 +09:00
1bf680fdb9 Improve tests to not create new HttpClient every times 2020-01-18 19:23:40 +09:00
76008c9f5c bump to sdk 3.1.101 and version 3.1.1 (security patch) 2020-01-18 16:59:25 +09:00
1bf04ac4ac Generate less keys with nbxplorer 2020-01-18 16:20:03 +09:00
4b088defd3 Increase timeout for AssertHappyMessage test 2020-01-18 15:36:20 +09:00
a2be7ee471 Fix statusMessage handling for the Receive wallet page 2020-01-18 15:32:01 +09:00
025da0261d new feature: Wallet Receive Page (#1065)
* 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
2020-01-18 14:12:27 +09:00
4ac79a7ea3 Fixing SQLite in Invoices page (Fix #1287) 2020-01-17 21:45:20 +09:00
ef20a03b95 Fix send from ledger and send from vault 2020-01-17 21:38:27 +09:00
d9681398e5 Bump 2020-01-17 18:21:21 +09:00
25f19e5d9f Merge pull request #1286 from NicolasDorier/rate/refactor
Refactor rate handling to prevent error of exchange name and re-reroute coinaverage to coingecko
2020-01-17 18:20:43 +09:00
aab6fcd508 use coingecko if coinaverage is set 2020-01-17 18:15:08 +09:00
a8ac01cd8b Refactor rate handling to prevent error of exchange name 2020-01-17 18:11:05 +09:00
605a0fd3c9 bump 2020-01-17 15:16:57 +09:00
90ec416125 Add exponential backoff for CoinGecko, pass the cancellationtoken around 2020-01-17 15:08:28 +09:00
827b6085af Do not hammer CoinGecko with tests 2020-01-17 14:56:05 +09:00
ff11e6e032 Remove CoinAverage RateSource enum 2020-01-17 14:51:07 +09:00
9b55648e41 Fix build 2020-01-17 14:45:26 +09:00
6dffbbd93d Remove CachedRateProvider 2020-01-17 14:42:02 +09:00
7a0991d6b1 Remove CoinAverage integration (2) 2020-01-17 14:30:51 +09:00
9b165de5e6 Remove CoinAverage integration 2020-01-17 14:29:22 +09:00
1b9a4e7775 Coingecko should use BackgroundFetcherRateProvider instead of CachedRateProvider 2020-01-17 14:23:04 +09:00
48799562f8 Fix comment 2020-01-17 14:18:18 +09:00
7d545ca682 Remove ability to set custom cache, fix coinaverage not really using coinaverage 2020-01-17 14:16:12 +09:00
9739f3fb25 LN store config: fix a typo (#1285) 2020-01-17 12:12:12 +09:00
bb12de8945 Fix Sqlite migration (#1284) 2020-01-16 22:05:33 +09:00
feabeafed9 Fix Selenium tests ran in Debug mode 2020-01-16 18:03:41 +09:00
6b427e99ca use directly clightning integration instead of charge during debug 2020-01-16 17:15:11 +09:00
31db34ec8d Revert "Revert RazorCompileOnBuild=false temporarily"
This reverts commit 92e5f2852a866bd11bbb4a53b5ebcb6967152c89.
2020-01-16 16:52:46 +09:00
bf614cd322 Make sure the payment button does not error 500 if node not ready (Fix #1180) 2020-01-16 16:25:37 +09:00
9410933e1c Fix: Adding comment on wallet transactions causes 500 error (Close #1280) 2020-01-16 15:19:45 +09:00
c269dee980 Liquid changes (#1281)
Add assetid to bip21 for liquid
change liquid icons
change liquid asset name
change currency code displayed in checkout to one set in network
2020-01-16 15:01:01 +09:00
5aefb585e9 Fix Serilog logging too much 2020-01-16 14:00:31 +09:00
780cf67a1b bump bitcoin core 2020-01-15 13:25:29 +09:00
12e7c5e5e1 Updating referenced lnd to 0.8.2-beta (#1279) 2020-01-15 13:24:10 +09:00
92e5f2852a Revert RazorCompileOnBuild=false temporarily 2020-01-15 00:37:42 +09:00
0fbda9441a Fix AddressInUseException in tests 2020-01-15 00:22:31 +09:00
32a82bbb7c bump 2020-01-15 00:01:36 +09:00
628d0bb690 fix tests 2020-01-15 00:00:36 +09:00
05223c1a5f Bump NBX (#1277) 2020-01-14 23:10:58 +09:00
9aa0603d87 bump 2020-01-14 22:07:13 +09:00
36f980135f fix broken url (#1275)
* fix broken url

* fix test
2020-01-14 22:06:46 +09:00
63953e42a8 Merge pull request #1276 from NicolasDorier/norazor/compile
Remove build of razor view for better debug experience
2020-01-14 21:38:38 +09:00
4ba836f1ff Remove build of razor view for better debug experience 2020-01-14 21:33:13 +09:00
b7132ab66a Merge pull request #1274 from Kukks/route-fixes
fix broken links
2020-01-14 21:00:29 +09:00
67810d50cb Merge pull request #1272 from Kukks/u2ftests
U2F Tests + throw non non U2f exceptions
2020-01-14 20:46:25 +09:00
b7503c994c fix broken links 2020-01-14 12:46:07 +01:00
389695751f add u2f tests 2020-01-14 11:47:24 +01:00
dad3039c06 throw on non-u2f specific errors 2020-01-14 09:49:51 +01:00
9ccb472c7a Fix U2F 2020-01-14 12:31:10 +09:00
c35afd5e9a Fix arm64 image 2020-01-14 00:35:45 +09:00
74adaf1d1f Rename 2020-01-14 00:28:43 +09:00
0fce8d0739 bump 2020-01-13 23:58:01 +09:00
dbb6408acb Merge pull request #1264 from Kukks/coingecko
CoinGecko Rate Provider
2020-01-13 23:57:20 +09:00
5dbdb4b399 Keep coinaverage compatibility, improve UX, hardcode feed provider supported exchanges 2020-01-13 23:37:01 +09:00
58d9a48787 CoinGecko Rate Provider
The CoinGecko rate provider is similar to the bitcoin average one, in that you can ask it for a rate from its aggregated sourcing or you can get rates from specific exchanges. I've added support for both.
I haven't integrated it or replaced coinaverage just to see if we should use it as the default and switch everyone to it or what other action to take.
2020-01-13 20:20:00 +09:00
4baeb7bc71 Merge pull request #1268 from escapedcat/fix/1216_users-remove-name
fix(users): remove name from list #1216
2020-01-13 13:41:03 +09:00
1a3da096a7 Go back to bitcoind 0.18.0 2020-01-13 13:26:42 +09:00
ba0e501e38 bump bitcoind 2020-01-13 13:14:41 +09:00
bff95e4655 fix(users): remove name from list #1216
name is not used and can not be edited so it should be removed to avoid confusion
2020-01-12 15:23:58 +01:00
4f03f3c9cb Bump nbx in tests 2020-01-12 21:45:23 +09:00
d48334b97f Make test more reliable 2020-01-12 20:54:04 +09:00
90da81f68e Merge pull request #1238 from bolatovumar/fix-1236
Adjust invoice pagination behavior
2020-01-12 16:55:57 +09:00
9ba1403f5c bump libraries 2020-01-12 16:30:25 +09:00
846fd815ff Merge pull request #1267 from NicolasDorier/remove/uselesss
Remove useless dependencies
2020-01-12 16:16:03 +09:00
60e0f775ed Remove useless dependencies 2020-01-12 16:05:01 +09:00
529c2df1cc Make tests more resilient 2020-01-12 15:50:23 +09:00
430a9eb261 Merge pull request #1266 from NicolasDorier/bump/libs
Bump libraries
2020-01-12 15:44:05 +09:00
d3408b91be bump libraries 2020-01-12 15:32:26 +09:00
d5febb30e7 Fix build 2020-01-12 13:59:41 +09:00
63c4ec1809 Reactivate GoogleCloudStorage 2020-01-12 13:55:41 +09:00
6ac8cd19d3 Better logs for HappyMessage 2020-01-12 13:54:06 +09:00
c95bceef4d Fix circleci 2020-01-12 13:42:04 +09:00
3449bba4b3 Reactivate google storage 2020-01-12 13:39:42 +09:00
d94b016e63 Add google storage at build time 2020-01-12 13:34:29 +09:00
629dfcf152 Cleanup netcore21 specific code 2020-01-12 13:30:54 +09:00
9876208b7d Add arm64v8 support 2020-01-11 22:54:08 +09:00
df617d5186 Merge pull request #1258 from NicolasDorier/migration/netcore31
Switch to .netcoreapp3.1
2020-01-11 15:03:51 +09:00
21f715bfc6 Add runtime razor compilation during debug 2020-01-11 13:12:41 +09:00
18a2c1a00f Remove warning 2020-01-11 13:12:41 +09:00
6c2fdecebe Rewrite EF query for 3.1 compatibility 2020-01-11 13:12:40 +09:00
c3b7779ea3 Migrate dockerfile to .netcoreapp3.1 2020-01-11 13:12:40 +09:00
83ea95ed6d Switch to .netcoreapp3.1 2020-01-11 13:12:39 +09:00
a816e37621 Update libs 2020-01-11 13:12:24 +09:00
33c65a6548 Merge pull request #1246 from Kukks/generate-wallet-message
add error message on generate wallet failure
2020-01-10 20:03:59 +09:00
bf57701cf0 Passing ambient route parameters explicitely 2020-01-10 15:37:44 +09:00
bfcd90d8d1 Refactor test 2020-01-10 14:46:42 +09:00
0387306918 Adjust invoice listing pagination display 2020-01-09 20:04:55 -08:00
c99d26a55d Fix test for clightning overpaying 2020-01-10 11:13:54 +09:00
7efeeb7c28 Merge pull request #1231 from NicolasDorier/fix/mysqlmigrations
Fix MySQL support
2020-01-09 17:13:53 +09:00
3164783b31 Merge pull request #1253 from radWorx/lead-login-verbiage
"Lead-login" verbiage
2020-01-06 21:50:37 -06:00
28c441924a Merge pull request #1242 from jlopp/varFix
Fix variable spelling
2020-01-06 21:44:17 -06:00
3b3ec7fc21 Merge pull request #1237 from jlopp/spellCheck
Add spelling / grammar fixes and some clarifications for settings
2020-01-06 21:43:46 -06:00
dfa0201726 Merge pull request #1254 from pavlenex/year-update
Update Year 2020 in License
2020-01-06 21:43:20 -06:00
2b889d9e29 Update Year
Happy New Year.
2020-01-03 14:11:15 +01:00
08688f69c0 "lead-login" verbiage
missing final period. suggest changing verbiage to reflect btcpayserver.org verbiage for consistency.
2020-01-02 22:50:26 -05:00
4a0d29c700 Merge pull request #1247 from Kukks/liquid-wallet-changes
Liquid: Show limited wallet pages
2019-12-30 13:21:39 +09:00
fa916d4862 Liquid: Show limited wallet pages 2019-12-29 17:08:30 +01:00
1973647b51 add error message on generate wallet failure 2019-12-29 16:43:55 +01:00
12133cd7d3 fix variable spelling 2019-12-27 14:32:43 -05:00
9b66ba226b bump lightning lib 2019-12-27 21:59:06 +09:00
96731fabc7 bump lightning lib 2019-12-27 21:44:28 +09:00
87f1ab7caa bump lightning 2019-12-27 21:21:18 +09:00
4cf6f8e753 Rename ListInvoices function to ListInvoicesPage to avoid ambiguity 2019-12-26 15:08:43 -08:00
dc59c4ca47 Adjust invoice pagination behavior
fix #1236
2019-12-26 14:53:09 -08:00
4f046ed1d3 add spelling / grammar fixes and some clarifications for settings. 2019-12-26 07:32:32 -05:00
d689222e04 Merge pull request #1234 from NicolasDorier/rates/limit
Do not preemptively fetch rates of all exchanges
2019-12-26 16:36:53 +09:00
57985e78e5 Save the last update time instead of the next update time 2019-12-26 16:24:57 +09:00
731341b749 Do not preemptively fetch rates of all exchanges 2019-12-26 14:54:26 +09:00
f12186e09f The tests in btcpayserver should use only the services they use (#1233) 2019-12-24 18:11:21 +09:00
4d7480db15 Liquid & Liquid Assets Support (#1118) 2019-12-24 16:20:44 +09:00
0485a9178d Merge pull request #1232 from NicolasDorier/seed/bettererror
Make it mandatory for the user to set the master fingerprint in the w…
2019-12-23 23:32:14 +09:00
17d2b20cd5 User can use passphrase when importing seed 2019-12-23 23:31:39 +09:00
aa459d0ff3 Make it mandatory for the user to set the master fingerprint in the wallet settings for seed signing. Improve error messages. 2019-12-23 23:08:41 +09:00
656ff7029e Do not show on screen seed passphrase in sign with seed 2019-12-23 22:32:33 +09:00
8e00e6d8e3 Make sure that varchar(255) is used for mysql migration scripts 2019-12-23 15:03:06 +09:00
8bcb2381a0 Comment code to generate MySql migration scripts 2019-12-23 15:03:05 +09:00
a73d2db02a Fix tests 2019-12-19 16:36:04 +09:00
47eb087d1b Rename CanGenerateWallet to CanUseHotWallet, small refactoring on generatewallet 2019-12-18 22:28:03 +09:00
ed6a01469a Merge pull request #1212 from Kukks/generatewallet
Generate wallet
2019-12-18 16:35:34 +09:00
7cfe5f0421 failsafe with selenium 2019-12-16 12:10:03 +01:00
1aef7f7ea6 rebase fix 2019-12-16 10:25:07 +01:00
9142c48a0b return correct view 2019-12-16 09:38:00 +01:00
45e139c5b7 define view 2019-12-16 09:35:41 +01:00
6706658377 add policy to restrict generate wallet usage 2019-12-16 09:32:43 +01:00
a75b6201b7 update message 2019-12-16 09:01:27 +01:00
f724d6c0cf tests for importing keys to rpc 2019-12-16 09:01:27 +01:00
0dccbeac3d fix tests 2019-12-16 09:01:27 +01:00
7d2dc45dfb fix ident 2019-12-16 09:01:27 +01:00
f284ef9052 Add generate wallet e2e test 2019-12-16 09:01:27 +01:00
80790bd9b0 fixes 2019-12-16 09:00:41 +01:00
2da9434571 init work 2019-12-16 09:00:00 +01:00
579e0d2e09 Do not crash if empty destination is entered on WalletSend 2019-12-11 13:05:59 +09:00
33703b83a3 Fix device not found with Trezor T 2019-12-10 23:52:48 +09:00
23b9dfed2c Cache balance 2019-12-10 22:17:59 +09:00
b8f6ef8844 fix sdk version of tests 2019-12-10 21:46:06 +09:00
6f6b4c8ead Fix dockerfile versions 2019-12-10 21:43:21 +09:00
5d87dd5861 Merge pull request #1219 from bolatovumar/fix-1217
[Wallet] Show invalid address message when address is invalid
2019-12-10 21:39:43 +09:00
02c8bf4469 bump 2019-12-10 21:23:38 +09:00
540cb912f3 Can display address on device at confirmation screen 2019-12-10 21:22:46 +09:00
93f490f570 Fix pin entry 2019-12-10 20:10:13 +09:00
de2e222ae5 Improve signing vault UI 2019-12-10 18:58:12 +09:00
12055a000b Proper handling of passphrase for Trezor T 2019-12-10 18:16:52 +09:00
6addb3e481 [Wallet] Show invalid address message when address is invalid
fix #1217
2019-12-07 21:20:42 -08:00
d9cd916440 Merge pull request #1187 from dennisreimann/document-themeing
Document themeing
2019-12-07 17:22:47 +09:00
452a705b75 Update russian,portugal 2019-12-07 17:21:11 +09:00
1c8206c749 Merge pull request #1214 from MrPaz/feature/satsfix
Fixing sats exchange rate display
2019-12-07 17:18:54 +09:00
062c42e524 Fix build 2019-12-07 16:42:03 +09:00
2d932ebb21 Update to runtime .NET 2.1.14 2019-12-07 16:35:13 +09:00
0e0fa53517 Prompt passphrase for trezor T 2019-12-05 22:47:07 +09:00
4e20730379 Better message when the device is signing (#1207) 2019-12-05 22:37:04 +09:00
1d70d935b8 Provide better details for unknown error (#1208) 2019-12-05 22:03:35 +09:00
9b8f42cdf6 Merge pull request #1213 from rockstardev/feature/accessdeniedfix
Fixing AccessDenied page displayed
2019-12-04 15:38:40 -06:00
eb85b1a7b4 Fixing sats exchange rate display
Fixed #1147
2019-12-04 14:21:33 -06:00
df7e2073df Fixing AccessDenied page displayed 2019-12-04 13:45:09 -06:00
84d943d6cc Trying to fix TrezorT 2019-12-04 22:12:38 +09:00
a1d82b0e8b fix bug if selecting segwit with vault 2019-12-04 21:52:48 +09:00
ab7c124302 Properly show text to enter pin or passphrase for trezor T 2019-12-04 17:23:10 +09:00
544597348b Fix inverted boolean logic 2019-12-04 17:19:25 +09:00
1559c510be Trying to handle Trezor T correctly 2019-12-04 17:16:37 +09:00
3e08581e9b Fix fetching xpub for trezor 2019-12-04 16:34:25 +09:00
49c70d9b04 Vault: Reinite the popup in add derivation scheme if it is closed 2019-12-04 16:16:41 +09:00
50e7d8389c Vault: Allow user to pick the account number 2019-12-04 15:54:08 +09:00
ea5bd6d435 bump nbx 2019-12-04 13:51:26 +09:00
cbb37674e3 vault-confirm is not a popper 2019-12-04 12:56:39 +09:00
e70d5ceb08 Fix JS error on WalletSendVault after PIN is asked (#1210) 2019-12-04 12:52:54 +09:00
5d7b253edd Fix bug: Vault option now showing up in PSBT 2019-12-03 18:57:07 +09:00
df38b84bbb Fix alignment in psbt review 2019-12-03 14:30:29 +09:00
a3fc75ea3b Show proper error message if the keypath in wallet settings is not good (Fix #1209) 2019-12-03 14:26:52 +09:00
71a8166027 Handle "pin already prompted" error. (Fix #1209) 2019-12-03 13:53:58 +09:00
564dd95d81 Remove unused modern theme
We can start over with this once the general design decisions are decided on and we start implementing a new UI.
2019-12-02 11:19:17 +01:00
eb16b435df Document themeing approach
Sums up and adds to the comments made in #1175.

I wasn't sure where to put these kinds of docs, as tehy are code related and not end user facing. Let's discuss whether or not this fits in here or should become part of the docs repo.

fix
2019-12-02 11:18:33 +01:00
f94daed06d Merge pull request #1184 from bolatovumar/fix-1182
[Wallet] Specify validation range for wallet send amount
2019-12-02 18:29:45 +09:00
e841bfa148 Merge pull request #1186 from dennisreimann/custom-theme
UI: Add custom theme file option
2019-12-02 18:29:07 +09:00
03b76380e7 Merge pull request #1192 from dennisreimann/ln-node-certthumbprint
LN Node: Show ready to use certthumbprint
2019-12-02 18:28:11 +09:00
c6671f7122 Merge pull request #1200 from pavlenex/ipn-notification
Re-name the Invoice e-mail notification field
2019-12-02 18:27:52 +09:00
db56c2b106 Merge pull request #1202 from pavlenex/create-wallet
Change create with connect in wallet page
2019-12-02 18:27:40 +09:00
f7b2c836b7 Merge pull request #1203 from Kukks/nbxupdate
update nbx + prep bitcoin payment data ctor change
2019-12-02 18:27:28 +09:00
6ec379b538 Merge pull request #1198 from Eskyee/patch-3
Update vaultbridge.js
2019-12-02 18:27:02 +09:00
d6e1d34ebf update nbx docker tests 2019-12-02 10:10:24 +01:00
bc2a039ea2 bump nbx and make balance return decimal 2019-12-02 09:57:38 +01:00
e31e600144 update nbx + prep bitcoin payment data ctor change 2019-12-01 15:30:56 +01:00
91f83d751f Connect wallet clarification 2019-11-30 18:15:28 +01:00
b8288f1efa Use 127.0.0.1 instead of localhost for vault's http requests. (Fix https://github.com/btcpayserver/BTCPayServer.Vault/issues/9#issuecomment-559858955) 2019-11-30 23:34:47 +09:00
fa61c2bcdd Add error for invalid network 2019-11-30 23:33:42 +09:00
2d168e1d9b Re-name the Invoice e-mail notification field 2019-11-30 11:45:06 +01:00
3e7ad4a4f6 Update vaultbridge.js
replace localhost with 127.0.0.1 fixes BTCPay Vault in Apple Safari browser Version 13.0.3 macOS Catalina 10.15.1 (19B88)
thanks to Nicolas
2019-11-29 20:09:46 +00:00
d2357ee8b9 Do not ask for Pin on Trezor T 2019-11-25 11:50:49 +09:00
9f04c7d0bc Merge pull request #1193 from dennisreimann/heading-alignment
UI: Left align admin section headings
2019-11-25 11:44:25 +09:00
9baa7eed80 UI: Left align admin section headings
Removes the custom property and consistently align the headings left, which I agree is the better choice.

Context: https://chat.btcpayserver.org/btcpayserver/pl/upb3nzch7j8nmpbt7kfmoe6beo
2019-11-24 20:39:29 +01:00
287fbc523f Asks pin and passphrase if device is not ready 2019-11-24 22:51:13 +09:00
ea6df35c87 LN Node: Show ready to use certthumbprint
Turns the output of the `openssl` command from

`SHA256 Fingerprint=48:37:A4:D6:[…]`

into this, which can be copied and inserted directly:

`4837A4D6[…]`
2019-11-24 09:48:34 +01:00
2e0db1a430 Fix XML parsing error (#1185) 2019-11-23 14:04:26 +09:00
7ccf0c3612 UI: Add custom theme file option
This adds a "Custom Theme CSS file" to the "Server settings: Theme" page. It works similar to the custom bootstrap and creative start fields, but is only added to the head in case it is set.

The main idea here is that users would choose one of our predefined themes and have the option to override specific values. The other apporach would be to let the custom theme replace the predefined one, but this could lead to issues in case we extend the set of variables, which would be unset then.
This way users can copy a predefined theme and override all variables or just the ones they want to customize.

The help icon besides the label links to a page in the docs I'm currently working on.
2019-11-22 21:09:18 +01:00
1b58058796 Refactoring 2019-11-22 19:19:05 +09:00
98276bcb3d Remove useless try/catch 2019-11-22 19:16:32 +09:00
1aa4dbb90d bump 2019-11-22 19:14:15 +09:00
eef623fb4b Ask passphrase when appropriate (Fix #1185) 2019-11-22 19:13:04 +09:00
84bbbcbe10 [Wallet] Specify validation range for wallet send amount
fix #1182
2019-11-21 18:47:10 -08:00
a324e2aeaf Merge pull request #1181 from Kukks/register-login-link
add login button to register page
2019-11-21 18:01:39 +09:00
d6b3530384 add login button to register page 2019-11-21 09:28:35 +01:00
dfe8a10e1a bump 2019-11-21 16:39:18 +09:00
5afa847e6e Fix sign transaction 2019-11-21 16:38:43 +09:00
1bcbc9bab0 Should not show the password 2019-11-21 16:03:06 +09:00
b915544798 Prevent NRE on NBxplorer listener 2019-11-21 14:27:57 +09:00
2b9f390c64 update translation 2019-11-21 14:17:27 +09:00
ee42d5c7b4 bump 2019-11-21 14:15:04 +09:00
f809dd51a6 Merge pull request #1152 from NicolasDorier/feature/vault
Add hardware support via BTCPayServer Vault
2019-11-21 14:13:43 +09:00
1a8d6e5c05 Implement BTCPayServer vault derivation scheme import 2019-11-21 14:06:16 +09:00
869ba745b2 Merge pull request #1175 from bolatovumar/fix-1169
Add CSS variable for preformatted text color
2019-11-21 14:03:05 +09:00
180dfb6edf Add CSS variable for preformatted text color
fix #1169
2019-11-20 11:12:31 -08:00
45b08ac8d2 Add sponsor 2019-11-19 20:37:15 +09:00
9a4b385432 Add sponsor 2019-11-19 20:33:26 +09:00
08289b89c5 Merge pull request #1176 from pavlenex/supporters-sw
Add new supporter to readme
2019-11-19 20:32:42 +09:00
a31d1d81c8 Update README.md 2019-11-19 09:20:31 +01:00
e4c7bb0378 add wallet of satoshi to readme
add wallet of Satoshi, fix Lunanode spacing
2019-11-19 09:16:04 +01:00
374aaf2e2b add walletofsatoshi svg logo 2019-11-19 09:12:38 +01:00
52fd686993 Merge pull request #1174 from pavlenex/new-supporters-lw
add new supporter to readme
2019-11-19 00:31:06 +09:00
03c36ef0d2 add lunanode to readme 2019-11-18 15:55:56 +01:00
71a6ffac2e Adjust status message for WalletTransactions 2019-11-18 21:47:09 +09:00
92777ba181 Make sure SSH does not throw in separate thread 2019-11-18 17:15:40 +09:00
81843fb609 Do not delete the password from the seed 2019-11-18 17:00:54 +09:00
3af3ffd038 Merge pull request #1167 from dennisreimann/ui-improvements
UI: Payment request improvement
2019-11-18 14:23:51 +09:00
2ce5cd0b6f Merge pull request #1171 from bitcoinbrisbane/master
Add office 365 to the quick fill settings
2019-11-18 14:23:12 +09:00
d791fd59e9 Merge branch 'master' of github.com:bitcoinbrisbane/btcpayserver 2019-11-18 08:12:30 +10:00
6064e3ce55 Add office365 quick settings 2019-11-18 08:12:06 +10:00
0fcfe0e977 Can prune wallet transaction history 2019-11-17 17:13:09 +09:00
997df5c64d Remove build warnings 2019-11-17 16:50:28 +09:00
27af96662f Fix bug for Network not having a NBitcoin Network 2019-11-17 13:04:42 +09:00
0be6f3ca70 UI: Remove superfluous spaces when description is empty 2019-11-16 23:28:53 +01:00
7af80611b6 UI: Better payment request amounts display
Uses a table instead of list group items, so that the columns properly align (rows use the same grid). Also aligns the values on the right.
2019-11-16 22:59:51 +01:00
4c349803b6 Use Channel instead of blocking collection for the Invoice Watcher 2019-11-16 19:12:26 +09:00
35a4278ae8 Merge pull request #1161 from britttttk/app-button
Hide View button in crowdfund
2019-11-16 18:58:11 +09:00
06365b7b73 Merge pull request #1158 from Kukks/register-login-secure-lock
Do not allow login or register over an insecure connection
2019-11-16 18:15:16 +09:00
f31e013986 bump 2019-11-16 18:03:16 +09:00
fe1df743ce bump nbx 2019-11-16 17:22:51 +09:00
22ffd48cd4 refactor 2019-11-16 08:57:16 +01:00
c83bcd259d Testing happy messages, fix approval button 2019-11-16 15:20:54 +09:00
8ebac28ccf Fix tests 2019-11-16 15:07:02 +09:00
4e5001d7ef Delete password from the lnd seed backup 2019-11-16 14:07:43 +09:00
84fe14a1ed Test LND Seed Backup service and Logs. Use the Confirm View instead of poppup 2019-11-16 14:06:37 +09:00
6828730313 Merge pull request #1162 from dennisreimann/theme-fixes
Theme fixes
2019-11-16 12:36:50 +09:00
e540079220 Merge pull request #1163 from dennisreimann/main-bundle-script-order
Fix script order in main bundle
2019-11-16 12:36:03 +09:00
e99f806b66 Merge pull request #1164 from dennisreimann/page-titles
Page title fixes
2019-11-16 12:35:45 +09:00
b452f1d125 Limit custom table styles to small tables
Otherwise it overrides to many styles so that i.e. font-sizes with th .h*-classes do not work anymore.
2019-11-15 15:15:22 +01:00
f0a9d209a5 Fix bootstrap reference in cart bundle 2019-11-15 15:15:21 +01:00
984aa2912a Fix script order in main bundle
creative.js relies on ScrollReveal being present on initialization, so it has to be included after scrollreveal.min.js
2019-11-15 15:15:20 +01:00
c8937f6d46 POS app theme fixes 2019-11-15 15:15:19 +01:00
cb849ab23e Light/dark color fixes
fix
2019-11-15 15:15:18 +01:00
3bca3427eb Consistent use of page title on Pay Button page 2019-11-15 14:44:08 +01:00
a127b13db1 Add missing payment request page titles 2019-11-15 14:43:36 +01:00
a2f608266b Fix bootstrap reference in cart bundle 2019-11-15 14:01:18 +01:00
05f8b8d8af Fix script order in main bundle
creative.js relies on ScrollReveal being present on initialization, so it has to be included after scrollreveal.min.js
2019-11-15 13:56:03 +01:00
f1cef81d76 Do not allow login or register over an insecure connection 2019-11-15 12:39:17 +01:00
e1bf376f10 Mark up alert-links for better display 2019-11-15 11:24:27 +01:00
9298eab30d Improve QR code display on dark background 2019-11-15 11:23:52 +01:00
584528f903 Improve pay button display on dark background 2019-11-15 11:08:10 +01:00
3501920956 Set apart theme select from custom css file references 2019-11-15 11:06:09 +01:00
65a867e82d Fix css references on bootstrap kitchensink page 2019-11-15 11:05:12 +01:00
2bfea50014 Update NBXplorer 2019-11-15 18:53:20 +09:00
89539fca01 Fix build 2019-11-15 18:20:10 +09:00
240f6fa45a Allow /rates to pass storeId 2019-11-15 18:10:14 +09:00
c004065eea Apply some lipstick on the lnd seed backup 2019-11-15 17:55:55 +09:00
1cfba82d77 Hide button when missing required fields 2019-11-14 23:58:38 -07:00
3bdcbd8907 Small adjustment to make tables look better 2019-11-15 15:22:01 +09:00
fd53811fdd Adjust base font-size to match old style 2019-11-15 14:45:53 +09:00
5eeda40098 Addressing CSS inconsistencies compared to old design
Fixes: #1159
2019-11-14 22:48:15 -06:00
7bce316e78 Merge branch 'master' into feature/lndseedbackup 2019-11-14 21:02:56 -06:00
68f172b9ef Switching back to v as prefix, other scripts assume it's presence
z wouldn't work because some scripts in btcpayserver-docker re-append v as prefix to find tag
2019-11-14 21:00:39 -06:00
9b3e7338ba Fixing broken CrowdfundTests.CanContributeOnlyWhenAllowed test 2019-11-14 20:56:28 -06:00
c6ef6fc17d Removing bootstrap and creative start vendor dirs, moving to main 2019-11-14 20:41:53 -06:00
e4c797eaa7 Merge pull request #1137 from dennisreimann/ui-css-refactoring
UI: Support themes via CSS variables
2019-11-14 20:28:01 -06:00
bdca51a178 Fine tuning the classic theme 2019-11-14 21:10:17 +01:00
e147ce8606 Minor layout improvements 2019-11-14 18:45:35 +01:00
830286ecc1 Center content on forgot password page 2019-11-14 18:44:14 +01:00
bc56cab488 Fix colors in wallet send view 2019-11-14 18:44:13 +01:00
dd683db6d5 Bump up font size and spacings in classic theme 2019-11-14 18:44:12 +01:00
5436999b13 Fix welcome layout background 2019-11-14 18:44:11 +01:00
29946763ba Move theme switch to top 2019-11-14 18:42:58 +01:00
7160f7dc22 Add bootstrap kitchensink
Can be used to control the look of all elements:
/_bootstrap_kitchensink.html?theme=casa
2019-11-14 18:42:57 +01:00
e44db30ddb Finetune color settings
fix
2019-11-14 18:42:56 +01:00
458b2fd72e Register page fixes 2019-11-14 18:42:55 +01:00
66ffa5f987 Rename alpha theme variables to backdrop 2019-11-14 18:42:54 +01:00
dd8caa46c4 Remove modern theme option
For now as it is not really shaped yet.
2019-11-14 18:42:53 +01:00
55de85d829 Casa theme color fixes 2019-11-14 18:42:52 +01:00
10f782aa11 Integrate and adapt new register page 2019-11-14 18:42:51 +01:00
5bb6918465 Add Casa theme draft 2019-11-14 18:42:50 +01:00
205fd3c9ce Use grid consistently 2019-11-14 18:42:49 +01:00
50bf55cbdf Unify section headings 2019-11-14 18:42:48 +01:00
3a9ecd8b33 Dissect css rules and simplify color variables 2019-11-14 18:42:48 +01:00
5942a840b2 Move main bundle files also 2019-11-14 18:42:47 +01:00
6dd3c79c23 Move themes and bootstrap 2019-11-14 18:42:46 +01:00
a25e0ef592 add-theme-picker 2019-11-14 18:42:45 +01:00
29465cbadc Use "modern" theme as example 2019-11-14 18:42:44 +01:00
fdc1aa25e4 Use variable based bootstrap and creativestart
fix
2019-11-14 18:42:40 +01:00
04fbe42bda Merge pull request #1139 from bolatovumar/issue-1138
Vary page layout for registering new accounts
2019-11-14 23:58:37 +09:00
57a6949565 Fix View app on Crowdfunding (#1141) 2019-11-14 21:13:41 +09:00
bcb85e2084 Errors not working in PointOfSale (#1141) 2019-11-14 20:55:18 +09:00
6900964c03 Fix debug log not showing (Fix #1157) 2019-11-14 18:49:33 +09:00
3d2b8d2969 Merge pull request #1156 from bolatovumar/fix-1155
Improve mobile view on new welcome layout
2019-11-14 17:26:58 +09:00
c7da4e3eff Add TestTimeouts 2019-11-14 17:14:08 +09:00
9e31154808 Improve mobile view on new welcome layout
fix #1155
2019-11-13 18:46:58 -08:00
89353b8e7c Remove svg trash 2019-11-13 18:50:23 +09:00
b8eea53e01 Merge pull request #1154 from pavlenex/supporters-dglabs
Add supporter to readme
2019-11-13 18:43:43 +09:00
9bafce8069 Add DG Labs logo to readme 2019-11-13 10:38:31 +01:00
a9de1c2c64 Add link to foundation website 2019-11-13 17:37:57 +09:00
e6505040e0 Missing svg 2019-11-13 16:06:41 +09:00
92bdb20e1c Add new sponsor 2019-11-13 16:04:47 +09:00
c6bba9188b Improve error message for CanUsePosApp 2019-11-13 15:56:58 +09:00
c3a84f6577 Merge pull request #1142 from Kukks/bugfix/u2f
Fix U2F bug when using multiple devices
2019-11-13 15:37:14 +09:00
ba54b5aacf Merge pull request #1144 from Kukks/ndax
Bump ExchangeSharp, fixes breaking changes and switch to exchangeshar…
2019-11-13 15:36:52 +09:00
e92a15e072 Add logs to find out if tests hang on website getting operational 2019-11-13 15:24:56 +09:00
ad853c6985 Merge pull request #1153 from NicolasDorier/nico/remove-trezor
Remove Trezor in AddDerivationScheme
2019-11-13 15:20:12 +09:00
e7ff5c0a4b Remove Trezor in AddDerivationScheme 2019-11-13 15:10:33 +09:00
fef1bde9b6 Merge pull request #1151 from NicolasDorier/update/nbxplorerclient
Bump NBXplorer.Client
2019-11-13 14:45:10 +09:00
eb87d7cadc Bump NBXplorer.Client 2019-11-13 13:51:06 +09:00
5394e0a4a0 Merge pull request #1143 from Kukks/bugfix/ln-sats
Display proper rate for ln sats feature
2019-11-12 14:01:13 +09:00
0f0b846e04 Merge pull request #1032 from bolatovumar/fix-1029
Retain store ids when filtering invoices
2019-11-11 21:00:42 +09:00
ae869489b5 Merge pull request #1133 from pavlenex/readme-2
Add CTA at the bottom + fix broken table tag
2019-11-11 20:58:53 +09:00
cdc973cbea fix tests 2019-11-11 11:25:23 +01:00
bae9ca2a7a fix ambigous ref 2019-11-11 10:08:10 +01:00
0df7506ad5 Bump ExchangeSharp, fixes breaking changes and switch to exchangesharp provider for ndax 2019-11-11 07:14:29 +01:00
974101624b fix text 2019-11-10 18:51:51 +01:00
621a7d998d Display proper rate for ln sats feature
fixes #1128
2019-11-10 18:49:24 +01:00
539c7d6e17 fix for multiple U2F devices 2019-11-10 18:12:20 +01:00
2743641122 hidden challenges rendered 2019-11-10 17:32:28 +01:00
1d08a811e7 Enabling circleci builds on feature tags 2019-11-10 07:00:30 -06:00
c5ca02e48e Js cleanup based on Kukks feedback 2019-11-10 06:22:17 -06:00
bce201038f Including walletunlock.json file in TestData for easier debugging 2019-11-10 06:19:59 -06:00
c24bb443d3 Fixing check for external services that don't specify server 2019-11-10 06:12:32 -06:00
9c165d84ef Removing LND seed information from walletunlock.json 2019-11-10 06:12:32 -06:00
58b834fe9d Displaying information from walletunlock.json if file is present 2019-11-10 06:12:32 -06:00
2b1aac9aa9 Service page for LND Seed Backup 2019-11-10 06:12:32 -06:00
dfdb99165b Vary page layout for registering new accounts
address #1138
2019-11-09 21:24:19 -08:00
b75eaee6dd Merge pull request #1115 from escapedcat/feat/ledger-xpub-help
feat(stores): add ledger specific xpub help
2019-11-10 00:28:05 +09:00
888b06376d Merge pull request #1132 from Kukks/xmr-fix
fix moneromoney util
2019-11-10 00:07:27 +09:00
7f6b1e7e6e Merge pull request #1135 from bolatovumar/fix-1129
Make sure documentation tooltip link stays inline with label
2019-11-10 00:06:36 +09:00
8dd1efc126 Adding test timeout 2019-11-09 16:57:40 +09:00
9cd64bf81a Inline "allow custom payment amount" checkbox with label 2019-11-08 19:12:52 -08:00
2c14cece6b Make sure documentation tooltip link stays inline with label
close #1129
2019-11-08 19:12:51 -08:00
11c269693e feat(stores): add ledger specific xpub help
problem: maximum of 20 ledger accounts are being listed in the derivation-scheme select
solution: help users with i.e. multiple ledger accounts by providing link to docs for detailed info on where to find the xpub key manually
2019-11-08 15:24:12 +01:00
ae9b93ca8f Removing useless tool 2019-11-08 22:41:14 +09:00
563e95df7c Fix tests 2019-11-08 21:42:34 +09:00
5b37a9df0b Make sure we don't pass the psbt in GET url 2019-11-08 21:21:23 +09:00
28396206de Show the torrc config when debugging via F5 2019-11-08 17:26:32 +09:00
9d3026f676 Add torrc files in tests 2019-11-08 16:10:49 +09:00
0f7458254e Retain store ids when filtering invoices 2019-11-07 18:14:38 -08:00
2305a0a5c8 Add CTA at the bottom + fix broken table tag 2019-11-07 19:43:25 +01:00
7ce2ddb400 fix moneromoney util 2019-11-07 18:41:10 +01:00
13c8372329 Merge pull request #1131 from pavlenex/supporters-final
Add supporters, remove listed alts
2019-11-07 23:17:29 +09:00
8fd7ee0763 Add supporters, remove listed alts 2019-11-07 11:33:11 +01:00
aab7c08500 Unify StatusMessage handling 2019-11-07 18:59:51 +09:00
ff8de47e69 Fix tests 2019-11-07 18:36:45 +09:00
3ff9cc85ef Fix tests 2019-11-07 18:35:47 +09:00
0a2440e14c Fix test 2019-11-07 18:29:52 +09:00
d37abb53f0 Fix status message when a model is passed 2019-11-07 18:20:17 +09:00
656a3956b1 Fix strange message in PaymentRequests (Fix #1130) 2019-11-07 17:59:35 +09:00
c31e7593b6 Add label to FullyNoded 2019-11-07 17:08:24 +09:00
7be9083220 Update sponsor 2019-11-07 16:46:10 +09:00
b85667a191 Fix status message of PaymentRequest 2019-11-07 16:19:36 +09:00
892d906ac7 Fix tx link in payment request 2019-11-07 16:12:05 +09:00
0277708b2a Fix tor service parsing 2019-11-07 15:58:03 +09:00
d757aa2978 Fix typo 2019-11-07 15:48:56 +09:00
cf7bba9600 Fix services if there is more than one tor external services 2019-11-07 15:41:39 +09:00
a0d498812d bump 2019-11-07 14:35:18 +09:00
29e8783beb Update translations 2019-11-07 14:34:34 +09:00
57b87a55bc Show Bitcoin RPC service 2019-11-07 14:33:10 +09:00
9ff9377bc7 Make sure the recommended fees are different from the network fee rate 2019-11-07 13:45:45 +09:00
163ef031b9 Make sure the recommended fees are different from the network fee rate 2019-11-07 13:35:47 +09:00
1cfdd1489b Merge pull request #1127 from bolatovumar/master
Make recommended fee confirmation target configurable
2019-11-07 13:27:03 +09:00
0a9290a980 Make recommended fee confirmation target configurable
Address #1110
2019-11-06 16:21:33 -08:00
f0c2fb62df Select all link when clicked 2019-11-07 00:13:00 +09:00
24d6532dac Add onion link to login/register 2019-11-06 23:58:04 +09:00
fee1fe22a7 Use better svg version of the logo 2019-11-06 23:25:56 +09:00
d8103f7293 Fix webfont 2019-11-06 21:57:43 +09:00
3d3446e46a Improve design of register/login on mobile 2019-11-06 21:51:10 +09:00
22af4d2836 Because links are not reusable in LightningWalletService, it should not open in a new tab 2019-11-06 21:17:50 +09:00
06b2a3383d Merge pull request #1125 from NicolasDorier/fix/maintainence
Improve message in Maintainance page
2019-11-06 16:41:11 +09:00
06c3f01e41 Improve message in Maintainance page 2019-11-06 16:17:03 +09:00
d392880102 Merge pull request #1121 from NicolasDorier/ux/login-register
Add sponsor and new design to the login and registration page
2019-11-06 15:29:36 +09:00
55dd8da284 Redirect first run to register, redirect unlogged to login 2019-11-06 15:19:14 +09:00
e76f5b19b1 bump lightning package 2019-11-06 13:20:57 +09:00
5650b8560d Refactor the Header in its own partial view 2019-11-06 13:15:26 +09:00
2d80dbfa8f Custom logo and custom url for checkout page should accept any string (relative path) (Fix #1124) 2019-11-06 12:02:13 +09:00
c62aeb670a Merge pull request #1120 from rockstardev/cifixrefactor
Fixing CircleCi to run external test only in repo context, small refactor of LndServiceViewModel
2019-11-05 09:41:43 -06:00
1a407a2da3 Add sponsor and new design to the login and registration page 2019-11-05 18:01:43 +09:00
72d7e2dc5b Merge pull request #1116 from bolatovumar/issue-1111
Improve pay button display options section
2019-11-04 12:04:14 +09:00
a126ec1718 Renaming to LndServiceViewModel, used both by grpc and rest 2019-11-03 13:18:09 -06:00
bf59114a00 Run CircleCi external tests only in context of btcpayserver user & repo 2019-11-03 13:16:21 -06:00
6b587bfc31 Improve pay button display options section
address #1111
2019-11-03 09:53:09 -08:00
28a2017b65 Merge pull request #1108 from dennisreimann/paybutton
More pay button improvements
2019-11-03 20:26:55 +09:00
c3a6e9a799 Merge pull request #1112 from Kukks/fix-monero-qr
fix qr code amounts for monero
2019-11-03 20:26:35 +09:00
45c66a167b Merge pull request #1113 from Kukks/payment-request-fixes2
fix Payment request "Cancel invoice" button always showing
2019-11-03 20:25:46 +09:00
380629a961 Update BTCPayServer.Lightning 2019-11-03 16:34:14 +09:00
74fdd1358c Update translations 2019-11-03 16:31:01 +09:00
e9d63650b9 bump 2019-11-03 16:18:33 +09:00
9ecb27a9bd Fix and test /api-tokens (fix https://github.com/btcpayserver/woocommerce-plugin/issues/34) 2019-11-03 16:17:28 +09:00
b0ae878ef6 Merge pull request #1107 from NicolasDorier/ui/new-confirm
Redesign confirm forms
2019-11-03 15:37:33 +09:00
28cc4facd4 Redesign confirm form 2019-11-03 15:20:25 +09:00
749146ad3c fix Payment request "Cancel invoice" button always showing
The Cancel current invoice button always showed even when there was active invoice
2019-11-02 08:49:19 +01:00
a4ba93d249 fix qr code amounts for monero 2019-11-02 08:41:48 +01:00
7eae1f3b3c More pay button improvements 2019-10-31 11:31:30 +01:00
d66e8f2d13 Removing obsolete StatusMessage 2019-10-31 15:19:38 +09:00
058b768b0a update lightning charge in tests 2019-10-31 14:31:44 +09:00
3425f84507 Merge pull request #1106 from NicolasDorier/refactor/statusmessage
[WIP] Refactor StatusMessage and remove ExternalLogin
2019-10-31 14:12:05 +09:00
aad586232c Refactor StatusMessage and remove ExternalLogin 2019-10-31 14:11:33 +09:00
b514533814 Merge pull request #1104 from dennisreimann/paybutton
Improve pay button display
2019-10-31 14:01:38 +09:00
3b1f851f8a Improve pay button display
These changes should provide a more solid CSS approach to display the pay button in different scenarios. Also it fixes minor functionality issues like preselecting the merchant-chosen currency in the custom amount and slider dropdown.
2019-10-29 21:08:08 +01:00
99095f25d9 bump clightning 2019-10-29 16:46:22 +09:00
d79a28ac6f Merge pull request #1103 from rockstardev/lndseedless
Updating reference to new LND docker image and walletunlock.json path
2019-10-29 15:38:44 +09:00
120fe1ba85 Updating reference to new LND docker image and walletunlock.json path 2019-10-28 23:47:55 -05:00
ad8d8c31ab Merge pull request #1099 from Kukks/modal-close-fix
Fix: Close button for modal is broken
2019-10-28 14:26:20 +09:00
3e5ab70583 Fix: Close button for modal is broken
closes #1093
2019-10-27 08:13:30 +01:00
cd5b334a00 Make sure renci ssh does not prevent btcpay from closing 2019-10-26 23:40:35 +09:00
9a99b3fdc2 Fix bug: Could not delete store 2019-10-26 23:35:55 +09:00
2249ee195a Catch websockets exceptions 2019-10-23 16:11:20 +09:00
93cdbf7a1a Only push the released tag 2019-10-23 15:44:49 +09:00
22fa43f8d6 Version bump 2019-10-23 15:29:37 +09:00
39a6bd15d1 Update translations 2019-10-23 15:12:28 +09:00
1d8fe9fb93 Bump dbriize 2019-10-23 14:57:08 +09:00
565cac34b0 Update NBXplorer 2019-10-23 14:56:59 +09:00
1cb02b2913 Bump bundlerminifier 2019-10-23 14:56:48 +09:00
1174178771 Remove reliance on ambient routing values 2019-10-23 13:52:22 +09:00
f1a2cc2b65 Merge pull request #1096 from sam-sla/patch-2
Fix typo in SECURITY.md
2019-10-22 23:50:22 +09:00
36d97d1e74 Fix typo in SECURITY.md 2019-10-21 22:05:29 +02:00
12264d8e74 Make sure SSHClient Disconnect does not hang if a cancellationToken is passed 2019-10-21 18:43:53 +09:00
4d68b12080 Rewrite some EF queries to make EF3.0 happy 2019-10-21 18:38:57 +09:00
3c7137830e Make sure that the SSL connection does not prevent btcpayserver from restarting 2019-10-21 16:34:26 +09:00
4f1b4131cb Add more logs on hosted service exit 2019-10-21 14:03:55 +09:00
ccb45e3a99 Remove empty folder 2019-10-21 13:31:43 +09:00
f3461bfbe6 Show success message when derivation scheme is updated 2019-10-21 13:24:13 +09:00
22b05500f1 Reactivate ndax 2019-10-20 17:52:30 +09:00
66a2383ad1 Make CanHandleRefundEmailForm less capricious 2019-10-20 16:47:48 +09:00
7d6fb21a8c Fix test 2019-10-20 16:45:40 +09:00
5054e76d64 Fix build 2019-10-20 16:24:11 +09:00
9adb825c30 Do not ask for email in checkout by default (Fix #1084) 2019-10-20 15:46:34 +09:00
9a28dc5121 Pass cancellationToken around in the Kraken Provider 2019-10-20 15:24:07 +09:00
c82c67359c Merge pull request #1061 from reablaz/master
updated AppsUpdate view with correct GET request
2019-10-19 18:27:56 +09:00
59afc05661 Log hosted services exiting 2019-10-19 14:12:43 +09:00
c05820224e Log paytester dispose 2019-10-19 14:09:19 +09:00
fee106abef Remove possible NRE when app start 2019-10-19 13:50:52 +09:00
48fa11759f Missing files 2019-10-19 00:54:43 +09:00
eac4c91820 Move Bitpay authentication class in BTCPayServer.Security 2019-10-19 00:54:20 +09:00
037fcf93f5 Merge branch 'refactor/remove-scopes' 2019-10-18 23:58:43 +09:00
dabe805602 Remove dead link 2019-10-18 23:58:25 +09:00
dacf5c1e16 Go back to .net 7.3 2019-10-18 23:50:18 +09:00
da2e8665a1 Remove unused scope, assert policy on store listing 2019-10-18 23:42:06 +09:00
8643c04a39 Additional fixes for 3.0 2019-10-18 21:46:34 +09:00
c5ba063edf Move OpenId folder 2019-10-18 21:36:32 +09:00
9648836e2d Merge pull request #1077 from NicolasDorier/migration/openiddict30
Update to OpenIddict3.0
2019-10-18 21:30:27 +09:00
3c9b58916b Update to OpenIddict3.0 2019-10-18 19:02:23 +09:00
d56a5ad86e Merge pull request #1076 from bolatovumar/feat-1036
Add option to show recommeded fee on checkout invoice
2019-10-18 12:13:39 +09:00
cd5cc6435c make lightning scheme lowercase (Fix #1091) 2019-10-17 00:52:19 +09:00
c908301b84 Add option to show recommeded fee on checkout invoice
Address #1036
2019-10-14 10:09:26 -07:00
e68d76b56d Add timeout to tests 2019-10-14 23:50:51 +09:00
8339ec59b7 Merge pull request #1090 from bolatovumar/issue-1089
Make UI checkboxes inline with their labels
2019-10-14 22:47:29 +09:00
c5cfd7921a Merge pull request #1086 from NicolasDorier/refactor/authorization
Refactor authorizations
2019-10-14 22:46:26 +09:00
e584004b23 Make UI checkboxes inline with their labels
address #1089
2019-10-13 20:07:41 -07:00
281a2461ad Refactor authorizations 2019-10-14 00:24:41 +09:00
bd94b5f84e Temporarily remove docker image cache for circleci 2019-10-12 20:38:41 +09:00
2b040b3465 Merge pull request #1085 from Eskyee/patch-1
Update launchSettings.json
2019-10-12 12:28:28 +09:00
0e452c7cdf Update launchSettings.json
I`m  the Removing Docker-Regtest-https-monero as this loads as a default, which I didn't ask for, it  default in my builds config, launchSettings json, also I think since this json was changed, it gave my Mac VS a indent bug somehow, ?? But i may be wrong there, 
can Nicolas please review ?? this is the correct way I would remove Docker-Regtest-https-monero from my folk ?? thanks
2019-10-12 03:43:30 +01:00
2acdc77289 Update lang 2019-10-10 19:46:29 +09:00
fda6a1a77b Use ClaimTransformer instead of Authentication's JWT 2019-10-10 19:46:29 +09:00
7e5c593e09 Merge pull request #1081 from bolatovumar/fix-1078
[PoS app] Show card scrollbar only when necessary
2019-10-10 15:22:29 +09:00
40b191ef49 Skip HeadersOverrideMiddleware if on onion 2019-10-10 14:10:01 +09:00
a92f0fe289 [PoS app] Show card scrollbar only when necessary
fix #1078
2019-10-09 20:41:24 -07:00
ca17efbc29 Add missing file 2019-10-10 09:49:03 +09:00
5025e0dd4d Allow xforwardedproto to be override via configuration 2019-10-09 22:26:54 +09:00
1325c5d441 Add TestTimeout to some tests 2019-10-08 16:32:22 +09:00
30585d2cc1 Merge pull request #1075 from rockstardev/master
Replacing donation widget with link new donate page
2019-10-08 12:19:42 +09:00
98468f4eb0 Replacing donation widget with link new donate page
Resolves #1073

Co-authored-by: vswee <vswee@users.noreply.github.com>
2019-10-07 17:30:20 -05:00
39876dea07 Use random ports in container tests 2019-10-07 16:25:27 +09:00
03917ec806 Remove possible crash at shutdown 2019-10-07 16:06:36 +09:00
1c9a91140b Asyncify tests 2019-10-07 16:04:25 +09:00
3417556f5c Update pomelo on .netcore3.0 2019-10-07 15:12:22 +09:00
0cc2fa962d Prepare Startup.cs for netcoreapp30 2019-10-07 13:03:50 +09:00
8ba1303968 Move BitpayMiddleware up the stack 2019-10-07 12:43:17 +09:00
ae2b055fb5 Fix build 2019-10-06 23:41:27 +09:00
a919d3ddec Move TryGetSolutionDirectoryInfo in test utils 2019-10-06 23:38:57 +09:00
102b38b5a8 Make test CanUsePaymentMethodDropdown more reliable 2019-10-06 23:13:42 +09:00
56a363adf9 Add more test timeout 2019-10-06 22:51:01 +09:00
5c8dcb0292 Add test timeout 2019-10-06 22:49:28 +09:00
0fd5c722f6 Add test timeout for some selenium tests 2019-10-06 22:24:28 +09:00
b86befbdaf Merge pull request #1072 from pavlenex/security-md
Add Security.md
2019-10-06 22:20:26 +09:00
53310dee8a Add Security.md 2019-10-06 12:25:40 +02:00
78b86ce0ea Fix build in netcoreapp21 2019-10-06 18:47:49 +09:00
3bdc7c102a Fix Startup in netcoreapp3.0 2019-10-06 16:00:38 +09:00
f9714f0be0 Fix build 2019-10-06 15:54:19 +09:00
536f98b566 Fix entity framework queries to work in netcoreapp3.0 2019-10-06 15:48:12 +09:00
f4977e7f9f Prepare AuthenticationTests for .netcoreapp3.0 2019-10-05 20:45:09 +09:00
68807bae37 Do not use AsAsyncEnumerable() 2019-10-04 22:55:38 +09:00
ccc2d0e13c Exclude Google Cloud Storage for .netcoreapp3.0, it depends on System.Interactive.Linq which create namespace conflict with the new AsyncEnumerable 2019-10-04 17:56:08 +09:00
c2032ee15b Prepare the Authentication controller for .netcoreapp3.0 2019-10-04 17:21:53 +09:00
724a5b5460 Prepare code to move to netcoreapp3.0 2019-10-04 17:17:11 +09:00
c9ec0f9d3c Prepare startup.cs for netcoreapp3.0 2019-10-03 18:46:09 +09:00
411fe90b8c Can compile tests in netcoreapp3.0 2019-10-03 18:25:07 +09:00
a56004fbef Remove a warning on .netcoreapp3.0 2019-10-03 18:15:08 +09:00
e75edac3c1 Make .netcoreapp 3.0 build happy 2019-10-03 18:00:07 +09:00
aaa05eb5ec Fix build 2019-10-03 17:37:10 +09:00
8d0d80e086 Fix build 2019-10-03 17:14:07 +09:00
4d84343a80 Prepare BTCPayServer for .netcore 3.0 2019-10-03 17:06:49 +09:00
275fbc81e7 Prepare BTCPayServer.Data for .netcore 3.0 2019-10-03 16:36:02 +09:00
d23adfbd78 Prepare BTCPayServer.Common and BTCPayServer.Rating for .netcore 3.0 2019-10-03 16:13:12 +09:00
f7b85babfe Merge pull request #1068 from rockstardev/master
Cleanup U2F namespace to correspond to folder path
2019-10-03 12:57:53 +09:00
56e85b68d9 Csproj cleanup, reorganizing namespaces, fixing tests 2019-10-02 22:41:53 -05:00
755a6bf8e6 Cleaning up references to old U2F\Services folder 2019-10-02 12:38:06 -05:00
7282199c31 Cleanup U2F namespace to correspond to folder path 2019-10-02 12:32:41 -05:00
639f5d2fc4 Make sure calling monero related controllers can't be done if the shitcoin is not supported 2019-10-01 15:30:27 +09:00
8c8ef9d3ca Rename shitcoins to altcoins 2019-09-30 20:43:15 +09:00
2c5c6d28e3 Fix broken getting started link in readme (#1060) 2019-09-30 18:42:35 +09:00
fd78d02576 Moving Monero classes into BTCPayServer.Common 2019-09-30 17:58:41 +09:00
3a0328d0be Moving shitcoin code in shitcoin folder 2019-09-30 17:51:47 +09:00
d66b111121 xmr (#1044) 2019-09-30 17:32:43 +09:00
8cbc58ea2f updated AppsUpdate view with correct GET request
So user can request invoice data by invoice id from btcpayserver, to verify callback
2019-09-29 15:12:35 +03:00
3366c86b16 Authorize granular permissions (#1057)
* granular scope permissions for api

* final fixes and styling

* prettify code

* fix missing policy
2019-09-29 16:23:31 +09:00
c7e3241a85 Update info link in ListTokens 2019-09-29 16:21:25 +09:00
1c2c3ede80 Update help link 2019-09-29 16:12:03 +09:00
0f46da2e6b Update c-lightning 2019-09-29 13:53:18 +09:00
514386ecdd Remove NDax support 2019-09-29 11:58:16 +09:00
2257b95732 bump 2019-09-24 15:22:26 +09:00
7a5cfcf50f Fix docker-entrypoint for raspberry 2019-09-24 15:21:50 +09:00
e8d5190569 bump 2019-09-22 22:00:17 +09:00
d6d13ec001 Merge pull request #1046 from Kukks/pre-monero
General optimizations and fixes
2019-09-22 00:15:37 +09:00
f3aa67e0f1 make invoice repository able to query more extensively 2019-09-21 17:07:48 +02:00
59839a3332 make sure networks are abstracted properly 2019-09-21 16:39:44 +02:00
fa18bd9a69 allow nav layout for store to not have a main title specified 2019-09-21 16:28:04 +02:00
bf9dd57177 move css logic to global css file as it makes more sense 2019-09-21 16:24:01 +02:00
a230e21737 Store Nav extension support 2019-09-21 16:22:26 +02:00
e763e9e41a Make sure BTCPAY_SSHKEYFILE is set when starting container 2019-09-21 23:06:15 +09:00
2e0abdbd06 Fix BTC_GBP pair not resolved for kraken 2019-09-21 13:05:05 +09:00
f3890cd029 Make test more reliable 2019-09-20 19:41:59 +09:00
2f918b1195 Fix SSH settings not correctly applied 2019-09-20 19:33:23 +09:00
5b73f22eb4 set buyer email in get invoice to refund email if not set (#1023)
closes #973 fixes #941
2019-09-20 19:15:07 +09:00
edfdae744f Fix other-dependencies reference in TOC (#1035) 2019-09-20 19:14:33 +09:00
438fc34ad2 Replace pay button PNG image with an SVG and add 2x res version (#1034)
fix #1030
2019-09-20 19:14:08 +09:00
9e107b1eb1 Try to read the authorized keys file from the configuration 2019-09-20 18:51:14 +09:00
a8e2a99faa Do not use sed -i in docker endpoint 2019-09-20 18:06:21 +09:00
0823a3e0dc Remove warnings 2019-09-20 17:35:55 +09:00
7ac72c6c2a Make sure the key is deleted 2019-09-20 17:25:07 +09:00
6d703d590b Generate SSH keys in the docker container 2019-09-20 17:23:32 +09:00
3dada3c464 Remove SSH warning if no SSH settings set 2019-09-20 15:26:09 +09:00
a2cb6178b8 Can edit authorized_keys in SSH Services, remove download keyfile support 2019-09-19 19:17:20 +09:00
42dda56eea Retry SSH connection later if it fails 2019-09-19 16:54:07 +09:00
6407e15187 Create FUNDING.yml 2019-09-15 14:56:46 +03:00
af97e296ba bump 2019-09-15 01:13:06 +09:00
200c9709fe Updating BundlerMinifier (#1033) 2019-09-13 04:56:36 +09:00
18b8bec8d0 Checkout: show red border around email when invalid (#1013) 2019-09-12 18:28:11 +09:00
41d714e2ce Revert "Share same browser for all selenium tests"
This reverts commit 2ce0749bb6e77950b069a65296741b2ce77bd575.
2019-09-11 16:22:41 +09:00
60a8b23c03 Revert "Fix test"
This reverts commit 0096250384c618d8f5fbf202c5be7d475f417496.
2019-09-11 16:22:27 +09:00
0096250384 Fix test 2019-09-11 15:58:38 +09:00
2ce0749bb6 Share same browser for all selenium tests 2019-09-11 15:36:12 +09:00
7ab97311be Re-enable lightning sats feature through C# (#1014) 2019-09-11 14:49:06 +09:00
e6cfb6e851 Selenium Tests for Checkout + other store operations (#1015) 2019-09-10 17:03:24 +09:00
b3298589c3 Rockstarify the docker-compose 2019-09-10 13:02:52 +09:00
127ad3e573 Merge pull request #1028 from bolatovumar/fix-1025
Allow removing transaction labels by clicking on an icon
2019-09-10 12:45:34 +09:00
2a262c4e1e Allow removing transaction labels by clicking on an icon
close #1025
2019-09-09 20:40:32 -07:00
ee804c9922 Merge pull request #1019 from bolatovumar/fix-1017
[Wallet] Prevent jumpy transition on page load when transaction labels are present
2019-09-09 13:35:04 +09:00
3a8e136f39 Merge branch 'master' into fix-1017 2019-09-09 13:34:51 +09:00
8eec6db825 Merge pull request #1021 from dennisreimann/patch-1
Fix typo on Pay Button page
2019-09-09 13:33:22 +09:00
1c90b6227c Merge pull request #1026 from bolatovumar/fix-1024
[Wallet] Add space between transaction labels
2019-09-09 13:33:03 +09:00
8b7ea6c71f [Wallet] Add space between transaction labels
close #1024
2019-09-08 11:00:57 -07:00
3fc9d0c010 Better error message for seed signing (Fix #999) 2019-09-08 00:18:30 +09:00
345ce6ba5a Fix typo on Pay Button page
Signed-off-by: Dennis Reimann <mail@dennisreimann.de>
2019-09-07 08:32:01 +02:00
d9cd00f49a Make tests more resilient 2019-09-06 18:29:12 +09:00
2266c0dc96 Merge pull request #1020 from Kukks/ndax-rates
Add Ndax rate provider
2019-09-06 17:37:42 +09:00
882430cf58 Fix docker-compose ssh connection 2019-09-06 16:59:20 +09:00
11730cbae6 Add sshd service so we can test SSH stuff as well 2019-09-06 16:51:49 +09:00
dc3abc76c3 add Ndax rate provider 2019-09-06 08:20:08 +02:00
0013703cef Use docker sleep for the dev container in tests 2019-09-06 15:16:24 +09:00
91b1a5e3e5 Remove MySQL from tests (never run) 2019-09-06 15:16:24 +09:00
911faeb510 Merge pull request #1018 from mbambnag/patch-1
Update Currencies.txt
2019-09-06 14:54:19 +09:00
8fa9834bf6 [Wallet] Prevent jumpy transition on page load when transaction labels are present
fix #1017
2019-09-05 19:22:31 -07:00
cf930fc46a Update Currencies.txt 2019-09-06 07:16:15 +07:00
9ca9b5a5d2 Remove lightning sats denomination (Fix #1012) 2019-09-05 14:58:01 +09:00
3a87dc2223 Fix payment method switching stopped working #1012 2019-09-05 12:48:00 +09:00
67d3875c98 Fix error on this.fetchData 2019-09-05 12:13:36 +09:00
77d0f3d85c Fix tests 2019-09-05 11:55:31 +09:00
0798b95c6b fix build 2019-09-05 11:41:51 +09:00
c247e275f6 Make sure NotificationUrl and RedirectUrl are of type Uri 2019-09-04 18:20:36 +09:00
f17a359893 Fix NotificationUrl and RedirectUrl templating 2019-09-04 18:01:26 +09:00
8e15707dc7 fix dockerfiles 2019-09-04 17:37:40 +09:00
d890753ee2 bump 2019-09-04 17:30:58 +09:00
00b82ad07a Update translations 2019-09-04 17:30:24 +09:00
a21948cf16 Merge pull request #1004 from bolatovumar/fix-606
Tackle additional issues in #606
2019-09-04 17:26:58 +09:00
eb583ba628 Revert "Start off cart hidden on desktop breakpoint"
This reverts commit a169179061c27670f14196cc21cdf64988fb941c.
2019-09-04 09:29:46 +02:00
a4b61f8aab [POS app] Allow empty string for product description (#1010)
fix #1008
2019-09-04 13:07:09 +09:00
7208e63155 Excerpts from #971 (manual PR) (part1 ) (#1006)
* Excerpts from #971

Relating to selenium tests + small renamings

* fix build
2019-09-03 20:11:36 +09:00
8f464b0838 Fix build 2019-09-03 14:10:13 +09:00
233b799a46 Fix inventory string (#1005) 2019-09-03 14:08:55 +09:00
d99beb9811 New feature: Apps limited inventory (#961) 2019-09-02 22:37:52 +09:00
fefc45854e Remove anchor where querying URL 2019-09-02 18:05:40 +09:00
0047a5388d Add test for dead links in Views 2019-09-02 16:32:38 +09:00
66064bd2eb Add link to wallets doc 2019-09-02 16:10:52 +09:00
6bd601137a Allow Placeholders in redirectURL (Fix #169) 2019-09-02 16:04:41 +09:00
eae913f809 fix(pos-app): hide "clear search" button when input field is manually cleared 2019-09-01 11:18:46 -07:00
bc8e7ce888 Add background color to cart tip button when it's focused 2019-08-30 20:27:43 -07:00
1ec342da1e Apply consistent border radius to POS app search bar 2019-08-30 20:06:08 -07:00
a169179061 Start off cart hidden on desktop breakpoint 2019-08-30 20:04:21 -07:00
57b436417c Revert "Skip BundleMinify if in Debug mode"
This reverts commit 0229b560e7b3fd1e1df42c4a7ade1ae5d6d16388.
2019-08-30 19:36:57 +09:00
0229b560e7 Skip BundleMinify if in Debug mode 2019-08-30 19:18:56 +09:00
3c51bd3b23 Merge pull request #1000 from btcpayserver/refactor/move-data
[Refactor] Move SQL classes in their own assembly
2019-08-30 18:45:22 +09:00
b7ba97d86f Fix namespace in the db snapshot 2019-08-30 18:22:19 +09:00
0eb58e9a91 Remove designer files 2019-08-30 18:22:18 +09:00
f257f9f91d [Refactor] Move SQL classes in their own assembly 2019-08-30 18:22:13 +09:00
8971dbc2f9 Ensure raised amount is showing with correct precision in crowdfound app tooltip (#987)
fix #926
2019-08-30 16:17:17 +09:00
5b4e78f8d1 Add bitpay as direct provider, remove reliance on NBitpayClient in the Rate Assembly 2019-08-29 18:13:01 +09:00
27f20386df Add confirmation button to recovery codes view (#984)
fix #806
2019-08-29 17:16:02 +09:00
9154e4264d Address issues in #606 (#988)
* Increase POS cart button and input size elements as per #606

* Increase confirmation modal input and button size as per #606

* Add loading indicator to cart confirmation pay button as per #606

* Ensure POS app tip amount input shows decimal amount with correct divisibility

* Center POS app cart quantity input field

address task in #606

* Ensure search bar and content are horizontally aligned

address task in #606
2019-08-29 17:15:00 +09:00
7457e99451 Change button style 2019-08-29 16:26:34 +09:00
c5227d9996 Request consent from user before giving application access to the user's data & services. 2019-08-29 16:25:16 +09:00
1447b5e8be Add top margin to 2FA screen heading (#986)
fix #985
2019-08-29 16:16:16 +09:00
efdb131c33 checkout fixes (#997) 2019-08-29 15:37:02 +09:00
d9a0db3efc bump nbx 2019-08-29 00:03:14 +09:00
cb8c077c1e better error message for bad ssh config 2019-08-27 23:39:17 +09:00
9688798a4a Asyncify SSH access, do not show SSH service if ssh is not well configured 2019-08-27 23:30:25 +09:00
9a9e31c759 Split Bitcoin/LN to partial defined in payment handler and convert checkout to Vue (#996) 2019-08-27 11:31:15 +09:00
55c0c0ea6f fix #994 tab slider not always working on checkout (#995) 2019-08-26 20:43:40 +09:00
43ee22f965 Allow overriding UI of checkout in payment handler (#992) 2019-08-25 22:50:11 +09:00
wiz
989a7b863e Revert "Add bisq as supporting P2P service" (#993)
This reverts commit 0c5c6233c7d8f1577ce20fc933a071b775142032.
2019-08-25 16:53:29 +09:00
709ee54ac2 Do not prevent btcpay from starting if unsupported sshkey 2019-08-25 12:27:29 +09:00
664b920a39 Make invoice payments view modular per payment handler (#991) 2019-08-24 23:10:13 +09:00
7ea3312534 Add display attributes. Fix #98 (#990) 2019-08-24 23:06:34 +09:00
929b5c7951 Add display attributes. Fix #98 2019-08-24 15:39:43 +10:00
3e9bee2d44 simplify settings changed listening (#976)
* simplify settings changed listening

Might as well use the Event aggregator to listen in on changes instead of the current complicated magic in the settings repo. This also reduces db calls( it sends the new settings through the event instead of fetching them again)

* add settings extension

* switch to old style but using event aggregator
2019-08-22 20:44:06 +09:00
a571f77a40 Ensure POS/Crowdfund price input fields bring up numpad on mobile (#982)
fix #680
2019-08-21 23:05:52 +09:00
13f2be7811 Add bigger than zero validation for payment request amount (#981)
fix #844
2019-08-21 23:05:06 +09:00
3d00611ddf Remove stray semicolon from payment request view (#980)
fix #979
2019-08-21 23:04:25 +09:00
576734b5cb downgrade clightning 2019-08-21 15:12:09 +09:00
6cd60732b5 Properly render replaced tx in invoice view 2019-08-21 01:25:03 +09:00
1635e1e3fb missing file commit (#977) 2019-08-21 00:00:50 +09:00
b29b46bbc7 Add policy to allow internal lightning node for non-admins (#975)
Partially related to #204 (but no actual management and accounting of funds in different stores occurs)
2019-08-20 17:38:15 +09:00
e45f1afd51 Small rewrite of condition 2019-08-20 16:12:18 +09:00
288dc9b626 Do not loop infinitely waiting for btcpay to start 2019-08-20 16:10:44 +09:00
81c6a76ea2 make sure tests run on latest images 2019-08-20 14:17:52 +09:00
182f9b3cf6 bump clightning 2019-08-20 13:38:42 +09:00
e71fd4950f Add dev env videos to readme (#964)
- Add full node wallet as a feature
- Formatting
- Add windows dev env video
- Add ubuntu dev env video
2019-08-19 14:15:22 +09:00
72d519bb45 Add description and embedded css to POS (#970)
* Add description and embedded css to POS

* wrap embedded css props in <style> before Safe.raw
2019-08-19 14:13:42 +09:00
e743b2e457 Downgrade clightning 2019-08-17 15:57:15 +09:00
f932a34581 Fix docker-compose test 2019-08-17 15:37:57 +09:00
3543d9bd60 Fix docker-compose test 2019-08-17 15:35:41 +09:00
d387834c6c Fix docker-compose test 2019-08-17 15:25:00 +09:00
6ea15411b6 Update c-ligthning and some packages 2019-08-17 15:14:31 +09:00
63df6ac5eb Make sure EmbeddedCSS is CSS 2019-08-10 14:53:24 +09:00
039bee5b65 bump 2019-08-10 14:19:34 +09:00
be5597085b Use Safe.Raw and Safe.Json instead of Html.Raw and the JsonHelper, move sanitization at the View level (#960) 2019-08-10 14:05:11 +09:00
6b355cbe1b Merge pull request #959 from woutersamaey/improved-smtp-config-form
UI improvements to SMTP settings + Quick fill function for Gmail and Hotmail
2019-08-08 18:07:40 +09:00
dec5d19a2f Only show SMTP quick fill when JavaScript is enabled 2019-08-07 22:10:15 +02:00
ff533994d8 UI improvements to SMTP settings + Quick fill function for Gmail and Hotmail 2019-08-07 21:31:08 +02:00
221e2c7898 Fix "Key already added in dictionary" error when signing with ledger 2019-08-07 17:53:03 +09:00
fb77fddcc3 Merge pull request #954 from woutersamaey/prevent-autofill-smtp-config
Prevent autofilling SMTP config user and password
2019-08-05 15:15:41 +09:00
c37086e000 Change type of SMTP password field to plain text, preventing autofill once and for all 2019-08-04 17:17:55 +02:00
3d6783b743 Merge pull request #955 from PatrickLemke/fix-typo-dns-settings
Fix typo / grammar for dns error message
2019-08-04 21:42:43 +09:00
c479e6aae5 Merge pull request #956 from woutersamaey/prevent-layout-break-long-text-links
Prevent layout from breaking on hyperlinks with very long URLs as the visible text
2019-08-04 21:33:07 +09:00
59a770e0d7 Prevent layout from breaking on hyperlinks with very long URLs as the visible text 2019-08-04 11:29:03 +02:00
140259e737 Merge pull request #911 from Kukks/fix-domain-policy-dropdowns
Allow apps server admin does not have access to to be mapped in domain-to-app policy settings
2019-08-03 23:24:51 +09:00
59a391dcc9 add store name 2019-08-03 16:23:00 +02:00
3a1cdefa09 Allow apps server admin does not have access to to be mapped in domain-to-app policy settings
This is a bugfix imo:
If you have 2 server admins, where only Admin1 has access to a specific app and Admin2 goes to edit the policies, the mapping would be overwritten to "None" .
This PR exposes all apps on all stores to this mapping dropdown irrespective of user. I think it makes sense to leak this minor data here to server admins.
2019-08-03 16:23:00 +02:00
7be104f486 Only show the txid as unconf in the wallet transaction list 2019-08-03 23:21:09 +09:00
d90a65975c Add placeholder for label name 2019-08-03 23:13:27 +09:00
4e53f59a9c Implement label filter 2019-08-03 23:10:45 +09:00
8e58fc128d Fix bug on unable to add comment 2019-08-03 23:02:15 +09:00
756b6e9692 Make sure tags does not contains ',' 2019-08-03 22:06:14 +09:00
23d546c559 Add max length to comment and tags 2019-08-03 22:03:49 +09:00
6d4ea6a951 simplify code 2019-08-03 21:52:47 +09:00
f9b5dcd4a6 docker deployment method 2019-08-03 13:29:27 +02:00
eab679cb2b fix typo 2019-08-03 12:23:54 +02:00
ddf8b20091 Fix for bug #922 & bug #949 (#951)
* Fix "Do not propose lightning payment if value of the invoice is above..."

* Fix "Do not propose lightning payment if value of the invoice is above..." take care of the GAP edge case where OnChainMinValue > LightningMaxValue

* Fix "Do not propose on chain payment if the value of the invoice is below..." and take care of the GAP edge case

* Add test to cover all case and fix small issue

* Simplified version, with less validation
2019-08-03 12:55:58 +09:00
f1457582fe Fix test 2019-08-03 12:41:12 +09:00
7841f79f31 Prevent autofilling SMTP config user and password 2019-08-02 20:35:48 +02:00
56e5acfb65 Simplified version, with less validation 2019-08-02 14:14:54 -04:00
6b777878e3 Add test to cover all case and fix small issue 2019-08-02 14:14:54 -04:00
428c7c5444 Fix "Do not propose on chain payment if the value of the invoice is below..." and take care of the GAP edge case 2019-08-02 14:14:54 -04:00
f8427eb801 Fix "Do not propose lightning payment if value of the invoice is above..." take care of the GAP edge case where OnChainMinValue > LightningMaxValue 2019-08-02 14:14:54 -04:00
2a53c056ca Fix "Do not propose lightning payment if value of the invoice is above..." 2019-08-02 14:14:54 -04:00
21d555ee6b Fix bug: Can't remove comments to transaction 2019-08-03 00:55:27 +09:00
d79fda166f Can attach labels and comment to transaction in the wallet 2019-08-03 00:43:19 +09:00
c8025ebaac View pos in selenium test (#953) 2019-08-02 13:48:12 +09:00
42d7ad02b0 In update store, make payment methods "enabled" only if properly configured 2019-08-01 17:10:52 +09:00
21556d4c07 added View App button to POS settings (#947)
* added View App button to POS settings

updated POS settings form group buttons to match Crowdfund settings from group buttons, addressing #854

* added View App button to POS settings #947

Fixed "Save Settings" Redirect
2019-08-01 15:55:41 +09:00
89a7166c1b More options to Custom Amount Pay button (#948)
* Start adding more options to Custom Amount Pay button

This allows you to simplify the custom amount pay button to remove the big + & - buttons along with set a min, max and step amounts. There's also an option to fit the button next to the input amount to have it more condensed(not finished)

* make fit button inline work nicely

* make currency dropdown more obvious

* fix space
2019-07-31 22:58:04 +09:00
5d6c28c997 Fix tests 2019-07-31 15:40:21 +09:00
717cadc64b Fix "Setting "Do not propose lightning payment if value of the invoice is above..." have no effect" (Fix #949) 2019-07-31 15:38:49 +09:00
3dac7ef3f3 Fix dynamic dns 2019-07-25 23:26:56 +09:00
056cb60d5d Validate dynamic dns POST 2019-07-25 20:54:49 +09:00
bb4e92ec50 Fix alignement in Dynamic DNS 2019-07-25 19:44:40 +09:00
9218fb6463 bump 2019-07-25 19:39:15 +09:00
d9baea4c38 Remove global xpubs 2019-07-25 19:38:29 +09:00
6df6537cf9 Fix tests, improve logs 2019-07-25 19:36:03 +09:00
72d199f390 Add documentation link 2019-07-25 19:27:43 +09:00
233bce578b Can remove dyndns services 2019-07-25 19:07:56 +09:00
63472d54d7 Can configure multiple dynamic dns 2019-07-25 18:29:18 +09:00
db57b5ae80 Fix DynDNS renewal 2019-07-25 16:37:39 +09:00
8896d89908 Add Dynamic DNS support 2019-07-24 17:59:30 +09:00
8e07bf3ffb Update Login.cshtml (#935)
* Update Login.cshtml

[UI] Removed Unneeded string on login page with registering disabled. #881

* Update Login.cshtml
2019-07-24 12:40:06 +09:00
6194d0ad44 bump NicolasDorier.RateLimits 2019-07-21 15:28:07 +09:00
138532d3d4 use donate.btcpayserver.org as donation link 2019-07-19 18:36:57 +09:00
4716b704d4 Paging on List Users page for big hosting providers like Esky (#905) 2019-07-19 16:50:17 +09:00
109e576811 redo crowdfund modal perk list (#919)
* redo crowdfund modal perk list

closes #918

* fix small responsive issue
2019-07-19 16:48:39 +09:00
631c878722 Fix typo. (#928) 2019-07-19 16:47:52 +09:00
4cbcdb8af5 Make sure QRCodes use SVG instead of canvas (QRCodes on Tor does not work because of canvas fingerprinting protections) 2019-07-19 16:27:26 +09:00
d24628a386 fix payment request hub bug with payment types (#927) 2019-07-18 14:00:46 +09:00
7e714bdfa2 Increasing default monitoring expiration time (#925)
With value 60 what would often happen is that invoice ends up being declared invalid, and then payment arrives later when system is not monitoring. After lots of production testing we decided to increase this value by default so that new users don't need to manually reassign invoices from `invalid` status, especially if they use third party plugin like wooCommerce.
2019-07-17 12:45:32 +09:00
e3283fb29b Bump NBitcoin and NBXplorer 2019-07-15 19:40:06 +09:00
be0285155f Do not redirect from login page if there is a returnUrl. 2019-07-15 17:18:30 +09:00
1c055a7282 Make sure perk contributions are not accounted until paid 2019-07-15 17:01:12 +09:00
8d3cdd39ca Fix "Configure Email Settings warning link not working" (Fix https://github.com/btcpayserver/btcpayserver/issues/906) 2019-07-14 22:54:27 +09:00
010ba4d5b6 Can specify display name for sender in email settings (Fix https://github.com/btcpayserver/btcpayserver/issues/910) 2019-07-14 22:45:14 +09:00
d176a16caa fix typo 2019-07-14 22:25:43 +09:00
fd4a27c1a3 When logged in, the URL /account/login is still accessible (Fix https://github.com/btcpayserver/btcpayserver/issues/916) 2019-07-14 22:16:23 +09:00
ae73858e23 Fix warning 2019-07-13 22:44:07 +09:00
1427e5458b Fix invoice page not showing tor link (Fix https://github.com/btcpayserver/btcpayserver/issues/915) 2019-07-13 22:42:46 +09:00
8853cf9f83 Only count contributors which paid invoice 2019-07-13 22:32:54 +09:00
de7f22bcbc bump 2019-07-13 22:21:23 +09:00
b8b2fa29d7 bump clightning 2019-07-13 22:03:33 +09:00
476a241936 bump 2019-07-12 23:36:28 +09:00
dc97982fad Remove trace of gdax (fix https://github.com/btcpayserver/btcpayserver/issues/913) 2019-07-12 23:34:10 +09:00
e488f93b17 Add explanation for the annoying windows popup 2019-07-12 13:04:54 +09:00
e6e9668bbb Prevent error 500 if bad psbt 2019-07-12 12:57:56 +09:00
56976898bd Fix error 414 2019-07-12 12:23:13 +09:00
221ff05c49 bump 2019-07-12 11:49:09 +09:00
8f719d3e33 Solve error 414 when PSBT are too big 2019-07-12 11:47:13 +09:00
67c2abca2d Hide openid warning message 2019-07-08 14:57:42 +09:00
36046f08f7 Use Migration startup task when starting BTCPay instead of hosted service. 2019-07-08 12:12:39 +09:00
3c4455c23c Update AppHubStreamer.cs (#908)
Bug fix #902
2019-07-07 20:03:40 +09:00
e3db2e2b76 Remove warnings 2019-07-04 21:18:16 +09:00
5567a26b33 update translation 2019-07-04 21:16:20 +09:00
5387c3dd97 bump 2019-07-04 20:56:54 +09:00
d14eef979c Bump versions of package and software 2019-07-04 20:50:40 +09:00
c7069f4fd9 bump 2019-07-04 18:49:25 +09:00
b40239f93b bump nbxplorer 2019-07-04 18:48:54 +09:00
2958175add Sort payment requests, most recent first 2019-07-01 17:33:49 +09:00
719ad8f4d4 Add File Storage links (#893)
* add redirect to Services for enable provider

* add tooltip to FS FAQ
2019-07-01 15:20:33 +09:00
4055eda757 Part3: OpenIddict: Add Flows Event Handlers (#568)
* 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
2019-07-01 12:39:25 +09:00
442df56629 Merge pull request #898 from Kukks/multiple-domains
Multiple domains for apps in BTCPay
2019-06-28 16:31:55 +09:00
477ab67fe9 set viewbag on method result instead 2019-06-26 07:02:22 +02:00
64c60741a0 Fix possible NRE 2019-06-26 13:46:45 +09:00
9e354d7703 Merge pull request #891 from Kukks/pay-button-language
Allow language parameter in pay button endpoint
2019-06-26 13:27:52 +09:00
1932c1cd7c Merge pull request #897 from Kukks/filesystem-downloads
fix tmp link download
2019-06-26 13:11:08 +09:00
11670d0c0f make checkout param more generic and add it to pay button generator 2019-06-25 21:01:37 +02:00
6cab02cd99 Multiple domains for apps in BTCPay
closes #887
2019-06-25 20:41:32 +02:00
fc1d781272 fix tmp link download
closes #894
2019-06-25 12:23:10 +02:00
a58ecfd35a Save local file storage upon selection instead
closes #895
2019-06-25 11:40:33 +02:00
645516ee1b Change donation button from slider to input 2019-06-23 14:45:27 +09:00
f570de5086 Fix payment button alignement 2019-06-23 14:31:56 +09:00
81ccfa1e6c Change donation QR to use proper donation button. Remove also special thanks part as the contributors dramtically changed. 2019-06-23 14:29:43 +09:00
b808aa4971 allow language parameter in pay button endpoint 2019-06-18 18:31:20 +02:00
d1f1bc93b3 Fix version detection 2019-06-18 14:00:42 +09:00
faf433f644 Fix build 2019-06-18 13:51:04 +09:00
ba4660a03a bump 2019-06-18 13:41:30 +09:00
03aa3693d0 Update translations 2019-06-18 13:41:10 +09:00
ecae976993 Make sure we don't timeout on NBX 2019-06-18 13:37:24 +09:00
307c8980e0 Move Common and Version.csproj in Build folder 2019-06-17 21:42:48 +09:00
e53d0eda47 Fix NRE if the account has no rootedKeyPath 2019-06-16 12:32:00 +09:00
369b15b20b bump 2019-06-13 16:33:23 +09:00
ff8bbcd88a Merge branch 'amitasaurus-btcPay-coinSwitch' 2019-06-13 16:31:48 +09:00
c52d22dc30 resolved conflicts 2019-06-13 12:49:01 +05:30
4fa6c9dc3d coinswitchAmountDue always returning 1.025 possible fix 2019-06-13 12:14:28 +05:30
a958d10dd9 Fix local network detection (https://github.com/btcpayserver/btcpayserver-docker/pull/152) 2019-06-12 17:40:49 +09:00
ff86ce64b4 Merge pull request #880 from Kukks/error-messages-login-register
Show Model errors on login/register
2019-06-12 14:02:26 +09:00
f31d8aa9d7 Merge pull request #886 from btcpayserver/Kukks-patch-1
Fix automated docker build link
2019-06-12 14:01:18 +09:00
3cf7406123 Fix automated docker build link
Was pointing to nicolas' repo instead of the active one
2019-06-11 19:13:37 +02:00
5d8bf196a8 Fix: Allow get rate unauthenticated 2019-06-11 18:40:47 +09:00
019bd26c51 bump 2019-06-11 18:16:31 +09:00
0e1f924fc3 Relax "Insecure transport protocol to access this service, please use HTTPS or TOR" error in server setting services 2019-06-10 18:16:12 +09:00
15c3893aab Make sure currency is in uppercase 2019-06-10 00:46:29 +09:00
deeab7c238 Add link to checkout page theme doc 2019-06-09 22:26:59 +09:00
e5ba7b9e69 Refactor authentication handlers 2019-06-09 01:36:54 +09:00
ca5be7e38d Never use default AuthenticationScheme 2019-06-08 12:41:44 +09:00
fb530f2b34 fix build 2019-06-07 13:46:02 +09:00
29cbf63346 Remove deps on NetworkProvider in AppService 2019-06-07 13:40:48 +09:00
13c03cc0c2 Removing dependency on NetworkProvider from InvoiceWatcher 2019-06-07 13:34:38 +09:00
281280d3ec Fix crash which can happen during export if someone remove support for a network, inject Network inside paymentdata 2019-06-07 13:31:11 +09:00
410be51951 Update language 2019-06-07 00:49:05 +09:00
eefe8289b3 Fix exception in CreateInvoice if a payment method is not supported 2019-06-07 00:45:10 +09:00
a53a5944f8 Remove empty row if no validation 2019-06-06 18:54:51 +09:00
cd009466b6 Make sure we don't have empty row if no StatusMessage 2019-06-06 18:47:31 +09:00
f0c106de75 Change the menu nav bar pages by moving the title above the nav pills 2019-06-06 18:29:54 +09:00
fcf1b679e6 Show Model errors on login/register
Invalid logins and registrations were not showing any messages
2019-06-04 14:37:13 +02:00
03ba57cd46 bump 2019-06-04 10:24:51 +09:00
bea08e5cfd Refactor: Remove uneeded dependencies to PaymentMethodHandlerDictionary 2019-06-04 10:17:26 +09:00
01787e2662 Refactor: Remove PrepareInvoiceDTO 2019-06-04 10:11:52 +09:00
ac76220349 Move GetTransactionLink to PaymentType 2019-06-04 09:56:18 +09:00
796954c6e3 Refactor: Remove BlockExplorerLink from the payment handler 2019-06-04 09:52:06 +09:00
292c188182 Fix build errors 2019-06-04 09:40:36 +09:00
1f7097ef89 Refactor: Move DeserializeSupportedPaymentMethod to PaymentType 2019-06-04 09:33:42 +09:00
b97e083017 Refactor: Move DeserializePaymentMethodDetails to PaymentType 2019-06-04 09:22:46 +09:00
8ffd182b98 Refactor: Add DeserializePaymentData at the PaymentType level 2019-06-04 09:16:18 +09:00
1e77546251 Refactoring, make PaymentType a class instead of enum 2019-06-04 08:59:01 +09:00
8711960e74 Removing DeserializePaymentMethodDetails from IPaymentMethodHandler 2019-06-04 01:55:07 +09:00
8e2bcef824 The list of payment method should not depends on configuration of the users 2019-06-04 01:40:23 +09:00
d418cf7b07 Optimize docker files 2019-06-04 01:30:36 +09:00
864bcbb675 Move back GetCryptoPaymentData logic inside PaymentEntity 2019-06-04 01:24:15 +09:00
0b257b98f5 Move back ToPrettyString() in PaymentMethodId to fix crash if a payment method as been disabled 2019-06-04 01:06:03 +09:00
daab68d0b8 Merge pull request #877 from btcpayserver/feature/new-register
New register form
2019-06-03 21:02:25 +09:00
ab0511aa1d Make is admin checkbox inline 2019-06-03 21:01:48 +09:00
12494c3ac6 Merge pull request #876 from btcpayserver/feature/login
New login page
2019-06-03 20:57:06 +09:00
621533e050 New register form 2019-06-03 20:47:18 +09:00
dc334d230a New login windows 2019-06-03 20:36:07 +09:00
b848595378 Add missing command lines 2019-06-03 17:34:10 +09:00
ae4b2ab1fd Fix #875 2019-06-03 16:46:35 +09:00
2ca8cc6ca3 bump 2019-06-03 15:57:13 +09:00
3b57e2684e Add NotPaid_ExtraTransaction 2019-06-03 15:56:25 +09:00
898c672193 decrease number conf funding channel required for lightningd 2019-06-03 15:53:26 +09:00
18a7bc9278 Decrease number of confirmations requires for channels of lnd in tests 2019-06-03 15:51:13 +09:00
bb29ee10c5 Only execute external_tests on master 2019-06-03 15:41:44 +09:00
5441ae537a Fix docker-entrypoint for tests 2019-06-03 15:36:50 +09:00
0a0ddafd67 Add permission to run-tests 2019-06-03 15:34:09 +09:00
a3b914d8b4 Remove code 2019-06-03 15:32:46 +09:00
39f75d3742 Refactor test run by circleci 2019-06-03 15:32:20 +09:00
3dd77a4f2c Rename CircleCI steps and dockerfiles 2019-06-03 15:20:20 +09:00
6782e82972 Update translations 2019-06-02 18:13:04 +09:00
120fce0288 fix test container 2019-06-02 17:41:34 +09:00
aa57531ed7 fix test container 2019-06-02 17:37:44 +09:00
8f76bc0bcb Extract version in separate csproj to have better dockerfile caching 2019-06-02 17:33:35 +09:00
189280e602 Fix docker images 2019-06-02 17:06:00 +09:00
78ca26cf78 bump 2019-06-02 16:53:36 +09:00
0c5c6233c7 Add bisq as supporting P2P service 2019-06-02 16:30:44 +09:00
4fe480ee55 Fix selenium test 2019-05-31 15:40:59 +09:00
be6560e08c Merge pull request #871 from rockstardev/uifixes
Tweaking UI styles, updating default table style, and extra notification for payment for paidPartial
2019-05-31 15:39:17 +09:00
0f58f6da36 fix cryptoimage 2019-05-31 08:00:32 +02:00
dcaf0463a7 Displaying notification for extra transaction if paidPartial 2019-05-31 07:48:42 +02:00
5c6643270b Bugfixing path to crypto image
Will need to move all these paths to absolute, rather than relative
2019-05-31 07:48:42 +02:00
7b337bde49 Restoring table border styling done by KayBeSee 2019-05-31 07:48:42 +02:00
7056aae301 Do not show custom amount field in cart when not enabled (#873)
fixes #872
2019-05-31 14:29:16 +09:00
1b6eb9cab0 Update explorer to blockstream.info (#869) 2019-05-31 14:26:41 +09:00
80e23beda9 Update TwentyTwenty 2019-05-31 14:16:17 +09:00
d70e120acc Fix test 2019-05-31 12:17:47 +09:00
c877937fdf Show the inputs of the PSBT in the review screen 2019-05-31 00:23:23 +09:00
8379b07de0 Use a redirect for update 2019-05-31 00:00:20 +09:00
c8c33245b8 Revert table changes from #821 2019-05-30 23:42:56 +09:00
0faf2fe83e Fix buttons in PSBT 2019-05-30 23:36:01 +09:00
19bc511f39 Can update PSBT, fix the PSBT review page 2019-05-30 23:16:05 +09:00
916323bb3b [WIP] Further abstractions to Payment Handlers (#867)
* 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
2019-05-30 16:02:52 +09:00
0e568e2af5 Make sure that only the log directory can be read on /server/logs 2019-05-30 11:46:09 +09:00
dde841383a Don't throw exception if derivation scheme is not found 2019-05-30 11:24:43 +09:00
81dae7d350 BTCPay Abstractions: Move PaymentMethod specific logic to their handlers (#850) 2019-05-29 23:33:31 +09:00
d3e3c31b0c Btcpay abstract BTCPayNetwork -- Alternative PR to #865 (#868)
* 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

* try fixes for isolating pull request
2019-05-29 18:43:50 +09:00
90852fe951 updated styles on user server page (#821)
* updated styles on user server page

* moved files out of bootstrap.css

* removed old css classes from initial commit

* move css changes to site.css

* add missing }
2019-05-28 21:40:10 +09:00
a2251d245f Merge pull request #861 from rockstardev/extendconfcount
Extending invoice monitoring time if we haven't reached MaxTrackedConfirmation
2019-05-26 11:18:22 +09:00
112f9c4241 Adding invoice back to pending to track confirmations if less than max 2019-05-25 17:30:27 -05:00
b300404bc7 Extending invoice monitoring if max confirmation count not reached 2019-05-25 17:20:17 -05:00
19161b52f5 Fiat denomination box disappeared from the wallet (fix #860) 2019-05-25 22:23:32 +09:00
429170520e Make sure fingerprint/hdpath are passed down to AddDerivationScheme.
Close ledger popup on account selection.

Add additional info after pairing
2019-05-25 12:53:03 +09:00
5571413a78 Put Ledger Wallet pairing in a popup, prepare code for Trezor pairing (#836)
* Allowing for POS to be displayed at website root

* Switching to asp attributes for form post action

* Applying default formatting rules on HTML

* The destination pays mining fees => Subtract fees from amount

* small cleanup (#851)

* Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies (#567)

* Part 1: OpenIddict - Minor Changes & Config prep

* Part 1: OpenIddict - Minor Changes & Config prep

* Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies

* pr changes

* pr changes

* fix merge

* pr fixes

* remove config for openid -- no need for it for now

* fix compile

* fix compile #2

* remove extra ns using

* Update Startup.cs

* compile

* adjust settings a bit

* remove duplicate

* remove external login provider placeholder html

* remove unused directives

* regenerate db snapshot model

* Remove dynamic policy

* Provide Pretty descriptions for payment methods from their handlers (#852)

* small cleanup

* Provide Pretty descriptions for payment methods from their handlers

* remove PrettyMethod()

* integration with trezor

* rough load xpub from trezor

* update deriv scheme trezor

* move ledger import to dialog

* add import from hw wallet dropdown

* Support temporary links for local file system provider (#848)

* wip

* Support temporary links for local file system provider

* pass base url to file services

* fix test

* do not crash on errors with local filesystem

* remove console

* fix paranthesis

* work on trezor.net integration

* pushed non compiling sign wallet code

* comment out wallet code

* abstract ledger ws in add deriv

* Auto stash before merge of "trezor" and "btcpayserver/master"

* final add changes

* cleanup

* improve connectivity and fix e2e tests

* fix selenium

* add experimental warning for trezor

* move import button to right and convert to text link

* switch to defer and async scripts in add deriv scheme

* make defer not async

* more elaborate import trezor dialog

* Fix small issues

* hide trezor for now
2019-05-25 11:45:36 +09:00
512ee16620 Refactor invoice entity to not have to inject the NetworkProvider (#858) 2019-05-24 22:22:38 +09:00
15dc0d60db Split projects (#857) 2019-05-24 18:42:22 +09:00
d86cc9192e Support temporary links for local file system provider (#848)
* wip

* Support temporary links for local file system provider

* pass base url to file services

* fix test

* do not crash on errors with local filesystem

* remove console

* fix paranthesis
2019-05-24 15:44:23 +09:00
25b08b21fa Provide Pretty descriptions for payment methods from their handlers (#852)
* small cleanup

* Provide Pretty descriptions for payment methods from their handlers

* remove PrettyMethod()
2019-05-24 15:38:47 +09:00
ef9c2e8af1 Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies (#567)
* Part 1: OpenIddict - Minor Changes & Config prep

* Part 1: OpenIddict - Minor Changes & Config prep

* Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies

* pr changes

* pr changes

* fix merge

* pr fixes

* remove config for openid -- no need for it for now

* fix compile

* fix compile #2

* remove extra ns using

* Update Startup.cs

* compile

* adjust settings a bit

* remove duplicate

* remove external login provider placeholder html

* remove unused directives

* regenerate db snapshot model

* Remove dynamic policy
2019-05-24 15:17:02 +09:00
9bee48c601 small cleanup (#851) 2019-05-24 15:11:38 +09:00
961942ff6a Merge branch 'posroot' 2019-05-24 15:08:49 +09:00
de1c2b0150 Allowing for POS to be displayed at website root (#853)
* Allowing for POS to be displayed at website root

* Switching to asp attributes for form post action

* Applying default formatting rules on HTML
2019-05-24 15:07:09 +09:00
5a73358bca The destination pays mining fees => Subtract fees from amount 2019-05-24 14:28:09 +09:00
1812ea90b5 Applying default formatting rules on HTML 2019-05-23 10:36:23 -05:00
d98a416ed9 Switching to asp attributes for form post action 2019-05-23 10:35:57 -05:00
b947749382 Allowing for POS to be displayed at website root 2019-05-22 14:30:47 -05:00
c4d0b061c9 bump 2019-05-21 19:06:27 +09:00
3bada5d443 Fix multi send substract fees 2019-05-21 19:04:39 +09:00
06a35787aa Make WalletSend match exactly the design of before without additional destination 2019-05-21 18:44:49 +09:00
88c931ec13 Make wallet able to send to multiple destinations (#847)
* Make wallet able to send to multiple destinations

* fix tests

* update e2e tests

* fix e2e part 2

* make headless again

* pr changes

* make wallet look exactly as old one when only 1 dest
2019-05-21 17:10:07 +09:00
3d436c3b0e Add Eclair to connection string examples (#846)
* Add Eclair to connection string examples

* bump LN nuget
2019-05-20 10:13:11 +09:00
b4bb44d3e6 Adding Paid filter, invoice confirmed/paid/complete (#849) 2019-05-20 10:02:57 +09:00
39157e6883 Fix tests 2019-05-20 00:06:03 +09:00
9b6b9e6113 Fix build 2019-05-19 23:33:32 +09:00
87df34e064 Can actually upload PSBT file in PSBT Combine and PSBT view.
Validate transaction before allowing any broadcast and show errors nicely.
2019-05-19 23:27:18 +09:00
55a48ff84a Add some notice in sign with seed 2019-05-17 14:42:28 +09:00
aed98f16bb Show fee rate in transaction detail review 2019-05-16 12:56:06 +09:00
2926865c1b bump 2019-05-15 22:57:14 +09:00
20fb7fc188 Fixing bug induced with server converting UTC times to server local (#835) 2019-05-15 22:02:39 +09:00
461462eafc fix file timezone and isDownload for local files temp urls (#837)
closes #834
2019-05-15 22:02:03 +09:00
7aa6d1a8d7 fix test on Circle CI for selenium 2019-05-15 19:27:30 +09:00
d914fe2f48 Make sure that the accountkey can sign a transaction 2019-05-15 19:00:26 +09:00
e100edce24 Add selenium test for the manual seed signing 2019-05-15 16:00:03 +09:00
a68915d6cf WalletPSBTReady show the summary of the transaction, signing with the seed respect the keypath of the wallet settings 2019-05-15 15:00:09 +09:00
210d680b21 nameofify 2019-05-15 01:07:46 +09:00
8dc4acdc34 Make sure people does not use launchsettings by mistake 2019-05-15 01:06:26 +09:00
eb54a18fcd Wallet & PSBT: Sign with seed or key (#840)
* Allow signing a PSBT with an extkey/wif or mnemonic seed

* reword things

* small text
2019-05-15 01:03:48 +09:00
cf436e11ae Part 1: OpenIddict - Minor Changes & Config prep (#566)
* 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
2019-05-15 00:46:43 +09:00
e22b7f74c7 Increase test coverage of selenium 2019-05-14 23:33:46 +09:00
f8fca7434c Hack selenium again 2019-05-14 22:29:05 +09:00
66d303c4ba Install chrome driver on alpine 2019-05-14 19:58:28 +09:00
186ed8beb2 Hack selenium 2019-05-14 19:27:26 +09:00
fac546cc0b Print sources if Selenium test fail 2019-05-14 19:19:23 +09:00
9d2d2d0d64 Catch errors in AssertNoErrors 2019-05-14 19:13:55 +09:00
f58043b07f dump logs of selenium before failiing test 2019-05-14 19:09:26 +09:00
289c6fa10e Remove docker-compose update 2019-05-14 18:36:07 +09:00
00e24ab249 Make sure BTCPay is operational before starting tests 2019-05-14 18:35:22 +09:00
7b69e334d7 update docker-compose so selenium tests works 2019-05-14 18:05:16 +09:00
12507b6743 Add some logs related to selenium 2019-05-14 17:34:19 +09:00
3750842833 Show in logs where the btcpay tester is binding 2019-05-14 16:56:03 +09:00
1dcec3e1fb bind to all interface if inside the test container 2019-05-14 16:13:55 +09:00
d8e1edd6d3 bump nbx in tests 2019-05-14 16:07:46 +09:00
a1f1e90626 Make selenium work on CI 2019-05-14 16:06:51 +09:00
522d745883 Update NBXplorer and NBitcoin 2019-05-14 16:06:43 +09:00
8ffb81cdf3 Refactor Selenium tests to properly cleanup resources 2019-05-13 18:42:20 +09:00
ae5254c65e disable selenium test for a while 2019-05-13 18:14:31 +09:00
9d53888524 fix typo 2019-05-13 18:03:41 +09:00
cd6dd78759 Click around in selenium, and do not forget to run the selenium tests on circleCI 2019-05-13 17:59:15 +09:00
27fd49e61c Add --allow-admin-registration, useful for tests 2019-05-13 17:00:58 +09:00
a3a259556f Merge branch 'testcircleci' 2019-05-13 13:48:46 +09:00
803da75636 Only run integrations tests in btcpayserver repository 2019-05-13 13:48:09 +09:00
d1556eb6cd bump 2019-05-13 08:55:26 +09:00
a7edbfe5e9 Remove useless code 2019-05-13 08:23:24 +09:00
663b5beac1 remove useless code 2019-05-13 08:22:29 +09:00
7e164d2ec3 make sure we don't sign same input twice 2019-05-13 08:21:54 +09:00
f9fb0bb477 Simplify logic in LedgerHardwareWalletSerivce by using NBitcoin helper methods. 2019-05-13 08:18:12 +09:00
702c7f2c30 Fix tests 2019-05-13 00:35:06 +09:00
8b348ade75 Can select the signing key in WalletSettings 2019-05-13 00:30:28 +09:00
bf37f44795 Add Wallet settings menu, do not rebase keypaths when create the PSBT 2019-05-13 00:13:55 +09:00
698033b0cf Selenium Chrome Tests 2019-05-12 18:49:28 +09:00
10496363f5 Change button style on WalletPSBTReadyView 2019-05-12 16:19:27 +09:00
14647d5778 minor improvement to UI of PSBT 2019-05-12 15:16:40 +09:00
560dde3396 bump 2019-05-12 14:58:43 +09:00
7f9c2439c4 Custom date range filtering modal 2019-05-12 14:56:13 +09:00
6de5d0bce8 Unifying datetime styles across admin 2019-05-12 14:56:13 +09:00
c705a11aa7 Fixing merge bug with css file 2019-05-12 14:56:13 +09:00
45a196b407 Non-minified version of moment, adding required ref, fixing old ones 2019-05-12 14:56:13 +09:00
07cb6adb69 Extracting datetime flatpickr for use throught website 2019-05-12 14:56:13 +09:00
5358f81ce0 Dropdown for often used filterings 2019-05-12 14:56:13 +09:00
5b7988be79 Fixing display of long BOLT11 strings 2019-05-12 14:56:13 +09:00
e6c794d68f Moving update of confirmation count to InvoiceWatcher 2019-05-12 14:56:13 +09:00
de73fedd1b Check indicator after status change 2019-05-12 14:56:13 +09:00
2719849a54 bump 2019-05-12 14:51:57 +09:00
3011fecf0f Add tests for PSBT 2019-05-12 14:51:24 +09:00
6da0a9a201 Can combine PSBT 2019-05-12 13:13:52 +09:00
572fe3eacb Moveonly: Move all PSBT stuff in separate file 2019-05-12 11:13:04 +09:00
ff82f15246 Always rebase keys before signing, refacotring some code 2019-05-12 11:07:41 +09:00
b214e3f6df bump minimum version of ledger wallet 2019-05-12 01:35:13 +09:00
cb9130fdf9 Can broadcast PSBT, can decide to export something signed by the ledger via PSBT 2019-05-12 00:05:30 +09:00
925dc869a2 Add wasabi wallet to the wallet list supporting P2P connections 2019-05-11 22:25:10 +09:00
5f1aa619cd Can sign and export arbitrary PSBT 2019-05-11 20:26:31 +09:00
541c748ecb WalletSendLedger and LedgerConnection only depends on PSBT 2019-05-11 20:02:32 +09:00
e853bddbc8 Add utility tool to decode PSBT 2019-05-11 00:29:29 +09:00
79d26b5d95 Push rebase keypath and min fee logic down nbxplorer 2019-05-10 19:30:10 +09:00
840f52a75b Fix build 2019-05-10 14:36:57 +09:00
f955302c74 remove CF modal text 2019-05-10 11:35:51 +09:00
95e7d3dfc4 Don't scan 49' or 84' if not segwit 2019-05-10 10:55:10 +09:00
75f2749b19 Decouple HardwareWalletService into two classes: LedgerHardwareWalletService and HardwareWalletService 2019-05-10 10:48:30 +09:00
01e5b319d1 Save the fingerprint of the root of LedgerWallet, and use it. Simplify HardwareWallet 2019-05-10 01:05:37 +09:00
e504163bc7 Add NonAction to CreatePSBT 2019-05-09 19:34:45 +09:00
aba3f7d6bd bump 2019-05-09 19:21:03 +09:00
8d74023d30 update translation 2019-05-09 19:20:36 +09:00
602625fc17 Fix tests 2019-05-09 19:14:01 +09:00
bbeb2d5009 Refactor ElectrumMapping with proper enum 2019-05-09 19:05:08 +09:00
51faa39636 Add some tests to check that AccountKeyPath and RootFingerprint are taken into account during PSBT creation 2019-05-09 18:58:14 +09:00
f37bfbf9f9 Add more tests 2019-05-09 18:38:25 +09:00
ba9928831e Fix tests 2019-05-09 18:11:39 +09:00
2b6bd3d751 Assume ElectrumMapping of BTC if not specified 2019-05-09 17:51:46 +09:00
e96ca21c89 Small refactoring for tests 2019-05-09 17:21:51 +09:00
6ee10fe98b add grs 2019-05-09 17:16:17 +09:00
a567c19759 conditionally select electrum mapping based on network 2019-05-09 17:16:17 +09:00
bb3a087d39 Move ElectrumMapping to BtcPayNetwork 2019-05-09 17:16:17 +09:00
5a92fe736f Fix: Uploading coldcard in derivation scheme would forget to remember some data 2019-05-09 16:11:09 +09:00
88390402a4 reorder buttons 2019-05-09 12:48:11 +09:00
538eb66672 Allow import of coldcard wallet 2019-05-09 12:48:11 +09:00
0b6dfe0fd3 Fix DerivationSchemeSettings.ToPrettyString() 2019-05-09 01:07:05 +09:00
d5579ef2b5 Do not serialize PaymentId for DerivationSchemeSettings 2019-05-09 01:06:03 +09:00
836c3a5b3a Make sure we don't confuse user between derivation scheme of coldcard or btcpay 2019-05-09 00:55:49 +09:00
f2da64adad Add parsing of cold card wallet 2019-05-09 00:55:48 +09:00
e5704abfb3 Fix migration from old version to new version of WalletKeyPathRoots 2019-05-09 00:55:48 +09:00
3bf4eea1fe Improve error handling for export psbt 2019-05-09 00:55:47 +09:00
aa23222339 CreatePSBT should always rebase the PSBT 2019-05-09 00:55:46 +09:00
68c1670c70 Show pretty wallet string in Update Store 2019-05-09 00:55:45 +09:00
914eaaaa51 Refactor DerivationStrategy to DerivationSchemeSettings 2019-05-09 00:55:44 +09:00
5831ba2143 bump 2019-05-09 00:23:52 +09:00
c167a24f09 use older version of lib until it supports linux better 2019-05-08 20:17:17 +09:00
a539d27c62 fix exception handling 2019-05-08 20:17:17 +09:00
d7fc079376 RBF on by default, can disable it in Wallet Send /advanced settings. 2019-05-08 15:24:20 +09:00
3a05f7e294 PSBT export support in send from wallet screen 2019-05-08 14:40:16 +09:00
03713f9bd8 Add PSBT support in the send screen 2019-05-08 14:39:37 +09:00
2a145f4350 Replace noob button in wallet send by an advanced settings accordion 2019-05-08 12:34:33 +09:00
d049da696c Fix exception thrown if user does not exist on login 2019-05-08 12:34:13 +09:00
5a46d0e80d Add cmd tools to generate blocks 2019-05-08 12:19:16 +09:00
926250a967 Remove warnings 2019-05-07 23:34:31 +09:00
139b588795 fix coinswitch...yet again 2019-05-07 23:23:29 +09:00
909f18f9c7 Update language 2019-05-07 18:02:14 +09:00
f598495198 bump 2019-05-07 17:57:04 +09:00
95d746504d Changing invoice state and updating display from js 2019-05-07 17:29:19 +09:00
9a2e1d43ea Triggering optional confirmation update only on Invoice details page 2019-05-07 17:29:19 +09:00
be844978c1 Allow cancelling a non paid pending invoice in payment requests (#815)
* allow cancel on un paid new invoices in payment requests

* start work on cancel pr payment

* finish up cancel action

* final touch and add tests
2019-05-07 17:26:40 +09:00
60a361f963 Trying to make sure Azure tests does not run on PRs 2019-05-07 17:11:23 +09:00
93f50451e6 bump deps 2019-05-07 17:05:45 +09:00
0936812df0 Fix date time issues on crowdfund.payment requests (#808)
* fix some conditional display bugs in crowdfund

* bump flatpickr

* make clear button show up even with flatpickt fake input ui

* update uis to specify date value in specific format and use custom format for flatpickr display and use moment to parse date instead

* fix remaining public ui date issues
2019-05-07 17:01:37 +09:00
50351f56f8 Fix grammar (#817)
* Fix grammar

* Fix typo
2019-05-07 16:55:22 +09:00
232ceed8b0 Prettify the bitcoin core node page 2019-05-07 14:44:26 +09:00
b6c37a73b1 Fix duplicated entries on Services. Fix formatting of P2P page. 2019-05-07 14:31:49 +09:00
5967666df6 Add green wallet info 2019-05-07 14:16:44 +09:00
bf035333cf Add service type P2P 2019-05-07 14:07:36 +09:00
f93d1173e2 Show tor exposed bitcoin node 2019-05-07 13:58:55 +09:00
08bf4faeee Pass the hint change address to hardware wallet (useful in care of send-to-self where the underlying wallet support only output belonging to self) 2019-05-07 08:21:34 +09:00
e2b2cf0175 Do not drop column in u2f migration if not possible (#813)
closes #812
2019-05-05 00:57:44 +09:00
d32a24004e Fix test 2019-05-03 12:59:11 +09:00
1f04e4e6be Add rpcport for bitcoin-cli 2019-05-03 11:10:01 +09:00
778dcf97b1 update docker compose for bitcoin 2019-05-03 11:04:19 +09:00
957fbdb907 Update NBitcoin, NBXplorer, Bitcoin Core 2019-05-03 10:18:08 +09:00
e169b851ee Remove another warning 2019-05-02 21:44:16 +09:00
7fadb4c5ad Remove some annoying warnings 2019-05-02 21:38:39 +09:00
a20db7f341 bump nbx 2019-05-02 21:35:28 +09:00
b5f4739ae5 Allow invoice creation to only allow specific payment methods in UI (#792)
* allow invoice creation to only allow specific payment methods

* add test

* reuse existing feature

* final fixes
2019-05-02 21:29:51 +09:00
4bc03fbf06 Code coloring invoice states 2019-05-02 21:11:56 +09:00
1d3ff143d2 Tweaking UI, expanding details and max width on order id 2019-05-02 21:11:56 +09:00
6918b8a291 Extracting payment details population, refactoring invoice data load 2019-05-02 21:11:56 +09:00
3cd37682d3 [BUG FIX]: Coinswitch exchange with altcoins popup not showing bug fix (#804) 2019-05-02 21:02:01 +09:00
19a990b095 Add U2f Login Support (#787)
* 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
2019-05-02 21:01:08 +09:00
87a4f02f18 bump NBXplorer 2019-05-02 20:46:27 +09:00
8a99fc0505 Fix Azure Storage (#803) 2019-05-02 20:39:12 +09:00
bac99deb6c Do not run external integration if PR 2019-05-02 20:38:45 +09:00
e65850b1eb Refactor Send money from ledger using PSBT 2019-05-02 18:56:01 +09:00
77338c6054 [BUG FIX]: Coinswitch exchange with altcoins popup not showing bug fix 2019-05-02 14:49:33 +05:30
a6e52ed3df bump NBitcoin 2019-05-02 17:31:57 +09:00
4a9eadf71a Bump NBXplorer 2019-05-02 17:28:54 +09:00
b8f6cf4f23 Execute ExternalIntegration tests after 2019-05-02 15:31:51 +09:00
e8abc1137b remove duplicate view code for email and fix password bug (#788)
closes #786
2019-05-01 12:17:25 +09:00
8507688c50 add azure storage config validation (#791) 2019-05-01 12:16:55 +09:00
5718096224 Revert "Merge branch 'sonarqube'"
This reverts commit d76e61e6f468b006659eebeff84be8bdedc02822.
2019-04-29 07:53:34 +02:00
d76e61e6f4 Merge branch 'sonarqube' 2019-04-29 07:21:50 +02:00
232817c00d add sonarqube 2019-04-29 07:18:21 +02:00
86af585df3 bump nbx in tests 2019-04-29 12:31:21 +09:00
9e770ea484 bump dbriize 2019-04-29 12:30:47 +09:00
9670f11554 Fix HTTP 500 errors if querying the website in tests 2019-04-28 23:11:24 +09:00
dc369d52cb Use fa fa-user for profile menu item 2019-04-28 16:07:42 +09:00
33c755fc54 Replace log out text by an icon 2019-04-28 15:59:44 +09:00
c5adc0eb71 Rename ShowEmailWarningForStore(storeId) => IsEmailConfigured(storeId) 2019-04-28 15:28:22 +09:00
fcb1de8a86 Show email warning on apps when settings are not complete (#794)
* Show email warning on apps when settings are not complete

closes #693

* refactor email warning logic
2019-04-28 15:27:10 +09:00
6df83ad148 Replace DBreeze by DBriize 2019-04-28 15:16:11 +09:00
857a436677 Clarifying comma is required for splitting params, providing example 2019-04-26 22:00:12 -05:00
c6091750b0 Displaying switchable datetimes on wallet transactions page 2019-04-26 22:00:12 -05:00
64e7324285 Fixing CanUsePoSApp test 2019-04-26 22:00:12 -05:00
d5bd0ee781 Filtering invoices by StartDate and EndDate
Now it's required to separate parameters with comma. Forced to do
this because dates have spaces between date and time part
2019-04-26 22:00:12 -05:00
3b91b38014 do not run external integration tests if in a PR 2019-04-24 22:40:36 +09:00
165d4e2732 remove unused parameter 2019-04-24 22:40:36 +09:00
098dfacce8 Remove segwit limitation for rescan 2019-04-24 22:40:35 +09:00
44d1419af9 Add itemCode to Invoice Response (#784)
closes #779
2019-04-24 22:36:35 +09:00
d0d077642d Make sure we returns only one token in GetTokens 2019-04-23 16:05:11 +09:00
dc04839fab Run Azure tests in CircleCI 2019-04-22 17:19:04 +09:00
4ce0cb4b35 Remove useless code in storage providers 2019-04-22 16:57:22 +09:00
5100c36c06 Uncomment google/amazon code, just disable it in the service registration 2019-04-22 16:45:50 +09:00
b184360eb7 Abstracted cloud storage - Amazon/Google/Azure/Local (#708)
* 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
2019-04-22 16:41:20 +09:00
02d79de17c Merge pull request #773 from pavlenex/readme
Add TOC, Intro Video, Getting Started to readme
2019-04-22 14:16:53 +09:00
cf27c66132 wordiness 2019-04-19 15:59:56 +02:00
53d9ed5adb add proper video and img size 2019-04-19 13:23:35 +02:00
3fe5051098 Update README.md
- Add Table of Contents
- Add Getting Started Section
- Add Intro video
2019-04-19 13:17:51 +02:00
f7c8a989b6 bump lnd 2019-04-17 13:51:43 +09:00
65dcfd3549 bump 2019-04-15 15:28:05 +09:00
6976fc54ca Merge pull request #765 from Kukks/bugfix/crowdfund
Fix dynamic  crowdfund labelling
2019-04-15 15:26:58 +09:00
0e077ff5c4 Merge pull request #768 from Kukks/feature/invoicesearchsession
Make invoice list search term persistent for session
2019-04-15 15:26:05 +09:00
c2f171a729 Merge pull request #766 from Kukks/bugfix/crowdfund_orderid
fix redirect uri for crowdfund invoices
2019-04-15 15:24:53 +09:00
fea38758e4 Merge pull request #767 from Kukks/bugfix/unusual-filter
fix unusual filter
2019-04-15 15:24:41 +09:00
444733565b Updating altcoins section 2019-04-13 22:24:46 -05:00
96d28f00cc Make invoice list search term persistent for session 2019-04-13 14:00:48 +02:00
70cc79a77f fix unusual filter
closes #763
2019-04-13 13:50:14 +02:00
8d10186fdf fix redirect uri for crowdfund invoices
closes #759
2019-04-13 13:43:47 +02:00
6f7e0205f8 Fix dynamic crowdfund labelling
closes #760
2019-04-13 13:22:19 +02:00
7ef11817c1 Add britt and rockstar video in readme 2019-04-12 18:03:05 +09:00
c387c84861 bump 2019-04-12 15:02:28 +09:00
ae7ad9f667 Filter the apps by the user id 2019-04-12 14:54:59 +09:00
c55f1185e6 Revert "Do not show all apps in Server settings policy"
This reverts commit 1619666befd4bf8931a11a8c2927de4c5b1add86.
2019-04-12 14:43:07 +09:00
1619666bef Do not show all apps in Server settings policy 2019-04-12 14:29:56 +09:00
bf784f6fd7 Merge pull request #758 from rockstardev/dynamicroot
Allowing for displaying of app directly on website root
2019-04-12 14:19:19 +09:00
13e330fa65 Better UI for selection of app to be displayed on root 2019-04-12 00:13:14 -05:00
827b133534 Allowing for displaying of app directly on website root 2019-04-11 16:30:23 -05:00
4067d4b00f Remove the Facade concept 2019-04-11 23:55:20 +09:00
359d8c5c6a Merge pull request #745 from Kukks/feature/invoicepaymentdata
Add payment data to crypto info in invoice api model
2019-04-11 19:10:52 +09:00
265b7364e8 Merge pull request #756 from Kukks/invoice-auto-redirect
Allow POS to redirect invoices automatically after paid
2019-04-11 19:10:21 +09:00
dc2b8c9e4c bump to nbitpay and use for payments 2019-04-11 12:00:10 +02:00
37869fd049 Add payment data to crypto info in invoice api model
Depends on https://github.com/MetacoSA/NBitpayClient/pull/22
2019-04-11 11:54:56 +02:00
d7ada4d493 add redirect automatically to checkout experience/ store settings 2019-04-11 11:53:31 +02:00
f093f85dbf Merge pull request #753 from britttttk/fix/defaultText
Improve default payment method dropdown
2019-04-11 18:11:46 +09:00
1cf17872ab Allow POS to redirect invoices automatically after paid
closes #730
2019-04-11 11:08:42 +02:00
c79751829b Merge pull request #754 from Kukks/fix-pos-notif
fix pos settings savings for notifications
2019-04-11 17:34:42 +09:00
7a21c03896 fix pos settings savings for notifications
closes #751
2019-04-11 09:14:39 +02:00
54f07139db Improve default payment method dropdown text 2019-04-11 00:41:30 -06:00
d78990fbd5 Changing queries: Using FirstOrDefaultAsync result in suboptimal queries 2019-04-11 15:05:30 +09:00
9ed7dbc838 Remove Quadrigacx (bankrupt) 2019-04-11 14:57:31 +09:00
9b12c7bc57 Add missing file 2019-04-11 12:41:38 +09:00
8973c75bbc fix build 2019-04-11 10:06:36 +09:00
f425df7b6d Add Contributing section 2019-04-10 16:05:07 -05:00
a44b600c5e Improving documentation and altcoins sections 2019-04-10 12:48:02 -05:00
7f0a42c2d5 Updating altcoins section 2019-04-10 12:30:54 -05:00
60cd864226 Inject HttpClient inside lightning client instances 2019-04-11 01:10:46 +09:00
71cf02915e Merge pull request #740 from rockstardev/uifixes
Button to switch between time formats, width fix
2019-04-09 18:05:18 +09:00
327d2298fb Merge pull request #746 from Kukks/tag-pos-invoices
tag pos invoices too
2019-04-09 18:04:14 +09:00
2ca11ed692 Fix PoS decimal issue (Fix #747) 2019-04-09 11:10:27 +09:00
0224815a60 workaround tight coupling of crowdfund to apps mechanics 2019-04-08 16:02:53 +02:00
df824c36d2 tag pos invoices too 2019-04-08 15:46:24 +02:00
66e7777b1a bump nbx 2019-04-08 22:26:52 +09:00
7ff85a86bf Merge pull request #736 from Dolu89/master
New Pay Button type (Custom amount and Slider)
2019-04-08 22:19:05 +09:00
7b3700c2c6 Fix bitbank API weirdness (Fix #741) 2019-04-08 21:57:12 +09:00
04679aefd6 Merge pull request #743 from Kukks/fix-coinswitch
fix coinswitch
2019-04-08 17:23:47 +09:00
5190639b77 Simplify InvoiceWatcher logic and remove unused code 2019-04-08 13:28:13 +09:00
0bf73abb39 Fix Custom amount under 0 in Pay button 2019-04-06 15:22:09 +02:00
7e0211924d Replace inline js by templates in pay button 2019-04-06 15:02:02 +02:00
a8a857a7ce Move Slider settings below radio buttons 2019-04-06 13:47:22 +02:00
1d18965a26 fix coinswitch 2019-04-06 08:10:27 +02:00
e020b86a3f Button to switch between time formats, width fix 2019-04-05 09:44:49 -05:00
1b80b90609 Update lang, bump 2019-04-05 18:50:20 +09:00
efc3512994 Merge pull request #739 from Kukks/pos-fixes
fix malformed html in pos + align price/button to card bottom
2019-04-05 16:53:33 +09:00
acb8ca982f fix malformed html in pos + align price/button to card bottom 2019-04-05 09:50:41 +02:00
adc42cbba4 Put timeout on tests 2019-04-05 16:28:18 +09:00
7edcb7ef5f Update NBitcoin 2019-04-05 16:21:00 +09:00
656017c6df SocketFactory uses NBitcoin implementation of Socks 2019-04-05 16:19:04 +09:00
35db6d4a8b Fix test CanScheduleBackgroundTasks 2019-04-05 15:32:30 +09:00
2741187546 Merge pull request #737 from rockstardev/uifixes
New batch of UI fixes
2019-04-05 15:23:41 +09:00
c3a7ab647c Increase reliability of test CanScheduleBackgroundTasks 2019-04-05 15:16:36 +09:00
92da0ec2d2 fix tests 2019-04-05 14:59:46 +09:00
c767a49f2d Increase notitifcation timeout to 1 minute, make sure that BackgroundJobScheduler is correctly cancelling tasks 2019-04-05 14:58:25 +09:00
ea8196b532 Do not use HttpClient singleton for the InvoiceNotifcationManager 2019-04-05 14:31:09 +09:00
58f138e854 Invoice list improvements
Items 5 and 9 from #349
2019-04-04 22:25:38 -05:00
b4b6939498 Coin switching on no-script invoices 2019-04-04 21:48:52 -05:00
bc97c07670 Add currency select in Pay Button 2019-04-04 21:32:16 +02:00
cf27fe5a53 Merge remote-tracking branch 'upstream/master' 2019-04-04 20:57:16 +02:00
449066449b Add a new Pay Button Type : Slider 2019-04-04 20:56:12 +02:00
eb5e32a07f Remove exception thrown by binance provider 2019-04-04 19:39:37 +09:00
708cdbe23f Remove bunch of catched exception when BTCPay starts 2019-04-04 19:35:46 +09:00
333de52c33 Merge branch 'feature/sync-video' 2019-04-04 18:17:39 +09:00
6b9932fa14 Escape css selector 2019-04-04 18:16:54 +09:00
6c45689e6a Fix point of sale search (Fix #734) 2019-04-04 16:32:56 +09:00
1e3307c84c Add link to andreas video during IBD 2019-04-04 15:58:28 +09:00
d0eed9857d Prevent user to log in or register via unsecured network 2019-04-04 14:28:50 +09:00
4221763f48 Merge remote-tracking branch 'upstream/master' 2019-04-03 21:45:41 +02:00
184c797b0e Add a new Pay Button Type : Custom amount 2019-04-03 21:43:53 +02:00
4853e15d8a Better timing measurement during invoice creation 2019-04-03 15:00:09 +09:00
6b4b903669 Improve invoice logs, make sure logs are saved as fire and forget 2019-04-03 14:38:35 +09:00
05da63f2a5 Merge pull request #721 from Kukks/expose-notif-to-pos
add notif Email to crowdfund and pos + add notif url to pos
2019-04-02 17:34:56 +09:00
5b4b073fc8 Merge pull request #731 from Kukks/coinswitch-shitcoin-tax
add coinswitch shitcoin tax
2019-04-02 17:33:37 +09:00
4723a83dbb Merge pull request #732 from rockstardev/uifixes
UI fixes
2019-04-02 17:32:47 +09:00
78350db62d Add a Clean button in the Maintenance page 2019-04-01 17:10:05 +09:00
e8b71f36b2 Adding support for noscript invoices 2019-03-31 13:46:38 -05:00
6db9061dd1 add coinswitch shitcoin tax 2019-03-31 18:55:14 +02:00
320826a4b9 Returning empty payload to fix JSON parse error thrown in JS 2019-03-31 11:48:53 -05:00
ad0edb5f4c Make sure arm build have /sbin/ip 2019-03-31 14:08:53 +09:00
2856c10bc3 Revert "Do not use /sbin/ip to fetch the current ip (fix #712)"
This reverts commit 561644f75b3b83cae3b1cc8db0ceb7ee657dbe82.
2019-03-31 13:54:10 +09:00
24aa18e9ed bump 2019-03-31 13:32:26 +09:00
767eca97cb Fix tests 2019-03-31 13:31:50 +09:00
73d5415ea9 Use NBitcoin's socks implementation 2019-03-31 13:16:05 +09:00
e5a26cfca8 Update dependencies 2019-03-31 12:08:08 +09:00
e40cd1fc0c Update publish docker 2019-03-29 18:39:02 +09:00
978b7d930e Catch operation cancelled exception on the BackgroundJobScheduler 2019-03-29 18:09:54 +09:00
0f2e3ef957 Make latest branch 2019-03-29 17:48:24 +09:00
275b590e80 add notif Email to crowdfund and pos + add notif url to pos
closes #720
2019-03-29 07:51:00 +01:00
5d9da82d8e fix build 2019-03-27 18:58:56 +09:00
1a122726b7 Add more timeout for lightning tests 2019-03-27 18:57:51 +09:00
0bd02a9272 Fix some exceptions raised if port is already used 2019-03-27 18:56:43 +09:00
3cce7b8b35 Refactor the lightning listener, some users complain payments are not detected (should fix #676) 2019-03-27 15:53:38 +09:00
e3ab1f5228 Merge pull request #707 from Kukks/user-email-sync
set username on email change
2019-03-25 14:59:02 +09:00
4c875d9c7c update doc sdk 2019-03-25 14:10:16 +09:00
e79334a6f6 Fix: if anyone can create invoice and /invoices has storeId parameters, then it should be allowed 2019-03-25 12:59:42 +09:00
a09c6d51e6 fix exception which can be thrown if the store is not found 2019-03-25 12:24:48 +09:00
312c7b7193 Fix anonymous bitpay api access 2019-03-25 12:22:17 +09:00
ee733fee28 If AnyoneCanInvoice and the storeId is passed as a parameter to the Bitpay API, then allow request 2019-03-25 12:18:39 +09:00
4d7e9d3f8a Rewrite the BitpayAuthHandler more clearly 2019-03-25 12:09:18 +09:00
873c0a183a Merge pull request #713 from pavlenex/link
Update Readme, Fix Broken Pebble Link
2019-03-25 10:20:08 +09:00
ea53ae8f20 Update ManageController.cs 2019-03-24 16:09:36 +01:00
686bc3380d Update ManageController.cs 2019-03-24 16:09:20 +01:00
67da20bcea Merge pull request #706 from Kukks/pos-max-length
remove template max length in pos app
2019-03-24 23:58:08 +09:00
561644f75b Do not use /sbin/ip to fetch the current ip (fix #712) 2019-03-24 23:56:31 +09:00
1abc89858f Fix broken Pebble Link
Fix broken Pebble Link
2019-03-24 14:15:47 +01:00
91c63a8ee6 bump 2019-03-24 13:37:14 +09:00
563882d30b Merge pull request #711 from rockstardev/bugfix/satround
Javascript floating point math fix, closes #701
2019-03-24 13:35:13 +09:00
9a5eeee794 Javascript floating point math fix, closes #701 2019-03-23 22:28:54 -05:00
0578a692db Updating bundler to new version that will also support .NET Core 2.2 2019-03-23 19:10:16 -05:00
f74f06338a Update bundle minifier, trying to fix (#710 with bundle on) 2019-03-23 23:24:29 +09:00
1281f348bf set username on email change
closes #673
2019-03-22 12:53:56 +01:00
5e76d4bfc1 remove template max length in pos app
closes #704
2019-03-22 09:14:27 +01:00
2a302ea346 Do not spam logs if we can't connect to lightning because lightning is not started 2019-03-20 14:35:33 +09:00
be90172840 bump Microsoft.AspNetCore.App 2019-03-20 14:13:12 +09:00
b85ee895f5 Update nbxplorer in the tests 2019-03-20 14:08:25 +09:00
93de408e07 bump 2019-03-20 12:37:53 +09:00
d3662ae734 fix dockerfile 2019-03-20 12:34:47 +09:00
132d7795ea bump .net 2019-03-20 12:22:46 +09:00
bf5a624209 Remove curl dependency on alpine image 2019-03-20 11:49:43 +09:00
abbdbda03a Add Bitbank provider 2019-03-20 00:49:44 +09:00
8a8593437a Add TOR
- Adds Tor
- Clarifies alts (once again)
- adds payment requests
2019-03-18 12:00:31 +01:00
e203cada54 Merge pull request #675 from Kukks/css-grid-pos-fix
attempt fix pos css grid
2019-03-18 19:47:11 +09:00
00c11c7ee9 bump 2019-03-18 18:58:15 +09:00
82126b85d2 Fix tests 2019-03-18 18:52:19 +09:00
4f428c8ed1 Fix other tor services display 2019-03-18 17:13:02 +09:00
9868af4db8 Show onion link in the navbar 2019-03-18 17:07:39 +09:00
0a5d7c5efa Add .local as a localnetwork link 2019-03-18 16:48:04 +09:00
c2754b324d Show other tor services 2019-03-18 16:45:46 +09:00
5c618233cb fix singular item in pos stretched width 2019-03-18 07:39:45 +01:00
9e91259b9e attempt fix pos css grid 2019-03-18 07:07:31 +01:00
014d08f38a Add socks support on BTCPay Server to query onion endpoints 2019-03-18 00:03:02 +09:00
7998ea142b Fix tor services not appearing 2019-03-17 21:47:08 +09:00
a4051dac72 Make sure BTCPay show TOR lightning node info if the site is accessed through TOR 2019-03-17 21:28:47 +09:00
e3a8892d24 Check tor services in the background 2019-03-17 21:07:24 +09:00
ea02d77e69 Parse torrc file to know virtual port of hidden services 2019-03-17 20:49:26 +09:00
4f582a6712 Show onion hosts instead of url (can't know about ports) 2019-03-17 13:42:54 +09:00
4769b1d452 Show tor services inside hidden directories in Server Settings/Services 2019-03-17 13:01:47 +09:00
17b18d820f bump 2019-03-17 12:28:38 +09:00
26f34e75c2 Language update 2019-03-17 12:28:19 +09:00
6f50ac50ec Merge pull request #689 from rockstardev/rock-lnsats
Allowing for lightning payment amounts to be displayed in Satoshis
2019-03-17 12:26:13 +09:00
5261cfcdd3 Allowing for lightning payment amounts to be displayed in Satoshis 2019-03-15 22:43:57 -05:00
675920697f Merge pull request #685 from britttttk/fix/PayReqMessage
Improve delete payment request message
2019-03-16 12:36:24 +09:00
24699bf2ba Updating QR Code on public node info page to be SVG
Co-authored-by: Sebastian Kippe <sebastian@kip.pe>
2019-03-15 22:16:12 -05:00
5ab92ed794 Switching to SVG for QR code so it looks OK on higher density display
Co-authored-by: Sebastian Kippe <sebastian@kip.pe>
2019-03-15 21:45:55 -05:00
8e83f0faa1 Improve delete payment request message 2019-03-14 23:26:39 -06:00
30d5add2ea bump 2019-03-15 14:04:17 +09:00
6e47babf45 Overpayment of lightning invoice now properly appears (Fix #486) 2019-03-14 18:48:05 +09:00
9b95fa1f20 Add links for Payment Requests and Apps docs in UI 2019-03-12 21:50:55 +09:00
c67aa14a87 Fix payment requests and crowdfund app not working if ROOTPATH is specified (fix #659) 2019-03-12 15:48:24 +09:00
23f296ef34 The store owner can define default currency pairs when using rate API without parameter 2019-03-11 18:39:21 +09:00
c6ce676ad3 Fix exception on Payment Request (#672) 2019-03-11 16:06:27 +09:00
fafb02b0dc bump 2019-03-11 15:20:10 +09:00
53cecc8c8a Improve error message for POST /tokens without body 2019-03-10 15:10:30 +09:00
db0e9ee8f8 Merge pull request #654 from Kukks/robots-suck
Add policy to discourage search engines + build robots.txt dynamcally
2019-03-10 15:00:11 +09:00
2fac794d96 Merge pull request #667 from pavlenex/pavlenex-patch-issue-templates
Add Issue Templates
2019-03-10 14:58:58 +09:00
ffcd716906 Create feature_request.md 2019-03-09 23:21:03 +01:00
85f50724db Create Bug Report template 2019-03-09 23:16:29 +01:00
808a995741 Merge pull request #665 from rockstardev/rock-qrcodefix
Rendering QR code only if there is data, plus loading indicator
2019-03-10 00:40:07 +09:00
4deb853914 remo useless mode now 2019-03-09 16:35:53 +01:00
470ec3354e Rendering QR code only if there is data, plus loading indicator 2019-03-09 09:33:05 -06:00
053c2da9f1 use thememanager instead of view component 2019-03-09 16:29:04 +01:00
c0e28ce66e Revert "Remove error in console logs on checkout page"
This reverts commit 08dd94e267c4810837b2fccd33b9001a3e406b30.
2019-03-10 00:28:47 +09:00
08dd94e267 Remove error in console logs on checkout page 2019-03-10 00:18:34 +09:00
7497865d1f Pay button was not working properly if the server was not en-US (Fix #638) 2019-03-09 23:40:22 +09:00
1888e4fe2b remove robots and remove nofollow 2019-03-09 15:01:56 +01:00
6746a5cbd5 add meta for noindex,nofollow if policy set 2019-03-09 14:55:37 +01:00
baecb7bb0c Fix coinswitch issue (#664)
Coinswitch did a breaking change, this fixes it. Closes #660
2019-03-09 22:36:25 +09:00
28bf4b42bb Fix tests 2019-03-09 22:36:07 +09:00
c73dc425ad Remove externalurl in command line options --help (Fix #658) 2019-03-09 22:30:49 +09:00
2138b7dcb8 Fix invoice popup not showing up if btcpay has a rootpath 2019-03-09 22:28:20 +09:00
8b6c4a9383 simplifed robots generator 2019-03-09 14:23:55 +01:00
344755cbd0 Add policy to discourage search engines + build robots.txt dynamcally
closes #390
2019-03-09 14:13:10 +01:00
63a975267c Fix coinswitch issue
Coinswitch did a breaking change, this fixes it. Closes #660
2019-03-09 14:11:56 +01:00
3c7d93e88d No ROOTPATH in launchsettings 2019-03-09 18:40:41 +09:00
75974037bc Fix SignalR paths if RootPath is used 2019-03-09 16:08:31 +09:00
e8a346182b Fix vue-qrcode inside the lightning network info vue 2019-03-09 12:51:05 +09:00
e96d34f741 New QR Code component, fixes scanning of long lightning invoices 2019-03-08 16:19:39 -06:00
7dad814f19 Fix some checkout page if RootPath is set (#659) 2019-03-09 00:48:33 +09:00
7e67ca1413 Fix RootPath was not working correctly on Linux 2019-03-08 23:38:00 +09:00
603263549b Document LND supported wallets in services (#657)
* Document LND supported wallets in services

* Add Zeus

* Open links in new tab
2019-03-08 18:12:14 +09:00
a82b971ce7 bump 2019-03-07 20:51:51 +09:00
b58c8ef2f0 Bump libraries 2019-03-07 20:33:05 +09:00
274533bfdf Fix spot not using HttpClient created by the httpclientfactory 2019-03-07 19:41:20 +09:00
cd6ce401e1 Fix logs getting spammed by HTTP requests 2019-03-07 19:41:19 +09:00
0c0809101d Datetime picker and small edit UI changes (#647)
* do not allow negative amounts for crowdfund and payment requests

* remove currency placeholder in payment requests

* Improve date picker ui 

Clear button only appears when a value is set. If no value is set, display a placeholder indicating it. closes #625
2019-03-07 14:29:29 +09:00
4b342376a8 Pos experimental card deck (#651)
* Try out experimental card deck

* apply card deck to shopping cart version
2019-03-07 14:28:42 +09:00
fd963b9ad0 fix no store error message for payment request (#646)
* fix no store error message for payment request 

closes #628

* Update PaymentRequestController.cs
2019-03-07 14:28:14 +09:00
06406c0695 Clone Payment Requests (#648)
* Clone Payment Requests

closes #615

* Do not save clone instantly
2019-03-07 14:27:16 +09:00
2b567de5c1 Allow sounds and animation colors in crowdfund to be configured (#653)
closes #652
2019-03-07 14:25:09 +09:00
ef46d03760 fix lightning typo (#655)
closes #622
2019-03-07 13:14:47 +09:00
980 changed files with 93662 additions and 40729 deletions

View File

@ -1,40 +1,60 @@
version: 2
jobs:
build:
machine:
docker_layer_caching: true
steps:
- checkout
test:
fast_tests:
machine:
docker_layer_caching: true
enabled: true
steps:
- checkout
- run:
command: |
cd BTCPayServer.Tests
docker-compose down --v
docker-compose build
docker-compose run tests
cd .circleci && ./run-tests.sh "Fast=Fast"
selenium_tests:
machine:
enabled: true
steps:
- checkout
- run:
command: |
cd .circleci && ./run-tests.sh "Selenium=Selenium"
integration_tests:
machine:
enabled: true
steps:
- checkout
- run:
command: |
cd .circleci && ./run-tests.sh "Integration=Integration"
external_tests:
machine:
enabled: true
steps:
- checkout
- run:
command: |
if [ "$CIRCLE_PROJECT_USERNAME" == "btcpayserver" ] && [ "$CIRCLE_PROJECT_REPONAME" == "btcpayserver" ]; then
cd .circleci && ./run-tests.sh "ExternalIntegration=ExternalIntegration"
else
echo "Skipping running ExternalIntegration tests outside of context of main user and repository that have access to secrets"
fi
# publish jobs require $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS defined
publish_docker_linuxamd64:
amd64:
machine:
docker_layer_caching: true
enabled: true
steps:
- checkout
- run:
command: |
LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag
#
sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-amd64 -f Dockerfile.linuxamd64 .
sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-amd64 -f amd64.Dockerfile .
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-amd64
publish_docker_linuxarm:
arm32v7:
machine:
docker_layer_caching: true
enabled: true
steps:
- checkout
- run:
@ -42,11 +62,25 @@ jobs:
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag
#
sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 -f Dockerfile.linuxarm32v7 .
sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 -f arm32v7.Dockerfile .
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-arm32v7
publish_docker_multiarch:
arm64v8:
machine:
enabled: true
steps:
- checkout
- run:
command: |
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag
#
sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm64v8 -f arm64v8.Dockerfile .
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-arm64v8
multiarch:
machine:
enabled: true
image: circleci/classic:201808-01
@ -60,39 +94,55 @@ jobs:
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
#
LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag
sudo docker manifest create --amend $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-amd64 $DOCKERHUB_REPO:$LATEST_TAG-arm32v7
sudo docker manifest create --amend $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-amd64 $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 $DOCKERHUB_REPO:$LATEST_TAG-arm64v8
sudo docker manifest annotate $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-amd64 --os linux --arch amd64
sudo docker manifest annotate $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 --os linux --arch arm --variant v7
sudo docker manifest annotate $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-arm64v8 --os linux --arch arm64 --variant v8
sudo docker manifest push $DOCKERHUB_REPO:$LATEST_TAG -p
workflows:
version: 2
build_and_test:
jobs:
- test
- fast_tests
- selenium_tests
- integration_tests
- external_tests:
filters:
branches:
only: master
publish:
jobs:
- publish_docker_linuxamd64:
- amd64:
filters:
# ignore any commit on any branch by default
branches:
ignore: /.*/
# only act on version tags
# only act on version tags v1.0.0.88 or v1.0.2-1
# OR feature tags like vlndseedbackup
tags:
only: /v[1-9]+(\.[0-9]+)*/
- publish_docker_linuxarm:
only: /(v[1-9]+(\.[0-9]+)*(-[0-9]+)?)|(v[a-z]+)/
- arm32v7:
filters:
branches:
ignore: /.*/
tags:
only: /v[1-9]+(\.[0-9]+)*/
- publish_docker_multiarch:
only: /(v[1-9]+(\.[0-9]+)*(-[0-9]+)?)|(v[a-z]+)/
- arm64v8:
filters:
branches:
ignore: /.*/
tags:
only: /(v[1-9]+(\.[0-9]+)*(-[0-9]+)?)|(v[a-z]+)/
- multiarch:
requires:
- publish_docker_linuxamd64
- publish_docker_linuxarm
- amd64
- arm32v7
- arm64v8
filters:
branches:
ignore: /.*/
tags:
only: /v[1-9]+(\.[0-9]+)*/
only: /(v[1-9]+(\.[0-9]+)*(-[0-9]+)?)|(v[a-z]+)/

9
.circleci/run-tests.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
set -e
cd ../BTCPayServer.Tests
docker-compose -v
docker-compose down --v
docker-compose pull
docker-compose build
docker-compose run -e "TEST_FILTERS=$1" tests

2
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,2 @@
# These are supported funding model platforms
custom: https://foundation.btcpayserver.org

37
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,37 @@
---
name: Report a problem
about: File a technical problem or report a bug
---
**Describe the problem/bug**
A clear and concise description of what the bug is.
**Your environment**
* Version of BTCPay Server:
* Deployment method:
* Other relevant environment details:
**Logs (if applicable)**
Basic logs can be found in Server Settings > Logs.
**Setup Parameters**
If you're reporting a deployment issue run `. btcpay-setup.sh -i` and paste your the paremeters by obscuring private information.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Actual behavior**
Tell us what happens instead
**Screenshots/Links**
If applicable, add screenshots or links to help explain your problem.
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Ideas and feature requests
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Provide examples**
If applicable provide examples, wireframes, sketches or images to better explain your idea.
**Additional context**
Add any other context or screenshots about the feature request here.

1
.gitignore vendored
View File

@ -293,3 +293,4 @@ BTCPayServer/wwwroot/bundles/*
!BTCPayServer/wwwroot/bundles/.gitignore
.vscode
BTCPayServer/testpwd

View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NBitcoin" Version="5.0.43" />
<PackageReference Include="BTCPayServer.Lightning.Common" Version="1.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,39 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public virtual async Task<ApiKeyData> GetCurrentAPIKeyInfo(CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/api-keys/current"), token);
return await HandleResponse<ApiKeyData>(response);
}
public virtual async Task<ApiKeyData> CreateAPIKey(CreateApiKeyRequest request, CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/api-keys", bodyPayload: request, method: HttpMethod.Post), token);
return await HandleResponse<ApiKeyData>(response);
}
public virtual async Task RevokeCurrentAPIKeyInfo(CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/api-keys/current", null, HttpMethod.Delete), token);
await HandleResponse(response);
}
public virtual async Task RevokeAPIKey(string apikey, CancellationToken token = default)
{
if (apikey == null)
throw new ArgumentNullException(nameof(apikey));
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/api-keys/{apikey}", null, HttpMethod.Delete), token);
await HandleResponse(response);
}
}
}

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public static Uri GenerateAuthorizeUri(Uri btcpayHost, string[] permissions, bool strict = true,
bool selectiveStores = false)
{
var result = new UriBuilder(btcpayHost);
result.Path = "api-keys/authorize";
AppendPayloadToQuery(result,
new Dictionary<string, object>()
{
{"strict", strict}, {"selectiveStores", selectiveStores}, {"permissions", permissions}
});
return result.Uri;
}
}
}

View File

@ -0,0 +1,16 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public virtual async Task<ApiHealthData> GetHealth(CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/health"), token);
return await HandleResponse<ApiHealthData>(response);
}
}
}

View File

@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public async Task<LightningNodeInformationData> GetLightningNodeInfo(string cryptoCode,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/info",
method: HttpMethod.Get), token);
return await HandleResponse<LightningNodeInformationData>(response);
}
public async Task ConnectToLightningNode(string cryptoCode, ConnectToNodeRequest request,
CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/connect", bodyPayload: request,
method: HttpMethod.Post), token);
await HandleResponse(response);
}
public async Task<IEnumerable<LightningChannelData>> GetLightningNodeChannels(string cryptoCode,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/channels",
method: HttpMethod.Get), token);
return await HandleResponse<IEnumerable<LightningChannelData>>(response);
}
public async Task<string> OpenLightningChannel(string cryptoCode, OpenLightningChannelRequest request,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/channels", bodyPayload: request,
method: HttpMethod.Post), token);
return await HandleResponse<string>(response);
}
public async Task<string> GetLightningDepositAddress(string cryptoCode, CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/address", method: HttpMethod.Post), token);
return await HandleResponse<string>(response);
}
public async Task PayLightningInvoice(string cryptoCode, PayLightningInvoiceRequest request,
CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/invoices/pay", bodyPayload: request,
method: HttpMethod.Post), token);
await HandleResponse(response);
}
public async Task<LightningInvoiceData> GetLightningInvoice(string cryptoCode,
string invoiceId, CancellationToken token = default)
{
if (invoiceId == null)
throw new ArgumentNullException(nameof(invoiceId));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/invoices/{invoiceId}",
method: HttpMethod.Get), token);
return await HandleResponse<LightningInvoiceData>(response);
}
public async Task<LightningInvoiceData> CreateLightningInvoice(string cryptoCode, CreateLightningInvoiceRequest request,
CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/server/lightning/{cryptoCode}/invoices", bodyPayload: request,
method: HttpMethod.Post), token);
return await HandleResponse<LightningInvoiceData>(response);
}
}
}

View File

@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
using BTCPayServer.Lightning;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public async Task<LightningNodeInformationData> GetLightningNodeInfo(string storeId, string cryptoCode,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/info",
method: HttpMethod.Get), token);
return await HandleResponse<LightningNodeInformationData>(response);
}
public async Task ConnectToLightningNode(string storeId, string cryptoCode, ConnectToNodeRequest request,
CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/connect", bodyPayload: request,
method: HttpMethod.Post), token);
await HandleResponse(response);
}
public async Task<IEnumerable<LightningChannelData>> GetLightningNodeChannels(string storeId, string cryptoCode,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/channels",
method: HttpMethod.Get), token);
return await HandleResponse<IEnumerable<LightningChannelData>>(response);
}
public async Task<string> OpenLightningChannel(string storeId, string cryptoCode, OpenLightningChannelRequest request,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/channels", bodyPayload: request,
method: HttpMethod.Post), token);
return await HandleResponse<string>(response);
}
public async Task<string> GetLightningDepositAddress(string storeId, string cryptoCode,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/address", method: HttpMethod.Post),
token);
return await HandleResponse<string>(response);
}
public async Task PayLightningInvoice(string storeId, string cryptoCode, PayLightningInvoiceRequest request,
CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/invoices/pay", bodyPayload: request,
method: HttpMethod.Post), token);
await HandleResponse(response);
}
public async Task<LightningInvoiceData> GetLightningInvoice(string storeId, string cryptoCode,
string invoiceId, CancellationToken token = default)
{
if (invoiceId == null)
throw new ArgumentNullException(nameof(invoiceId));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/invoices/{invoiceId}",
method: HttpMethod.Get), token);
return await HandleResponse<LightningInvoiceData>(response);
}
public async Task<LightningInvoiceData> CreateLightningInvoice(string storeId, string cryptoCode,
CreateLightningInvoiceRequest request, CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/lightning/{cryptoCode}/invoices", bodyPayload: request,
method: HttpMethod.Post), token);
return await HandleResponse<LightningInvoiceData>(response);
}
}
}

View File

@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public virtual async Task<IEnumerable<PaymentRequestData>> GetPaymentRequests(string storeId,
CancellationToken token = default)
{
var response =
await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{storeId}/payment-requests"), token);
return await HandleResponse<IEnumerable<PaymentRequestData>>(response);
}
public virtual async Task<PaymentRequestData> GetPaymentRequest(string storeId, string paymentRequestId,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/payment-requests/{paymentRequestId}"), token);
return await HandleResponse<PaymentRequestData>(response);
}
public virtual async Task ArchivePaymentRequest(string storeId, string paymentRequestId,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/payment-requests/{paymentRequestId}",
method: HttpMethod.Delete), token);
await HandleResponse(response);
}
public virtual async Task<PaymentRequestData> CreatePaymentRequest(string storeId,
CreatePaymentRequestRequest request, CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/payment-requests", bodyPayload: request,
method: HttpMethod.Post), token);
return await HandleResponse<PaymentRequestData>(response);
}
public virtual async Task<PaymentRequestData> UpdatePaymentRequest(string storeId, string paymentRequestId,
UpdatePaymentRequestRequest request, CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}/payment-requests/{paymentRequestId}", bodyPayload: request,
method: HttpMethod.Put), token);
return await HandleResponse<PaymentRequestData>(response);
}
}
}

View File

@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public async Task<PullPaymentData> CreatePullPayment(string storeId, CreatePullPaymentRequest request, CancellationToken cancellationToken = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{HttpUtility.UrlEncode(storeId)}/pull-payments", bodyPayload: request, method: HttpMethod.Post), cancellationToken);
return await HandleResponse<PullPaymentData>(response);
}
public async Task<PullPaymentData> GetPullPayment(string pullPaymentId, CancellationToken cancellationToken = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/pull-payments/{HttpUtility.UrlEncode(pullPaymentId)}", method: HttpMethod.Get), cancellationToken);
return await HandleResponse<PullPaymentData>(response);
}
public async Task<PullPaymentData[]> GetPullPayments(string storeId, bool includeArchived = false, CancellationToken cancellationToken = default)
{
Dictionary<string, object> query = new Dictionary<string, object>();
query.Add("includeArchived", includeArchived);
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{HttpUtility.UrlEncode(storeId)}/pull-payments", queryPayload: query, method: HttpMethod.Get), cancellationToken);
return await HandleResponse<PullPaymentData[]>(response);
}
public async Task ArchivePullPayment(string storeId, string pullPaymentId, CancellationToken cancellationToken = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{HttpUtility.UrlEncode(storeId)}/pull-payments/{HttpUtility.UrlEncode(pullPaymentId)}", method: HttpMethod.Delete), cancellationToken);
await HandleResponse(response);
}
public async Task<PayoutData[]> GetPayouts(string pullPaymentId, bool includeCancelled = false, CancellationToken cancellationToken = default)
{
Dictionary<string, object> query = new Dictionary<string, object>();
query.Add("includeCancelled", includeCancelled);
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/pull-payments/{HttpUtility.UrlEncode(pullPaymentId)}/payouts", queryPayload: query, method: HttpMethod.Get), cancellationToken);
return await HandleResponse<PayoutData[]>(response);
}
public async Task<PayoutData> CreatePayout(string pullPaymentId, CreatePayoutRequest payoutRequest, CancellationToken cancellationToken = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/pull-payments/{HttpUtility.UrlEncode(pullPaymentId)}/payouts", bodyPayload: payoutRequest, method: HttpMethod.Post), cancellationToken);
return await HandleResponse<PayoutData>(response);
}
public async Task CancelPayout(string storeId, string payoutId, CancellationToken cancellationToken = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{HttpUtility.UrlEncode(storeId)}/payouts/{HttpUtility.UrlEncode(payoutId)}", method: HttpMethod.Delete), cancellationToken);
await HandleResponse(response);
}
public async Task<PayoutData> ApprovePayout(string storeId, string payoutId, ApprovePayoutRequest request, CancellationToken cancellationToken = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{HttpUtility.UrlEncode(storeId)}/payouts/{HttpUtility.UrlEncode(payoutId)}", bodyPayload: request, method: HttpMethod.Post), cancellationToken);
return await HandleResponse<PayoutData>(response);
}
}
}

View File

@ -0,0 +1,16 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public virtual async Task<ServerInfoData> GetServerInfo(CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/server/info"), token);
return await HandleResponse<ServerInfoData>(response);
}
}
}

View File

@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public virtual async Task<IEnumerable<StoreData>> GetStores(CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/stores"), token);
return await HandleResponse<IEnumerable<StoreData>>(response);
}
public virtual async Task<StoreData> GetStore(string storeId, CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}"), token);
return await HandleResponse<StoreData>(response);
}
public virtual async Task RemoveStore(string storeId, CancellationToken token = default)
{
var response = await _httpClient.SendAsync(
CreateHttpRequest($"api/v1/stores/{storeId}", method: HttpMethod.Delete), token);
await HandleResponse(response);
}
public virtual async Task<StoreData> CreateStore(CreateStoreRequest request, CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/stores", bodyPayload: request, method: HttpMethod.Post), token);
return await HandleResponse<StoreData>(response);
}
public virtual async Task<StoreData> UpdateStore(string storeId, UpdateStoreRequest request, CancellationToken token = default)
{
if (request == null)
throw new ArgumentNullException(nameof(request));
if (storeId == null)
throw new ArgumentNullException(nameof(storeId));
var response = await _httpClient.SendAsync(CreateHttpRequest($"api/v1/stores/{storeId}", bodyPayload: request, method: HttpMethod.Put), token);
return await HandleResponse<StoreData>(response);
}
}
}

View File

@ -0,0 +1,23 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
public virtual async Task<ApplicationUserData> GetCurrentUser(CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/users/me"), token);
return await HandleResponse<ApplicationUserData>(response);
}
public virtual async Task<ApplicationUserData> CreateUser(CreateApplicationUserRequest request,
CancellationToken token = default)
{
var response = await _httpClient.SendAsync(CreateHttpRequest("api/v1/users", null, request, HttpMethod.Post), token);
return await HandleResponse<ApplicationUserData>(response);
}
}
}

View File

@ -0,0 +1,128 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace BTCPayServer.Client
{
public partial class BTCPayServerClient
{
private readonly string _apiKey;
private readonly Uri _btcpayHost;
private readonly string _username;
private readonly string _password;
private readonly HttpClient _httpClient;
public string APIKey => _apiKey;
public BTCPayServerClient(Uri btcpayHost, HttpClient httpClient = null)
{
if (btcpayHost == null)
throw new ArgumentNullException(nameof(btcpayHost));
_btcpayHost = btcpayHost;
_httpClient = httpClient ?? new HttpClient();
}
public BTCPayServerClient(Uri btcpayHost, string APIKey, HttpClient httpClient = null)
{
_apiKey = APIKey;
_btcpayHost = btcpayHost;
_httpClient = httpClient ?? new HttpClient();
}
public BTCPayServerClient(Uri btcpayHost, string username, string password, HttpClient httpClient = null)
{
_apiKey = APIKey;
_btcpayHost = btcpayHost;
_username = username;
_password = password;
_httpClient = httpClient ?? new HttpClient();
}
protected async Task HandleResponse(HttpResponseMessage message)
{
if (message.StatusCode == System.Net.HttpStatusCode.UnprocessableEntity)
{
var err = JsonConvert.DeserializeObject<Models.GreenfieldValidationError[]>(await message.Content.ReadAsStringAsync()); ;
throw new GreenFieldValidationException(err);
}
else if (message.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
var err = JsonConvert.DeserializeObject<Models.GreenfieldAPIError>(await message.Content.ReadAsStringAsync());
throw new GreenFieldAPIException(err);
}
message.EnsureSuccessStatusCode();
}
protected async Task<T> HandleResponse<T>(HttpResponseMessage message)
{
await HandleResponse(message);
return JsonConvert.DeserializeObject<T>(await message.Content.ReadAsStringAsync());
}
protected virtual HttpRequestMessage CreateHttpRequest(string path,
Dictionary<string, object> queryPayload = null,
HttpMethod method = null)
{
UriBuilder uriBuilder = new UriBuilder(_btcpayHost) {Path = path};
if (queryPayload != null && queryPayload.Any())
{
AppendPayloadToQuery(uriBuilder, queryPayload);
}
var httpRequest = new HttpRequestMessage(method ?? HttpMethod.Get, uriBuilder.Uri);
if (_apiKey != null)
httpRequest.Headers.Authorization = new AuthenticationHeaderValue("token", _apiKey);
else if (!string.IsNullOrEmpty(_username))
{
httpRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic", System.Convert.ToBase64String(Encoding.ASCII.GetBytes(_username + ":" + _password)));
}
return httpRequest;
}
protected virtual HttpRequestMessage CreateHttpRequest<T>(string path,
Dictionary<string, object> queryPayload = null,
T bodyPayload = default, HttpMethod method = null)
{
var request = CreateHttpRequest(path, queryPayload, method);
if (typeof(T).IsPrimitive || !EqualityComparer<T>.Default.Equals(bodyPayload, default(T)))
{
request.Content = new StringContent(JsonConvert.SerializeObject(bodyPayload), Encoding.UTF8, "application/json");
}
return request;
}
private static void AppendPayloadToQuery(UriBuilder uri, Dictionary<string, object> payload)
{
if (uri.Query.Length > 1)
uri.Query += "&";
foreach (KeyValuePair<string, object> keyValuePair in payload)
{
UriBuilder uriBuilder = uri;
if (!(keyValuePair.Value is string) && keyValuePair.Value.GetType().GetInterfaces().Contains((typeof(IEnumerable))))
{
foreach (var item in (IEnumerable)keyValuePair.Value)
{
uriBuilder.Query = uriBuilder.Query + Uri.EscapeDataString(keyValuePair.Key) + "=" +
Uri.EscapeDataString(item.ToString()) + "&";
}
}
else
{
uriBuilder.Query = uriBuilder.Query + Uri.EscapeDataString(keyValuePair.Key) + "=" +
Uri.EscapeDataString(keyValuePair.Value.ToString()) + "&";
}
}
uri.Query = uri.Query.Trim('&');
}
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Linq;
namespace BTCPayServer.Client
{
public class GreenFieldAPIException : Exception
{
public GreenFieldAPIException(Models.GreenfieldAPIError error):base(error.Message)
{
if (error == null)
throw new ArgumentNullException(nameof(error));
APIError = error;
}
public Models.GreenfieldAPIError APIError { get; }
}
}

View File

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using BTCPayServer.Client.Models;
namespace BTCPayServer.Client
{
public class GreenFieldValidationException : Exception
{
public GreenFieldValidationException(Models.GreenfieldValidationError[] errors) : base(BuildMessage(errors))
{
ValidationErrors = errors;
}
private static string BuildMessage(GreenfieldValidationError[] errors)
{
if (errors == null)
throw new ArgumentNullException(nameof(errors));
StringBuilder builder = new StringBuilder();
foreach (var error in errors)
{
builder.AppendLine($"{error.Path}: {error.Message}");
}
return builder.ToString();
}
public Models.GreenfieldValidationError[] ValidationErrors { get; }
}
}

View File

@ -0,0 +1,39 @@
using System;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BTCPayServer.JsonConverters
{
public class DecimalStringJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(decimal) || objectType == typeof(decimal?));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
switch (token.Type)
{
case JTokenType.Float:
case JTokenType.Integer:
case JTokenType.String:
return decimal.Parse(token.ToString(), CultureInfo.InvariantCulture);
case JTokenType.Null when objectType == typeof(decimal?):
return null;
default:
throw new JsonSerializationException("Unexpected token type: " +
token.Type);
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value != null)
writer.WriteValue(((decimal)value).ToString(CultureInfo.InvariantCulture));
}
}
}

View File

@ -0,0 +1,15 @@
using System.Globalization;
using BTCPayServer.Lightning;
using Newtonsoft.Json;
namespace BTCPayServer.Client.JsonConverters
{
public class LightMoneyJsonConverter : BTCPayServer.Lightning.JsonConverters.LightMoneyJsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value != null)
writer.WriteValue(((LightMoney)value).MilliSatoshi.ToString(CultureInfo.InvariantCulture));
}
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Globalization;
using NBitcoin;
using Newtonsoft.Json;
namespace BTCPayServer.Client.JsonConverters
{
public class MoneyJsonConverter : NBitcoin.JsonConverters.MoneyJsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.String)
{
return new Money( long.Parse((string) reader.Value));
}
return base.ReadJson(reader, objectType, existingValue, serializer);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value != null)
writer.WriteValue(((Money)value).Satoshi.ToString(CultureInfo.InvariantCulture));
}
}
}

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using BTCPayServer.Client.Models;
using BTCPayServer.Lightning;
using NBitcoin.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.JsonConverters
{
public class NodeUriJsonConverter : JsonConverter<NodeInfo>
{
public override NodeInfo ReadJson(JsonReader reader, Type objectType, [AllowNull] NodeInfo existingValue, bool hasExistingValue, JsonSerializer serializer)
{
if (reader.TokenType != JsonToken.String)
throw new JsonObjectException(reader.Path, "Unexpected token type for NodeUri");
if (NodeInfo.TryParse((string)reader.Value, out var info))
return info;
throw new JsonObjectException(reader.Path, "Invalid NodeUri");
}
public override void WriteJson(JsonWriter writer, [AllowNull] NodeInfo value, JsonSerializer serializer)
{
if (value is NodeInfo)
writer.WriteValue(value.ToString());
}
}
}

View File

@ -0,0 +1,34 @@
using System;
using System.Reflection;
using System.Collections.Generic;
using System.Text;
using Newtonsoft.Json;
using NBitcoin.JsonConverters;
namespace BTCPayServer.Client.JsonConverters
{
public class PermissionJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(Permission).GetTypeInfo().IsAssignableFrom(objectType.GetTypeInfo());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
return null;
if (reader.TokenType != JsonToken.String)
throw new JsonObjectException("Type 'Permission' is expected to be a 'String'", reader);
if (reader.Value is String s && Permission.TryParse(s, out var permission))
return permission;
throw new JsonObjectException("Invalid 'Permission' String", reader);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is Permission v)
writer.WriteValue(v.ToString());
}
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Text;
using NBitcoin.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.JsonConverters
{
public class TimeSpanJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(TimeSpan) || objectType == typeof(TimeSpan?);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
try
{
var nullable = objectType == typeof(TimeSpan?);
if (reader.TokenType == JsonToken.Null)
{
if (nullable)
return null;
return TimeSpan.Zero;
}
if (reader.TokenType != JsonToken.Integer)
throw new JsonObjectException("Invalid timespan, expected integer", reader);
return TimeSpan.FromSeconds((long)reader.Value);
}
catch
{
throw new JsonObjectException("Invalid locktime", reader);
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is TimeSpan s)
{
writer.WriteValue((long)s.TotalSeconds);
}
}
}
}

View File

@ -0,0 +1,7 @@
namespace BTCPayServer.Client.Models
{
public class ApiHealthData
{
public bool Synchronized { get; set; }
}
}

View File

@ -0,0 +1,14 @@
using BTCPayServer.Client.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class ApiKeyData
{
public string ApiKey { get; set; }
public string Label { get; set; }
[JsonProperty(ItemConverterType = typeof(PermissionJsonConverter))]
public Permission[] Permissions { get; set; }
}
}

View File

@ -0,0 +1,25 @@
namespace BTCPayServer.Client.Models
{
public class ApplicationUserData
{
/// <summary>
/// the id of the user
/// </summary>
public string Id { get; set; }
/// <summary>
/// the email AND username of the user
/// </summary>
public string Email { get; set; }
/// <summary>
/// Whether the user has verified their email
/// </summary>
public bool EmailConfirmed { get; set; }
/// <summary>
/// whether the user needed to verify their email on account creation
/// </summary>
public bool RequiresEmailConfirmation { get; set; }
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BTCPayServer.Client.Models
{
public class ApprovePayoutRequest
{
public int Revision { get; set; }
public string RateRule { get; set; }
}
}

View File

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Text;
using BTCPayServer.Client.JsonConverters;
using BTCPayServer.Lightning;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class ConnectToNodeRequest
{
public ConnectToNodeRequest()
{
}
public ConnectToNodeRequest(NodeInfo nodeInfo)
{
NodeURI = nodeInfo;
}
[JsonConverter(typeof(NodeUriJsonConverter))]
[JsonProperty("nodeURI")]
public NodeInfo NodeURI { get; set; }
}
}

View File

@ -0,0 +1,13 @@
using BTCPayServer.Client.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class CreateApiKeyRequest
{
public string Label { get; set; }
[JsonProperty(ItemConverterType = typeof(PermissionJsonConverter))]
public Permission[] Permissions { get; set; }
}
}

View File

@ -0,0 +1,20 @@
namespace BTCPayServer.Client.Models
{
public class CreateApplicationUserRequest
{
/// <summary>
/// the email AND username of the new user
/// </summary>
public string Email { get; set; }
/// <summary>
/// password of the new user
/// </summary>
public string Password { get; set; }
/// <summary>
/// Whether this user is an administrator. If left null and there are no admins in the system, the user will be created as an admin.
/// </summary>
public bool? IsAdministrator { get; set; }
}
}

View File

@ -0,0 +1,29 @@
using System;
using System.Security.Cryptography;
using BTCPayServer.Lightning;
using BTCPayServer.Lightning.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class CreateLightningInvoiceRequest
{
public CreateLightningInvoiceRequest()
{
}
public CreateLightningInvoiceRequest(LightMoney amount, string description, TimeSpan expiry)
{
Amount = amount;
Description = description;
Expiry = expiry;
}
[JsonConverter(typeof(LightMoneyJsonConverter))]
public LightMoney Amount { get; set; }
public string Description { get; set; }
[JsonConverter(typeof(JsonConverters.TimeSpanJsonConverter))]
public TimeSpan Expiry { get; set; }
public bool PrivateRouteHints { get; set; }
}
}

View File

@ -0,0 +1,6 @@
namespace BTCPayServer.Client.Models
{
public class CreatePaymentRequestRequest : PaymentRequestBaseData
{
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Text;
using BTCPayServer.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class CreatePayoutRequest
{
public string Destination { get; set; }
[JsonConverter(typeof(DecimalStringJsonConverter))]
public decimal? Amount { get; set; }
public string PaymentMethod { get; set; }
}
}

View File

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Text;
using BTCPayServer.Client.JsonConverters;
using BTCPayServer.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class CreatePullPaymentRequest
{
public string Name { get; set; }
[JsonProperty(ItemConverterType = typeof(DecimalStringJsonConverter))]
public decimal Amount { get; set; }
public string Currency { get; set; }
[JsonConverter(typeof(TimeSpanJsonConverter))]
public TimeSpan? Period { get; set; }
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset? ExpiresAt { get; set; }
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset? StartsAt { get; set; }
public string[] PaymentMethods { get; set; }
}
}

View File

@ -0,0 +1,6 @@
namespace BTCPayServer.Client.Models
{
public class CreateStoreRequest: StoreBaseData
{
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BTCPayServer.Client.Models
{
public class GreenfieldAPIError
{
public GreenfieldAPIError()
{
}
public GreenfieldAPIError(string code, string message)
{
if (code == null)
throw new ArgumentNullException(nameof(code));
if (message == null)
throw new ArgumentNullException(nameof(message));
Code = code;
Message = message;
}
public string Code { get; set; }
public string Message { get; set; }
}
}

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace BTCPayServer.Client.Models
{
public class GreenfieldValidationError
{
public GreenfieldValidationError()
{
}
public GreenfieldValidationError(string path, string message)
{
if (path == null)
throw new ArgumentNullException(nameof(path));
if (message == null)
throw new ArgumentNullException(nameof(message));
Path = path;
Message = message;
}
public string Path { get; set; }
public string Message { get; set; }
}
}

View File

@ -0,0 +1,30 @@
using System;
using BTCPayServer.Client.JsonConverters;
using BTCPayServer.Lightning;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace BTCPayServer.Client.Models
{
public class LightningInvoiceData
{
public string Id { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
public LightningInvoiceStatus Status { get; set; }
[JsonProperty("BOLT11")]
public string BOLT11 { get; set; }
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset? PaidAt { get; set; }
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset ExpiresAt { get; set; }
[JsonConverter(typeof(LightMoneyJsonConverter))]
public LightMoney Amount { get; set; }
[JsonConverter(typeof(LightMoneyJsonConverter))]
public LightMoney AmountReceived { get; set; }
}
}

View File

@ -0,0 +1,33 @@
using System.Collections.Generic;
using BTCPayServer.Client.JsonConverters;
using BTCPayServer.Lightning;
using NBitcoin;
using NBitcoin.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class LightningNodeInformationData
{
[JsonProperty("nodeURIs", ItemConverterType = typeof(NodeUriJsonConverter))]
public NodeInfo[] NodeURIs { get; set; }
public int BlockHeight { get; set; }
}
public class LightningChannelData
{
public string RemoteNode { get; set; }
public bool IsPublic { get; set; }
public bool IsActive { get; set; }
[JsonConverter(typeof(LightMoneyJsonConverter))]
public LightMoney Capacity { get; set; }
[JsonConverter(typeof(LightMoneyJsonConverter))]
public LightMoney LocalBalance { get; set; }
public string ChannelPoint { get; set; }
}
}

View File

@ -0,0 +1,21 @@
using BTCPayServer.Client.JsonConverters;
using BTCPayServer.Lightning;
using NBitcoin;
using NBitcoin.JsonConverters;
using Newtonsoft.Json;
using MoneyJsonConverter = BTCPayServer.Client.JsonConverters.MoneyJsonConverter;
namespace BTCPayServer.Client.Models
{
public class OpenLightningChannelRequest
{
[JsonConverter(typeof(NodeUriJsonConverter))]
[JsonProperty("nodeURI")]
public NodeInfo NodeURI { get; set; }
[JsonConverter(typeof(MoneyJsonConverter))]
public Money ChannelAmount { get; set; }
[JsonConverter(typeof(FeeRateJsonConverter))]
public FeeRate FeeRate { get; set; }
}
}

View File

@ -0,0 +1,8 @@
namespace BTCPayServer.Client.Models
{
public class PayLightningInvoiceRequest
{
[Newtonsoft.Json.JsonProperty("BOLT11")]
public string BOLT11 { get; set; }
}
}

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using BTCPayServer.JsonConverters;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BTCPayServer.Client.Models
{
public class PaymentRequestBaseData
{
[JsonProperty(ItemConverterType = typeof(DecimalStringJsonConverter))]
public decimal Amount { get; set; }
public string Currency { get; set; }
public DateTime? ExpiryDate { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Email { get; set; }
public string EmbeddedCSS { get; set; }
public string CustomCSSLink { get; set; }
public bool AllowCustomPaymentAmounts { get; set; }
[JsonExtensionData]
public IDictionary<string, JToken> AdditionalData { get; set; }
}
}

View File

@ -0,0 +1,22 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace BTCPayServer.Client.Models
{
public class PaymentRequestData : PaymentRequestBaseData
{
[JsonConverter(typeof(StringEnumConverter))]
public PaymentRequestData.PaymentRequestStatus Status { get; set; }
public DateTimeOffset Created { get; set; }
public string Id { get; set; }
public bool Archived { get; set; }
public enum PaymentRequestStatus
{
Pending = 0,
Completed = 1,
Expired = 2
}
}
}

View File

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Text;
using BTCPayServer.JsonConverters;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace BTCPayServer.Client.Models
{
public enum PayoutState
{
AwaitingApproval,
AwaitingPayment,
InProgress,
Completed,
Cancelled
}
public class PayoutData
{
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset Date { get; set; }
public string Id { get; set; }
public string PullPaymentId { get; set; }
public string Destination { get; set; }
public string PaymentMethod { get; set; }
[JsonConverter(typeof(DecimalStringJsonConverter))]
public decimal Amount { get; set; }
[JsonConverter(typeof(DecimalStringJsonConverter))]
public decimal? PaymentMethodAmount { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
public PayoutState State { get; set; }
public int Revision { get; set; }
}
}

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using BTCPayServer.Client.JsonConverters;
using BTCPayServer.JsonConverters;
using Newtonsoft.Json;
namespace BTCPayServer.Client.Models
{
public class PullPaymentData
{
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset StartsAt { get; set; }
[JsonConverter(typeof(NBitcoin.JsonConverters.DateTimeToUnixTimeConverter))]
public DateTimeOffset? ExpiresAt { get; set; }
public string Id { get; set; }
public string Name { get; set; }
public string Currency { get; set; }
[JsonConverter(typeof(DecimalStringJsonConverter))]
public decimal Amount { get; set; }
[JsonConverter(typeof(TimeSpanJsonConverter))]
public TimeSpan? Period { get; set; }
public bool Archived { get; set; }
public string ViewLink { get; set; }
}
}

View File

@ -0,0 +1,47 @@
using System.Collections.Generic;
namespace BTCPayServer.Client.Models
{
public class ServerInfoData
{
/// <summary>
/// the BTCPay Server version
/// </summary>
public string Version { get; set; }
/// <summary>
/// the Tor hostname
/// </summary>
public string Onion { get; set; }
/// <summary>
/// the payment methods this server supports
/// </summary>
public IEnumerable<string> SupportedPaymentMethods { get; set; }
/// <summary>
/// are all chains fully synched
/// </summary>
public bool FullySynched { get; set; }
/// <summary>
/// detailed sync information per chain
/// </summary>
public IEnumerable<ServerInfoSyncStatusData> SyncStatus { get; set; }
}
public class ServerInfoSyncStatusData
{
public string CryptoCode { get; set; }
public int ChainHeight { get; set; }
public int? SyncHeight { get; set; }
public ServerInfoNodeData NodeInformation { get; set; }
}
public class ServerInfoNodeData
{
public int Headers { get; set; }
public int Blocks { get; set; }
public double VerificationProgress { get; set; }
}
}

View File

@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using BTCPayServer.Client.JsonConverters;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
namespace BTCPayServer.Client.Models
{
public abstract class StoreBaseData
{
/// <summary>
/// the name of the store
/// </summary>
public string Name { get; set; }
public string Website { get; set; }
[JsonConverter(typeof(TimeSpanJsonConverter))]
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public TimeSpan InvoiceExpiration { get; set; } = TimeSpan.FromMinutes(15);
[JsonConverter(typeof(TimeSpanJsonConverter))]
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public TimeSpan MonitoringExpiration { get; set; } = TimeSpan.FromMinutes(60);
[JsonConverter(typeof(StringEnumConverter))]
public SpeedPolicy SpeedPolicy { get; set; }
public string LightningDescriptionTemplate { get; set; }
public double PaymentTolerance { get; set; } = 0;
public bool AnyoneCanCreateInvoice { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public bool ShowRecommendedFee { get; set; } = true;
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public int RecommendedFeeBlockTarget { get; set; } = 1;
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string DefaultLang { get; set; } = "en";
public bool LightningAmountInSatoshi { get; set; }
public string CustomLogo { get; set; }
public string CustomCSS { get; set; }
public string HtmlTitle { get; set; }
public bool RedirectAutomatically { get; set; }
public bool RequiresRefundEmail { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public NetworkFeeMode NetworkFeeMode { get; set; } = NetworkFeeMode.Never;
public bool PayJoinEnabled { get; set; }
public bool LightningPrivateRouteHints { get; set; }
[JsonExtensionData]
public IDictionary<string, JToken> AdditionalData { get; set; }
}
public enum NetworkFeeMode
{
MultiplePaymentsOnly,
Always,
Never
}
public enum SpeedPolicy
{
HighSpeed = 0,
MediumSpeed = 1,
LowSpeed = 2,
LowMediumSpeed = 3
}
}

View File

@ -0,0 +1,10 @@
namespace BTCPayServer.Client.Models
{
public class StoreData : StoreBaseData
{
/// <summary>
/// the id of the store
/// </summary>
public string Id { get; set; }
}
}

View File

@ -0,0 +1,6 @@
namespace BTCPayServer.Client.Models
{
public class UpdatePaymentRequestRequest : PaymentRequestBaseData
{
}
}

View File

@ -0,0 +1,6 @@
namespace BTCPayServer.Client.Models
{
public class UpdateStoreRequest : StoreBaseData
{
}
}

View File

@ -0,0 +1,207 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace BTCPayServer.Client
{
public class Policies
{
public const string CanCreateLightningInvoiceInternalNode = "btcpay.server.cancreatelightninginvoiceinternalnode";
public const string CanCreateLightningInvoiceInStore = "btcpay.store.cancreatelightninginvoice";
public const string CanUseInternalLightningNode = "btcpay.server.canuseinternallightningnode";
public const string CanUseLightningNodeInStore = "btcpay.store.canuselightningnode";
public const string CanModifyServerSettings = "btcpay.server.canmodifyserversettings";
public const string CanModifyStoreSettings = "btcpay.store.canmodifystoresettings";
public const string CanViewStoreSettings = "btcpay.store.canviewstoresettings";
public const string CanCreateInvoice = "btcpay.store.cancreateinvoice";
public const string CanViewPaymentRequests = "btcpay.store.canviewpaymentrequests";
public const string CanModifyPaymentRequests = "btcpay.store.canmodifypaymentrequests";
public const string CanModifyProfile = "btcpay.user.canmodifyprofile";
public const string CanViewProfile = "btcpay.user.canviewprofile";
public const string CanCreateUser = "btcpay.server.cancreateuser";
public const string CanManagePullPayments = "btcpay.store.canmanagepullpayments";
public const string Unrestricted = "unrestricted";
public static IEnumerable<string> AllPolicies
{
get
{
yield return CanCreateInvoice;
yield return CanModifyServerSettings;
yield return CanModifyStoreSettings;
yield return CanViewStoreSettings;
yield return CanViewPaymentRequests;
yield return CanModifyPaymentRequests;
yield return CanModifyProfile;
yield return CanViewProfile;
yield return CanCreateUser;
yield return Unrestricted;
yield return CanUseInternalLightningNode;
yield return CanCreateLightningInvoiceInternalNode;
yield return CanUseLightningNodeInStore;
yield return CanCreateLightningInvoiceInStore;
yield return CanManagePullPayments;
}
}
public static bool IsValidPolicy(string policy)
{
return AllPolicies.Any(p => p.Equals(policy, StringComparison.OrdinalIgnoreCase));
}
public static bool IsStorePolicy(string policy)
{
return policy.StartsWith("btcpay.store", StringComparison.OrdinalIgnoreCase);
}
public static bool IsStoreModifyPolicy(string policy)
{
return policy.StartsWith("btcpay.store.canmodify", StringComparison.OrdinalIgnoreCase);
}
public static bool IsServerPolicy(string policy)
{
return policy.StartsWith("btcpay.server", StringComparison.OrdinalIgnoreCase);
}
}
public class Permission
{
public static Permission Create(string policy, string scope = null)
{
if (TryCreatePermission(policy, scope, out var r))
return r;
throw new ArgumentException("Invalid Permission");
}
public static bool TryCreatePermission(string policy, string scope, out Permission permission)
{
permission = null;
if (policy == null)
throw new ArgumentNullException(nameof(policy));
policy = policy.Trim().ToLowerInvariant();
if (!Policies.IsValidPolicy(policy))
return false;
if (scope != null && !Policies.IsStorePolicy(policy))
return false;
permission = new Permission(policy, scope);
return true;
}
public static bool TryParse(string str, out Permission permission)
{
permission = null;
if (str == null)
throw new ArgumentNullException(nameof(str));
str = str.Trim();
var separator = str.IndexOf(':');
if (separator == -1)
{
str = str.ToLowerInvariant();
if (!Policies.IsValidPolicy(str))
return false;
permission = new Permission(str, null);
return true;
}
else
{
var policy = str.Substring(0, separator).ToLowerInvariant();
if (!Policies.IsValidPolicy(policy))
return false;
if (!Policies.IsStorePolicy(policy))
return false;
var storeId = str.Substring(separator + 1);
if (storeId.Length == 0)
return false;
permission = new Permission(policy, storeId);
return true;
}
}
internal Permission(string policy, string scope)
{
Policy = policy;
Scope = scope;
}
public bool Contains(Permission subpermission)
{
if (subpermission is null)
throw new ArgumentNullException(nameof(subpermission));
if (!ContainsPolicy(subpermission.Policy))
{
return false;
}
if (!Policies.IsStorePolicy(subpermission.Policy))
return true;
return Scope == null || subpermission.Scope == this.Scope;
}
public static IEnumerable<Permission> ToPermissions(string[] permissions)
{
if (permissions == null)
throw new ArgumentNullException(nameof(permissions));
foreach (var p in permissions)
{
if (TryParse(p, out var pp))
yield return pp;
}
}
private bool ContainsPolicy(string subpolicy)
{
if (this.Policy == Policies.Unrestricted)
return true;
if (this.Policy == subpolicy)
return true;
switch (subpolicy)
{
case Policies.CanViewStoreSettings when this.Policy == Policies.CanModifyStoreSettings:
case Policies.CanCreateInvoice when this.Policy == Policies.CanModifyStoreSettings:
case Policies.CanViewProfile when this.Policy == Policies.CanModifyProfile:
case Policies.CanModifyPaymentRequests when this.Policy == Policies.CanModifyStoreSettings:
case Policies.CanViewPaymentRequests when this.Policy == Policies.CanModifyStoreSettings:
case Policies.CanViewPaymentRequests when this.Policy == Policies.CanViewStoreSettings:
case Policies.CanCreateLightningInvoiceInternalNode when this.Policy == Policies.CanUseInternalLightningNode:
case Policies.CanCreateLightningInvoiceInStore when this.Policy == Policies.CanUseLightningNodeInStore:
return true;
default:
return false;
}
}
public string Scope { get; }
public string Policy { get; }
public override string ToString()
{
if (Scope != null)
{
return $"{Policy}:{Scope}";
}
return Policy;
}
public override bool Equals(object obj)
{
Permission item = obj as Permission;
if (item == null)
return false;
return ToString().Equals(item.ToString());
}
public static bool operator ==(Permission a, Permission b)
{
if (System.Object.ReferenceEquals(a, b))
return true;
if (((object)a == null) || ((object)b == null))
return false;
return a.ToString() == b.ToString();
}
public static bool operator !=(Permission a, Permission b)
{
return !(a == b);
}
public override int GetHashCode()
{
return ToString().GetHashCode();
}
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using NBitcoin;
using NBXplorer;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
public void InitBitcoin()
{
var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("BTC");
Add(new BTCPayNetwork()
{
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Bitcoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/tx/{0}" : "https://blockstream.info/testnet/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "bitcoin",
CryptoImagePath = "imlegacy/bitcoin.svg",
LightningImagePath = "imlegacy/bitcoin-lightning.svg",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("0'") : new KeyPath("1'"),
SupportRBF = true,
SupportPayJoin = true,
//https://github.com/spesmilo/electrum/blob/11733d6bc271646a00b69ff07657119598874da4/electrum/constants.py
ElectrumMapping = NetworkType == NetworkType.Mainnet
? new Dictionary<uint, DerivationType>()
{
{0x0488b21eU, DerivationType.Legacy }, // xpub
{0x049d7cb2U, DerivationType.SegwitP2SH }, // ypub
{0x04b24746U, DerivationType.Segwit }, //zpub
}
: new Dictionary<uint, DerivationType>()
{
{0x043587cfU, DerivationType.Legacy}, // tpub
{0x044a5262U, DerivationType.SegwitP2SH}, // upub
{0x045f1cf6U, DerivationType.Segwit} // vpub
}
});
}
}
}

View File

@ -12,7 +12,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "BGold",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://explorer.bitcoingold.org/insight/tx/{0}/" : "https://test-explorer.bitcoingold.org/insight/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "bitcoingold",
DefaultRateRules = new[]

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,10 +17,9 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Bitcoinplus",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://chainz.cryptoid.info/xbc/tx.dws?{0}" : "https://chainz.cryptoid.info/xbc/tx.dws?{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "bitcoinplus",
DefaultRateRules = new[]
DefaultRateRules = new[]
{
"XBC_X = XBC_BTC * BTC_X",
"XBC_BTC = cryptopia(XBC_BTC)"

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,7 +17,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Bitcore",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://insight.bitcore.cc/tx/{0}" : "https://insight.bitcore.cc/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "bitcore",
DefaultRateRules = new[]

View File

@ -0,0 +1,33 @@
using NBitcoin;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
public void InitChaincoin()
{
var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("CHC");
Add(new BTCPayNetwork()
{
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Chaincoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet
? "https://explorer.chaincoin.org/Explorer/Transaction/{0}"
: "https://test.explorer.chaincoin.org/Explorer/Transaction/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "chaincoin",
DefaultRateRules = new[]
{
"CHC_X = CHC_BTC * BTC_X",
"CHC_BTC = txbit(CHC_X)"
},
CryptoImagePath = "imlegacy/chaincoin.png",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
//https://github.com/satoshilabs/slips/blob/master/slip-0044.md
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("711'")
: new KeyPath("1'")
});
}
}
}

View File

@ -15,7 +15,6 @@ namespace BTCPayServer
BlockExplorerLink = NetworkType == NetworkType.Mainnet
? "https://insight.dash.org/insight/tx/{0}"
: "https://testnet-insight.dashevo.org/insight/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "dash",
DefaultRateRules = new[]
@ -27,8 +26,7 @@ namespace BTCPayServer
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
//https://github.com/satoshilabs/slips/blob/master/slip-0044.md
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("5'")
: new KeyPath("1'"),
MinFee = Money.Satoshis(1m)
: new KeyPath("1'")
});
}
}

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,7 +17,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Dogecoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://dogechain.info/tx/{0}" : "https://dogechain.info/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "dogecoin",
DefaultRateRules = new[]
@ -28,8 +26,7 @@ namespace BTCPayServer
},
CryptoImagePath = "imlegacy/dogecoin.png",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("3'") : new KeyPath("1'"),
MinFee = Money.Coins(1m)
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("3'") : new KeyPath("1'")
});
}
}

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,7 +17,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Feathercoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://explorer.feathercoin.com/tx/{0}" : "https://explorer.feathercoin.com/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "feathercoin",
DefaultRateRules = new[]

View File

@ -10,25 +10,27 @@ namespace BTCPayServer
{
public void InitGroestlcoin()
{
var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("GRS");
Add(new BTCPayNetwork()
{
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Groestlcoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://chainz.cryptoid.info/grs/tx.dws?{0}.htm" : "https://chainz.cryptoid.info/grs-test/tx.dws?{0}.htm",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
BlockExplorerLink = NetworkType == NetworkType.Mainnet
? "https://chainz.cryptoid.info/grs/tx.dws?{0}.htm"
: "https://chainz.cryptoid.info/grs-test/tx.dws?{0}.htm",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "groestlcoin",
DefaultRateRules = new[]
{
"GRS_X = GRS_BTC * BTC_X",
"GRS_BTC = bittrex(GRS_BTC)"
"GRS_X = GRS_BTC * BTC_X",
"GRS_BTC = bittrex(GRS_BTC)"
},
CryptoImagePath = "imlegacy/groestlcoin.png",
LightningImagePath = "imlegacy/groestlcoin-lightning.svg",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("17'") : new KeyPath("1'")
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("17'") : new KeyPath("1'"),
SupportRBF = true,
SupportPayJoin = true
});
}
}

View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using NBitcoin;
using NBXplorer;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
public void InitLitecoin()
{
var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("LTC");
Add(new BTCPayNetwork()
{
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Litecoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet
? "https://live.blockcypher.com/ltc/tx/{0}/"
: "http://explorer.litecointools.com/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "litecoin",
DefaultRateRules = new[]
{
"LTC_X = LTC_BTC * BTC_X",
"LTC_BTC = coingecko(LTC_BTC)"
},
CryptoImagePath = "imlegacy/litecoin.svg",
LightningImagePath = "imlegacy/litecoin-lightning.svg",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("2'") : new KeyPath("1'"),
//https://github.com/pooler/electrum-ltc/blob/0d6989a9d2fb2edbea421c116e49d1015c7c5a91/electrum_ltc/constants.py
ElectrumMapping = NetworkType == NetworkType.Mainnet
? new Dictionary<uint, DerivationType>()
{
{0x0488b21eU, DerivationType.Legacy },
{0x049d7cb2U, DerivationType.SegwitP2SH },
{0x04b24746U, DerivationType.Segwit },
}
: new Dictionary<uint, DerivationType>()
{
{0x043587cfU, DerivationType.Legacy },
{0x044a5262U, DerivationType.SegwitP2SH },
{0x045f1cf6U, DerivationType.Segwit }
}
});
}
}
}

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,7 +17,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Monacoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://mona.insight.monaco-ex.org/insight/tx/{0}" : "https://testnet-mona.insight.monaco-ex.org/insight/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "monacoin",
DefaultRateRules = new[]

View File

@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -17,14 +16,13 @@ namespace BTCPayServer
{
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Polis",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://insight.polispay.org/tx/{0}" : "https://insight.polispay.org/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockbook.polispay.org/tx/{0}" : "https://blockbook.polispay.org/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "polis",
DefaultRateRules = new[]
{
"POLIS_X = POLIS_BTC * BTC_X",
"POLIS_BTC = cryptopia(POLIS_BTC)"
"POLIS_BTC = polispay(POLIS_BTC)"
},
CryptoImagePath = "imlegacy/polis.png",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),

View File

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,7 +17,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Ufo",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://chainz.cryptoid.info/ufo/tx.dws?{0}" : "https://chainz.cryptoid.info/ufo/tx.dws?{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "ufo",
DefaultRateRules = new[]

View File

@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
@ -18,7 +17,6 @@ namespace BTCPayServer
CryptoCode = nbxplorerNetwork.CryptoCode,
DisplayName = "Viacoin",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://explorer.viacoin.org/tx/{0}" : "https://explorer.viacoin.org/tx/{0}",
NBitcoinNetwork = nbxplorerNetwork.NBitcoinNetwork,
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "viacoin",
DefaultRateRules = new[]

View File

@ -3,17 +3,14 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using BTCPayServer.Services.Rates;
using Microsoft.Extensions.Caching.Memory;
using NBitcoin;
using NBitpayClient;
using NBXplorer;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
Dictionary<string, BTCPayNetwork> _Networks = new Dictionary<string, BTCPayNetwork>();
Dictionary<string, BTCPayNetworkBase> _Networks = new Dictionary<string, BTCPayNetworkBase>();
private readonly NBXplorerNetworkProvider _NBXplorerNetworkProvider;
@ -25,13 +22,14 @@ namespace BTCPayServer
}
}
BTCPayNetworkProvider(BTCPayNetworkProvider filtered, string[] cryptoCodes)
BTCPayNetworkProvider(BTCPayNetworkProvider unfiltered, string[] cryptoCodes)
{
NetworkType = filtered.NetworkType;
_NBXplorerNetworkProvider = new NBXplorerNetworkProvider(filtered.NetworkType);
_Networks = new Dictionary<string, BTCPayNetwork>();
UnfilteredNetworks = unfiltered.UnfilteredNetworks ?? unfiltered;
NetworkType = unfiltered.NetworkType;
_NBXplorerNetworkProvider = new NBXplorerNetworkProvider(unfiltered.NetworkType);
_Networks = new Dictionary<string, BTCPayNetworkBase>();
cryptoCodes = cryptoCodes.Select(c => c.ToUpperInvariant()).ToArray();
foreach (var network in filtered._Networks)
foreach (var network in unfiltered._Networks)
{
if(cryptoCodes.Contains(network.Key))
{
@ -40,12 +38,17 @@ namespace BTCPayServer
}
}
public BTCPayNetworkProvider UnfilteredNetworks { get; }
public NetworkType NetworkType { get; private set; }
public BTCPayNetworkProvider(NetworkType networkType)
{
UnfilteredNetworks = this;
_NBXplorerNetworkProvider = new NBXplorerNetworkProvider(networkType);
NetworkType = networkType;
InitBitcoin();
InitLiquid();
InitLiquidAssets();
InitLitecoin();
InitBitcore();
InitDogecoin();
@ -55,9 +58,27 @@ namespace BTCPayServer
InitFeathercoin();
InitGroestlcoin();
InitViacoin();
InitMonero();
InitPolis();
InitChaincoin();
// Assume that electrum mappings are same as BTC if not specified
foreach (var network in _Networks.Values.OfType<BTCPayNetwork>())
{
if(network.ElectrumMapping.Count == 0)
{
network.ElectrumMapping = GetNetwork<BTCPayNetwork>("BTC").ElectrumMapping;
if (!network.NBitcoinNetwork.Consensus.SupportSegwit)
{
network.ElectrumMapping =
network.ElectrumMapping
.Where(kv => kv.Value == DerivationType.Legacy)
.ToDictionary(k => k.Key, k => k.Value);
}
}
}
// Disabled because of https://twitter.com/Cryptopia_NZ/status/1085084168852291586
//InitPolis();
//InitBitcoinplus();
//InitUfo();
}
@ -73,20 +94,20 @@ namespace BTCPayServer
}
[Obsolete("To use only for legacy stuff")]
public BTCPayNetwork BTC
{
get
{
return GetNetwork("BTC");
}
}
public BTCPayNetwork BTC => GetNetwork<BTCPayNetwork>("BTC");
public void Add(BTCPayNetwork network)
{
if (network.NBitcoinNetwork == null)
return;
Add(network as BTCPayNetworkBase);
}
public void Add(BTCPayNetworkBase network)
{
_Networks.Add(network.CryptoCode.ToUpperInvariant(), network);
}
public IEnumerable<BTCPayNetwork> GetAll()
public IEnumerable<BTCPayNetworkBase> GetAll()
{
return _Networks.Values.ToArray();
}
@ -95,15 +116,20 @@ namespace BTCPayServer
{
return _Networks.ContainsKey(cryptoCode.ToUpperInvariant());
}
public BTCPayNetwork GetNetwork(string cryptoCode)
public BTCPayNetworkBase GetNetwork(string cryptoCode)
{
if(!_Networks.TryGetValue(cryptoCode.ToUpperInvariant(), out BTCPayNetwork network))
return GetNetwork<BTCPayNetworkBase>(cryptoCode.ToUpperInvariant());
}
public T GetNetwork<T>(string cryptoCode) where T: BTCPayNetworkBase
{
if (cryptoCode == null)
throw new ArgumentNullException(nameof(cryptoCode));
if(!_Networks.TryGetValue(cryptoCode.ToUpperInvariant(), out BTCPayNetworkBase network))
{
if (cryptoCode == "XBT")
return GetNetwork("BTC");
return GetNetwork<T>("BTC");
}
return network;
return network as T;
}
}
}

View File

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using NBitcoin;
using NBitcoin.Altcoins;
using NBitcoin.Altcoins.Elements;
using NBXplorer;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
public void InitLiquid()
{
var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("LBTC");
Add(new ElementsBTCPayNetwork()
{
AssetId = NetworkType == NetworkType.Mainnet ? ElementsParams<Liquid>.PeggedAssetId: ElementsParams<Liquid.LiquidRegtest>.PeggedAssetId,
CryptoCode = "LBTC",
NetworkCryptoCode = "LBTC",
DisplayName = "Liquid Bitcoin",
DefaultRateRules = new[]
{
"LBTC_X = LBTC_BTC * BTC_X",
"LBTC_BTC = 1",
},
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "liquidnetwork",
CryptoImagePath = "imlegacy/liquid.png",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
SupportRBF = true
});
}
}
}

View File

@ -0,0 +1,83 @@
using NBitcoin;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
public void InitLiquidAssets()
{
var nbxplorerNetwork = NBXplorerNetworkProvider.GetFromCryptoCode("LBTC");
Add(new ElementsBTCPayNetwork()
{
CryptoCode = "USDt",
NetworkCryptoCode = "LBTC",
ShowSyncSummary = false,
DefaultRateRules = new[]
{
"USDT_UST = 1",
"USDT_X = USDT_BTC * BTC_X",
"USDT_BTC = bitfinex(UST_BTC)",
},
AssetId = new uint256("ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2"),
DisplayName = "Liquid Tether",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "liquidnetwork",
CryptoImagePath = "imlegacy/liquid-tether.svg",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
SupportRBF = true,
SupportLightning = false
});
Add(new ElementsBTCPayNetwork()
{
CryptoCode = "ETB",
NetworkCryptoCode = "LBTC",
ShowSyncSummary = false,
DefaultRateRules = new[]
{
"ETB_X = ETB_BTC * BTC_X",
"ETB_BTC = bitpay(ETB_BTC)"
},
Divisibility = 2,
AssetId = new uint256("aa775044c32a7df391902b3659f46dfe004ccb2644ce2ddc7dba31e889391caf"),
DisplayName = "Ethiopian Birr",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "liquidnetwork",
CryptoImagePath = "imlegacy/etb.png",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
SupportRBF = true,
SupportLightning = false
});
Add(new ElementsBTCPayNetwork()
{
CryptoCode = "LCAD",
NetworkCryptoCode = "LBTC",
ShowSyncSummary = false,
DefaultRateRules = new[]
{
"LCAD_CAD = 1",
"LCAD_X = CAD_BTC * BTC_X",
"LCAD_BTC = bylls(CAD_BTC)",
},
AssetId = new uint256("0e99c1a6da379d1f4151fb9df90449d40d0608f6cb33a5bcbfc8c265f42bab0a"),
DisplayName = "Liquid CAD",
BlockExplorerLink = NetworkType == NetworkType.Mainnet ? "https://blockstream.info/liquid/tx/{0}" : "https://blockstream.info/testnet/liquid/tx/{0}",
NBXplorerNetwork = nbxplorerNetwork,
UriScheme = "liquidnetwork",
CryptoImagePath = "imlegacy/lcad.png",
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(NetworkType),
CoinType = NetworkType == NetworkType.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
SupportRBF = true,
SupportLightning = false
});
}
}
}

View File

@ -0,0 +1,60 @@
using System.Collections.Generic;
using System.Linq;
using NBitcoin;
using NBXplorer;
using NBXplorer.Models;
namespace BTCPayServer
{
public class ElementsBTCPayNetwork : BTCPayNetwork
{
public string NetworkCryptoCode { get; set; }
public uint256 AssetId { get; set; }
public override bool ReadonlyWallet { get; set; } = true;
public override IEnumerable<(MatchedOutput matchedOutput, OutPoint outPoint)> GetValidOutputs(
NewTransactionEvent evtOutputs)
{
return evtOutputs.Outputs.Where(output =>
output.Value is AssetMoney assetMoney && assetMoney.AssetId == AssetId).Select(output =>
{
var outpoint = new OutPoint(evtOutputs.TransactionData.TransactionHash, output.Index);
return (output, outpoint);
});
}
public override GetTransactionsResponse FilterValidTransactions(GetTransactionsResponse response)
{
TransactionInformationSet Filter(TransactionInformationSet transactionInformationSet)
{
return new TransactionInformationSet()
{
Transactions =
transactionInformationSet.Transactions.FindAll(information =>
information.Outputs.Any(output =>
output.Value is AssetMoney assetMoney && assetMoney.AssetId == AssetId) ||
information.Inputs.Any(output =>
output.Value is AssetMoney assetMoney && assetMoney.AssetId == AssetId))
};
}
return new GetTransactionsResponse()
{
Height = response.Height,
ConfirmedTransactions = Filter(response.ConfirmedTransactions),
ReplacedTransactions = Filter(response.ReplacedTransactions),
UnconfirmedTransactions = Filter(response.UnconfirmedTransactions)
};
}
public override string GenerateBIP21(string cryptoInfoAddress, Money cryptoInfoDue)
{
//precision 0: 10 = 0.00000010
//precision 2: 10 = 0.00001000
//precision 8: 10 = 10
var money = new Money(cryptoInfoDue.ToDecimal(MoneyUnit.BTC) / decimal.Parse("1".PadRight(1 + 8 - Divisibility, '0')), MoneyUnit.BTC);
return $"{base.GenerateBIP21(cryptoInfoAddress, money)}&assetid={AssetId}";
}
}
}

View File

@ -0,0 +1,27 @@
using NBitcoin;
namespace BTCPayServer
{
public partial class BTCPayNetworkProvider
{
public void InitMonero()
{
Add(new MoneroLikeSpecificBtcPayNetwork()
{
CryptoCode = "XMR",
DisplayName = "Monero",
Divisibility = 12,
BlockExplorerLink =
NetworkType == NetworkType.Mainnet
? "https://www.exploremonero.com/transaction/{0}"
: "https://testnet.xmrchain.net/tx/{0}",
DefaultRateRules = new[]
{
"XMR_X = XMR_BTC * BTC_X",
"XMR_BTC = kraken(XMR_BTC)"
},
CryptoImagePath = "/imlegacy/monero.svg"
});
}
}
}

View File

@ -0,0 +1,7 @@
namespace BTCPayServer
{
public class MoneroLikeSpecificBtcPayNetwork : BTCPayNetworkBase
{
public int MaxTrackedConfirmation = 10;
}
}

View File

@ -0,0 +1,121 @@
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace BTCPayServer.Services.Altcoins.Monero.RPC
{
public class JsonRpcClient
{
private readonly Uri _address;
private readonly string _username;
private readonly string _password;
private readonly HttpClient _httpClient;
public JsonRpcClient(Uri address, string username, string password, HttpClient client = null)
{
_address = address;
_username = username;
_password = password;
_httpClient = client ?? new HttpClient();
}
public async Task<TResponse> SendCommandAsync<TRequest, TResponse>(string method, TRequest data,
CancellationToken cts = default(CancellationToken))
{
var jsonSerializer = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var httpRequest = new HttpRequestMessage()
{
Method = HttpMethod.Post,
RequestUri = new Uri(_address, "json_rpc"),
Content = new StringContent(
JsonConvert.SerializeObject(new JsonRpcCommand<TRequest>(method, data), jsonSerializer),
Encoding.UTF8, "application/json")
};
httpRequest.Headers.Accept.Clear();
httpRequest.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic",
Convert.ToBase64String(Encoding.Default.GetBytes($"{_username}:{_password}")));
var rawResult = await _httpClient.SendAsync(httpRequest, cts);
var rawJson = await rawResult.Content.ReadAsStringAsync();
rawResult.EnsureSuccessStatusCode();
JsonRpcResult<TResponse> response;
try
{
response = JsonConvert.DeserializeObject<JsonRpcResult<TResponse>>(rawJson, jsonSerializer);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(rawJson);
throw;
}
if (response.Error != null)
{
throw new JsonRpcApiException()
{
Error = response.Error
};
}
return response.Result;
}
public class NoRequestModel
{
public static NoRequestModel Instance = new NoRequestModel();
}
internal class JsonRpcApiException : Exception
{
public JsonRpcResultError Error { get; set; }
public override string Message => Error?.Message;
}
public class JsonRpcResultError
{
[JsonProperty("code")] public int Code { get; set; }
[JsonProperty("message")] public string Message { get; set; }
[JsonProperty("data")] dynamic Data { get; set; }
}
internal class JsonRpcResult<T>
{
[JsonProperty("result")] public T Result { get; set; }
[JsonProperty("error")] public JsonRpcResultError Error { get; set; }
[JsonProperty("id")] public string Id { get; set; }
}
internal class JsonRpcCommand<T>
{
[JsonProperty("jsonRpc")] public string JsonRpc { get; set; } = "2.0";
[JsonProperty("id")] public string Id { get; set; } = Guid.NewGuid().ToString();
[JsonProperty("method")] public string Method { get; set; }
[JsonProperty("params")] public T Parameters { get; set; }
public JsonRpcCommand()
{
}
public JsonRpcCommand(string method, T parameters)
{
Method = method;
Parameters = parameters;
}
}
}
}

View File

@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class CreateAccountRequest
{
[JsonProperty("label")] public string Label { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class CreateAccountResponse
{
[JsonProperty("account_index")] public long AccountIndex { get; set; }
[JsonProperty("address")] public string Address { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class CreateAddressRequest
{
[JsonProperty("account_index")] public long AccountIndex { get; set; }
[JsonProperty("label")] public string Label { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class CreateAddressResponse
{
[JsonProperty("address")] public string Address { get; set; }
[JsonProperty("address_index")] public long AddressIndex { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class GetAccountsRequest
{
[JsonProperty("tag")] public string Tag { get; set; }
}
}

View File

@ -0,0 +1,14 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class GetAccountsResponse
{
[JsonProperty("subaddress_accounts")] public List<SubaddressAccount> SubaddressAccounts { get; set; }
[JsonProperty("total_balance")] public decimal TotalBalance { get; set; }
[JsonProperty("total_unlocked_balance")]
public decimal TotalUnlockedBalance { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public class GetFeeEstimateRequest
{
[JsonProperty("grace_blocks")] public int? GraceBlocks { get; set; }
}
}

View File

@ -0,0 +1,11 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public class GetFeeEstimateResponse
{
[JsonProperty("fee")] public long Fee { get; set; }
[JsonProperty("status")] public string Status { get; set; }
[JsonProperty("untrusted")] public bool Untrusted { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class GetHeightResponse
{
[JsonProperty("height")] public long Height { get; set; }
}
}

View File

@ -0,0 +1,11 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public class GetTransferByTransactionIdRequest
{
[JsonProperty("txid")] public string TransactionId { get; set; }
[JsonProperty("account_index")] public long AccountIndex { get; set; }
}
}

View File

@ -0,0 +1,31 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class GetTransferByTransactionIdResponse
{
[JsonProperty("transfer")] public TransferItem Transfer { get; set; }
[JsonProperty("transfers")] public IEnumerable<TransferItem> Transfers { get; set; }
public partial class TransferItem
{
[JsonProperty("address")] public string Address { get; set; }
[JsonProperty("amount")] public long Amount { get; set; }
[JsonProperty("confirmations")] public long Confirmations { get; set; }
[JsonProperty("double_spend_seen")] public bool DoubleSpendSeen { get; set; }
[JsonProperty("height")] public long Height { get; set; }
[JsonProperty("note")] public string Note { get; set; }
[JsonProperty("payment_id")] public string PaymentId { get; set; }
[JsonProperty("subaddr_index")] public SubaddrIndex SubaddrIndex { get; set; }
[JsonProperty("suggested_confirmations_threshold")]
public long SuggestedConfirmationsThreshold { get; set; }
[JsonProperty("timestamp")] public long Timestamp { get; set; }
[JsonProperty("txid")] public string Txid { get; set; }
[JsonProperty("type")] public string Type { get; set; }
[JsonProperty("unlock_time")] public long UnlockTime { get; set; }
}
}
}

View File

@ -0,0 +1,19 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class GetTransfersRequest
{
[JsonProperty("in")] public bool In { get; set; }
[JsonProperty("out")] public bool Out { get; set; }
[JsonProperty("pending")] public bool Pending { get; set; }
[JsonProperty("failed")] public bool Failed { get; set; }
[JsonProperty("pool")] public bool Pool { get; set; }
[JsonProperty("filter_by_height ")] public bool FilterByHeight { get; set; }
[JsonProperty("min_height")] public long MinHeight { get; set; }
[JsonProperty("max_height")] public long MaxHeight { get; set; }
[JsonProperty("account_index")] public long AccountIndex { get; set; }
[JsonProperty("subaddr_indices")] public List<long> SubaddrIndices { get; set; }
}
}

View File

@ -0,0 +1,35 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class GetTransfersResponse
{
[JsonProperty("in")] public List<GetTransfersResponseItem> In { get; set; }
[JsonProperty("out")] public List<GetTransfersResponseItem> Out { get; set; }
[JsonProperty("pending")] public List<GetTransfersResponseItem> Pending { get; set; }
[JsonProperty("failed")] public List<GetTransfersResponseItem> Failed { get; set; }
[JsonProperty("pool")] public List<GetTransfersResponseItem> Pool { get; set; }
public partial class GetTransfersResponseItem
{
[JsonProperty("address")] public string Address { get; set; }
[JsonProperty("amount")] public long Amount { get; set; }
[JsonProperty("confirmations")] public long Confirmations { get; set; }
[JsonProperty("double_spend_seen")] public bool DoubleSpendSeen { get; set; }
[JsonProperty("height")] public long Height { get; set; }
[JsonProperty("note")] public string Note { get; set; }
[JsonProperty("payment_id")] public string PaymentId { get; set; }
[JsonProperty("subaddr_index")] public SubaddrIndex SubaddrIndex { get; set; }
[JsonProperty("suggested_confirmations_threshold")]
public long SuggestedConfirmationsThreshold { get; set; }
[JsonProperty("timestamp")] public long Timestamp { get; set; }
[JsonProperty("txid")] public string Txid { get; set; }
[JsonProperty("type")] public string Type { get; set; }
[JsonProperty("unlock_time")] public long UnlockTime { get; set; }
}
}
}

View File

@ -0,0 +1,33 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class Info
{
[JsonProperty("address")] public string Address { get; set; }
[JsonProperty("avg_download")] public long AvgDownload { get; set; }
[JsonProperty("avg_upload")] public long AvgUpload { get; set; }
[JsonProperty("connection_id")] public string ConnectionId { get; set; }
[JsonProperty("current_download")] public long CurrentDownload { get; set; }
[JsonProperty("current_upload")] public long CurrentUpload { get; set; }
[JsonProperty("height")] public long Height { get; set; }
[JsonProperty("host")] public string Host { get; set; }
[JsonProperty("incoming")] public bool Incoming { get; set; }
[JsonProperty("ip")] public string Ip { get; set; }
[JsonProperty("live_time")] public long LiveTime { get; set; }
[JsonProperty("local_ip")] public bool LocalIp { get; set; }
[JsonProperty("localhost")] public bool Localhost { get; set; }
[JsonProperty("peer_id")] public string PeerId { get; set; }
[JsonProperty("port")]
[JsonConverter(typeof(ParseStringConverter))]
public long Port { get; set; }
[JsonProperty("recv_count")] public long RecvCount { get; set; }
[JsonProperty("recv_idle_time")] public long RecvIdleTime { get; set; }
[JsonProperty("send_count")] public long SendCount { get; set; }
[JsonProperty("send_idle_time")] public long SendIdleTime { get; set; }
[JsonProperty("state")] public string State { get; set; }
[JsonProperty("support_flags")] public long SupportFlags { get; set; }
}
}

View File

@ -0,0 +1,13 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class MakeUriRequest
{
[JsonProperty("address")] public string Address { get; set; }
[JsonProperty("amount")] public long Amount { get; set; }
[JsonProperty("payment_id")] public string PaymentId { get; set; }
[JsonProperty("tx_description")] public string TxDescription { get; set; }
[JsonProperty("recipient_name")] public string RecipientName { get; set; }
}
}

View File

@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class MakeUriResponse
{
[JsonProperty("uri")] public string Uri { get; set; }
}
}

View File

@ -0,0 +1,39 @@
using System;
using System.Globalization;
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
internal class ParseStringConverter : JsonConverter
{
public override bool CanConvert(Type t) => t == typeof(long) || t == typeof(long?);
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null) return null;
var value = serializer.Deserialize<string>(reader);
long l;
if (Int64.TryParse(value, out l))
{
return l;
}
throw new Exception("Cannot unmarshal type long");
}
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
{
if (untypedValue == null)
{
serializer.Serialize(writer, null);
return;
}
var value = (long)untypedValue;
serializer.Serialize(writer, value.ToString(CultureInfo.InvariantCulture));
return;
}
public static readonly ParseStringConverter Singleton = new ParseStringConverter();
}
}

View File

@ -0,0 +1,9 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class Peer
{
[JsonProperty("info")] public Info Info { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class SubaddrIndex
{
[JsonProperty("major")] public long Major { get; set; }
[JsonProperty("minor")] public long Minor { get; set; }
}
}

View File

@ -0,0 +1,14 @@
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class SubaddressAccount
{
[JsonProperty("account_index")] public long AccountIndex { get; set; }
[JsonProperty("balance")] public decimal Balance { get; set; }
[JsonProperty("base_address")] public string BaseAddress { get; set; }
[JsonProperty("label")] public string Label { get; set; }
[JsonProperty("tag")] public string Tag { get; set; }
[JsonProperty("unlocked_balance")] public decimal UnlockedBalance { get; set; }
}
}

View File

@ -0,0 +1,13 @@
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BTCPayServer.Services.Altcoins.Monero.RPC.Models
{
public partial class SyncInfoResponse
{
[JsonProperty("height")] public long Height { get; set; }
[JsonProperty("peers")] public List<Peer> Peers { get; set; }
[JsonProperty("status")] public string Status { get; set; }
[JsonProperty("target_height")] public long? TargetHeight { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System.Globalization;
namespace BTCPayServer.Services.Altcoins.Monero.Utils
{
public class MoneroMoney
{
public static decimal Convert(long piconero)
{
var amt = piconero.ToString(CultureInfo.InvariantCulture).PadLeft(12, '0');
amt = amt.Length == 12 ? $"0.{amt}" : amt.Insert(amt.Length - 12, ".");
return decimal.Parse(amt, CultureInfo.InvariantCulture);
}
public static long Convert(decimal monero)
{
return System.Convert.ToInt64(monero * 1000000000000);
}
}
}

View File

@ -0,0 +1,163 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using NBitcoin;
using NBXplorer;
using NBXplorer.Models;
using Newtonsoft.Json;
namespace BTCPayServer
{
public enum DerivationType
{
Legacy,
SegwitP2SH,
Segwit
}
public class BTCPayDefaultSettings
{
static BTCPayDefaultSettings()
{
_Settings = new Dictionary<NetworkType, BTCPayDefaultSettings>();
foreach (var chainType in new[] { NetworkType.Mainnet, NetworkType.Testnet, NetworkType.Regtest })
{
var settings = new BTCPayDefaultSettings();
_Settings.Add(chainType, settings);
settings.DefaultDataDirectory = StandardConfiguration.DefaultDataDirectory.GetDirectory("BTCPayServer", NBXplorerDefaultSettings.GetFolderName(chainType));
settings.DefaultConfigurationFile = Path.Combine(settings.DefaultDataDirectory, "settings.config");
settings.DefaultPort = (chainType == NetworkType.Mainnet ? 23000 :
chainType == NetworkType.Regtest ? 23002 :
chainType == NetworkType.Testnet ? 23001 : throw new NotSupportedException(chainType.ToString()));
}
}
static Dictionary<NetworkType, BTCPayDefaultSettings> _Settings;
public static BTCPayDefaultSettings GetDefaultSettings(NetworkType chainType)
{
return _Settings[chainType];
}
public string DefaultDataDirectory { get; set; }
public string DefaultConfigurationFile { get; set; }
public int DefaultPort { get; set; }
}
public class BTCPayNetwork:BTCPayNetworkBase
{
public Network NBitcoinNetwork { get { return NBXplorerNetwork?.NBitcoinNetwork; } }
public NBXplorer.NBXplorerNetwork NBXplorerNetwork { get; set; }
public bool SupportRBF { get; internal set; }
public string LightningImagePath { get; set; }
public BTCPayDefaultSettings DefaultSettings { get; set; }
public KeyPath CoinType { get; internal set; }
public Dictionary<uint, DerivationType> ElectrumMapping = new Dictionary<uint, DerivationType>();
public virtual bool WalletSupported { get; set; } = true;
public virtual bool ReadonlyWallet{ get; set; } = false;
public int MaxTrackedConfirmation { get; internal set; } = 6;
public string UriScheme { get; internal set; }
public bool SupportPayJoin { get; set; } = false;
public bool SupportLightning { get; set; } = true;
public KeyPath GetRootKeyPath(DerivationType type)
{
KeyPath baseKey;
if (!NBitcoinNetwork.Consensus.SupportSegwit)
{
baseKey = new KeyPath("44'");
}
else
{
switch (type)
{
case DerivationType.Legacy:
baseKey = new KeyPath("44'");
break;
case DerivationType.SegwitP2SH:
baseKey = new KeyPath("49'");
break;
case DerivationType.Segwit:
baseKey = new KeyPath("84'");
break;
default:
throw new ArgumentOutOfRangeException(nameof(type), type, null);
}
}
return baseKey
.Derive(CoinType);
}
public KeyPath GetRootKeyPath()
{
return new KeyPath(NBitcoinNetwork.Consensus.SupportSegwit ? "49'" : "44'")
.Derive(CoinType);
}
public override T ToObject<T>(string json)
{
return NBXplorerNetwork.Serializer.ToObject<T>(json);
}
public override string ToString<T>(T obj)
{
return NBXplorerNetwork.Serializer.ToString(obj);
}
public virtual IEnumerable<(MatchedOutput matchedOutput, OutPoint outPoint)> GetValidOutputs(NewTransactionEvent evtOutputs)
{
return evtOutputs.Outputs.Select(output =>
{
var outpoint = new OutPoint(evtOutputs.TransactionData.TransactionHash, output.Index);
return (output, outpoint);
});
}
public virtual string GenerateBIP21(string cryptoInfoAddress, Money cryptoInfoDue)
{
return $"{UriScheme}:{cryptoInfoAddress}?amount={cryptoInfoDue.ToString(false, true)}";
}
public virtual GetTransactionsResponse FilterValidTransactions(GetTransactionsResponse response)
{
return response;
}
}
public abstract class BTCPayNetworkBase
{
public bool ShowSyncSummary { get; set; } = true;
public string CryptoCode { get; internal set; }
public string BlockExplorerLink { get; internal set; }
public string DisplayName { get; set; }
public int Divisibility { get; set; } = 8;
[Obsolete("Should not be needed")]
public bool IsBTC
{
get
{
return CryptoCode == "BTC";
}
}
public string CryptoImagePath { get; set; }
public string[] DefaultRateRules { get; internal set; } = Array.Empty<string>();
public override string ToString()
{
return CryptoCode;
}
public virtual T ToObject<T>(string json)
{
return NBitcoin.JsonConverters.Serializer.ToObject<T>(json, null);
}
public virtual string ToString<T>(T obj)
{
return NBitcoin.JsonConverters.Serializer.ToString(obj, null);
}
}
}

View File

@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../Build/Version.csproj" Condition="Exists('../Build/Version.csproj')" />
<Import Project="../Build/Common.csproj" />
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="NBXplorer.Client" Version="3.0.16" />
</ItemGroup>
</Project>

View File

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace BTCPayServer
{
class CustomThreadPool : IDisposable
public class CustomThreadPool : IDisposable
{
CancellationTokenSource _Cancel = new CancellationTokenSource();
TaskCompletionSource<bool> _Exited;

Some files were not shown because too many files have changed in this diff Show More