Compare commits
323 Commits
v0.12.4-rc
...
master
Author | SHA1 | Date |
---|---|---|
|
6027167e2a | 1 day ago |
|
d875d928d7 | 4 days ago |
|
3f2b3786d7 | 4 days ago |
|
f92e1473ca | 4 days ago |
|
125a3b61ae | 1 week ago |
|
5a6b5f2cae | 1 week ago |
|
b6dbd23ae7 | 3 weeks ago |
|
f01815bd04 | 3 weeks ago |
|
22ab6d1154 | 3 weeks ago |
|
ea7f300360 | 7 months ago |
|
43a46b65e1 | 7 months ago |
|
475b47b7ea | 7 months ago |
|
d083be1196 | 9 months ago |
|
ec58a24ed4 | 9 months ago |
|
82d87b32c1 | 9 months ago |
|
13514c7a62 | 9 months ago |
|
e4a2ef9a21 | 9 months ago |
|
36c5895d4f | 9 months ago |
|
14fd866d1a | 9 months ago |
|
ed5a493654 | 9 months ago |
|
74af120c8f | 9 months ago |
|
d478356076 | 9 months ago |
|
53eb5f086b | 9 months ago |
|
b603045a26 | 9 months ago |
|
66bc43543d | 9 months ago |
|
5ed34f0aa5 | 9 months ago |
|
95c0b7feeb | 9 months ago |
|
1acbfab1de | 9 months ago |
|
0040d38b50 | 9 months ago |
|
52ad99941e | 9 months ago |
|
89d8a44164 | 9 months ago |
|
3b2f17873a | 9 months ago |
|
f8393d570e | 9 months ago |
|
6079faacce | 9 months ago |
|
aa9bf3549c | 9 months ago |
|
5523794f47 | 9 months ago |
|
656ab99f88 | 9 months ago |
|
15080d6749 | 9 months ago |
|
36e1d39170 | 9 months ago |
|
168aa3bc90 | 9 months ago |
|
281e51eb7a | 9 months ago |
|
9768963862 | 11 months ago |
|
d875779ba6 | 1 year ago |
|
9f0d2bfadf | 1 year ago |
|
895b1de27d | 1 year ago |
|
fb891b9390 | 1 year ago |
|
12f828e5c2 | 1 year ago |
|
5cb6e10bd2 | 1 year ago |
|
23ff7ac1ec | 1 year ago |
|
cea4c9dec4 | 1 year ago |
|
6a72950fbe | 1 year ago |
|
37606b5889 | 1 year ago |
|
1fcad6306f | 1 year ago |
|
d262c2d88f | 1 year ago |
|
e650f45b9f | 1 year ago |
|
e08f2ebc28 | 1 year ago |
|
89c2291cbd | 1 year ago |
|
beb6ac3b46 | 1 year ago |
|
0aa4ee74e6 | 1 year ago |
|
ed9634ef25 | 1 year ago |
|
40173091e9 | 1 year ago |
|
acd9325451 | 1 year ago |
|
bd86fe79bb | 1 year ago |
|
8bce41276b | 1 year ago |
|
7a18d934f2 | 1 year ago |
|
98cf3ae648 | 1 year ago |
|
7f1fac9a91 | 1 year ago |
|
2e4ed0c963 | 1 year ago |
|
500437ff4c | 1 year ago |
|
804ba91d7b | 1 year ago |
|
f45bbc4ad2 | 1 year ago |
|
e14e5e56c9 | 1 year ago |
|
0cb1e575fc | 1 year ago |
|
e46a5623ba | 1 year ago |
|
3863653a5e | 1 year ago |
|
575e0581f8 | 1 year ago |
|
efdaa13244 | 1 year ago |
|
a2d1833a36 | 1 year ago |
|
6c943e1e93 | 1 year ago |
|
859d882018 | 1 year ago |
|
2d3aa63ce6 | 1 year ago |
|
57a931c161 | 1 year ago |
|
ee9ec62253 | 1 year ago |
|
61d563e952 | 1 year ago |
|
fed5cd9d38 | 1 year ago |
|
17137a1a55 | 1 year ago |
|
1bd901feab | 1 year ago |
|
d847830836 | 1 year ago |
|
bd72be79bb | 1 year ago |
|
ea75a70734 | 1 year ago |
|
813eb218e3 | 1 year ago |
|
d79fb62b70 | 1 year ago |
|
56e5558bf7 | 1 year ago |
|
cc42ce627c | 1 year ago |
|
ffdcd2c78b | 1 year ago |
|
eb7216d068 | 1 year ago |
|
a90e35e631 | 1 year ago |
|
6bcffb6bdc | 1 year ago |
|
9663a0b75b | 1 year ago |
|
8e65dd2c9e | 1 year ago |
|
ceceab04af | 1 year ago |
|
c991464229 | 1 year ago |
|
01ee444941 | 1 year ago |
|
03dca70aa1 | 1 year ago |
|
d1de24310d | 1 year ago |
|
9a6281f234 | 1 year ago |
|
b603181ba2 | 2 years ago |
|
c21d1f5b59 | 2 years ago |
|
ada3c6caf3 | 2 years ago |
|
26ebb316be | 2 years ago |
|
0efaf136ff | 2 years ago |
|
d29a1fbdb8 | 2 years ago |
|
9e91f06530 | 2 years ago |
|
541b1cfa3c | 2 years ago |
|
5107c300eb | 2 years ago |
|
1e52024fab | 2 years ago |
|
2b32f96be3 | 2 years ago |
|
27d210c295 | 2 years ago |
|
ef502511af | 2 years ago |
|
54b1d5b8b9 | 2 years ago |
|
79f3344f7e | 2 years ago |
|
aad8547a8a | 2 years ago |
|
2887a5a80f | 2 years ago |
|
997e41a0c8 | 2 years ago |
|
a099af5bc4 | 2 years ago |
|
9db65d9786 | 2 years ago |
|
3eb784c479 | 2 years ago |
|
ff50809df8 | 2 years ago |
|
4b29474f3e | 2 years ago |
|
296d7f95e0 | 2 years ago |
|
1cdacb9535 | 2 years ago |
|
b1e3af15dd | 2 years ago |
|
a5079bcd61 | 2 years ago |
|
44bb84d6f8 | 2 years ago |
|
0e48676c5c | 2 years ago |
|
6804fc762d | 2 years ago |
|
670141a097 | 2 years ago |
|
d7e15cbfaf | 2 years ago |
|
8339de2a50 | 2 years ago |
|
7a5e78b8cd | 2 years ago |
|
251c450431 | 2 years ago |
|
90dd0ac1c7 | 2 years ago |
|
47f8d3d972 | 2 years ago |
|
006775a0ce | 2 years ago |
|
795a643f39 | 2 years ago |
|
a7dc8c541a | 2 years ago |
|
439fd68077 | 2 years ago |
|
72140a6d1e | 2 years ago |
|
9141658976 | 2 years ago |
|
00a231372a | 2 years ago |
|
8501afe9b5 | 2 years ago |
|
893fcd964b | 2 years ago |
|
ca28744c33 | 2 years ago |
|
6b61e0852f | 2 years ago |
|
7e40c4ea30 | 2 years ago |
|
be34d70670 | 2 years ago |
|
be0d1775d0 | 2 years ago |
|
86d4d15552 | 2 years ago |
|
b4e65e2098 | 2 years ago |
|
baa284b0b9 | 2 years ago |
|
9cc7dcd412 | 2 years ago |
|
a90d4c48b3 | 2 years ago |
|
411a602727 | 2 years ago |
|
abcf1de46a | 2 years ago |
|
04f909329e | 2 years ago |
|
57208d1029 | 2 years ago |
|
9e2c9e05c5 | 2 years ago |
|
921fb6850e | 2 years ago |
|
94a060d489 | 2 years ago |
|
dee4f75d3d | 2 years ago |
|
7c45b044d7 | 2 years ago |
|
7331ba1e50 | 2 years ago |
|
2c113030b4 | 2 years ago |
|
6ce2ae82c8 | 2 years ago |
|
b505931c82 | 2 years ago |
|
a0f037df4a | 2 years ago |
|
65f73057ca | 2 years ago |
|
fc459774ef | 2 years ago |
|
38a02839d6 | 2 years ago |
|
ac6b9d8002 | 2 years ago |
|
5fd902cab8 | 2 years ago |
|
c70911cdd3 | 2 years ago |
|
7f275be31e | 2 years ago |
|
c4c98fdf13 | 2 years ago |
|
0dc879038a | 2 years ago |
|
c0a1472eef | 2 years ago |
|
2807a408a8 | 2 years ago |
|
7fea447975 | 2 years ago |
|
38e2c84957 | 2 years ago |
|
0a22082987 | 2 years ago |
|
3b8ca9177a | 2 years ago |
|
211b6fdca4 | 2 years ago |
|
fa7a4a4c7b | 2 years ago |
|
b13e18a843 | 2 years ago |
|
44321d62e5 | 2 years ago |
|
40b1b80503 | 2 years ago |
|
7277bcb187 | 2 years ago |
|
96b4810020 | 2 years ago |
|
a7c65268a5 | 2 years ago |
|
f8166e67e8 | 2 years ago |
|
2b368c4e39 | 2 years ago |
|
4d163a8216 | 2 years ago |
|
2e54ba92ac | 2 years ago |
|
0ce5107e86 | 2 years ago |
|
dcf29c5e96 | 2 years ago |
|
7363309801 | 2 years ago |
|
44dbc2691d | 2 years ago |
|
6163f24268 | 2 years ago |
|
8b2aec049a | 2 years ago |
|
c2755acb33 | 2 years ago |
|
c4b2e21139 | 2 years ago |
|
76afb82dae | 2 years ago |
|
381be53e40 | 2 years ago |
|
198866791e | 2 years ago |
|
4a9689feca | 2 years ago |
|
20632b6ac3 | 2 years ago |
|
b1b1de5add | 2 years ago |
|
65e4c35226 | 2 years ago |
|
5c79a078fa | 2 years ago |
|
cc1cda3e56 | 2 years ago |
|
246b6ee5d8 | 2 years ago |
|
243b5fd293 | 2 years ago |
|
e62e7473f1 | 2 years ago |
|
72beafa26c | 2 years ago |
|
815446587e | 2 years ago |
|
64034aa017 | 2 years ago |
|
6a19acb351 | 2 years ago |
|
5abe432a2d | 2 years ago |
|
c930b8e121 | 2 years ago |
|
8986fb6771 | 2 years ago |
|
f5fe776cd0 | 2 years ago |
|
744775a197 | 2 years ago |
|
4f6cebc98d | 2 years ago |
|
c0c9d798a1 | 2 years ago |
|
eafc7835f8 | 2 years ago |
|
c487379898 | 2 years ago |
|
d98064ca2c | 2 years ago |
|
e7b03f4b2f | 2 years ago |
|
149561dedb | 2 years ago |
|
d350f1c0f9 | 2 years ago |
|
e74c5bc635 | 2 years ago |
|
772633b0c1 | 2 years ago |
|
24013f6f89 | 2 years ago |
|
7a0bd37d91 | 2 years ago |
|
cfd8f095a3 | 2 years ago |
|
c27ee4ed6a | 2 years ago |
|
d6185dd409 | 2 years ago |
|
a72f00a97b | 2 years ago |
|
8c4443a873 | 2 years ago |
|
6945d084b4 | 2 years ago |
|
dd180cba25 | 2 years ago |
|
daa4c735fb | 2 years ago |
|
f7ed36c5ac | 2 years ago |
|
02390fef1c | 2 years ago |
|
5853ffdfd1 | 2 years ago |
|
556af1e65d | 2 years ago |
|
1307fbc919 | 2 years ago |
|
a0c5da1d5b | 2 years ago |
|
1c365479ad | 2 years ago |
|
c3e217f708 | 2 years ago |
|
487165c197 | 2 years ago |
|
9b519e0267 | 2 years ago |
|
4d5bb8e3dc | 2 years ago |
|
65ee024e8d | 2 years ago |
|
444c657158 | 2 years ago |
|
2e7c9456ea | 2 years ago |
|
1211294ddb | 2 years ago |
|
c9d389cbd7 | 2 years ago |
|
43d5b52d96 | 2 years ago |
|
72fecba40a | 2 years ago |
|
2565d11f19 | 2 years ago |
|
2fe9c9f129 | 2 years ago |
|
88f481d120 | 2 years ago |
|
69a7e3010b | 2 years ago |
|
f63e21b9d9 | 2 years ago |
|
9f5ee4eb5b | 2 years ago |
|
4a470feae9 | 2 years ago |
|
9cff990441 | 2 years ago |
|
59bae5d33a | 2 years ago |
|
cf0cb040d7 | 2 years ago |
|
b4f1b47cf1 | 2 years ago |
|
96d1ebaa5a | 2 years ago |
|
25ba51c467 | 2 years ago |
|
20bb789c47 | 2 years ago |
|
86fd2a7b29 | 2 years ago |
|
6f13a03ec8 | 2 years ago |
|
966791fd80 | 2 years ago |
|
7f00e3de9c | 2 years ago |
|
9bfa04a712 | 2 years ago |
|
c5de2592e6 | 2 years ago |
|
f775f2814f | 2 years ago |
|
32adf76a5a | 2 years ago |
|
c16913402b | 2 years ago |
|
e2eeb8b919 | 2 years ago |
|
ba2a326b6c | 2 years ago |
|
1ec90e9949 | 2 years ago |
|
66a5dd7c24 | 2 years ago |
|
cd2324944c | 2 years ago |
|
89e7ebadaa | 2 years ago |
|
07f8d326d8 | 2 years ago |
|
75b49ef122 | 2 years ago |
|
76cd5f3359 | 2 years ago |
|
05aa2d883f | 2 years ago |
|
d0b651f8db | 2 years ago |
|
a1a507a44d | 2 years ago |
|
9165ae6a58 | 2 years ago |
|
da405a866b | 2 years ago |
|
ce3abf2fa7 | 2 years ago |
|
da96875acb | 2 years ago |
|
dd328cad1c | 2 years ago |
|
a4c29ac35b | 2 years ago |
|
c1f7622d45 | 2 years ago |
|
07f8b53546 | 2 years ago |
|
098788b01e | 2 years ago |
|
428e9a5fd9 | 2 years ago |
|
70abf7af25 | 2 years ago |
|
5b39581b82 | 2 years ago |
|
64173a8b2d | 2 years ago |
|
5f873ca50f | 2 years ago |
|
6728077914 | 2 years ago |
|
a9074f2efc | 3 years ago |
|
4001c83d46 | 3 years ago |
|
492c0f45c9 | 3 years ago |
@ -1,17 +0,0 @@
|
||||
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
||||
# For additional information regarding the format and rule options, please see:
|
||||
# https://github.com/browserslist/browserslist#queries
|
||||
|
||||
# For the full list of supported browsers by the Angular framework, please see:
|
||||
# https://angular.io/guide/browser-support
|
||||
|
||||
# You can see what browsers were selected by your queries by running:
|
||||
# npx browserslist
|
||||
|
||||
last 1 Chrome version
|
||||
last 1 Firefox version
|
||||
last 2 Edge major versions
|
||||
last 2 Safari major versions
|
||||
last 2 iOS major versions
|
||||
Firefox ESR
|
||||
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.
|
@ -1,104 +0,0 @@
|
||||
version: 2
|
||||
jobs:
|
||||
# Define in CircleCi Project Variables: $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS
|
||||
# Publish jobs require those variables
|
||||
publish_docker_linuxamd64:
|
||||
machine:
|
||||
docker_layer_caching: false
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
command: |
|
||||
LATEST_TAG="${CIRCLE_TAG:1}"
|
||||
DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG-amd64"
|
||||
DOCKERHUB_DOCKERFILE="dockerfiles/Dockerfile"
|
||||
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
|
||||
sudo docker build --pull -t "$DOCKERHUB_DESTINATION" -f "$DOCKERHUB_DOCKERFILE" .
|
||||
sudo docker push "$DOCKERHUB_DESTINATION"
|
||||
no_output_timeout: 25m
|
||||
|
||||
publish_docker_linuxarm32v7:
|
||||
machine:
|
||||
docker_layer_caching: false
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
command: |
|
||||
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
LATEST_TAG="${CIRCLE_TAG:1}"
|
||||
DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG-arm32v7"
|
||||
DOCKERHUB_DOCKERFILE="dockerfiles/Dockerfile.arm32v7"
|
||||
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
|
||||
sudo docker build --pull -t "$DOCKERHUB_DESTINATION" -f "$DOCKERHUB_DOCKERFILE" .
|
||||
sudo docker push "$DOCKERHUB_DESTINATION"
|
||||
no_output_timeout: 25m
|
||||
|
||||
publish_docker_linuxarm64v8:
|
||||
machine:
|
||||
docker_layer_caching: false
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
command: |
|
||||
sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
LATEST_TAG="${CIRCLE_TAG:1}"
|
||||
DOCKERHUB_DESTINATION="$DOCKERHUB_REPO:$LATEST_TAG-arm64v8"
|
||||
DOCKERHUB_DOCKERFILE="dockerfiles/Dockerfile.arm64v8"
|
||||
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
|
||||
sudo docker build --pull -t "$DOCKERHUB_DESTINATION" -f "$DOCKERHUB_DOCKERFILE" .
|
||||
sudo docker push "$DOCKERHUB_DESTINATION"
|
||||
no_output_timeout: 25m
|
||||
|
||||
publish_docker_multiarch:
|
||||
machine:
|
||||
enabled: true
|
||||
image: circleci/classic:201808-01
|
||||
steps:
|
||||
- run:
|
||||
command: |
|
||||
# Turn on Experimental features
|
||||
LATEST_TAG="${CIRCLE_TAG:1}"
|
||||
sudo mkdir $HOME/.docker
|
||||
sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json'
|
||||
#
|
||||
sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS
|
||||
#
|
||||
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
|
||||
no_output_timeout: 25m
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
publish:
|
||||
jobs:
|
||||
- publish_docker_linuxamd64:
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /v(?:(?<major>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<minor>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<patch>(?:0|[1-9](?:(?:0|[1-9])+)*))(?:-(?:([A-Za-z1-9])*))?)$/
|
||||
- publish_docker_linuxarm32v7:
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /v(?:(?<major>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<minor>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<patch>(?:0|[1-9](?:(?:0|[1-9])+)*))(?:-(?:([A-Za-z1-9])*))?)$/
|
||||
- publish_docker_linuxarm64v8:
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /v(?:(?<major>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<minor>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<patch>(?:0|[1-9](?:(?:0|[1-9])+)*))(?:-(?:([A-Za-z1-9])*))?)$/
|
||||
- publish_docker_multiarch:
|
||||
requires:
|
||||
- publish_docker_linuxamd64
|
||||
- publish_docker_linuxarm32v7
|
||||
- publish_docker_linuxarm64v8
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /v(?:(?<major>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<minor>(?:0|[1-9](?:(?:0|[1-9])+)*))[.](?<patch>(?:0|[1-9](?:(?:0|[1-9])+)*))(?:-(?:([A-Za-z1-9])*))?)$/
|
@ -1,71 +0,0 @@
|
||||
### Core Lightning Commands Covered on RTL
|
||||
|
||||
=== bitcoin ===
|
||||
- [x] feerates
|
||||
- [x] newaddr
|
||||
- [ ] txdiscard
|
||||
- [ ] txprepare
|
||||
- [ ] txsend
|
||||
- [x] withdraw
|
||||
|
||||
=== channels ===
|
||||
- [x] close
|
||||
- [ ] fundchannel_cancel
|
||||
- [ ] fundchannel_complete
|
||||
- [ ] fundchannel_start
|
||||
- [x] getroute
|
||||
- [x] listchannels
|
||||
- [x] listforwards
|
||||
- [x] setchannelfee
|
||||
|
||||
=== network ===
|
||||
- [x] connect
|
||||
- [x] disconnect
|
||||
- [x] listnodes
|
||||
- [x] listpeers
|
||||
- [ ] ping
|
||||
|
||||
=== payment ===
|
||||
- [ ] createonion
|
||||
- [x] decodepay
|
||||
- [x] delexpiredinvoice
|
||||
- [ ] delinvoice
|
||||
- [x] invoice
|
||||
- [x] listinvoices
|
||||
- [x] listsendpays
|
||||
- [ ] listtransactions
|
||||
- [ ] sendonion
|
||||
- [ ] sendpay
|
||||
- [ ] waitanyinvoice
|
||||
- [ ] waitinvoice
|
||||
- [ ] waitsendpay
|
||||
|
||||
=== plugin ===
|
||||
- [ ] autocleaninvoice
|
||||
- [ ] estimatefees
|
||||
- [x] fundchannel
|
||||
- [ ] getchaininfo
|
||||
- [ ] getrawblockbyheight
|
||||
- [ ] getutxout
|
||||
- [x] listpays
|
||||
- [x] pay
|
||||
- [ ] paystatus
|
||||
- [ ] plugin
|
||||
- [ ] sendrawtransaction
|
||||
|
||||
=== utility ===
|
||||
- [ ] check
|
||||
- [x] checkmessage
|
||||
- [x] getinfo
|
||||
- [ ] getlog
|
||||
- [ ] getsharedsecret
|
||||
- [ ] help
|
||||
- [ ] listconfigs
|
||||
- [x] listfunds
|
||||
- [x] signmessage
|
||||
- [ ] stop
|
||||
- [ ] waitblockheight
|
||||
|
||||
=== developer ===
|
||||
- [ ] dev-listaddrs
|
||||
- [ ] dev-rescan-outputs
|
@ -1,57 +0,0 @@
|
||||
[Intro](../README.md) -- [Application Features](Application_features.md) -- [Road Map](Roadmap.md) -- **LND API Coverage** -- [Application Configurations](Application_configurations.md)
|
||||
|
||||
- [x] GenSeed
|
||||
- [x] InitWallet
|
||||
- [x] UnlockWallet
|
||||
- [ ] ChangePassword
|
||||
- [x] WalletBalance
|
||||
- [x] ChannelBalance
|
||||
- [x] GetTransactions
|
||||
- [ ] EstimateFee
|
||||
- [x] SendCoins
|
||||
- [ ] ListUnspent
|
||||
- [ ] SubscribeTransactions
|
||||
- [ ] SendMany
|
||||
- [x] NewAddress
|
||||
- [x] SignMessage
|
||||
- [x] VerifyMessage
|
||||
- [x] ConnectPeer
|
||||
- [x] DisconnectPeer
|
||||
- [x] ListPeers
|
||||
- [x] GetInfo
|
||||
- [x] PendingChannels
|
||||
- [x] ListChannels
|
||||
- [ ] SubscribeChannelEvents
|
||||
- [x] ClosedChannels
|
||||
- [ ] OpenChannelSync
|
||||
- [x] OpenChannel
|
||||
- [x] CloseChannel
|
||||
- [ ] AbandonChannel
|
||||
- [x] SendPayment
|
||||
- [ ] SendPaymentSync
|
||||
- [ ] SendToRoute
|
||||
- [ ] SendToRouteSync
|
||||
- [x] AddInvoice
|
||||
- [x] ListInvoices
|
||||
- [ ] LookupInvoice
|
||||
- [ ] SubscribeInvoices
|
||||
- [x] DecodePayReq
|
||||
- [x] ListPayments
|
||||
- [ ] DeleteAllPayments
|
||||
- [ ] DescribeGraph
|
||||
- [x] GetChanInfo
|
||||
- [x] GetNodeInfo
|
||||
- [x] QueryRoutes
|
||||
- [x] GetNetworkInfo
|
||||
- [ ] StopDaemon
|
||||
- [ ] SubscribeChannelGraph
|
||||
- [ ] DebugLevel
|
||||
- [x] FeeReport
|
||||
- [x] UpdateChannelPolicy
|
||||
- [x] ForwardingHistory
|
||||
- [x] ExportChannelBackup
|
||||
- [x] ExportAllChannelBackups
|
||||
- [x] VerifyChanBackup
|
||||
- [x] RestoreChannelBackups
|
||||
- [ ] SubscribeChannelBackups
|
||||
- [ ] Messages
|
Binary file not shown.
After Width: | Height: | Size: 139 KiB |
@ -0,0 +1,52 @@
|
||||
name: Build docker images
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: [ 'v*' ]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Release version'
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Setup Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Set up version
|
||||
id: set-version
|
||||
run: |
|
||||
if [ "${{ github.event.inputs.version }}" != "" ]; then
|
||||
VERSION=${{ github.event.inputs.version }}
|
||||
elif [ "${{ github.ref_type }}" == "tag" ]; then
|
||||
VERSION=${{ github.ref_name }}
|
||||
else
|
||||
echo "No version provided and no tag found."
|
||||
exit 1
|
||||
fi
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
tags: |
|
||||
shahanafarooqui/rtl:${{ env.VERSION }}
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"eslint.enable": true,
|
||||
"eslint.validate": [
|
||||
"typescript",
|
||||
"HTML"
|
||||
],
|
||||
"eslint.options": {
|
||||
"configFile": ".eslintrc.json"
|
||||
},
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit"
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
import request from 'request-promise';
|
||||
import { Logger } from '../../utils/logger.js';
|
||||
import { Common } from '../../utils/common.js';
|
||||
let options = null;
|
||||
const logger = Logger;
|
||||
const common = Common;
|
||||
export const getBalance = (req, res, next) => {
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Balance', msg: 'Getting Balance..' });
|
||||
options = common.getOptions(req);
|
||||
if (options.error) {
|
||||
return res.status(options.statusCode).json({ message: options.message, error: options.error });
|
||||
}
|
||||
options.url = req.session.selectedNode.ln_server_url + '/v1/getBalance';
|
||||
request(options).then((body) => {
|
||||
if (!body.totalBalance) {
|
||||
body.totalBalance = 0;
|
||||
}
|
||||
if (!body.confBalance) {
|
||||
body.confBalance = 0;
|
||||
}
|
||||
if (!body.unconfBalance) {
|
||||
body.unconfBalance = 0;
|
||||
}
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Balance', msg: 'Balance Received', data: body });
|
||||
res.status(200).json(body);
|
||||
}).catch((errRes) => {
|
||||
const err = common.handleError(errRes, 'Balance', 'Get Balance Error', req.session.selectedNode);
|
||||
return res.status(err.statusCode).json({ message: err.message, error: err.error });
|
||||
});
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
import request from 'request-promise';
|
||||
import { Logger } from '../../utils/logger.js';
|
||||
import { Common } from '../../utils/common.js';
|
||||
let options = null;
|
||||
const logger = Logger;
|
||||
const common = Common;
|
||||
export const getFees = (req, res, next) => {
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Fees', msg: 'Getting Fees..' });
|
||||
options = common.getOptions(req);
|
||||
if (options.error) {
|
||||
return res.status(options.statusCode).json({ message: options.message, error: options.error });
|
||||
}
|
||||
options.url = req.session.selectedNode.ln_server_url + '/v1/getFees';
|
||||
request(options).then((body) => {
|
||||
if (!body.feeCollected) {
|
||||
body.feeCollected = 0;
|
||||
}
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Fees', msg: 'Fee Received', data: body });
|
||||
res.status(200).json(body);
|
||||
}).catch((errRes) => {
|
||||
const err = common.handleError(errRes, 'Fees', 'Get Fees Error', req.session.selectedNode);
|
||||
return res.status(err.statusCode).json({ message: err.message, error: err.error });
|
||||
});
|
||||
};
|
@ -0,0 +1,33 @@
|
||||
import { Database } from '../../utils/database.js';
|
||||
import { Logger } from '../../utils/logger.js';
|
||||
import { Common } from '../../utils/common.js';
|
||||
import { CollectionsEnum } from '../../models/database.model.js';
|
||||
const logger = Logger;
|
||||
const common = Common;
|
||||
const databaseService = Database;
|
||||
export const getPageSettings = (req, res, next) => {
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Getting Page Settings..' });
|
||||
databaseService.find(req.session.selectedNode, CollectionsEnum.PAGE_SETTINGS).then((settings) => {
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Page Settings Received', data: settings });
|
||||
res.status(200).json(settings);
|
||||
}).catch((errRes) => {
|
||||
const err = common.handleError(errRes, 'Page Settings', 'Page Settings Error', req.session.selectedNode);
|
||||
return res.status(err.statusCode).json({ message: err.message, error: err.error });
|
||||
});
|
||||
};
|
||||
export const savePageSettings = (req, res, next) => {
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Saving Page Settings..' });
|
||||
// eslint-disable-next-line arrow-body-style
|
||||
return Promise.all(req.body.map((page) => databaseService.validateDocument(CollectionsEnum.PAGE_SETTINGS, page))).then((values) => {
|
||||
return databaseService.insert(req.session.selectedNode, CollectionsEnum.PAGE_SETTINGS, req.body).then((insertRes) => {
|
||||
logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Page Settings', msg: 'Page Settings Updated', data: insertRes });
|
||||
res.status(201).json(insertRes);
|
||||
}).catch((insertErrRes) => {
|
||||
const err = common.handleError(insertErrRes, 'Page Settings', 'Page Settings Update Error', req.session.selectedNode);
|
||||
return res.status(err.statusCode).json({ message: err.message, error: err.error });
|
||||
});
|
||||
}).catch((errRes) => {
|
||||
const err = common.handleError(errRes, 'Page Settings', 'Page Settings Validation Error', req.session.selectedNode);
|
||||
return res.status(err.statusCode).json({ message: err.message, error: err.error });
|
||||
});
|
||||
};
|
@ -1,38 +1,161 @@
|
||||
export var CollectionsEnum;
|
||||
(function (CollectionsEnum) {
|
||||
CollectionsEnum["OFFERS"] = "Offers";
|
||||
})(CollectionsEnum || (CollectionsEnum = {}));
|
||||
export var OfferFieldsEnum;
|
||||
(function (OfferFieldsEnum) {
|
||||
OfferFieldsEnum["BOLT12"] = "bolt12";
|
||||
OfferFieldsEnum["AMOUNTMSAT"] = "amountmSat";
|
||||
OfferFieldsEnum["AMOUNTMSAT"] = "amountMSat";
|
||||
OfferFieldsEnum["TITLE"] = "title";
|
||||
OfferFieldsEnum["VENDOR"] = "vendor";
|
||||
OfferFieldsEnum["ISSUER"] = "issuer";
|
||||
OfferFieldsEnum["DESCRIPTION"] = "description";
|
||||
})(OfferFieldsEnum || (OfferFieldsEnum = {}));
|
||||
export const CollectionFieldsEnum = Object.assign({}, OfferFieldsEnum);
|
||||
export class Offer {
|
||||
constructor(bolt12, amountmSat, title, vendor, description, lastUpdatedAt) {
|
||||
constructor(bolt12, amountMSat, title, issuer, description, lastUpdatedAt) {
|
||||
this.bolt12 = bolt12;
|
||||
this.amountmSat = amountmSat;
|
||||
this.amountMSat = amountMSat;
|
||||
this.title = title;
|
||||
this.vendor = vendor;
|
||||
this.issuer = issuer;
|
||||
this.description = description;
|
||||
this.lastUpdatedAt = lastUpdatedAt;
|
||||
}
|
||||
}
|
||||
export const validateDocument = (collectionName, documentToValidate) => {
|
||||
switch (collectionName) {
|
||||
case CollectionsEnum.OFFERS:
|
||||
return validateOffer(documentToValidate);
|
||||
case CollectionsEnum.PAGE_SETTINGS:
|
||||
return validatePageSettings(documentToValidate);
|
||||
default:
|
||||
return ({ isValid: false, error: 'Collection does not exist' });
|
||||
}
|
||||
};
|
||||
export const validateOffer = (documentToValidate) => {
|
||||
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.BOLT12)) {
|
||||
return ({ isValid: false, error: CollectionFieldsEnum.BOLT12 + 'is mandatory.' });
|
||||
return ({ isValid: false, error: 'Bolt12 is mandatory.' });
|
||||
}
|
||||
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.AMOUNTMSAT)) {
|
||||
return ({ isValid: false, error: CollectionFieldsEnum.AMOUNTMSAT + 'is mandatory.' });
|
||||
return ({ isValid: false, error: 'Amount mSat is mandatory.' });
|
||||
}
|
||||
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.TITLE)) {
|
||||
return ({ isValid: false, error: CollectionFieldsEnum.TITLE + 'is mandatory.' });
|
||||
return ({ isValid: false, error: 'Title is mandatory.' });
|
||||
}
|
||||
if ((typeof documentToValidate[CollectionFieldsEnum.AMOUNTMSAT] !== 'number')) {
|
||||
return ({ isValid: false, error: CollectionFieldsEnum.AMOUNTMSAT + 'should be a number.' });
|
||||
return ({ isValid: false, error: 'Amount mSat should be a number.' });
|
||||
}
|
||||
return ({ isValid: true });
|
||||
};
|
||||
export var SortOrderEnum;
|
||||
(function (SortOrderEnum) {
|
||||
SortOrderEnum["ASCENDING"] = "asc";
|
||||
SortOrderEnum["DESCENDING"] = "desc";
|
||||
})(SortOrderEnum || (SortOrderEnum = {}));
|
||||
export var PageSettingsFieldsEnum;
|
||||
(function (PageSettingsFieldsEnum) {
|
||||
PageSettingsFieldsEnum["PAGE_ID"] = "pageId";
|
||||
PageSettingsFieldsEnum["TABLES"] = "tables";
|
||||
})(PageSettingsFieldsEnum || (PageSettingsFieldsEnum = {}));
|
||||
export var TableSettingsFieldsEnum;
|
||||
(function (TableSettingsFieldsEnum) {
|
||||
TableSettingsFieldsEnum["TABLE_ID"] = "tableId";
|
||||
TableSettingsFieldsEnum["RECORDS_PER_PAGE"] = "recordsPerPage";
|
||||
TableSettingsFieldsEnum["SORT_BY"] = "sortBy";
|
||||
TableSettingsFieldsEnum["SORT_ORDER"] = "sortOrder";
|
||||
TableSettingsFieldsEnum["COLUMN_SELECTION"] = "columnSelection";
|
||||
TableSettingsFieldsEnum["COLUMN_SELECTION_SM"] = "columnSelectionSM";
|
||||
})(TableSettingsFieldsEnum || (TableSettingsFieldsEnum = {}));
|
||||
export class TableSetting {
|
||||
constructor(tableId, recordsPerPage, sortBy, sortOrder, columnSelection) {
|
||||
this.tableId = tableId;
|
||||
this.recordsPerPage = recordsPerPage;
|
||||
this.sortBy = sortBy;
|
||||
this.sortOrder = sortOrder;
|
||||
this.columnSelection = columnSelection;
|
||||
}
|
||||
}
|
||||
export class PageSettings {
|
||||
constructor(pageId, tables) {
|
||||
this.pageId = pageId;
|
||||
this.tables = tables;
|
||||
}
|
||||
}
|
||||
export const validatePageSettings = (documentToValidate) => {
|
||||
let errorMessages = '';
|
||||
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.PAGE_ID)) {
|
||||
errorMessages = errorMessages + 'Page ID is mandatory.';
|
||||
}
|
||||
if (!documentToValidate.hasOwnProperty(CollectionFieldsEnum.TABLES)) {
|
||||
errorMessages = errorMessages + 'Tables is mandatory.';
|
||||
}
|
||||
const tablesMessages = documentToValidate.tables.reduce((tableAcc, table, tableIdx) => {
|
||||
let errMsg = '';
|
||||
if (!table.hasOwnProperty(CollectionFieldsEnum.TABLE_ID)) {
|
||||
errMsg = errMsg + 'Table ID is mandatory.';
|
||||
}
|
||||
if (!table.hasOwnProperty(CollectionFieldsEnum.SORT_BY)) {
|
||||
errMsg = errMsg + 'Sort By is mandatory.';
|
||||
}
|
||||
if (!table.hasOwnProperty(CollectionFieldsEnum.SORT_ORDER)) {
|
||||
errMsg = errMsg + 'Sort Order is mandatory.';
|
||||
}
|
||||
if (!table.hasOwnProperty(CollectionFieldsEnum.COLUMN_SELECTION_SM)) {
|
||||
errMsg = errMsg + 'Column Selection (Mobile Resolution) is mandatory.';
|
||||
}
|
||||
if (table[CollectionFieldsEnum.COLUMN_SELECTION_SM].length < 1) {
|
||||
errMsg = errMsg + 'Column Selection (Mobile Resolution) should have at least 1 field.';
|
||||
}
|
||||
if (table[CollectionFieldsEnum.COLUMN_SELECTION_SM].length > 3) {
|
||||
errMsg = errMsg + 'Column Selection (Mobile Resolution) should have maximum 3 fields.';
|
||||
}
|
||||
if (!table.hasOwnProperty(CollectionFieldsEnum.COLUMN_SELECTION)) {
|
||||
errMsg = errMsg + 'Column Selection (Desktop Resolution) is mandatory.';
|
||||
}
|
||||
if (table[CollectionFieldsEnum.COLUMN_SELECTION].length < 2) {
|
||||
errMsg = errMsg + 'Column Selection (Desktop Resolution) should have at least 2 fields.';
|
||||
}
|
||||
if (errMsg.trim() !== '') {
|
||||
tableAcc.push({ table: (table.hasOwnProperty(CollectionFieldsEnum.TABLE_ID) ? table[CollectionFieldsEnum.TABLE_ID] : (tableIdx + 1)), message: errMsg });
|
||||
}
|
||||
return tableAcc;
|
||||
}, []);
|
||||
if (errorMessages.trim() === '' && tablesMessages.length === 0) {
|
||||
return ({ isValid: true });
|
||||
}
|
||||
else {
|
||||
const errObj = { page: (documentToValidate.hasOwnProperty(CollectionFieldsEnum.PAGE_ID) ? documentToValidate[CollectionFieldsEnum.PAGE_ID] : 'Unknown') };
|
||||
if (errorMessages.trim() !== '') {
|
||||
errObj['message'] = errorMessages;
|
||||
}
|
||||
if (tablesMessages.length && tablesMessages.length > 0) {
|
||||
errObj['tables'] = tablesMessages;
|
||||
}
|
||||
return ({ isValid: false, error: JSON.stringify(errObj) });
|
||||
}
|
||||
};
|
||||
export var CollectionsEnum;
|
||||
(function (CollectionsEnum) {
|
||||
CollectionsEnum["OFFERS"] = "Offers";
|
||||
CollectionsEnum["PAGE_SETTINGS"] = "PageSettings";
|
||||
})(CollectionsEnum || (CollectionsEnum = {}));
|
||||
export const CollectionFieldsEnum = { ...OfferFieldsEnum, ...PageSettingsFieldsEnum, ...TableSettingsFieldsEnum };
|
||||
export const LNDCollection = [CollectionsEnum.PAGE_SETTINGS];
|
||||
export const ECLCollection = [CollectionsEnum.PAGE_SETTINGS];
|
||||
export const CLNCollection = [CollectionsEnum.PAGE_SETTINGS, CollectionsEnum.OFFERS];
|
||||
export const ECL_UPDATED_DB = [
|
||||
{
|
||||
pageId: 'peers_channels',
|
||||
tables: [
|
||||
{
|
||||
tableId: 'open_channels',
|
||||
removed: ['buried', 'feeRatePerKw'],
|
||||
renamed: ['isFunder:isInitiator']
|
||||
},
|
||||
{
|
||||
tableId: 'pending_channels',
|
||||
removed: ['buried', 'feeRatePerKw'],
|
||||
renamed: ['isFunder:isInitiator']
|
||||
},
|
||||
{
|
||||
tableId: 'inactive_channels',
|
||||
removed: ['buried', 'feeRatePerKw'],
|
||||
renamed: ['isFunder:isInitiator']
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
@ -0,0 +1,12 @@
|
||||
export var ECLWSEventsEnum;
|
||||
(function (ECLWSEventsEnum) {
|
||||
ECLWSEventsEnum["PAY_RECEIVED"] = "payment-received";
|
||||
ECLWSEventsEnum["PAY_RELAYED"] = "payment-relayed";
|
||||
ECLWSEventsEnum["PAY_SENT"] = "payment-sent";
|
||||
ECLWSEventsEnum["PAY_SETTLING_ONCHAIN"] = "payment-settling-onchain";
|
||||
ECLWSEventsEnum["PAY_FAILED"] = "payment-failed";
|
||||
ECLWSEventsEnum["CHANNEL_OPENED"] = "channel-opened";
|
||||
ECLWSEventsEnum["CHANNEL_STATE_CHANGED"] = "channel-state-changed";
|
||||
ECLWSEventsEnum["CHANNEL_CLOSED"] = "channel-closed";
|
||||
ECLWSEventsEnum["ONION_MESSAGE_RECEIVED"] = "onion-message-received";
|
||||
})(ECLWSEventsEnum || (ECLWSEventsEnum = {}));
|
@ -1,7 +0,0 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getBalance } from '../../controllers/cln/balance.js';
|
||||
const router = Router();
|
||||
router.get('/', isAuthenticated, getBalance);
|
||||
export default router;
|
@ -1,14 +1,12 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { listChannels, openChannel, setChannelFee, closeChannel, getLocalRemoteBalance, listForwards, funderUpdatePolicy, listForwardsPaginated } from '../../controllers/cln/channels.js';
|
||||
import { listPeerChannels, openChannel, setChannelFee, closeChannel, listForwards, funderUpdatePolicy } from '../../controllers/cln/channels.js';
|
||||
const router = Router();
|
||||
router.get('/listChannels', isAuthenticated, listChannels);
|
||||
router.get('/listPeerChannels', isAuthenticated, listPeerChannels);
|
||||
router.post('/', isAuthenticated, openChannel);
|
||||
router.post('/setChannelFee', isAuthenticated, setChannelFee);
|
||||
router.delete('/:channelId', isAuthenticated, closeChannel);
|
||||
router.get('/localRemoteBalance', isAuthenticated, getLocalRemoteBalance);
|
||||
router.get('/listForwards', isAuthenticated, listForwards);
|
||||
router.get('/listForwardsPaginated', isAuthenticated, listForwardsPaginated);
|
||||
router.post('/close/', isAuthenticated, closeChannel);
|
||||
router.post('/listForwards', isAuthenticated, listForwards);
|
||||
router.post('/funderUpdate', isAuthenticated, funderUpdatePolicy);
|
||||
export default router;
|
||||
|
@ -1,7 +0,0 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getFees } from '../../controllers/cln/fees.js';
|
||||
const router = Router();
|
||||
router.get('/', isAuthenticated, getFees);
|
||||
export default router;
|
@ -1,11 +1,10 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getRoute, listNode, listChannel, feeRates, listNodes } from '../../controllers/cln/network.js';
|
||||
import { getRoute, listChannels, feeRates, listNodes } from '../../controllers/cln/network.js';
|
||||
const router = Router();
|
||||
router.get('/getRoute/:destPubkey/:amount', isAuthenticated, getRoute);
|
||||
router.get('/listNode/:id', isAuthenticated, listNode);
|
||||
router.get('/listChannel/:channelShortId', isAuthenticated, listChannel);
|
||||
router.get('/feeRates/:feeRateStyle', isAuthenticated, feeRates);
|
||||
router.get('/listNodes', isAuthenticated, listNodes);
|
||||
router.post('/listNodes', isAuthenticated, listNodes);
|
||||
router.post('/getRoute', isAuthenticated, getRoute);
|
||||
router.post('/feeRates', isAuthenticated, feeRates);
|
||||
router.post('/listChannels', isAuthenticated, listChannels);
|
||||
export default router;
|
||||
|
@ -1,11 +1,12 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getChannels, getChannelStats, openChannel, updateChannelRelayFee, closeChannel } from '../../controllers/eclair/channels.js';
|
||||
import { getChannels, getChannelStats, openChannel, updateChannelRelayFee, closeChannel, circularRebalance } from '../../controllers/eclair/channels.js';
|
||||
const router = Router();
|
||||
router.get('/', isAuthenticated, getChannels);
|
||||
router.get('/stats', isAuthenticated, getChannelStats);
|
||||
router.post('/', isAuthenticated, openChannel);
|
||||
router.post('/updateRelayFee', isAuthenticated, updateChannelRelayFee);
|
||||
router.post('/circularRebalance', circularRebalance);
|
||||
router.delete('/', isAuthenticated, closeChannel);
|
||||
export default router;
|
||||
|
@ -1,7 +1,8 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getNodes } from '../../controllers/eclair/network.js';
|
||||
import { getNodes, findRouteBetweenNodes } from '../../controllers/eclair/network.js';
|
||||
const router = Router();
|
||||
router.get('/nodes/:id', isAuthenticated, getNodes);
|
||||
router.get('/routebetweennodes', isAuthenticated, findRouteBetweenNodes);
|
||||
export default router;
|
||||
|
@ -1,10 +1,11 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { queryPaymentRoute, decodePayment, getSentPaymentsInformation, postPayment } from '../../controllers/eclair/payments.js';
|
||||
import { queryPaymentRoute, decodePayment, getSentPaymentsInformation, postPayment, sendPaymentToRoute } from '../../controllers/eclair/payments.js';
|
||||
const router = Router();
|
||||
router.get('/route/', isAuthenticated, queryPaymentRoute);
|
||||
router.get('/decode/:invoice', isAuthenticated, decodePayment);
|
||||
router.post('/getsentinfos', isAuthenticated, getSentPaymentsInformation);
|
||||
router.post('/sendtoroute', isAuthenticated, sendPaymentToRoute);
|
||||
router.post('/', isAuthenticated, postPayment);
|
||||
export default router;
|
||||
|
@ -1,17 +1,15 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getRTLConfigInitial, getRTLConfig, updateUISettings, update2FASettings, getConfig, getFile, updateSelectedNode, updateDefaultNode, updateServiceSettings, updateSSO, getCurrencyRates } from '../../controllers/shared/RTLConf.js';
|
||||
import { updateNodeSettings, getConfig, getFile, updateSelectedNode, updateApplicationSettings, getCurrencyRates, getApplicationSettings, getExplorerFeesRecommended, getExplorerTransaction } from '../../controllers/shared/RTLConf.js';
|
||||
const router = Router();
|
||||
router.get('/rtlconfinit', getRTLConfigInitial);
|
||||
router.get('/rtlconf', isAuthenticated, getRTLConfig);
|
||||
router.post('/', isAuthenticated, updateUISettings);
|
||||
router.post('/update2FA', isAuthenticated, update2FASettings);
|
||||
router.get('/config/:nodeType', isAuthenticated, getConfig);
|
||||
router.get('/file', isAuthenticated, getFile);
|
||||
router.post('/updateSelNode', updateSelectedNode);
|
||||
router.post('/updateDefaultNode', updateDefaultNode);
|
||||
router.post('/updateServiceSettings', updateServiceSettings);
|
||||
router.post('/updateSSO', updateSSO);
|
||||
router.get('/', getApplicationSettings);
|
||||
router.get('/rates', getCurrencyRates);
|
||||
router.get('/file', isAuthenticated, getFile);
|
||||
router.get('/updateSelNode/:currNodeIndex/:prevNodeIndex', updateSelectedNode);
|
||||
router.get('/config/:nodeType', isAuthenticated, getConfig);
|
||||
router.post('/node', isAuthenticated, updateNodeSettings);
|
||||
router.post('/application', isAuthenticated, updateApplicationSettings);
|
||||
router.get('/explorerFeesRecommended', getExplorerFeesRecommended);
|
||||
router.get('/explorerTransaction/:txid', getExplorerTransaction);
|
||||
export default router;
|
||||
|
@ -0,0 +1,8 @@
|
||||
import exprs from 'express';
|
||||
const { Router } = exprs;
|
||||
import { isAuthenticated } from '../../utils/authCheck.js';
|
||||
import { getPageSettings, savePageSettings } from '../../controllers/shared/pageSettings.js';
|
||||
const router = Router();
|
||||
router.get('/', isAuthenticated, getPageSettings);
|
||||
router.post('/', isAuthenticated, savePageSettings);
|
||||
export default router;
|
@ -1,49 +0,0 @@
|
||||
# ---------------
|
||||
# Install Dependencies
|
||||
# ---------------
|
||||
FROM node:16-stretch-slim as builder
|
||||
|
||||
ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-static-armel /tini
|
||||
ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-static-armel.asc /tini.asc
|
||||
RUN chmod +x /tini
|
||||
|
||||
WORKDIR /RTL
|
||||
|
||||
COPY package.json /RTL/package.json
|
||||
COPY package-lock.json /RTL/package-lock.json
|
||||
|
||||
RUN npm install
|
||||
|
||||
# ---------------
|
||||
# Build App
|
||||
# ---------------
|
||||
COPY . .
|
||||
|
||||
# Build the Angular application
|
||||
RUN npm run buildfrontend
|
||||
|
||||
# Build the Backend from typescript server
|
||||
RUN npm run buildbackend
|
||||
|
||||
# Remove non production necessary modules
|
||||
RUN npm prune --production
|
||||
|
||||
# ---------------
|
||||
# Release App
|
||||
# ---------------
|
||||
FROM arm32v7/node:16-stretch-slim as runner
|
||||
|
||||
WORKDIR /RTL
|
||||
|
||||
COPY --from=builder /RTL/rtl.js ./rtl.js
|
||||
COPY --from=builder /RTL/package.json ./package.json
|
||||
COPY --from=builder /RTL/frontend ./frontend
|
||||
COPY --from=builder /RTL/backend ./backend
|
||||
COPY --from=builder /RTL/node_modules/ ./node_modules
|
||||
COPY --from=builder "/tini" /sbin/tini
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
ENTRYPOINT ["/sbin/tini", "-g", "--"]
|
||||
|
||||
CMD ["node", "rtl"]
|
@ -1,48 +0,0 @@
|
||||
# ---------------
|
||||
# Install Dependencies
|
||||
# ---------------
|
||||
FROM node:16-stretch-slim as builder
|
||||
|
||||
ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini-static-arm64 /tini
|
||||
RUN chmod +x /tini
|
||||
|
||||
WORKDIR /RTL
|
||||
|
||||
COPY package.json /RTL/package.json
|
||||
COPY package-lock.json /RTL/package-lock.json
|
||||
|
||||
RUN npm install
|
||||
|
||||
# ---------------
|
||||
# Build App
|
||||
# ---------------
|
||||
COPY . .
|
||||
|
||||
# Build the Angular application
|
||||
RUN npm run buildfrontend
|
||||
|
||||
# Build the Backend from typescript server
|
||||
RUN npm run buildbackend
|
||||
|
||||
# Remove non production necessary modules
|
||||
RUN npm prune --production
|
||||
|
||||
# ---------------
|
||||
# Release App
|
||||
# ---------------
|
||||
FROM arm64v8/node:16-stretch-slim as runner
|
||||
|
||||
WORKDIR /RTL
|
||||
|
||||
COPY --from=builder /RTL/rtl.js ./rtl.js
|
||||
COPY --from=builder /RTL/package.json ./package.json
|
||||
COPY --from=builder /RTL/frontend ./frontend
|
||||
COPY --from=builder /RTL/backend ./backend
|
||||
COPY --from=builder /RTL/node_modules/ ./node_modules
|
||||
COPY --from=builder "/tini" /sbin/tini
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
ENTRYPOINT ["/sbin/tini", "-g", "--"]
|
||||
|
||||
CMD ["node", "rtl"]
|
@ -0,0 +1,11 @@
|
||||
import { FlatCompat } from '@eslint/eslintrc';
|
||||
import { dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: dirname(fileURLToPath(import.meta.url))
|
||||
});
|
||||
|
||||
export default [
|
||||
...compat.extends('./.eslintrc.json')
|
||||
];
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue