Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
801ce44561 | ||
|
|
507003ac20 |
||
|
|
5a078f2bfc |
6 changed files with 33 additions and 26 deletions
13
config.json
13
config.json
|
|
@ -1,8 +1,17 @@
|
|||
{
|
||||
"name": "Nostr Client",
|
||||
"short_description": "Nostr relay multiplexer",
|
||||
"version": "1.1.0",
|
||||
"short_description": "Nostr client for extensions",
|
||||
"tile": "/nostrclient/static/images/nostr-bitcoin.png",
|
||||
"contributors": ["calle", "motorina0", "dni"],
|
||||
"min_lnbits_version": "1.0.0"
|
||||
"min_lnbits_version": "1.4.0",
|
||||
"images": [
|
||||
{
|
||||
"uri": "https://raw.githubusercontent.com/lnbits/nostrclient/add-extension-metadata/static/images/1.jpeg"
|
||||
},
|
||||
{
|
||||
"uri": "https://raw.githubusercontent.com/lnbits/nostrclient/add-extension-metadata/static/images/2.jpeg"
|
||||
}
|
||||
],
|
||||
"description_md": "https://raw.githubusercontent.com/lnbits/nostrclient/add-extension-metadata/description.md"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1,8 @@
|
|||
An always-on extension that can open multiple connections to nostr relays and act as a multiplexer for other clients: You open a single websocket to nostrclient which then sends the data to multiple relays. The responses from these relays are then sent back to the client.
|
||||
An always-on relay multiplexer that simplifies connecting to multiple Nostr relays.
|
||||
|
||||
Instead of your Nostr client managing connections to dozens of relays, you connect to a single WebSocket endpoint provided by `nostrclient`, which then fans out your requests to all configured relays and aggregates the responses back to you.
|
||||
|
||||
- **Simplified Client Configuration** - Connect to one endpoint instead of managing multiple relay connections
|
||||
- **Always-On Connectivity** - Your LNbits instance maintains persistent connections to relays
|
||||
- **Resource Efficient** - Share relay connections across multiple clients
|
||||
- **Automatic Subscription Management** - Subscription ID rewriting prevents conflicts between clients
|
||||
|
|
|
|||
BIN
static/images/1.jpeg
Normal file
BIN
static/images/1.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 488 KiB |
BIN
static/images/2.jpeg
Normal file
BIN
static/images/2.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 300 KiB |
|
|
@ -476,11 +476,7 @@
|
|||
getRelays: function () {
|
||||
var self = this
|
||||
LNbits.api
|
||||
.request(
|
||||
'GET',
|
||||
'/nostrclient/api/v1/relays?usr=' + this.g.user.id,
|
||||
this.g.user.wallets[0].adminkey
|
||||
)
|
||||
.request('GET', '/nostrclient/api/v1/relays')
|
||||
.then(function (response) {
|
||||
if (response.data) {
|
||||
response.data.map(maplrelays)
|
||||
|
|
@ -508,12 +504,9 @@
|
|||
console.log('ADD RELAY ' + this.relayToAdd)
|
||||
let that = this
|
||||
LNbits.api
|
||||
.request(
|
||||
'POST',
|
||||
'/nostrclient/api/v1/relay?usr=' + this.g.user.id,
|
||||
this.g.user.wallets[0].adminkey,
|
||||
{url: this.relayToAdd}
|
||||
)
|
||||
.request('POST', '/nostrclient/api/v1/relay', null, {
|
||||
url: this.relayToAdd
|
||||
})
|
||||
.then(function (response) {
|
||||
console.log('response:', response)
|
||||
if (response.data) {
|
||||
|
|
@ -540,12 +533,7 @@
|
|||
},
|
||||
deleteRelay(url) {
|
||||
LNbits.api
|
||||
.request(
|
||||
'DELETE',
|
||||
'/nostrclient/api/v1/relay?usr=' + this.g.user.id,
|
||||
this.g.user.wallets[0].adminkey,
|
||||
{url: url}
|
||||
)
|
||||
.request('DELETE', '/nostrclient/api/v1/relay', null, {url: url})
|
||||
.then(response => {
|
||||
const relayIndex = this.nostrrelayLinks.indexOf(r => r.url === url)
|
||||
if (relayIndex !== -1) {
|
||||
|
|
@ -561,8 +549,7 @@
|
|||
try {
|
||||
const {data} = await LNbits.api.request(
|
||||
'GET',
|
||||
'/nostrclient/api/v1/config',
|
||||
this.g.user.wallets[0].adminkey
|
||||
'/nostrclient/api/v1/config'
|
||||
)
|
||||
this.config.data = data
|
||||
} catch (error) {
|
||||
|
|
@ -574,7 +561,7 @@
|
|||
const {data} = await LNbits.api.request(
|
||||
'PUT',
|
||||
'/nostrclient/api/v1/config',
|
||||
this.g.user.wallets[0].adminkey,
|
||||
null,
|
||||
this.config.data
|
||||
)
|
||||
this.config.data = data
|
||||
|
|
@ -623,7 +610,7 @@
|
|||
const {data} = await LNbits.api.request(
|
||||
'PUT',
|
||||
'/nostrclient/api/v1/relay/test',
|
||||
this.g.user.wallets[0].adminkey,
|
||||
null,
|
||||
{
|
||||
sender_private_key: this.testData.senderPrivateKey,
|
||||
reciever_public_key: this.testData.recieverPublicKey,
|
||||
|
|
|
|||
8
views.py
8
views.py
|
|
@ -1,6 +1,7 @@
|
|||
from fastapi import APIRouter, Depends, Request
|
||||
from fastapi.responses import HTMLResponse
|
||||
from lnbits.core.models import User
|
||||
from lnbits.core.crud.users import get_user_from_account
|
||||
from lnbits.core.models.users import Account
|
||||
from lnbits.decorators import check_admin
|
||||
from lnbits.helpers import template_renderer
|
||||
|
||||
|
|
@ -12,7 +13,10 @@ def nostr_renderer():
|
|||
|
||||
|
||||
@nostrclient_generic_router.get("/", response_class=HTMLResponse)
|
||||
async def index(request: Request, user: User = Depends(check_admin)):
|
||||
async def index(request: Request, account: Account = Depends(check_admin)):
|
||||
user = await get_user_from_account(account)
|
||||
if not user:
|
||||
return HTMLResponse("No user found", status_code=404)
|
||||
return nostr_renderer().TemplateResponse(
|
||||
"nostrclient/index.html", {"request": request, "user": user.json()}
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue