From 27694ee23d9785fd45c1dc86b75b6416fc46b074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loun=C3=A8s=20Ksouri?= Date: Tue, 22 Feb 2022 08:40:23 +0100 Subject: [PATCH 1/9] refactor: GitHub Action to build and push to Docker Hub on tag --- .github/workflows/on-push.yml | 58 ------------------------------ .github/workflows/on-tag.yml | 68 +++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 58 deletions(-) delete mode 100644 .github/workflows/on-push.yml create mode 100644 .github/workflows/on-tag.yml diff --git a/.github/workflows/on-push.yml b/.github/workflows/on-push.yml deleted file mode 100644 index 4d008dec..00000000 --- a/.github/workflows/on-push.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Docker build on push - -env: - DOCKER_CLI_EXPERIMENTAL: enabled - -on: - push: - branches: - - master - -jobs: - build: - runs-on: ubuntu-20.04 - name: Build and push lnbits image - steps: - - name: Login to Docker Hub - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin - - - name: Checkout project - uses: actions/checkout@v2 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - id: qemu - - - name: Setup Docker buildx action - uses: docker/setup-buildx-action@v1 - id: buildx - - - name: Show available Docker buildx platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - - name: Cache Docker layers - uses: actions/cache@v2 - id: cache - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Run Docker buildx against commit hash - run: | - docker buildx build \ - --cache-from "type=local,src=/tmp/.buildx-cache" \ - --cache-to "type=local,dest=/tmp/.buildx-cache" \ - --platform linux/amd64,linux/arm64,linux/arm/v7 \ - --tag ${{ secrets.DOCKER_USERNAME }}/lnbits:${GITHUB_SHA:0:7} \ - --output "type=registry" ./ - - - name: Run Docker buildx against latest - run: | - docker buildx build \ - --cache-from "type=local,src=/tmp/.buildx-cache" \ - --cache-to "type=local,dest=/tmp/.buildx-cache" \ - --platform linux/amd64,linux/arm64,linux/arm/v7 \ - --tag ${{ secrets.DOCKER_USERNAME }}/lnbits:latest \ - --output "type=registry" ./ \ No newline at end of file diff --git a/.github/workflows/on-tag.yml b/.github/workflows/on-tag.yml new file mode 100644 index 00000000..f6fa53e9 --- /dev/null +++ b/.github/workflows/on-tag.yml @@ -0,0 +1,68 @@ +name: Build and push Docker image on tag + +env: + DOCKER_CLI_EXPERIMENTAL: enabled + +on: + push: + tags: + - "[0-9]+.[0-9]+.[0-9]+" + - "[0-9]+.[0-9]+.[0-9]+-*" + +jobs: + build: + runs-on: ubuntu-20.04 + name: Build and push lnbits image + steps: + - name: Login to Docker Hub + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + - name: Checkout project + uses: actions/checkout@v2 + + - name: Import environment variables + id: import-env + shell: bash + run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV + + - name: Show set environment variables + run: | + printf " TAG: %s\n" "$TAG" + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + id: qemu + + - name: Setup Docker buildx action + uses: docker/setup-buildx-action@v1 + id: buildx + + - name: Show available Docker buildx platforms + run: echo ${{ steps.buildx.outputs.platforms }} + + - name: Cache Docker layers + uses: actions/cache@v2 + id: cache + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Run Docker buildx against tag + run: | + docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKER_USERNAME }}/lnbits-legend:${TAG} \ + --output "type=registry" ./ + + - name: Run Docker buildx against latest + run: | + docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform linux/amd64,linux/arm64 \ + --tag ${{ secrets.DOCKER_USERNAME }}/lnbits-legend:latest \ + --output "type=registry" ./ \ No newline at end of file From a132387fa893d632271b2ef2188817a5ef601ffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loun=C3=A8s=20Ksouri?= Date: Tue, 22 Feb 2022 08:41:19 +0100 Subject: [PATCH 2/9] fix: add build deps for arm --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 243f298b..f04c67b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,8 +8,9 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" # Install build deps RUN apt-get update -RUN apt-get install -y --no-install-recommends build-essential +RUN apt-get install -y --no-install-recommends build-essential pkg-config RUN python -m pip install --upgrade pip +RUN pip install wheel # Install runtime deps COPY requirements.txt /tmp/requirements.txt From 31bcb32e2d9f0f6176b8ede12e37f9fb32865dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loun=C3=A8s=20Ksouri?= Date: Tue, 22 Feb 2022 08:41:57 +0100 Subject: [PATCH 3/9] feat: dynamic port and host using environment variables --- Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f04c67b5..7b8e523d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,6 +37,9 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" WORKDIR /app COPY --chown=1000:1000 lnbits /app/lnbits +ENV LNBITS_PORT="5000" +ENV LNBITS_HOST="0.0.0.0" + EXPOSE 5000 -CMD ["uvicorn", "lnbits.__main__:app", "--port", "5000", "--host", "0.0.0.0"] +CMD ["sh", "-c", "uvicorn lnbits.__main__:app --port $LNBITS_PORT --host $LNBITS_HOST"] From 4f3e48e280883f214e0f4bcf78ff85484297757f Mon Sep 17 00:00:00 2001 From: Tiago vasconcelos Date: Tue, 22 Feb 2022 15:16:39 +0000 Subject: [PATCH 4/9] fix lnurl encoded in QR --- lnbits/extensions/withdraw/templates/withdraw/display.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/extensions/withdraw/templates/withdraw/display.html b/lnbits/extensions/withdraw/templates/withdraw/display.html index 5552c77f..a20f32d8 100644 --- a/lnbits/extensions/withdraw/templates/withdraw/display.html +++ b/lnbits/extensions/withdraw/templates/withdraw/display.html @@ -10,7 +10,7 @@ From a5a33311060421169c7d0c7052a5ca85858e10c5 Mon Sep 17 00:00:00 2001 From: Tiago vasconcelos Date: Tue, 22 Feb 2022 16:23:50 +0000 Subject: [PATCH 5/9] revert to fallback scheme + make request case insensitive --- lnbits/core/static/js/wallet.js | 4 ++-- lnbits/extensions/withdraw/templates/withdraw/display.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lnbits/core/static/js/wallet.js b/lnbits/core/static/js/wallet.js index 8d58302b..ae98919a 100644 --- a/lnbits/core/static/js/wallet.js +++ b/lnbits/core/static/js/wallet.js @@ -364,12 +364,12 @@ new Vue({ }, decodeRequest: function () { this.parse.show = true - + let req = this.parse.data.request.toLowerCase() if (this.parse.data.request.startsWith('lightning:')) { this.parse.data.request = this.parse.data.request.slice(10) } else if (this.parse.data.request.startsWith('lnurl:')) { this.parse.data.request = this.parse.data.request.slice(6) - } else if (this.parse.data.request.indexOf('lightning=lnurl1') !== -1) { + } else if (req.indexOf('lightning=lnurl1') !== -1) { this.parse.data.request = this.parse.data.request .split('lightning=')[1] .split('&')[0] diff --git a/lnbits/extensions/withdraw/templates/withdraw/display.html b/lnbits/extensions/withdraw/templates/withdraw/display.html index a20f32d8..5552c77f 100644 --- a/lnbits/extensions/withdraw/templates/withdraw/display.html +++ b/lnbits/extensions/withdraw/templates/withdraw/display.html @@ -10,7 +10,7 @@ From ac61cd5427db67eb1adddc90c4473a9bd59614d6 Mon Sep 17 00:00:00 2001 From: Arc <33088785+arcbtc@users.noreply.github.com> Date: Tue, 1 Mar 2022 19:07:07 +0000 Subject: [PATCH 6/9] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b88640ad..21eff295 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ LNbits # LNbits v0.3 BETA, free and open-source lightning-network wallet/accounts system (Join us on [https://t.me/lnbits](https://t.me/lnbits)) +(LNbits is beta, for responsible disclosure of any concerns please contact lnbits@pm.me) Use [lnbits.com](https://lnbits.com), or run your own LNbits server! From d73c3950b9d382aff3a39e57c1a51b5f038ef09b Mon Sep 17 00:00:00 2001 From: Arc <33088785+arcbtc@users.noreply.github.com> Date: Tue, 1 Mar 2022 19:07:21 +0000 Subject: [PATCH 7/9] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 21eff295..020f617c 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ LNbits # LNbits v0.3 BETA, free and open-source lightning-network wallet/accounts system (Join us on [https://t.me/lnbits](https://t.me/lnbits)) + (LNbits is beta, for responsible disclosure of any concerns please contact lnbits@pm.me) Use [lnbits.com](https://lnbits.com), or run your own LNbits server! From 251e6a823355261bcfec643d125c5dd28081f016 Mon Sep 17 00:00:00 2001 From: Graham Krizek Date: Tue, 1 Mar 2022 13:58:54 -0600 Subject: [PATCH 8/9] Add a fallback to LND_REST_CERT to use the system chain if its not present (#539) --- lnbits/wallets/lndrest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/wallets/lndrest.py b/lnbits/wallets/lndrest.py index 1c2a86a0..aa9b7b0f 100644 --- a/lnbits/wallets/lndrest.py +++ b/lnbits/wallets/lndrest.py @@ -43,7 +43,7 @@ class LndRestWallet(Wallet): self.macaroon = load_macaroon(macaroon) self.auth = {"Grpc-Metadata-macaroon": self.macaroon} - self.cert = getenv("LND_REST_CERT") + self.cert = getenv("LND_REST_CERT", True) async def status(self) -> StatusResponse: try: From baf55afc2867927053743760c3e952aff45c8bcc Mon Sep 17 00:00:00 2001 From: Joseph Pentland Date: Tue, 1 Mar 2022 21:11:39 +0100 Subject: [PATCH 9/9] api: Fix conversion from fiat to satoshis (#516) Conversion to satoshis incorrectly used data.to as fiat currency rather than data._from. --- lnbits/core/views/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index d607e149..4ece3288 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -560,6 +560,6 @@ async def api_fiat_as_sats(data: ConversionData): return output else: output[data.from_.upper()] = data.amount - output["sats"] = await fiat_amount_as_satoshis(data.amount, data.to) + output["sats"] = await fiat_amount_as_satoshis(data.amount, data._from) output["BTC"] = output["sats"] / 100000000 return output