From 049826071c90a4a783c088b0d336e20f688d8cff Mon Sep 17 00:00:00 2001 From: Tiago Vasconcelos Date: Sun, 24 Sep 2023 19:22:48 +0100 Subject: [PATCH] checks if hostname is .onion and change scheme (#11) * checks if hostname is .onion and change scheme * resolve @motorina0 's comments --- lnurl.py | 4 +++- models.py | 9 +++++++-- views_api.py | 5 +++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lnurl.py b/lnurl.py index 2907363..4bcfea3 100644 --- a/lnurl.py +++ b/lnurl.py @@ -1,7 +1,9 @@ from http import HTTPStatus +from urllib.parse import urlparse -from fastapi import Request, Query +from fastapi import Query, Request from lnurl import LnurlErrorResponse, LnurlPayActionResponse, LnurlPayResponse +from loguru import logger from starlette.exceptions import HTTPException from lnbits.core.services import create_invoice diff --git a/models.py b/models.py index dd472a6..a27e5e1 100644 --- a/models.py +++ b/models.py @@ -3,10 +3,10 @@ from sqlite3 import Row from typing import Dict, Optional from urllib.parse import ParseResult, urlparse, urlunparse +from fastapi import Request from fastapi.param_functions import Query from lnurl.types import LnurlPayMetadata from pydantic import BaseModel -from starlette.requests import Request from lnbits.lnurl import encode as lnurl_encode @@ -55,8 +55,13 @@ class PayLink(BaseModel): data["max"] /= data["fiat_base_multiplier"] return cls(**data) - def lnurl(self, req: Request) -> str: + def lnurl(self, req: Request) -> str: url = req.url_for("lnurlp.api_lnurl_response", link_id=self.id) + # Check if url is .onion and change to http + if urlparse(url).netloc.endswith(".onion"): + # change url string scheme to http + url = url.replace("https://", "http://") + return lnurl_encode(str(url)) def success_action(self, payment_hash: str) -> Optional[Dict]: diff --git a/views_api.py b/views_api.py index 7ffed6e..80d9b52 100644 --- a/views_api.py +++ b/views_api.py @@ -15,13 +15,14 @@ from . import lnurlp_ext, scheduled_tasks from .crud import ( create_pay_link, delete_pay_link, + get_address_data, get_pay_link, get_pay_links, update_pay_link, - get_address_data, ) -from .models import CreatePayLinkData from .lnurl import api_lnurl_response +from .models import CreatePayLinkData + # redirected from /.well-known/lnurlp @lnurlp_ext.get("/api/v1/well-known/{username}")